aboutsummaryrefslogtreecommitdiff
path: root/src/server/analysis.odin
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-07-07 14:01:31 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-07-07 14:04:01 -0400
commit81dfb4de0cd5855e2cc719abe8d3f44f951949dc (patch)
tree4142aaf2395e528035bd9a7745a01b83a855d365 /src/server/analysis.odin
parent0a254711a65bea797dc64946d64b9c614460a93a (diff)
Fix issue resolving struct fields when constructed in a return statement
Diffstat (limited to 'src/server/analysis.odin')
-rw-r--r--src/server/analysis.odin53
1 files changed, 26 insertions, 27 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index b5089b1..b91840e 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -1856,33 +1856,6 @@ resolve_implicit_selector :: proc(
}
}
- if position_context.returns != nil && position_context.function != nil {
- return_index: int
-
- if position_context.returns.results == nil {
- return {}, false
- }
-
- for result, i in position_context.returns.results {
- if position_in_node(result, position_context.position) {
- return_index = i
- break
- }
- }
-
- if position_context.function.type == nil {
- return {}, false
- }
-
- if position_context.function.type.results == nil {
- return {}, false
- }
-
- if len(position_context.function.type.results.list) > return_index {
- return resolve_type_expression(ast_context, position_context.function.type.results.list[return_index].type)
- }
- }
-
if position_context.value_decl != nil && position_context.value_decl.type != nil {
return resolve_type_expression(ast_context, position_context.value_decl.type)
}
@@ -1982,6 +1955,32 @@ resolve_implicit_selector :: proc(
}
}
+ if position_context.returns != nil && position_context.function != nil {
+ return_index: int
+
+ if position_context.returns.results == nil {
+ return {}, false
+ }
+
+ for result, i in position_context.returns.results {
+ if position_in_node(result, position_context.position) {
+ return_index = i
+ break
+ }
+ }
+
+ if position_context.function.type == nil {
+ return {}, false
+ }
+
+ if position_context.function.type.results == nil {
+ return {}, false
+ }
+
+ if len(position_context.function.type.results.list) > return_index {
+ return resolve_type_expression(ast_context, position_context.function.type.results.list[return_index].type)
+ }
+ }
return {}, false
}