diff options
author | Aleksey Kladov <[email protected]> | 2020-02-26 16:08:15 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-02-26 16:17:15 +0000 |
commit | f38bac48e5cc193d88aaea17bfb4234f64f1ded0 (patch) | |
tree | edd6cef6d68d06efebbcd667074af262e099940b /crates/rust-analyzer | |
parent | 640ede4ade02e6caae57532506409370c5ca63c9 (diff) |
More type safety for highlighting
Diffstat (limited to 'crates/rust-analyzer')
-rw-r--r-- | crates/rust-analyzer/src/conv.rs | 48 | ||||
-rw-r--r-- | crates/rust-analyzer/src/main_loop/handlers.rs | 2 | ||||
-rw-r--r-- | crates/rust-analyzer/src/req.rs | 2 |
3 files changed, 26 insertions, 26 deletions
diff --git a/crates/rust-analyzer/src/conv.rs b/crates/rust-analyzer/src/conv.rs index 5fcb46b61..5e5610a1e 100644 --- a/crates/rust-analyzer/src/conv.rs +++ b/crates/rust-analyzer/src/conv.rs | |||
@@ -9,8 +9,8 @@ use lsp_types::{ | |||
9 | WorkspaceEdit, | 9 | WorkspaceEdit, |
10 | }; | 10 | }; |
11 | use ra_ide::{ | 11 | use ra_ide::{ |
12 | tags, translate_offset_with_edit, CompletionItem, CompletionItemKind, FileId, FilePosition, | 12 | translate_offset_with_edit, CompletionItem, CompletionItemKind, FileId, FilePosition, |
13 | FileRange, FileSystemEdit, Fold, FoldKind, InsertTextFormat, LineCol, LineIndex, | 13 | FileRange, FileSystemEdit, Fold, FoldKind, HighlightTag, InsertTextFormat, LineCol, LineIndex, |
14 | NavigationTarget, RangeInfo, ReferenceAccess, Severity, SourceChange, SourceFileEdit, | 14 | NavigationTarget, RangeInfo, ReferenceAccess, Severity, SourceChange, SourceFileEdit, |
15 | }; | 15 | }; |
16 | use ra_syntax::{SyntaxKind, TextRange, TextUnit}; | 16 | use ra_syntax::{SyntaxKind, TextRange, TextUnit}; |
@@ -303,51 +303,51 @@ impl ConvWith<&FoldConvCtx<'_>> for Fold { | |||
303 | } | 303 | } |
304 | } | 304 | } |
305 | 305 | ||
306 | impl Conv for &'static str { | 306 | impl Conv for HighlightTag { |
307 | type Output = (SemanticTokenType, Vec<SemanticTokenModifier>); | 307 | type Output = (SemanticTokenType, Vec<SemanticTokenModifier>); |
308 | 308 | ||
309 | fn conv(self) -> (SemanticTokenType, Vec<SemanticTokenModifier>) { | 309 | fn conv(self) -> (SemanticTokenType, Vec<SemanticTokenModifier>) { |
310 | let token_type: SemanticTokenType = match self { | 310 | let token_type: SemanticTokenType = match self { |
311 | tags::FIELD => SemanticTokenType::MEMBER, | 311 | HighlightTag::FIELD => SemanticTokenType::MEMBER, |
312 | tags::FUNCTION => SemanticTokenType::FUNCTION, | 312 | HighlightTag::FUNCTION => SemanticTokenType::FUNCTION, |
313 | tags::MODULE => SemanticTokenType::NAMESPACE, | 313 | HighlightTag::MODULE => SemanticTokenType::NAMESPACE, |
314 | tags::CONSTANT => { | 314 | HighlightTag::CONSTANT => { |
315 | return ( | 315 | return ( |
316 | SemanticTokenType::VARIABLE, | 316 | SemanticTokenType::VARIABLE, |
317 | vec![SemanticTokenModifier::STATIC, SemanticTokenModifier::READONLY], | 317 | vec![SemanticTokenModifier::STATIC, SemanticTokenModifier::READONLY], |
318 | ) | 318 | ) |
319 | } | 319 | } |
320 | tags::MACRO => SemanticTokenType::MACRO, | 320 | HighlightTag::MACRO => SemanticTokenType::MACRO, |
321 | 321 | ||
322 | tags::VARIABLE => { | 322 | HighlightTag::VARIABLE => { |
323 | return (SemanticTokenType::VARIABLE, vec![SemanticTokenModifier::READONLY]) | 323 | return (SemanticTokenType::VARIABLE, vec![SemanticTokenModifier::READONLY]) |
324 | } | 324 | } |
325 | tags::VARIABLE_MUT => SemanticTokenType::VARIABLE, | 325 | HighlightTag::VARIABLE_MUT => SemanticTokenType::VARIABLE, |
326 | 326 | ||
327 | tags::TYPE => SemanticTokenType::TYPE, | 327 | HighlightTag::TYPE => SemanticTokenType::TYPE, |
328 | tags::TYPE_BUILTIN => SemanticTokenType::TYPE, | 328 | HighlightTag::TYPE_BUILTIN => SemanticTokenType::TYPE, |
329 | tags::TYPE_SELF => { | 329 | HighlightTag::TYPE_SELF => { |
330 | return (SemanticTokenType::TYPE, vec![SemanticTokenModifier::REFERENCE]) | 330 | return (SemanticTokenType::TYPE, vec![SemanticTokenModifier::REFERENCE]) |
331 | } | 331 | } |
332 | tags::TYPE_PARAM => SemanticTokenType::TYPE_PARAMETER, | 332 | HighlightTag::TYPE_PARAM => SemanticTokenType::TYPE_PARAMETER, |
333 | tags::TYPE_LIFETIME => { | 333 | HighlightTag::TYPE_LIFETIME => { |
334 | return (SemanticTokenType::LABEL, vec![SemanticTokenModifier::REFERENCE]) | 334 | return (SemanticTokenType::LABEL, vec![SemanticTokenModifier::REFERENCE]) |
335 | } | 335 | } |
336 | 336 | ||
337 | tags::LITERAL_BYTE => SemanticTokenType::NUMBER, | 337 | HighlightTag::LITERAL_BYTE => SemanticTokenType::NUMBER, |
338 | tags::LITERAL_NUMERIC => SemanticTokenType::NUMBER, | 338 | HighlightTag::LITERAL_NUMERIC => SemanticTokenType::NUMBER, |
339 | tags::LITERAL_CHAR => SemanticTokenType::NUMBER, | 339 | HighlightTag::LITERAL_CHAR => SemanticTokenType::NUMBER, |
340 | 340 | ||
341 | tags::LITERAL_COMMENT => { | 341 | HighlightTag::LITERAL_COMMENT => { |
342 | return (SemanticTokenType::COMMENT, vec![SemanticTokenModifier::DOCUMENTATION]) | 342 | return (SemanticTokenType::COMMENT, vec![SemanticTokenModifier::DOCUMENTATION]) |
343 | } | 343 | } |
344 | 344 | ||
345 | tags::LITERAL_STRING => SemanticTokenType::STRING, | 345 | HighlightTag::LITERAL_STRING => SemanticTokenType::STRING, |
346 | tags::LITERAL_ATTRIBUTE => SemanticTokenType::KEYWORD, | 346 | HighlightTag::LITERAL_ATTRIBUTE => SemanticTokenType::KEYWORD, |
347 | 347 | ||
348 | tags::KEYWORD => SemanticTokenType::KEYWORD, | 348 | HighlightTag::KEYWORD => SemanticTokenType::KEYWORD, |
349 | tags::KEYWORD_UNSAFE => SemanticTokenType::KEYWORD, | 349 | HighlightTag::KEYWORD_UNSAFE => SemanticTokenType::KEYWORD, |
350 | tags::KEYWORD_CONTROL => SemanticTokenType::KEYWORD, | 350 | HighlightTag::KEYWORD_CONTROL => SemanticTokenType::KEYWORD, |
351 | unknown => panic!("Unknown semantic token: {}", unknown), | 351 | unknown => panic!("Unknown semantic token: {}", unknown), |
352 | }; | 352 | }; |
353 | 353 | ||
diff --git a/crates/rust-analyzer/src/main_loop/handlers.rs b/crates/rust-analyzer/src/main_loop/handlers.rs index 267edd578..e9f1c4f4b 100644 --- a/crates/rust-analyzer/src/main_loop/handlers.rs +++ b/crates/rust-analyzer/src/main_loop/handlers.rs | |||
@@ -954,7 +954,7 @@ fn highlight(world: &WorldSnapshot, file_id: FileId) -> Result<Vec<Decoration>> | |||
954 | .into_iter() | 954 | .into_iter() |
955 | .map(|h| Decoration { | 955 | .map(|h| Decoration { |
956 | range: h.range.conv_with(&line_index), | 956 | range: h.range.conv_with(&line_index), |
957 | tag: h.tag, | 957 | tag: h.tag.to_string(), |
958 | binding_hash: h.binding_hash.map(|x| x.to_string()), | 958 | binding_hash: h.binding_hash.map(|x| x.to_string()), |
959 | }) | 959 | }) |
960 | .collect(); | 960 | .collect(); |
diff --git a/crates/rust-analyzer/src/req.rs b/crates/rust-analyzer/src/req.rs index 642ac41ac..fd6aef597 100644 --- a/crates/rust-analyzer/src/req.rs +++ b/crates/rust-analyzer/src/req.rs | |||
@@ -112,7 +112,7 @@ pub struct PublishDecorationsParams { | |||
112 | #[serde(rename_all = "camelCase")] | 112 | #[serde(rename_all = "camelCase")] |
113 | pub struct Decoration { | 113 | pub struct Decoration { |
114 | pub range: Range, | 114 | pub range: Range, |
115 | pub tag: &'static str, | 115 | pub tag: String, |
116 | pub binding_hash: Option<String>, | 116 | pub binding_hash: Option<String>, |
117 | } | 117 | } |
118 | 118 | ||