aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/semantic_tokens.odin1
-rw-r--r--tests/semantic_tokens_test.odin24
2 files changed, 25 insertions, 0 deletions
diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin
index 7d6b653..60042cd 100644
--- a/src/server/semantic_tokens.odin
+++ b/src/server/semantic_tokens.odin
@@ -423,6 +423,7 @@ visit_proc_type :: proc(node: ^ast.Proc_Type, builder: ^SemanticTokenBuilder) {
}
visit_node(param.type, builder)
+ visit_node(param.default_value, builder)
}
}
diff --git a/tests/semantic_tokens_test.odin b/tests/semantic_tokens_test.odin
index afb6b6a..6aec84b 100644
--- a/tests/semantic_tokens_test.odin
+++ b/tests/semantic_tokens_test.odin
@@ -142,3 +142,27 @@ semantic_tokens_fixed_array_fields :: proc(t: ^testing.T) {
{0, 4, 1, .Property, {}}, // [5] x
})
}
+
+@(test)
+semantic_tokens_enum_member_default_param :: proc(t: ^testing.T) {
+ src := test.Source {
+ main = `package test
+ Foo :: enum {
+ A,
+ B,
+ }
+
+ bar :: proc(foo: Foo = .A) {}
+ `
+ }
+
+ test.expect_semantic_tokens(t, &src, {
+ {1, 2, 3, .Enum, {.ReadOnly}}, // [0] Foo
+ {1, 3, 1, .EnumMember, {}}, // [1] A
+ {1, 3, 1, .EnumMember, {}}, // [2] B
+ {3, 2, 3, .Function, {.ReadOnly}}, // [3] bar
+ {0, 12, 3, .Parameter, {}}, // [4] foo
+ {0, 5, 3, .Enum, {.ReadOnly}}, // [5] Foo
+ {0, 7, 1, .EnumMember, {}}, // [6] A
+ })
+}