| //@ check-pass |
| |
| #![allow(non_camel_case_types)] |
| #![allow(non_upper_case_globals)] |
| |
| mod union { |
| type union = i32; |
| |
| pub struct Bar { |
| pub union: union, |
| } |
| |
| pub fn union() -> Bar { |
| Bar { |
| union: 5 |
| } |
| } |
| } |
| |
| mod struct_union { |
| pub struct union { |
| pub union: u32 |
| } |
| static union: union = union { union: 0 }; |
| |
| impl union { |
| pub fn union<'union>() -> &'union union { |
| &union |
| } |
| } |
| impl union {} |
| trait Foo {} |
| impl Foo for union {} |
| trait Bar { |
| fn bar() {} |
| } |
| impl Bar for union {} |
| } |
| |
| mod union_union { |
| pub union union { |
| pub union: u32 |
| } |
| const union: union = union { union: 0 }; |
| impl union { |
| pub fn union() -> union { |
| union |
| } |
| } |
| } |
| |
| mod trait_union { |
| pub trait union { |
| fn union() {} |
| } |
| impl union for () {} |
| } |
| |
| macro_rules! ty { |
| ($ty:ty { $($field:ident:$field_ty:ty)* }) => {}; |
| } |
| |
| fn main() { |
| let union = union::union(); |
| let _ = union.union; |
| let _ = struct_union::union::union().union; |
| let union = union_union::union::union(); |
| let _ = unsafe { union.union }; |
| <() as trait_union::union>::union(); |
| ty!(union {}); |
| ty!(union { union: union }); |
| } |