aboutsummaryrefslogtreecommitdiff
path: root/src/server/analysis.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2023-12-17 21:37:54 +0100
committerDanielGavin <danielgavin5@hotmail.com>2023-12-17 21:37:54 +0100
commit3796af429b7a504a4decdd153fb541f10068e198 (patch)
tree9338b4fe71b8a0b06554c27f6aa05f639f38d6c8 /src/server/analysis.odin
parent0d125598671d97c6cdc535f40d194d566cb60376 (diff)
Fix issue with variables assigning in global space to procedures.
Diffstat (limited to 'src/server/analysis.odin')
-rw-r--r--src/server/analysis.odin19
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(