diff options
| -rw-r--r-- | src/server/generics.odin | 29 |
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 |