diff options
| author | Bradley Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-10-07 17:21:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-07 17:21:30 -0400 |
| commit | 467fab2460a7fbb7f2a261cd7b314fa20b91cad1 (patch) | |
| tree | 7f45bcb1c8bba8c877ed52663371973ad69ead4d /src/server | |
| parent | 60148ea7188b1c54a5d4ad028a8cc6c7471fdc62 (diff) | |
| parent | 46aec5fee0fc76c8ac84c95b2d52cb0608c8a396 (diff) | |
Merge pull request #1083 from BradLewis/fix/implicit-selector-binary-expr-within-call-expr
Correctly resolve implicit selectors within a binary expr within a call expr
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/analysis.odin | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 41c78d8..3c896fe 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -2301,6 +2301,16 @@ resolve_implicit_selector :: proc( Symbol, bool, ) { + if position_context.binary != nil { + if position_in_node(position_context.binary, position_context.position) { + // We resolve whichever is not the implicit_selector + if implicit, ok := position_context.binary.left.derived.(^ast.Implicit_Selector_Expr); ok { + return resolve_type_expression(ast_context, position_context.binary.right) + } + return resolve_type_expression(ast_context, position_context.binary.left) + } + } + if position_context.call != nil { if call, ok := position_context.call.derived.(^ast.Call_Expr); ok { parameter_index, parameter_ok := find_position_in_call_param(position_context, call^) @@ -2334,16 +2344,6 @@ resolve_implicit_selector :: proc( } } - if position_context.binary != nil { - if position_in_node(position_context.binary, position_context.position) { - // We resolve whichever is not the implicit_selector - if implicit, ok := position_context.binary.left.derived.(^ast.Implicit_Selector_Expr); ok { - return resolve_type_expression(ast_context, position_context.binary.right) - } - return resolve_type_expression(ast_context, position_context.binary.left) - } - } - if position_context.index != nil { symbol: Symbol ok := false |