aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/generics.odin26
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