mirror of
https://github.com/vlang/v.git
synced 2025-09-13 22:42:26 +03:00
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
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:
parent
af87a302fa
commit
847c15e5ac
1 changed files with 12 additions and 6 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue