2021-05-13 14:42:25 +00:00
|
|
|
// revisions: mirunsafeck thirunsafeck
|
|
|
|
// [thirunsafeck]compile-flags: -Z thir-unsafeck
|
|
|
|
|
2016-08-18 15:31:47 +00:00
|
|
|
union U {
|
|
|
|
a: u8,
|
|
|
|
b: u16,
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let u = U {}; //~ ERROR union expressions should have exactly one field
|
|
|
|
let u = U { a: 0 }; // OK
|
|
|
|
let u = U { a: 0, b: 1 }; //~ ERROR union expressions should have exactly one field
|
|
|
|
let u = U { a: 0, b: 1, c: 2 }; //~ ERROR union expressions should have exactly one field
|
|
|
|
//~^ ERROR union `U` has no field named `c`
|
|
|
|
let u = U { ..u }; //~ ERROR union expressions should have exactly one field
|
|
|
|
//~^ ERROR functional record update syntax requires a struct
|
|
|
|
|
2016-08-26 16:23:42 +00:00
|
|
|
let U {} = u; //~ ERROR union patterns should have exactly one field
|
2016-08-18 15:31:47 +00:00
|
|
|
let U { a } = u; // OK
|
2016-08-26 16:23:42 +00:00
|
|
|
let U { a, b } = u; //~ ERROR union patterns should have exactly one field
|
|
|
|
let U { a, b, c } = u; //~ ERROR union patterns should have exactly one field
|
2016-08-18 15:31:47 +00:00
|
|
|
//~^ ERROR union `U` does not have a field named `c`
|
2016-08-26 16:23:42 +00:00
|
|
|
let U { .. } = u; //~ ERROR union patterns should have exactly one field
|
|
|
|
//~^ ERROR `..` cannot be used in union patterns
|
|
|
|
let U { a, .. } = u; //~ ERROR `..` cannot be used in union patterns
|
2016-08-18 15:31:47 +00:00
|
|
|
}
|