summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/completion.odin2
-rw-r--r--tests/completions_test.odin22
2 files changed, 24 insertions, 0 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 282b7d7..d80e451 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -1435,6 +1435,8 @@ get_implicit_completion :: proc(
type = comp_lit.type
} else if selector, ok := arg_type.default_value.derived.(^ast.Selector_Expr); ok {
type = selector.expr
+ } else {
+ type = arg_type.default_value
}
}
diff --git a/tests/completions_test.odin b/tests/completions_test.odin
index 1883032..3c34603 100644
--- a/tests/completions_test.odin
+++ b/tests/completions_test.odin
@@ -5216,3 +5216,25 @@ ast_completion_implicit_selector_binary_expr_proc_call :: proc(t: ^testing.T) {
}
test.expect_completion_labels(t, &source, "", {"A", "B", "C"}, {"X", "Y"})
}
+
+@(test)
+ast_completion_proc_arg_default_enum_alias :: proc(t: ^testing.T) {
+ source := test.Source {
+ main = `package test
+ Foo :: enum {
+ A,
+ B,
+ }
+
+ Bar :: Foo.A
+
+ foo :: proc(f := Bar) {}
+
+ main :: proc() {
+ foo(.{*})
+ }
+
+ `,
+ }
+ test.expect_completion_docs(t, &source, "", {"A", "B"})
+}