From 847c15e5ac0093e3c078f997986fdd5edcb9c103 Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Mon, 8 Sep 2025 13:03:11 -0300 Subject: [PATCH] type_resolver: fix comptimecall resolving aliased method (fix #25253, part 1) (#25254) --- vlib/v/type_resolver/type_resolver.v | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/vlib/v/type_resolver/type_resolver.v b/vlib/v/type_resolver/type_resolver.v index a9d4072ef2..efd4f241c9 100644 --- a/vlib/v/type_resolver/type_resolver.v +++ b/vlib/v/type_resolver/type_resolver.v @@ -252,13 +252,19 @@ pub fn (mut t TypeResolver) get_type(node ast.Expr) ast.Type { return node.typ } else if node is ast.ComptimeCall { method_name := t.info.comptime_for_method.name - left_sym := t.table.sym(t.resolver.unwrap_generic(node.left_type)) - f := left_sym.find_method(method_name) or { - t.error('could not find method `${method_name}` on compile-time resolution', - node.method_pos) - return ast.void_type + left_type := t.resolver.unwrap_generic(node.left_type) + left_sym := t.table.sym(left_type) + if f := left_sym.find_method(method_name) { + return f.return_type + } else if left_sym.kind == .alias { + f := t.table.final_sym(left_type).find_method(method_name) or { + t.error('could not find method `${method_name}` on compile-time resolution', + node.method_pos) + return ast.void_type + } + return f.return_type } - return f.return_type + return ast.void_type } else if node is ast.IndexExpr && t.info.is_comptime(node.left) { nltype := t.get_type(node.left) nltype_unwrapped := t.resolver.unwrap_generic(nltype)