mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
When Swift fails to import a member of a struct, it checks to see if this member could affect the memory layout of the struct, and if it can, Swift doesn't synthesize the memberwise initializer for this struct. This logic was overly restrictive and treated templated using-decls as potentially affecting the memory layout of the struct. rdar://113044949
55 lines
1.8 KiB
Swift
55 lines
1.8 KiB
Swift
// RUN: %target-swift-ide-test -print-module -module-to-print=MemberwiseInitializer -I %S/Inputs -source-filename=x -enable-experimental-cxx-interop | %FileCheck %s
|
|
|
|
// CHECK: struct StructPrivateOnly {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct StructPublicOnly {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct StructEmptyPrivateSection {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct StructPublicAndPrivate {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct StructWithUnimportedMemberFunction {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassPrivateOnly {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassPublicOnly {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassEmptyPublicSection {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassPrivateAndPublic {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassWithUnimportedMemberFunction {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassWithTemplatedFunction {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: struct ClassWithTemplatedUsingDecl {
|
|
// CHECK-NEXT: init()
|
|
// CHECK-NEXT: init(varPublic: Int32)
|
|
// CHECK-NEXT: var varPublic: Int32
|
|
// CHECK-NEXT: }
|