diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-07-07 14:01:31 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-07-07 14:04:01 -0400 |
| commit | 81dfb4de0cd5855e2cc719abe8d3f44f951949dc (patch) | |
| tree | 4142aaf2395e528035bd9a7745a01b83a855d365 /src/server/analysis.odin | |
| parent | 0a254711a65bea797dc64946d64b9c614460a93a (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.odin | 53 |
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 } |