]> git.lizzy.rs Git - rust.git/commitdiff
Fix bitset ops
authorAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 26 Feb 2020 17:09:49 +0000 (18:09 +0100)
committerAleksey Kladov <aleksey.kladov@gmail.com>
Wed, 26 Feb 2020 17:09:49 +0000 (18:09 +0100)
crates/rust-analyzer/src/conv.rs

index 5e5610a1e021d5b0a7b07807861dd3caf4248fe1..220e0572a6626a9c765addf34434dd1fe1fa411c 100644 (file)
@@ -343,7 +343,7 @@ fn conv(self) -> (SemanticTokenType, Vec<SemanticTokenModifier>) {
             }
 
             HighlightTag::LITERAL_STRING => SemanticTokenType::STRING,
-            HighlightTag::LITERAL_ATTRIBUTE => SemanticTokenType::KEYWORD,
+            HighlightTag::LITERAL_ATTRIBUTE => "attribute".into(),
 
             HighlightTag::KEYWORD => SemanticTokenType::KEYWORD,
             HighlightTag::KEYWORD_UNSAFE => SemanticTokenType::KEYWORD,
@@ -363,10 +363,11 @@ fn conv(self) -> Self::Output {
             semantic_tokens::supported_token_types().iter().position(|it| *it == self.0).unwrap();
         let mut token_modifier_bitset = 0;
         for modifier in self.1.iter() {
-            token_modifier_bitset |= semantic_tokens::supported_token_modifiers()
+            let modifier_index = semantic_tokens::supported_token_modifiers()
                 .iter()
                 .position(|it| it == modifier)
                 .unwrap();
+            token_modifier_bitset |= 1 << modifier_index;
         }
 
         (token_index as u32, token_modifier_bitset as u32)