Skip to content

Commit 8e6e437

Browse files
committed
update semantic_token
1 parent 8be906a commit 8e6e437

1 file changed

Lines changed: 20 additions & 8 deletions

File tree

crates/emmylua_ls/src/handlers/semantic_token/build_semantic_tokens.rs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use emmylua_code_analysis::{
2-
LuaDecl, LuaMemberId, LuaMemberOwner, LuaSemanticDeclId, LuaType, LuaTypeDeclId,
2+
LuaDecl, LuaDeclExtra, LuaMemberId, LuaMemberOwner, LuaSemanticDeclId, LuaType, LuaTypeDeclId,
33
SemanticDeclLevel, SemanticModel,
44
};
55
use emmylua_parser::{
@@ -564,7 +564,6 @@ fn handle_name_node(
564564

565565
let semantic_decl =
566566
semantic_model.find_decl(node.clone().into(), SemanticDeclLevel::default())?;
567-
568567
match semantic_decl {
569568
LuaSemanticDeclId::Member(member_id) => {
570569
let decl_type = semantic_model.get_type(member_id.into());
@@ -621,13 +620,26 @@ fn handle_name_node(
621620
}
622621
}
623622
}
624-
_ => {
625-
if decl.is_param() {
626-
(SemanticTokenType::PARAMETER, None)
627-
} else {
628-
(SemanticTokenType::VARIABLE, None)
623+
_ => match &decl.extra {
624+
LuaDeclExtra::Param {
625+
idx, signature_id, ..
626+
} => {
627+
let signature = semantic_model
628+
.get_db()
629+
.get_signature_index()
630+
.get(&signature_id)?;
631+
if let Some(param_info) = signature.get_param_info_by_id(*idx) {
632+
if param_info.type_ref.is_function() {
633+
(SemanticTokenType::FUNCTION, None)
634+
} else {
635+
(SemanticTokenType::PARAMETER, None)
636+
}
637+
} else {
638+
(SemanticTokenType::VARIABLE, None)
639+
}
629640
}
630-
}
641+
_ => (SemanticTokenType::VARIABLE, None),
642+
},
631643
};
632644

633645
if let Some(modifier) = modifier {

0 commit comments

Comments
 (0)