From 46aec5fee0fc76c8ac84c95b2d52cb0608c8a396 Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Tue, 7 Oct 2025 17:12:35 -0400 Subject: Correctly resolve implicit selectors within a binary expr within a call expr --- src/server/analysis.odin | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'src') 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 -- cgit v1.2.3