From 74acfe4fa2fd9a1c8636c3666b8fea38ebdef727 Mon Sep 17 00:00:00 2001 From: DanielGavin Date: Tue, 24 Jan 2023 20:44:39 +0100 Subject: Fixed error where `->` with call expression couldn't be resolved --- src/server/analysis.odin | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/analysis.odin b/src/server/analysis.odin index ff42709..25dc2ef 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1308,7 +1308,25 @@ internal_resolve_type_expression :: proc( case ^Implicit_Selector_Expr: return Symbol{}, false case ^Selector_Call_Expr: - return internal_resolve_type_expression(ast_context, v.expr) + if selector, ok := internal_resolve_type_expression( + ast_context, + v.expr, + ); ok { + ast_context.use_locals = false + ast_context.current_package = selector.pkg + + #partial switch s in selector.value { + case SymbolProcedureValue: + if len(s.return_types) == 1 { + return internal_resolve_type_expression( + ast_context, + s.return_types[0].type, + ) + } + } + + return selector, true + } case ^Selector_Expr: if selector, ok := internal_resolve_type_expression( ast_context, -- cgit v1.2.3