]> git.lizzy.rs Git - rust.git/blob - tests/ui/union/union-fields-2.rs
Rollup merge of #106605 - notriddle:notriddle/outdated-rustbook, r=GuillaumeGomez
[rust.git] / tests / ui / union / union-fields-2.rs
1 // revisions: mirunsafeck thirunsafeck
2 // [thirunsafeck]compile-flags: -Z thir-unsafeck
3
4 union U {
5     a: u8,
6     b: u16,
7 }
8
9 fn main() {
10     let u = U {}; //~ ERROR union expressions should have exactly one field
11     let u = U { a: 0 }; // OK
12     let u = U { a: 0, b: 1 }; //~ ERROR union expressions should have exactly one field
13     let u = U { a: 0, b: 1, c: 2 }; //~ ERROR union expressions should have exactly one field
14                                     //~^ ERROR union `U` has no field named `c`
15     let u = U { ..u }; //~ ERROR union expressions should have exactly one field
16                        //~^ ERROR functional record update syntax requires a struct
17
18     let U {} = u; //~ ERROR union patterns should have exactly one field
19     let U { a } = u; // OK
20     let U { a, b } = u; //~ ERROR union patterns should have exactly one field
21     let U { a, b, c } = u; //~ ERROR union patterns should have exactly one field
22                            //~^ ERROR union `U` does not have a field named `c`
23     let U { .. } = u; //~ ERROR union patterns should have exactly one field
24                       //~^ ERROR `..` cannot be used in union patterns
25     let U { a, .. } = u; //~ ERROR `..` cannot be used in union patterns
26 }