aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-09-13 22:35:24 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-09-13 22:35:24 -0400
commite9a3c436d6fc23a1622e59394aff1c34762b2482 (patch)
treedb90be7649acaf5e7317c205440aa0badda3752a
parent69c2024f8a65244d46941fbbf6459fed01348dee (diff)
Revert "Merge pull request #1011 from BradLewis/fix/completions-select-in-selector-call"
This reverts commit 69c2024f8a65244d46941fbbf6459fed01348dee, reversing changes made to a581608407b82b4816b7fbbe29da97c55c53c33e.
-rw-r--r--src/server/completion.odin9
-rw-r--r--src/server/position_context.odin2
-rw-r--r--tests/completions_test.odin30
3 files changed, 4 insertions, 37 deletions
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 5eb8e64..7e789f0 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -96,9 +96,7 @@ get_completion_list :: proc(
}
if position_context.selector != nil {
- if _, ok := position_context.selector.derived.(^ast.Ident); ok {
- completion_type = .Selector
- } else if position_context.selector_expr != nil {
+ if position_context.selector_expr != nil {
if selector_call, ok := position_context.selector_expr.derived.(^ast.Selector_Call_Expr); ok {
if !position_in_node(selector_call.call, position_context.position) {
completion_type = .Selector
@@ -1403,10 +1401,7 @@ get_implicit_completion :: proc(
}
if len(position_context.assign.lhs) > rhs_index {
- if enum_value, unwrapped_super_enum, ok := unwrap_enum(
- ast_context,
- position_context.assign.lhs[rhs_index],
- ); ok {
+ if enum_value, unwrapped_super_enum, ok := unwrap_enum(ast_context, position_context.assign.lhs[rhs_index]); ok {
for name in enum_value.names {
item := CompletionItem {
label = name,
diff --git a/src/server/position_context.odin b/src/server/position_context.odin
index 46efce2..0417df8 100644
--- a/src/server/position_context.odin
+++ b/src/server/position_context.odin
@@ -138,7 +138,7 @@ get_document_position_context :: proc(
position_context.parent_binary = nil
}
- if hint == .Completion {
+ if hint == .Completion && position_context.selector == nil && position_context.field == nil {
fallback_position_context_completion(document, position, &position_context)
}
diff --git a/tests/completions_test.odin b/tests/completions_test.odin
index a9b24ce..303fd64 100644
--- a/tests/completions_test.odin
+++ b/tests/completions_test.odin
@@ -4720,37 +4720,9 @@ ast_completion_selector_within_selector_call_expr :: proc(t: ^testing.T) {
bar = print,
}
- foo->bar(data.{*})
+ foo->bar(data.x{*})
}
`,
}
test.expect_completion_docs(t, &source, "", {"Data.x: int", "Data.y: int"})
}
-
-@(test)
-ast_completion_ident_within_selector_call_expr :: proc(t: ^testing.T) {
- source := test.Source {
- main = `package test
-
- Data :: struct {
- x, y: int,
- }
-
- IFoo :: struct {
- bar: proc(self: IFoo, x: int),
- }
-
- print :: proc(self: IFoo, x: int) {}
-
- main :: proc() {
- data := Data{}
- foo := IFoo {
- bar = print,
- }
-
- foo->bar(d{*})
- }
- `,
- }
- test.expect_completion_docs(t, &source, "", {"test.data: test.Data"})
-}