Skip to content

Commit e3dc5a5

Browse files
committed
Auto merge of #13101 - Veykril:sem-tokens, r=jonas-schievink
internal: Re-export standard semantic token types and mods Should help in preventing future occurences of #13099 by having all token types and mods come through the same place
2 parents 1456b80 + 715e3fc commit e3dc5a5

File tree

2 files changed

+133
-105
lines changed

2 files changed

+133
-105
lines changed

crates/rust-analyzer/src/semantic_tokens.rs

+107-79
Original file line numberDiff line numberDiff line change
@@ -8,102 +8,130 @@ use lsp_types::{
88
};
99

1010
macro_rules! define_semantic_token_types {
11-
($(($ident:ident, $string:literal)),*$(,)?) => {
12-
$(pub(crate) const $ident: SemanticTokenType = SemanticTokenType::new($string);)*
11+
(
12+
standard {
13+
$($standard:ident),*$(,)?
14+
}
15+
custom {
16+
$(($custom:ident, $string:literal)),*$(,)?
17+
}
18+
19+
) => {
20+
$(pub(crate) const $standard: SemanticTokenType = SemanticTokenType::$standard;)*
21+
$(pub(crate) const $custom: SemanticTokenType = SemanticTokenType::new($string);)*
1322

1423
pub(crate) const SUPPORTED_TYPES: &[SemanticTokenType] = &[
15-
SemanticTokenType::CLASS,
16-
SemanticTokenType::COMMENT,
17-
SemanticTokenType::ENUM_MEMBER,
18-
SemanticTokenType::ENUM,
19-
SemanticTokenType::FUNCTION,
20-
SemanticTokenType::INTERFACE,
21-
SemanticTokenType::KEYWORD,
22-
SemanticTokenType::MACRO,
23-
SemanticTokenType::METHOD,
24-
SemanticTokenType::NAMESPACE,
25-
SemanticTokenType::NUMBER,
26-
SemanticTokenType::OPERATOR,
27-
SemanticTokenType::PARAMETER,
28-
SemanticTokenType::PROPERTY,
29-
SemanticTokenType::REGEXP,
30-
SemanticTokenType::STRING,
31-
SemanticTokenType::STRUCT,
32-
SemanticTokenType::TYPE_PARAMETER,
33-
SemanticTokenType::TYPE,
34-
SemanticTokenType::VARIABLE,
35-
SemanticTokenType::DECORATOR,
36-
$($ident),*
24+
$(SemanticTokenType::$standard,)*
25+
$($custom),*
3726
];
3827
};
3928
}
4029

4130
define_semantic_token_types![
42-
(ANGLE, "angle"),
43-
(ARITHMETIC, "arithmetic"),
44-
(ATTRIBUTE_BRACKET, "attributeBracket"),
45-
(BITWISE, "bitwise"),
46-
(BOOLEAN, "boolean"),
47-
(BRACE, "brace"),
48-
(BRACKET, "bracket"),
49-
(BUILTIN_ATTRIBUTE, "builtinAttribute"),
50-
(BUILTIN_TYPE, "builtinType"),
51-
(CHAR, "character"),
52-
(COLON, "colon"),
53-
(COMMA, "comma"),
54-
(COMPARISON, "comparison"),
55-
(CONST_PARAMETER, "constParameter"),
56-
(DERIVE, "derive"),
57-
(DERIVE_HELPER, "deriveHelper"),
58-
(DOT, "dot"),
59-
(ESCAPE_SEQUENCE, "escapeSequence"),
60-
(FORMAT_SPECIFIER, "formatSpecifier"),
61-
(GENERIC, "generic"),
62-
(LABEL, "label"),
63-
(LIFETIME, "lifetime"),
64-
(LOGICAL, "logical"),
65-
(MACRO_BANG, "macroBang"),
66-
(PARENTHESIS, "parenthesis"),
67-
(PUNCTUATION, "punctuation"),
68-
(SELF_KEYWORD, "selfKeyword"),
69-
(SELF_TYPE_KEYWORD, "selfTypeKeyword"),
70-
(SEMICOLON, "semicolon"),
71-
(TYPE_ALIAS, "typeAlias"),
72-
(TOOL_MODULE, "toolModule"),
73-
(UNION, "union"),
74-
(UNRESOLVED_REFERENCE, "unresolvedReference"),
31+
standard {
32+
COMMENT,
33+
DECORATOR,
34+
ENUM_MEMBER,
35+
ENUM,
36+
FUNCTION,
37+
INTERFACE,
38+
KEYWORD,
39+
MACRO,
40+
METHOD,
41+
NAMESPACE,
42+
NUMBER,
43+
OPERATOR,
44+
PARAMETER,
45+
PROPERTY,
46+
STRING,
47+
STRUCT,
48+
TYPE_PARAMETER,
49+
VARIABLE,
50+
}
51+
52+
custom {
53+
(ANGLE, "angle"),
54+
(ARITHMETIC, "arithmetic"),
55+
(ATTRIBUTE, "attribute"),
56+
(ATTRIBUTE_BRACKET, "attributeBracket"),
57+
(BITWISE, "bitwise"),
58+
(BOOLEAN, "boolean"),
59+
(BRACE, "brace"),
60+
(BRACKET, "bracket"),
61+
(BUILTIN_ATTRIBUTE, "builtinAttribute"),
62+
(BUILTIN_TYPE, "builtinType"),
63+
(CHAR, "character"),
64+
(COLON, "colon"),
65+
(COMMA, "comma"),
66+
(COMPARISON, "comparison"),
67+
(CONST_PARAMETER, "constParameter"),
68+
(DERIVE, "derive"),
69+
(DERIVE_HELPER, "deriveHelper"),
70+
(DOT, "dot"),
71+
(ESCAPE_SEQUENCE, "escapeSequence"),
72+
(FORMAT_SPECIFIER, "formatSpecifier"),
73+
(GENERIC, "generic"),
74+
(LABEL, "label"),
75+
(LIFETIME, "lifetime"),
76+
(LOGICAL, "logical"),
77+
(MACRO_BANG, "macroBang"),
78+
(PARENTHESIS, "parenthesis"),
79+
(PUNCTUATION, "punctuation"),
80+
(SELF_KEYWORD, "selfKeyword"),
81+
(SELF_TYPE_KEYWORD, "selfTypeKeyword"),
82+
(SEMICOLON, "semicolon"),
83+
(TYPE_ALIAS, "typeAlias"),
84+
(TOOL_MODULE, "toolModule"),
85+
(UNION, "union"),
86+
(UNRESOLVED_REFERENCE, "unresolvedReference"),
87+
}
7588
];
7689

7790
macro_rules! define_semantic_token_modifiers {
78-
($(($ident:ident, $string:literal)),*$(,)?) => {
79-
$(pub(crate) const $ident: SemanticTokenModifier = SemanticTokenModifier::new($string);)*
91+
(
92+
standard {
93+
$($standard:ident),*$(,)?
94+
}
95+
custom {
96+
$(($custom:ident, $string:literal)),*$(,)?
97+
}
98+
99+
) => {
100+
101+
$(pub(crate) const $standard: SemanticTokenModifier = SemanticTokenModifier::$standard;)*
102+
$(pub(crate) const $custom: SemanticTokenModifier = SemanticTokenModifier::new($string);)*
80103

81104
pub(crate) const SUPPORTED_MODIFIERS: &[SemanticTokenModifier] = &[
82-
SemanticTokenModifier::DOCUMENTATION,
83-
SemanticTokenModifier::DECLARATION,
84-
SemanticTokenModifier::STATIC,
85-
SemanticTokenModifier::DEFAULT_LIBRARY,
86-
$($ident),*
105+
$(SemanticTokenModifier::$standard,)*
106+
$($custom),*
87107
];
88108
};
89109
}
90110

91111
define_semantic_token_modifiers![
92-
(ASYNC, "async"),
93-
(ATTRIBUTE_MODIFIER, "attribute"),
94-
(CALLABLE, "callable"),
95-
(CONSTANT, "constant"),
96-
(CONSUMING, "consuming"),
97-
(CONTROL_FLOW, "controlFlow"),
98-
(CRATE_ROOT, "crateRoot"),
99-
(INJECTED, "injected"),
100-
(INTRA_DOC_LINK, "intraDocLink"),
101-
(LIBRARY, "library"),
102-
(MUTABLE, "mutable"),
103-
(PUBLIC, "public"),
104-
(REFERENCE, "reference"),
105-
(TRAIT_MODIFIER, "trait"),
106-
(UNSAFE, "unsafe"),
112+
standard {
113+
DOCUMENTATION,
114+
DECLARATION,
115+
STATIC,
116+
DEFAULT_LIBRARY,
117+
}
118+
custom {
119+
(ASYNC, "async"),
120+
(ATTRIBUTE_MODIFIER, "attribute"),
121+
(CALLABLE, "callable"),
122+
(CONSTANT, "constant"),
123+
(CONSUMING, "consuming"),
124+
(CONTROL_FLOW, "controlFlow"),
125+
(CRATE_ROOT, "crateRoot"),
126+
(INJECTED, "injected"),
127+
(INTRA_DOC_LINK, "intraDocLink"),
128+
(LIBRARY, "library"),
129+
(MUTABLE, "mutable"),
130+
(PUBLIC, "public"),
131+
(REFERENCE, "reference"),
132+
(TRAIT_MODIFIER, "trait"),
133+
(UNSAFE, "unsafe"),
134+
}
107135
];
108136

109137
#[derive(Default)]

crates/rust-analyzer/src/to_proto.rs

+26-26
Original file line numberDiff line numberDiff line change
@@ -558,64 +558,64 @@ fn semantic_token_type_and_modifiers(
558558
let mut mods = semantic_tokens::ModifierSet::default();
559559
let type_ = match highlight.tag {
560560
HlTag::Symbol(symbol) => match symbol {
561-
SymbolKind::Attribute => lsp_types::SemanticTokenType::DECORATOR,
561+
SymbolKind::Attribute => semantic_tokens::DECORATOR,
562562
SymbolKind::Derive => semantic_tokens::DERIVE,
563563
SymbolKind::DeriveHelper => semantic_tokens::DERIVE_HELPER,
564-
SymbolKind::Module => lsp_types::SemanticTokenType::NAMESPACE,
564+
SymbolKind::Module => semantic_tokens::NAMESPACE,
565565
SymbolKind::Impl => semantic_tokens::TYPE_ALIAS,
566-
SymbolKind::Field => lsp_types::SemanticTokenType::PROPERTY,
567-
SymbolKind::TypeParam => lsp_types::SemanticTokenType::TYPE_PARAMETER,
566+
SymbolKind::Field => semantic_tokens::PROPERTY,
567+
SymbolKind::TypeParam => semantic_tokens::TYPE_PARAMETER,
568568
SymbolKind::ConstParam => semantic_tokens::CONST_PARAMETER,
569569
SymbolKind::LifetimeParam => semantic_tokens::LIFETIME,
570570
SymbolKind::Label => semantic_tokens::LABEL,
571-
SymbolKind::ValueParam => lsp_types::SemanticTokenType::PARAMETER,
571+
SymbolKind::ValueParam => semantic_tokens::PARAMETER,
572572
SymbolKind::SelfParam => semantic_tokens::SELF_KEYWORD,
573573
SymbolKind::SelfType => semantic_tokens::SELF_TYPE_KEYWORD,
574-
SymbolKind::Local => lsp_types::SemanticTokenType::VARIABLE,
574+
SymbolKind::Local => semantic_tokens::VARIABLE,
575575
SymbolKind::Function => {
576576
if highlight.mods.contains(HlMod::Associated) {
577-
lsp_types::SemanticTokenType::METHOD
577+
semantic_tokens::METHOD
578578
} else {
579-
lsp_types::SemanticTokenType::FUNCTION
579+
semantic_tokens::FUNCTION
580580
}
581581
}
582582
SymbolKind::Const => {
583583
mods |= semantic_tokens::CONSTANT;
584-
mods |= lsp_types::SemanticTokenModifier::STATIC;
585-
lsp_types::SemanticTokenType::VARIABLE
584+
mods |= semantic_tokens::STATIC;
585+
semantic_tokens::VARIABLE
586586
}
587587
SymbolKind::Static => {
588-
mods |= lsp_types::SemanticTokenModifier::STATIC;
589-
lsp_types::SemanticTokenType::VARIABLE
588+
mods |= semantic_tokens::STATIC;
589+
semantic_tokens::VARIABLE
590590
}
591-
SymbolKind::Struct => lsp_types::SemanticTokenType::STRUCT,
592-
SymbolKind::Enum => lsp_types::SemanticTokenType::ENUM,
593-
SymbolKind::Variant => lsp_types::SemanticTokenType::ENUM_MEMBER,
591+
SymbolKind::Struct => semantic_tokens::STRUCT,
592+
SymbolKind::Enum => semantic_tokens::ENUM,
593+
SymbolKind::Variant => semantic_tokens::ENUM_MEMBER,
594594
SymbolKind::Union => semantic_tokens::UNION,
595595
SymbolKind::TypeAlias => semantic_tokens::TYPE_ALIAS,
596-
SymbolKind::Trait => lsp_types::SemanticTokenType::INTERFACE,
597-
SymbolKind::Macro => lsp_types::SemanticTokenType::MACRO,
596+
SymbolKind::Trait => semantic_tokens::INTERFACE,
597+
SymbolKind::Macro => semantic_tokens::MACRO,
598598
SymbolKind::BuiltinAttr => semantic_tokens::BUILTIN_ATTRIBUTE,
599599
SymbolKind::ToolModule => semantic_tokens::TOOL_MODULE,
600600
},
601601
HlTag::AttributeBracket => semantic_tokens::ATTRIBUTE_BRACKET,
602602
HlTag::BoolLiteral => semantic_tokens::BOOLEAN,
603603
HlTag::BuiltinType => semantic_tokens::BUILTIN_TYPE,
604-
HlTag::ByteLiteral | HlTag::NumericLiteral => lsp_types::SemanticTokenType::NUMBER,
604+
HlTag::ByteLiteral | HlTag::NumericLiteral => semantic_tokens::NUMBER,
605605
HlTag::CharLiteral => semantic_tokens::CHAR,
606-
HlTag::Comment => lsp_types::SemanticTokenType::COMMENT,
606+
HlTag::Comment => semantic_tokens::COMMENT,
607607
HlTag::EscapeSequence => semantic_tokens::ESCAPE_SEQUENCE,
608608
HlTag::FormatSpecifier => semantic_tokens::FORMAT_SPECIFIER,
609-
HlTag::Keyword => lsp_types::SemanticTokenType::KEYWORD,
609+
HlTag::Keyword => semantic_tokens::KEYWORD,
610610
HlTag::None => semantic_tokens::GENERIC,
611611
HlTag::Operator(op) => match op {
612612
HlOperator::Bitwise => semantic_tokens::BITWISE,
613613
HlOperator::Arithmetic => semantic_tokens::ARITHMETIC,
614614
HlOperator::Logical => semantic_tokens::LOGICAL,
615615
HlOperator::Comparison => semantic_tokens::COMPARISON,
616-
HlOperator::Other => lsp_types::SemanticTokenType::OPERATOR,
616+
HlOperator::Other => semantic_tokens::OPERATOR,
617617
},
618-
HlTag::StringLiteral => lsp_types::SemanticTokenType::STRING,
618+
HlTag::StringLiteral => semantic_tokens::STRING,
619619
HlTag::UnresolvedReference => semantic_tokens::UNRESOLVED_REFERENCE,
620620
HlTag::Punctuation(punct) => match punct {
621621
HlPunct::Bracket => semantic_tokens::BRACKET,
@@ -640,16 +640,16 @@ fn semantic_token_type_and_modifiers(
640640
HlMod::Consuming => semantic_tokens::CONSUMING,
641641
HlMod::ControlFlow => semantic_tokens::CONTROL_FLOW,
642642
HlMod::CrateRoot => semantic_tokens::CRATE_ROOT,
643-
HlMod::DefaultLibrary => lsp_types::SemanticTokenModifier::DEFAULT_LIBRARY,
644-
HlMod::Definition => lsp_types::SemanticTokenModifier::DECLARATION,
645-
HlMod::Documentation => lsp_types::SemanticTokenModifier::DOCUMENTATION,
643+
HlMod::DefaultLibrary => semantic_tokens::DEFAULT_LIBRARY,
644+
HlMod::Definition => semantic_tokens::DECLARATION,
645+
HlMod::Documentation => semantic_tokens::DOCUMENTATION,
646646
HlMod::Injected => semantic_tokens::INJECTED,
647647
HlMod::IntraDocLink => semantic_tokens::INTRA_DOC_LINK,
648648
HlMod::Library => semantic_tokens::LIBRARY,
649649
HlMod::Mutable => semantic_tokens::MUTABLE,
650650
HlMod::Public => semantic_tokens::PUBLIC,
651651
HlMod::Reference => semantic_tokens::REFERENCE,
652-
HlMod::Static => lsp_types::SemanticTokenModifier::STATIC,
652+
HlMod::Static => semantic_tokens::STATIC,
653653
HlMod::Trait => semantic_tokens::TRAIT_MODIFIER,
654654
HlMod::Unsafe => semantic_tokens::UNSAFE,
655655
};

0 commit comments

Comments
 (0)