aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/generics.odin29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/server/generics.odin b/src/server/generics.odin
index 7141a75..b4393bb 100644
--- a/src/server/generics.odin
+++ b/src/server/generics.odin
@@ -171,22 +171,23 @@ resolve_poly :: proc(
}
found |= true
}
+ if p.len != nil {
+ if poly_type, ok := p.len.derived.(^ast.Poly_Type); ok {
+ if ident, ok := unwrap_ident(poly_type.type); ok {
+ poly_map[ident.name] = call_array.len
+ }
- if poly_type, ok := p.len.derived.(^ast.Poly_Type); ok {
- if ident, ok := unwrap_ident(poly_type.type); ok {
- poly_map[ident.name] = call_array.len
- }
-
- if poly_type.specialization != nil {
- return resolve_poly(
- ast_context,
- call_array.len,
- call_symbol,
- p.len,
- poly_map,
- )
+ if poly_type.specialization != nil {
+ return resolve_poly(
+ ast_context,
+ call_array.len,
+ call_symbol,
+ p.len,
+ poly_map,
+ )
+ }
+ found |= true
}
- found |= true
}
return found