diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2023-12-17 21:37:54 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2023-12-17 21:37:54 +0100 |
| commit | 3796af429b7a504a4decdd153fb541f10068e198 (patch) | |
| tree | 9338b4fe71b8a0b06554c27f6aa05f639f38d6c8 /src/server/analysis.odin | |
| parent | 0d125598671d97c6cdc535f40d194d566cb60376 (diff) | |
Fix issue with variables assigning in global space to procedures.
Diffstat (limited to 'src/server/analysis.odin')
| -rw-r--r-- | src/server/analysis.odin | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 9430118..c56f63c 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1585,8 +1585,8 @@ internal_resolve_type_identifier :: proc( ast_context: ^AstContext, node: ast.Ident, ) -> ( - Symbol, - bool, + _symbol: Symbol, + _ok: bool, ) { using ast @@ -1773,6 +1773,21 @@ internal_resolve_type_identifier :: proc( ast_context, v^, ) + case ^ast.Call_Expr: + call_symbol := internal_resolve_type_expression( + ast_context, + v.expr, + ) or_return + + proc_value := call_symbol.value.(SymbolProcedureValue) or_return + + if len(proc_value.return_types) >= 1 && + proc_value.return_types[0].type != nil { + return_symbol, ok = internal_resolve_type_expression( + ast_context, + proc_value.return_types[0].type, + ) + } case ^Struct_Type: return_symbol, ok = make_symbol_struct_from_ast( |