#![allow(incomplete_features)] #![feature(unnamed_fields)] struct A { //~ ERROR struct with unnamed fields must have `#[repr(C)]` representation //~^ NOTE struct `A` defined here _: struct { //~ NOTE unnamed field defined here a: i32, }, _: struct { //~ NOTE unnamed field defined here _: struct { b: i32, }, }, } union B { //~ ERROR union with unnamed fields must have `#[repr(C)]` representation //~^ NOTE union `B` defined here _: union { //~ NOTE unnamed field defined here a: i32, }, _: union { //~ NOTE unnamed field defined here _: union { b: i32, }, }, } #[derive(Clone, Copy)] #[repr(C)] struct Foo {} #[derive(Clone, Copy)] struct Bar {} //~^ `Bar` defined here //~| `Bar` defined here //~| `Bar` defined here //~| `Bar` defined here struct C { //~ ERROR struct with unnamed fields must have `#[repr(C)]` representation //~^ NOTE struct `C` defined here _: Foo, //~ NOTE unnamed field defined here } union D { //~ ERROR union with unnamed fields must have `#[repr(C)]` representation //~^ NOTE union `D` defined here _: Foo, //~ NOTE unnamed field defined here } #[repr(C)] struct E { _: Bar, //~ ERROR named type of unnamed field must have `#[repr(C)]` representation //~^ NOTE unnamed field defined here _: struct { _: Bar, //~ ERROR named type of unnamed field must have `#[repr(C)]` representation //~^ NOTE unnamed field defined here }, } #[repr(C)] union F { _: Bar, //~ ERROR named type of unnamed field must have `#[repr(C)]` representation //~^ NOTE unnamed field defined here _: union { _: Bar, //~ ERROR named type of unnamed field must have `#[repr(C)]` representation //~^ NOTE unnamed field defined here }, } fn main() {}