1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs/custom-modules -enable-objc-interop -import-objc-header %S/Inputs/macros_redef.h -emit-silgen %s | %FileCheck -check-prefix=NEGATIVE %s
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -I %S/Inputs/custom-modules -enable-objc-interop -import-objc-header %S/Inputs/macros_redef.h -DCONFLICT -typecheck -verify %s
// NEGATIVE-NOT: OLDTAG
import MacrosRedefA
import MacrosRedefB
import MacrosDeliberateRedefA
import MacrosDeliberateRedefB
#if CONFLICT
import MacrosRedefWithSubmodules
import MacrosRedefWithSubmodules.TheSubmodule
import MacrosRedefWithParallelSubmodules.A
import MacrosRedefWithParallelSubmodules.B
#else
import MacrosRedefWithSubmodules.TheSubmodule
import MacrosRedefWithParallelSubmodules.A
#endif
func testFrameworkRedef() {
var s: String
s = REDEF_1
#if CONFLICT
s = REDEF_2 // expected-error{{ambiguous use of 'REDEF_2'}}
#endif
}
func testBridgingHeaderRedef() {
var s: String
s = BRIDGING_HEADER_1
s = BRIDGING_HEADER_2
_ = s
}
func testSubmodules() {
var s: String
s = MRWS_REDEF_1
s = MRWS_REDEF_2
_ = s
}
func testParallelSubmodules() {
var s: String
s = MRWPS_REDEF_1
s = MRWPS_REDEF_2 // expected-error{{ambiguous use of 'MRWPS_REDEF_2'}}
_ = s
}
func testDeliberateRedef() {
var s: String
s = MacrosDeliberateRedefA.MDR_REDEF_1
s = MacrosDeliberateRedefB.MDR_REDEF_1
s = MDR_REDEF_1
#if CONFLICT
// The first two lines ought to work even when SILGen-ing, but the two
// definitions of MDR_REDEF_2 end up getting the same mangled name.
s = MacrosDeliberateRedefA.MDR_REDEF_2 // ok
s = MacrosDeliberateRedefB.MDR_REDEF_2 // ok
s = MDR_REDEF_2 // expected-error{{ambiguous use of 'MDR_REDEF_2'}}
#endif
}
|