type_resolver: fix comptimecall resolving aliased method (fix #25253, part 1) (#25254)
Some checks failed
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
native backend CI / native-backend-windows (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Waiting to run
Sanitized CI / sanitize-undefined-clang (push) Waiting to run
Sanitized CI / sanitize-undefined-gcc (push) Waiting to run
Sanitized CI / tests-sanitize-address-clang (push) Waiting to run
Sanitized CI / sanitize-address-msvc (push) Waiting to run
Sanitized CI / sanitize-address-gcc (push) Waiting to run
Sanitized CI / sanitize-memory-clang (push) Waiting to run
sdl CI / v-compiles-sdl-examples (push) Waiting to run
Time CI / time-linux (push) Waiting to run
Time CI / time-macos (push) Waiting to run
Time CI / time-windows (push) Waiting to run
toml CI / toml-module-pass-external-test-suites (push) Waiting to run
Tools CI / tools-linux (clang) (push) Waiting to run
Tools CI / tools-linux (gcc) (push) Waiting to run
Tools CI / tools-linux (tcc) (push) Waiting to run
Tools CI / tools-macos (clang) (push) Waiting to run
Tools CI / tools-windows (gcc) (push) Waiting to run
Tools CI / tools-windows (msvc) (push) Waiting to run
Tools CI / tools-windows (tcc) (push) Waiting to run
Tools CI / tools-docker-ubuntu-musl (push) Waiting to run
vab CI / vab-compiles-v-examples (push) Waiting to run
vab CI / v-compiles-os-android (push) Waiting to run
wasm backend CI / wasm-backend (ubuntu-22.04) (push) Waiting to run
wasm backend CI / wasm-backend (windows-2022) (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (push) Has been cancelled
Workflow Lint / lint-yml-workflows (push) Has been cancelled

This commit is contained in:
Felipe Pena 2025-09-08 13:03:11 -03:00 committed by GitHub
parent af87a302fa
commit 847c15e5ac
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -252,13 +252,19 @@ pub fn (mut t TypeResolver) get_type(node ast.Expr) ast.Type {
return node.typ return node.typ
} else if node is ast.ComptimeCall { } else if node is ast.ComptimeCall {
method_name := t.info.comptime_for_method.name method_name := t.info.comptime_for_method.name
left_sym := t.table.sym(t.resolver.unwrap_generic(node.left_type)) left_type := t.resolver.unwrap_generic(node.left_type)
f := left_sym.find_method(method_name) or { 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', t.error('could not find method `${method_name}` on compile-time resolution',
node.method_pos) node.method_pos)
return ast.void_type 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) { } else if node is ast.IndexExpr && t.info.is_comptime(node.left) {
nltype := t.get_type(node.left) nltype := t.get_type(node.left)
nltype_unwrapped := t.resolver.unwrap_generic(nltype) nltype_unwrapped := t.resolver.unwrap_generic(nltype)