mirror of
https://github.com/vlang/v.git
synced 2025-09-13 14:32:26 +03:00
checker: fix array init with interface (fix #24255) (#25073)
Some checks are pending
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
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Waiting to run
native backend CI / native-backend-windows (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (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
Some checks are pending
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
Graphics CI / gg-regressions (push) Waiting to run
vlib modules CI / build-module-docs (push) Waiting to run
native backend CI / native-backend-ubuntu (push) Waiting to run
native backend CI / native-backend-windows (push) Waiting to run
Shy and PV CI / v-compiles-puzzle-vibes (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
This commit is contained in:
parent
77f8c88ccf
commit
63997d6e43
5 changed files with 15 additions and 1 deletions
|
@ -188,6 +188,10 @@ fn (mut c Checker) array_init(mut node ast.ArrayInit) ast.Type {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
typ = c.check_expr_option_or_result_call(expr, c.expr(mut expr))
|
typ = c.check_expr_option_or_result_call(expr, c.expr(mut expr))
|
||||||
|
sym := c.table.sym(expected_value_type)
|
||||||
|
if sym.kind == .interface {
|
||||||
|
c.type_implements(typ, expected_value_type, expr.pos())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if expr is ast.CallExpr {
|
if expr is ast.CallExpr {
|
||||||
ret_sym := c.table.sym(typ)
|
ret_sym := c.table.sym(typ)
|
||||||
|
|
|
@ -1447,6 +1447,7 @@ fn (mut w Walker) mark_resource_dependencies() {
|
||||||
if w.uses_append {
|
if w.uses_append {
|
||||||
ref_array_idx_str := int(ast.array_type.ref()).str()
|
ref_array_idx_str := int(ast.array_type.ref()).str()
|
||||||
w.fn_by_name(ref_array_idx_str + '.push')
|
w.fn_by_name(ref_array_idx_str + '.push')
|
||||||
|
w.fn_by_name(ref_array_idx_str + '.push_many')
|
||||||
w.fn_by_name(ref_array_idx_str + '.push_many_noscan')
|
w.fn_by_name(ref_array_idx_str + '.push_many_noscan')
|
||||||
w.fn_by_name(ref_array_idx_str + '.push_noscan')
|
w.fn_by_name(ref_array_idx_str + '.push_noscan')
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
3
|
|
@ -0,0 +1 @@
|
||||||
|
3
|
|
@ -0,0 +1,7 @@
|
||||||
|
interface Value {}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
mut a := []Value{}
|
||||||
|
a << [Value(i32(1)), 2, 3.0]
|
||||||
|
println(a.len)
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue