mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
checker: check struct embed required field (#17595)
This commit is contained in:
parent
0370116562
commit
b691e1e24a
@ -656,6 +656,13 @@ fn (mut c Checker) struct_init(mut node ast.StructInit, is_field_zero_struct_ini
|
|||||||
c.struct_init(mut zero_struct_init, true)
|
c.struct_init(mut zero_struct_init, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for embed in info.embeds {
|
||||||
|
mut zero_struct_init := ast.StructInit{
|
||||||
|
pos: node.pos
|
||||||
|
typ: embed
|
||||||
|
}
|
||||||
|
c.struct_init(mut zero_struct_init, true)
|
||||||
|
}
|
||||||
// println('>> checked_types.len: $checked_types.len | checked_types: $checked_types | type_sym: $type_sym.name ')
|
// println('>> checked_types.len: $checked_types.len | checked_types: $checked_types | type_sym: $type_sym.name ')
|
||||||
}
|
}
|
||||||
else {}
|
else {}
|
||||||
|
7
vlib/v/checker/tests/struct_embed_required_field_err.out
Normal file
7
vlib/v/checker/tests/struct_embed_required_field_err.out
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
vlib/v/checker/tests/struct_embed_required_field_err.vv:11:7: error: field `Foo.foo` must be initialized
|
||||||
|
9 |
|
||||||
|
10 | fn main() {
|
||||||
|
11 | b := Bar {
|
||||||
|
| ~~~~~
|
||||||
|
12 | foo: 1
|
||||||
|
13 | }
|
15
vlib/v/checker/tests/struct_embed_required_field_err.vv
Normal file
15
vlib/v/checker/tests/struct_embed_required_field_err.vv
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
struct Foo {
|
||||||
|
foo u8 [required]
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Bar {
|
||||||
|
Foo
|
||||||
|
foo u8 [required]
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
b := Bar {
|
||||||
|
foo: 1
|
||||||
|
}
|
||||||
|
println(b)
|
||||||
|
}
|
@ -25,3 +25,9 @@ vlib/v/checker/tests/struct_ref_fields_uninitialized_err.vv:26:7: warning: refer
|
|||||||
26 | _ := Struct{}
|
26 | _ := Struct{}
|
||||||
| ~~~~~~~~
|
| ~~~~~~~~
|
||||||
27 | }
|
27 | }
|
||||||
|
vlib/v/checker/tests/struct_ref_fields_uninitialized_err.vv:26:7: warning: reference field `EmbedStruct.ref2` must be initialized
|
||||||
|
24 | fn main() {
|
||||||
|
25 | _ := Outer{}
|
||||||
|
26 | _ := Struct{}
|
||||||
|
| ~~~~~~~~
|
||||||
|
27 | }
|
||||||
|
Loading…
x
Reference in New Issue
Block a user