Skip to content

Commit c8f6655

Browse files
committed
Don't emit modifiers depending on the symbol kind in lsp conversion layer
1 parent 66adc1c commit c8f6655

File tree

6 files changed

+17
-26
lines changed

6 files changed

+17
-26
lines changed

crates/ide/src/syntax_highlighting/highlight.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -465,7 +465,8 @@ pub(super) fn highlight_def(
465465
}
466466
Definition::BuiltinType(_) => Highlight::new(HlTag::BuiltinType),
467467
Definition::Static(s) => {
468-
let mut h = Highlight::new(HlTag::Symbol(SymbolKind::Static));
468+
let mut h =
469+
Highlight::new(HlTag::Symbol(SymbolKind::Static)) | HlMod::Static | HlMod::Const;
469470

470471
if s.is_mut(db) {
471472
h |= HlMod::Mutable;
@@ -478,7 +479,7 @@ pub(super) fn highlight_def(
478479
Definition::GenericParam(it) => match it {
479480
hir::GenericParam::TypeParam(_) => Highlight::new(HlTag::Symbol(SymbolKind::TypeParam)),
480481
hir::GenericParam::ConstParam(_) => {
481-
Highlight::new(HlTag::Symbol(SymbolKind::ConstParam))
482+
Highlight::new(HlTag::Symbol(SymbolKind::ConstParam)) | HlMod::Const
482483
}
483484
hir::GenericParam::LifetimeParam(_) => {
484485
Highlight::new(HlTag::Symbol(SymbolKind::LifetimeParam))

crates/ide/src/syntax_highlighting/test_data/highlight_block_mod_items.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
<span class="unresolved_reference">foo</span><span class="macro_bang">!</span><span class="parenthesis macro">(</span><span class="none macro">Bar</span><span class="parenthesis macro">)</span><span class="semicolon">;</span>
5959
<span class="keyword">fn</span> <span class="function declaration">func</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="brace">{</span>
6060
<span class="keyword">mod</span> <span class="module declaration">inner</span> <span class="brace">{</span>
61-
<span class="keyword">struct</span> <span class="struct declaration">Innerest</span><span class="angle">&lt;</span><span class="keyword const">const</span> <span class="const_param declaration">C</span><span class="colon">:</span> <span class="unresolved_reference">usize</span><span class="angle">&gt;</span> <span class="brace">{</span> <span class="field declaration">field</span><span class="colon">:</span> <span class="bracket">[</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span> <span class="brace">{</span><span class="const_param">C</span><span class="brace">}</span><span class="bracket">]</span> <span class="brace">}</span>
61+
<span class="keyword">struct</span> <span class="struct declaration">Innerest</span><span class="angle">&lt;</span><span class="keyword const">const</span> <span class="const_param const declaration">C</span><span class="colon">:</span> <span class="unresolved_reference">usize</span><span class="angle">&gt;</span> <span class="brace">{</span> <span class="field declaration">field</span><span class="colon">:</span> <span class="bracket">[</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span> <span class="brace">{</span><span class="const_param const">C</span><span class="brace">}</span><span class="bracket">]</span> <span class="brace">}</span>
6262
<span class="brace">}</span>
6363
<span class="brace">}</span>
6464
<span class="brace">}</span>

crates/ide/src/syntax_highlighting/test_data/highlight_doctest.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@
119119
<span class="comment documentation">///</span>
120120
<span class="comment documentation">/// ```</span>
121121
<span class="comment documentation">///</span><span class="comment documentation"> </span><span class="comment injected">// functions</span>
122-
<span class="comment documentation">///</span><span class="comment documentation"> </span><span class="keyword injected">fn</span><span class="none injected"> </span><span class="function declaration injected">foo</span><span class="angle injected">&lt;</span><span class="type_param declaration injected">T</span><span class="comma injected">,</span><span class="none injected"> </span><span class="keyword const injected">const</span><span class="none injected"> </span><span class="const_param declaration injected">X</span><span class="colon injected">:</span><span class="none injected"> </span><span class="builtin_type injected">usize</span><span class="angle injected">&gt;</span><span class="parenthesis injected">(</span><span class="value_param declaration injected">arg</span><span class="colon injected">:</span><span class="none injected"> </span><span class="builtin_type injected">i32</span><span class="parenthesis injected">)</span><span class="none injected"> </span><span class="brace injected">{</span>
123-
<span class="comment documentation">///</span><span class="comment documentation"> </span><span class="none injected"> </span><span class="keyword injected">let</span><span class="none injected"> </span><span class="variable declaration injected">x</span><span class="colon injected">:</span><span class="none injected"> </span><span class="type_param injected">T</span><span class="none injected"> </span><span class="operator injected">=</span><span class="none injected"> </span><span class="const_param injected">X</span><span class="semicolon injected">;</span>
122+
<span class="comment documentation">///</span><span class="comment documentation"> </span><span class="keyword injected">fn</span><span class="none injected"> </span><span class="function declaration injected">foo</span><span class="angle injected">&lt;</span><span class="type_param declaration injected">T</span><span class="comma injected">,</span><span class="none injected"> </span><span class="keyword const injected">const</span><span class="none injected"> </span><span class="const_param const declaration injected">X</span><span class="colon injected">:</span><span class="none injected"> </span><span class="builtin_type injected">usize</span><span class="angle injected">&gt;</span><span class="parenthesis injected">(</span><span class="value_param declaration injected">arg</span><span class="colon injected">:</span><span class="none injected"> </span><span class="builtin_type injected">i32</span><span class="parenthesis injected">)</span><span class="none injected"> </span><span class="brace injected">{</span>
123+
<span class="comment documentation">///</span><span class="comment documentation"> </span><span class="none injected"> </span><span class="keyword injected">let</span><span class="none injected"> </span><span class="variable declaration injected">x</span><span class="colon injected">:</span><span class="none injected"> </span><span class="type_param injected">T</span><span class="none injected"> </span><span class="operator injected">=</span><span class="none injected"> </span><span class="const_param const injected">X</span><span class="semicolon injected">;</span>
124124
<span class="comment documentation">///</span><span class="comment documentation"> </span><span class="brace injected">}</span>
125125
<span class="comment documentation">/// ```</span>
126126
<span class="comment documentation">///</span>

crates/ide/src/syntax_highlighting/test_data/highlight_general.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,9 +119,9 @@
119119
<span class="keyword control">loop</span> <span class="brace">{</span><span class="brace">}</span>
120120
<span class="brace">}</span>
121121

122-
<span class="keyword">fn</span> <span class="function declaration">const_param</span><span class="angle">&lt;</span><span class="keyword const">const</span> <span class="const_param declaration">FOO</span><span class="colon">:</span> <span class="builtin_type">usize</span><span class="angle">&gt;</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="operator">-&gt;</span> <span class="builtin_type">usize</span> <span class="brace">{</span>
123-
<span class="function">const_param</span><span class="operator">::</span><span class="angle">&lt;</span><span class="brace">{</span> <span class="const_param">FOO</span> <span class="brace">}</span><span class="angle">&gt;</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
124-
<span class="const_param">FOO</span>
122+
<span class="keyword">fn</span> <span class="function declaration">const_param</span><span class="angle">&lt;</span><span class="keyword const">const</span> <span class="const_param const declaration">FOO</span><span class="colon">:</span> <span class="builtin_type">usize</span><span class="angle">&gt;</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="operator">-&gt;</span> <span class="builtin_type">usize</span> <span class="brace">{</span>
123+
<span class="function">const_param</span><span class="operator">::</span><span class="angle">&lt;</span><span class="brace">{</span> <span class="const_param const">FOO</span> <span class="brace">}</span><span class="angle">&gt;</span><span class="parenthesis">(</span><span class="parenthesis">)</span><span class="semicolon">;</span>
124+
<span class="const_param const">FOO</span>
125125
<span class="brace">}</span>
126126

127127
<span class="keyword">use</span> <span class="module public">ops</span><span class="operator">::</span><span class="trait public">Fn</span><span class="semicolon">;</span>

crates/ide/src/syntax_highlighting/test_data/highlight_unsafe.html

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
<span class="punctuation">*</span><span class="parenthesis">(</span><span class="punctuation">&</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="keyword">as</span> <span class="punctuation">*</span><span class="keyword const">const</span> <span class="parenthesis">(</span><span class="parenthesis">)</span><span class="parenthesis">)</span>
5555
<span class="brace">}</span><span class="semicolon">;</span>
5656
<span class="brace">}</span>
57-
<span class="keyword">static</span> <span class="keyword">mut</span> <span class="static declaration mutable unsafe">MUT_GLOBAL</span><span class="colon">:</span> <span class="struct">Struct</span> <span class="operator">=</span> <span class="struct">Struct</span> <span class="brace">{</span> <span class="field">field</span><span class="colon">:</span> <span class="numeric_literal">0</span> <span class="brace">}</span><span class="semicolon">;</span>
58-
<span class="keyword">static</span> <span class="static declaration">GLOBAL</span><span class="colon">:</span> <span class="struct">Struct</span> <span class="operator">=</span> <span class="struct">Struct</span> <span class="brace">{</span> <span class="field">field</span><span class="colon">:</span> <span class="numeric_literal">0</span> <span class="brace">}</span><span class="semicolon">;</span>
57+
<span class="keyword">static</span> <span class="keyword">mut</span> <span class="static const declaration mutable static unsafe">MUT_GLOBAL</span><span class="colon">:</span> <span class="struct">Struct</span> <span class="operator">=</span> <span class="struct">Struct</span> <span class="brace">{</span> <span class="field">field</span><span class="colon">:</span> <span class="numeric_literal">0</span> <span class="brace">}</span><span class="semicolon">;</span>
58+
<span class="keyword">static</span> <span class="static const declaration static">GLOBAL</span><span class="colon">:</span> <span class="struct">Struct</span> <span class="operator">=</span> <span class="struct">Struct</span> <span class="brace">{</span> <span class="field">field</span><span class="colon">:</span> <span class="numeric_literal">0</span> <span class="brace">}</span><span class="semicolon">;</span>
5959
<span class="keyword unsafe">unsafe</span> <span class="keyword">fn</span> <span class="function declaration unsafe">unsafe_fn</span><span class="parenthesis">(</span><span class="parenthesis">)</span> <span class="brace">{</span><span class="brace">}</span>
6060

6161
<span class="keyword">union</span> <span class="union declaration">Union</span> <span class="brace">{</span>
@@ -112,8 +112,8 @@
112112
<span class="operator unsafe">*</span><span class="variable">x</span><span class="semicolon">;</span>
113113

114114
<span class="comment">// unsafe access to a static mut</span>
115-
<span class="static mutable unsafe">MUT_GLOBAL</span><span class="operator">.</span><span class="field">field</span><span class="semicolon">;</span>
116-
<span class="static">GLOBAL</span><span class="operator">.</span><span class="field">field</span><span class="semicolon">;</span>
115+
<span class="static const mutable static unsafe">MUT_GLOBAL</span><span class="operator">.</span><span class="field">field</span><span class="semicolon">;</span>
116+
<span class="static const static">GLOBAL</span><span class="operator">.</span><span class="field">field</span><span class="semicolon">;</span>
117117

118118
<span class="comment">// unsafe ref of packed fields</span>
119119
<span class="keyword">let</span> <span class="variable declaration">packed</span> <span class="operator">=</span> <span class="struct">Packed</span> <span class="brace">{</span> <span class="field">a</span><span class="colon">:</span> <span class="numeric_literal">0</span> <span class="brace">}</span><span class="semicolon">;</span>

crates/rust-analyzer/src/lsp/to_proto.rs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,6 @@ pub(crate) fn semantic_token_delta(
636636
fn semantic_token_type_and_modifiers(
637637
highlight: Highlight,
638638
) -> (lsp_types::SemanticTokenType, semantic_tokens::ModifierSet) {
639-
let mut mods = semantic_tokens::ModifierSet::default();
640639
let type_ = match highlight.tag {
641640
HlTag::Symbol(symbol) => match symbol {
642641
SymbolKind::Attribute => semantic_tokens::DECORATOR,
@@ -646,10 +645,7 @@ fn semantic_token_type_and_modifiers(
646645
SymbolKind::Impl => semantic_tokens::TYPE_ALIAS,
647646
SymbolKind::Field => semantic_tokens::PROPERTY,
648647
SymbolKind::TypeParam => semantic_tokens::TYPE_PARAMETER,
649-
SymbolKind::ConstParam => {
650-
mods |= semantic_tokens::CONSTANT;
651-
semantic_tokens::CONST_PARAMETER
652-
}
648+
SymbolKind::ConstParam => semantic_tokens::CONST_PARAMETER,
653649
SymbolKind::LifetimeParam => semantic_tokens::LIFETIME,
654650
SymbolKind::Label => semantic_tokens::LABEL,
655651
SymbolKind::ValueParam => semantic_tokens::PARAMETER,
@@ -663,15 +659,8 @@ fn semantic_token_type_and_modifiers(
663659
semantic_tokens::FUNCTION
664660
}
665661
}
666-
SymbolKind::Const => {
667-
mods |= semantic_tokens::CONSTANT;
668-
mods |= semantic_tokens::STATIC;
669-
semantic_tokens::VARIABLE
670-
}
671-
SymbolKind::Static => {
672-
mods |= semantic_tokens::STATIC;
673-
semantic_tokens::VARIABLE
674-
}
662+
SymbolKind::Const => semantic_tokens::VARIABLE,
663+
SymbolKind::Static => semantic_tokens::VARIABLE,
675664
SymbolKind::Struct => semantic_tokens::STRUCT,
676665
SymbolKind::Enum => semantic_tokens::ENUM,
677666
SymbolKind::Variant => semantic_tokens::ENUM_MEMBER,
@@ -718,6 +707,7 @@ fn semantic_token_type_and_modifiers(
718707
},
719708
};
720709

710+
let mut mods = semantic_tokens::ModifierSet::default();
721711
for modifier in highlight.mods.iter() {
722712
let modifier = match modifier {
723713
HlMod::Associated => continue,

0 commit comments

Comments
 (0)