Files
swift-mirror/test/diagnostics/ambiguity-across-modules.swift
Doug Gregor 8cd2f34654 Generalize tests for both diagnostic styles, or force the LLVM style
These tests are using FileCheck to check the result of diagnostic
formatting in ways that don't match the new formatter. Force the old
formatter or, where possible, generalize so that they match both
formatters.
2024-02-19 02:48:37 -10:00

49 lines
1.7 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: split-file %s %t
/// Compile the exact same source file into 2 different modules.
// RUN: %target-swift-frontend -emit-module -o %t/A.swiftmodule %t/Lib.swift \
// RUN: -emit-module-source-info -module-name A -package-name pkg \
// RUN: -enable-testing
// RUN: %target-swift-frontend -emit-module -o %t/B.swiftmodule %t/Lib.swift \
// RUN: -emit-module-source-info -module-name B -package-name pkg \
// RUN: -enable-testing
// Build a client importing both modules and hitting the ambiguities.
// RUN: not %target-swift-frontend -typecheck -I %t %t/Client.swift -package-name pkg 2> %t/out
// RUN: cat %t/out | %FileCheck %s
//--- Lib.swift
public func publicAmbiguity() {}
package func packageAmbiguity() {}
internal func internalAmbiguity() {}
//--- Client.swift
@testable import A
@testable import B
func foo() {
publicAmbiguity()
// CHECK: error: ambiguous use of 'publicAmbiguity()'
// CHECK: publicAmbiguity()
// CHECK: note: found this candidate in module 'A'
// CHECK: public func publicAmbiguity() {}
// CHECK: note: found this candidate in module 'B'
// CHECK: public func publicAmbiguity() {}
packageAmbiguity()
// CHECK: error: ambiguous use of 'packageAmbiguity()'
// CHECK-NEXT: packageAmbiguity()
// CHECK: note: found this candidate in module 'A'
// CHECK: package func packageAmbiguity() {}
// CHECK: note: found this candidate in module 'B'
// CHECK: package func packageAmbiguity() {}
internalAmbiguity()
// CHECK: error: ambiguous use of 'internalAmbiguity()'
// CHECK-NEXT: internalAmbiguity()
// CHECK: note: found this candidate in module 'A'
// CHECK: internal func internalAmbiguity() {}
// CHECK: note: found this candidate in module 'B'
}