diff options
| author | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-08-31 09:33:02 -0400 |
|---|---|---|
| committer | Brad Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-08-31 09:33:02 -0400 |
| commit | 83bbda80b7701cfb8b9f1590f7f47e452351fea5 (patch) | |
| tree | db07b573bc54d8426ff364aacb25362639bf9796 /src/server/generics.odin | |
| parent | 03091375333703fc78ac9aafd508155436537f52 (diff) | |
Resolve generic overloaded procs that don't have a return value
Diffstat (limited to 'src/server/generics.odin')
| -rw-r--r-- | src/server/generics.odin | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/src/server/generics.odin b/src/server/generics.odin index 7eea7a2..33543cf 100644 --- a/src/server/generics.odin +++ b/src/server/generics.odin @@ -431,19 +431,21 @@ resolve_generic_function :: proc { } resolve_generic_function_ast :: proc(ast_context: ^AstContext, proc_lit: ast.Proc_Lit) -> (Symbol, bool) { - if proc_lit.type.params == nil { + if ast_context.call == nil { return Symbol{}, false } - if proc_lit.type.results == nil { - return Symbol{}, false + params: []^ast.Field + if proc_lit.type.params != nil { + params = proc_lit.type.params.list } - if ast_context.call == nil { - return Symbol{}, false + results: []^ast.Field + if proc_lit.type.results != nil { + results = proc_lit.type.results.list } - return resolve_generic_function_symbol(ast_context, proc_lit.type.params.list, proc_lit.type.results.list) + return resolve_generic_function_symbol(ast_context, params, results) } @@ -455,14 +457,6 @@ resolve_generic_function_symbol :: proc( Symbol, bool, ) { - if params == nil { - return {}, false - } - - if results == nil { - return {}, false - } - if ast_context.call == nil { return {}, false } @@ -701,7 +695,7 @@ resolve_poly_struct :: proc(ast_context: ^AstContext, b: ^SymbolStructValueBuild poly_map: map[string]^ast.Expr, symbol_value_builder: ^SymbolStructValueBuilder, parent: ^ast.Node, - parent_proc: ^ast.Proc_Type, + parent_proc: ^ast.Proc_Type, i: int, poly_index: int, } @@ -755,7 +749,7 @@ resolve_poly_struct :: proc(ast_context: ^AstContext, b: ^SymbolStructValueBuild } #partial switch v in node.derived { - case ^ast.Array_Type, ^ast.Dynamic_Array_Type, ^ast.Selector_Expr, ^ast.Pointer_Type: + case ^ast.Array_Type, ^ast.Dynamic_Array_Type, ^ast.Selector_Expr, ^ast.Pointer_Type: data.parent = node case ^ast.Proc_Type: data.parent_proc = v |