| // RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -F %S/Inputs/frameworks %s 2>&1 | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-PUBLIC %s |
| |
| // RUN: echo '#import <PrivatelyReadwrite/Private.h>' > %t.h |
| // RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -F %S/Inputs/frameworks -import-objc-header %t.h %s 2>&1 | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-PRIVATE %s |
| |
| // RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-pch -F %S/Inputs/frameworks -o %t.pch %t.h |
| // RUN: not %target-swift-frontend(mock-sdk: %clang-importer-sdk) -typecheck -F %S/Inputs/frameworks -import-objc-header %t.pch %s 2>&1 | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-PRIVATE %s |
| |
| // REQUIRES: objc_interop |
| |
| import PrivatelyReadwrite |
| |
| // In the original bug, it made a difference whether the type was instantiated; |
| // it resulted in members being imported in a different order. |
| func testWithInitializer() { |
| let obj = PropertiesInit() |
| |
| let _: Int = obj.nullabilityChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| let _: Int = obj.missingGenerics |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'GenericClass<Base>' to specified type 'Int' |
| |
| let _: Int = obj.typeChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| obj.readwriteChange = Base() // CHECK-PRIVATE-NOT: [[@LINE]]:{{.+}}: error |
| // CHECK-PUBLIC: [[@LINE-1]]:23: error: cannot assign to property: 'readwriteChange' is a get-only property |
| } |
| |
| func testWithoutInitializer(obj: PropertiesNoInit) { |
| let _: Int = obj.nullabilityChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| let _: Int = obj.missingGenerics |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'GenericClass<Base>' to specified type 'Int' |
| |
| let _: Int = obj.typeChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| obj.readwriteChange = Base() // CHECK-PRIVATE-NOT: [[@LINE]]:{{.+}}: error |
| // CHECK-PUBLIC: [[@LINE-1]]:23: error: cannot assign to property: 'readwriteChange' is a get-only property |
| } |
| |
| func testGenericWithInitializer() { |
| let obj = PropertiesInitGeneric<Base>() |
| |
| let _: Int = obj.nullabilityChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| let _: Int = obj.missingGenerics |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'GenericClass<Base>' to specified type 'Int' |
| |
| let _: Int = obj.typeChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| obj.readwriteChange = Base() // CHECK-PRIVATE-NOT: [[@LINE]]:{{.+}}: error |
| // CHECK-PUBLIC: [[@LINE-1]]:23: error: cannot assign to property: 'readwriteChange' is a get-only property |
| } |
| |
| func testGenericWithoutInitializer(obj: PropertiesNoInitGeneric<Base>) { |
| let _: Int = obj.nullabilityChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| let _: Int = obj.missingGenerics |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'GenericClass<Base>' to specified type 'Int' |
| |
| let _: Int = obj.typeChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| obj.readwriteChange = Base() // CHECK-PRIVATE-NOT: [[@LINE]]:{{.+}}: error |
| // CHECK-PUBLIC: [[@LINE-1]]:23: error: cannot assign to property: 'readwriteChange' is a get-only property |
| } |
| |
| func testCategoryWithInitializer() { |
| let obj = PropertiesInitCategory() |
| |
| let _: Int = obj.nullabilityChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| let _: Int = obj.missingGenerics |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'GenericClass<Base>' to specified type 'Int' |
| |
| let _: Int = obj.typeChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| obj.readwriteChange = Base() // CHECK-PRIVATE-NOT: [[@LINE]]:{{.+}}: error |
| // CHECK-PUBLIC: [[@LINE-1]]:23: error: cannot assign to property: 'readwriteChange' is a get-only property |
| } |
| |
| func testCategoryWithoutInitializer(obj: PropertiesNoInitCategory) { |
| let _: Int = obj.nullabilityChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| let _: Int = obj.missingGenerics |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'GenericClass<Base>' to specified type 'Int' |
| |
| let _: Int = obj.typeChange |
| // CHECK: [[@LINE-1]]:20: error: cannot convert value of type 'Base' to specified type 'Int' |
| |
| obj.readwriteChange = Base() // CHECK-PRIVATE-NOT: [[@LINE]]:{{.+}}: error |
| // CHECK-PUBLIC: [[@LINE-1]]:23: error: cannot assign to property: 'readwriteChange' is a get-only property |
| } |