@@ -227,17 +227,19 @@ impl Hir {
227227
228228 let selector_keys: Vec < _ > = self . builtin . selectors . keys ( ) . cloned ( ) . collect ( ) ;
229229 for name in selector_keys {
230- self . add_symbol ( Symbol {
231- value : Some ( name. clone ( ) ) ,
232- kind : SymbolKind :: Selector ,
233- source : SourceInfo :: new ( Some ( self . builtin . source_id ) , None ) ,
234- scope : self . builtin . scope_id ,
235- doc : vec ! [ (
236- mq_lang:: Range :: default ( ) ,
237- mq_lang:: BUILTIN_SELECTOR_DOC [ & name] . description. to_string( ) ,
238- ) ] ,
239- parent : None ,
240- } ) ;
230+ if let Ok ( selector) = mq_lang:: Selector :: try_from ( & mq_lang:: Token :: new ( TokenKind :: Selector ( name. clone ( ) ) ) ) {
231+ self . add_symbol ( Symbol {
232+ value : Some ( name. clone ( ) ) ,
233+ kind : SymbolKind :: Selector ( selector) ,
234+ source : SourceInfo :: new ( Some ( self . builtin . source_id ) , None ) ,
235+ scope : self . builtin . scope_id ,
236+ doc : vec ! [ (
237+ mq_lang:: Range :: default ( ) ,
238+ mq_lang:: BUILTIN_SELECTOR_DOC [ & name] . description. to_string( ) ,
239+ ) ] ,
240+ parent : None ,
241+ } ) ;
242+ }
241243 }
242244
243245 self . builtin . loaded = true ;
@@ -951,10 +953,12 @@ impl Hir {
951953 kind : mq_lang:: CstNodeKind :: Selector ,
952954 ..
953955 } = & * * node
956+ && let Some ( token) = & node. token
957+ && let Ok ( selector) = mq_lang:: Selector :: try_from ( & * * token)
954958 {
955959 let symbol_id = self . symbols . insert ( Symbol {
956960 value : node. name ( ) ,
957- kind : SymbolKind :: Selector ,
961+ kind : SymbolKind :: Selector ( selector ) ,
958962 source : SourceInfo :: new ( Some ( source_id) , Some ( node. range ( ) ) ) ,
959963 scope : scope_id,
960964 doc : node. comments ( ) ,
@@ -1919,8 +1923,8 @@ def foo(): 1", vec![" test".to_owned(), " test".to_owned(), "".to_owned()], vec!
19191923 #[ case:: elif_( "if (true): 1 elif (false): 2 else: 3;" , "elif" , SymbolKind :: Elif ) ]
19201924 #[ case:: else_( "if (true): 1 else: 2;" , "else" , SymbolKind :: Else ) ]
19211925 #[ case:: literal( "42" , "42" , SymbolKind :: Number ) ]
1922- #[ case:: selector( ".h" , ".h" , SymbolKind :: Selector ) ]
1923- #[ case:: selector( ".code.lang" , ".code" , SymbolKind :: Selector ) ]
1926+ #[ case:: selector( ".h" , ".h" , SymbolKind :: Selector ( mq_lang :: Selector :: Heading ( None ) ) ) ]
1927+ #[ case:: selector( ".code.lang" , ".code" , SymbolKind :: Selector ( mq_lang :: Selector :: Code ) ) ]
19241928 #[ case:: interpolated_string( "s\" hello ${world}\" " , "world" , SymbolKind :: Variable ) ]
19251929 #[ case:: include( "include \" foo\" " , "foo" , SymbolKind :: Include ( SourceId :: default ( ) ) ) ]
19261930 #[ case:: fn_expr( "fn(): 42" , "fn" , SymbolKind :: Keyword ) ]
0 commit comments