Skip to content

Commit 36998a3

Browse files
committed
update semantic_tokens
1 parent 3554b8c commit 36998a3

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

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

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -614,6 +614,11 @@ fn handle_name_node(
614614

615615
LuaSemanticDeclId::LuaDecl(decl_id) => {
616616
let decl_type = semantic_model.get_type(decl_id.into());
617+
let decl = semantic_model
618+
.get_db()
619+
.get_decl_index()
620+
.get_decl(&decl_id)?;
621+
617622
let (token_type, modifier) = match decl_type {
618623
LuaType::Signature(signature) => {
619624
let is_meta = semantic_model
@@ -626,11 +631,18 @@ fn handle_name_node(
626631
)
627632
}
628633
LuaType::DocFunction(_) => (SemanticTokenType::FUNCTION, None),
634+
LuaType::Union(union) => {
635+
if union.get_types().iter().any(|typ| typ.is_function()) {
636+
(SemanticTokenType::FUNCTION, None)
637+
} else {
638+
if decl.is_param() {
639+
(SemanticTokenType::PARAMETER, None)
640+
} else {
641+
(SemanticTokenType::VARIABLE, None)
642+
}
643+
}
644+
}
629645
_ => {
630-
let decl = semantic_model
631-
.get_db()
632-
.get_decl_index()
633-
.get_decl(&decl_id)?;
634646
if decl.is_param() {
635647
(SemanticTokenType::PARAMETER, None)
636648
} else {

0 commit comments

Comments
 (0)