// RUN: %target-swift-frontend -enable-experimental-feature RawLayout -typecheck -verify %s // REQUIRES: swift_feature_RawLayout @_rawLayout(size: 4, alignment: 4) // expected-error{{type with '@_rawLayout' cannot be copied and must be declared ~Copyable}} struct ImproperlyCopyable {} @_rawLayout(size: 4, alignment: 3) // expected-error{{alignment value must be a power of two}} struct InvalidAlignment: ~Copyable {} @_rawLayout(size: 4, alignment: 4) // expected-error{{type with '@_rawLayout' cannot have stored properties}} struct HasStoredProperty: ~Copyable { var x: Int } @_rawLayout(size: 4, alignment: 4) // expected-error{{type with '@_rawLayout' cannot have stored properties}} struct HasLazyStoredProperty: ~Copyable { lazy var x: Int = 42 } @_rawLayout(size: 4, alignment: 4) // expected-error{{type with '@_rawLayout' cannot have stored properties}} struct HasObservedStoredProperty: ~Copyable { var x: Int { didSet { } } } @propertyWrapper struct Wrapper { var wrappedValue: T { fatalError() } } @_rawLayout(size: 4, alignment: 4) // expected-error{{type with '@_rawLayout' cannot have stored properties}} struct HasWrappedStoredProperty: ~Copyable { @Wrapper var x: Int } @_rawLayout(like: T) // expected-error{{cannot find type 'T' in scope}} struct TypeDoesntExist: ~Copyable {} @_rawLayout(size: 4, alignment: 4) // expected-error{{@_rawLayout may only be used on 'struct'}} enum EnumWithRawLayout: ~Copyable {} @_rawLayout(size: 4, alignment: 4) // expected-error{{@_rawLayout may only be used on 'struct'}} class ClassWithRawLayout {} @_rawLayout(size: 4, alignment: 4) struct Lock: ~Copyable {} @_rawLayout(size: 4, alignment: 4) // expected-error{{@_rawLayout may only be used on 'struct'}} typealias TypealiasWithRawLayout = Lock struct Butt { @_rawLayout(size: 4, alignment: 4) // expected-error{{@_rawLayout may only be used on 'struct'}} var propertyWithStoredLayout: () } @_rawLayout(size: 4, alignment: 4) @_alignment(16) // expected-error{{type with '@_rawLayout' cannot also have an '@_alignment' attribute}} struct RawLayoutAndAlignment: ~Copyable {}