diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2023-01-24 20:44:39 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2023-01-24 20:44:39 +0100 |
| commit | 74acfe4fa2fd9a1c8636c3666b8fea38ebdef727 (patch) | |
| tree | 366b4640e6ea244e7b0f6e75eb71abea181731d2 | |
| parent | 4605d64accc56bf9406388d32e4612c4f2ea3543 (diff) | |
Fixed error where `->` with call expression couldn't be resolved
| -rw-r--r-- | src/server/analysis.odin | 20 |
1 files changed, 19 insertions, 1 deletions
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, |