From 7dff27b2c19271ceb5c92fca5ccd0a0a7f07e414 Mon Sep 17 00:00:00 2001 From: Harold Brenes Date: Thu, 1 May 2025 12:24:27 -0400 Subject: Fix resolve parapoly speciliazations --- src/common/ast.odin | 7 +++++++ src/server/analysis.odin | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/src/common/ast.odin b/src/common/ast.odin index 025fab0..6031d9d 100644 --- a/src/common/ast.odin +++ b/src/common/ast.odin @@ -184,6 +184,13 @@ unwrap_pointer_ident :: proc(expr: ^ast.Expr) -> (ast.Ident, int, bool) { } } + // Check for parapoly specialization + if expr != nil { + if poly, ok := expr.derived.(^ast.Poly_Type); ok { + expr = poly.specialization + } + } + // Check for parapoly self if expr != nil { if call, ok := expr.derived.(^ast.Call_Expr); ok { diff --git a/src/server/analysis.odin b/src/server/analysis.odin index b4d97f3..71bfab5 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1049,6 +1049,11 @@ internal_resolve_type_expression :: proc(ast_context: ^AstContext, node: ^ast.Ex return selector, true } } + case ^ast.Poly_Type: + if v.specialization != nil { + return internal_resolve_type_expression(ast_context, v.specialization) + } + case: log.warnf("default node kind, internal_resolve_type_expression: %v", v) } -- cgit v1.2.3