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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
|
/// Test that the AliasModuleNames mode avoids ambiguities in swiftinterfaces
// RUN: %empty-directory(%t)
// RUN: split-file %s %t
// RUN: %target-swift-frontend -emit-module -module-name ExportedLib \
// RUN: -swift-version 5 -enable-library-evolution \
// RUN: -o %t/ExportedLib.swiftmodule \
// RUN: -emit-module-interface-path %t/ExportedLib.swiftinterface \
// RUN: %t/ExportedLib.swift
// RUN: %target-swift-typecheck-module-from-interface(%t/ExportedLib.swiftinterface)
// RUN: %target-swift-frontend -emit-module -module-name AmbiguousLib \
// RUN: -swift-version 5 -enable-library-evolution \
// RUN: -o %t/AmbiguousLib.swiftmodule \
// RUN: -emit-module-interface-path %t/AmbiguousLib.swiftinterface \
// RUN: %t/AmbiguousLib.swift -I%t
// RUN: %target-swift-typecheck-module-from-interface(%t/AmbiguousLib.swiftinterface) -I%t
// RUN: %target-swift-frontend -emit-module -module-name AmbiguousClientName \
// RUN: -swift-version 5 -enable-library-evolution \
// RUN: -o %t/AmbiguousClientName.swiftmodule \
// RUN: -emit-module-interface-path %t/AmbiguousClientName.swiftinterface \
// RUN: %t/AmbiguousClientName.swift -I%t \
// RUN: -alias-module-names-in-module-interface
// RUN: %target-swift-typecheck-module-from-interface(%t/AmbiguousClientName.swiftinterface) -I%t
// RUN: %target-swift-frontend -emit-module -module-name OverlayClient \
// RUN: -swift-version 5 -enable-library-evolution \
// RUN: -o %t/OverlayClient.swiftmodule \
// RUN: -emit-module-interface-path %t/OverlayClient.swiftinterface \
// RUN: %t/OverlayClient.swift -I%t \
// RUN: -alias-module-names-in-module-interface
// RUN: %target-swift-typecheck-module-from-interface(%t/OverlayClient.swiftinterface) -I%t
//--- module.modulemap
module AmbiguousClientName {
header "AmbiguousClientName.h"
}
module SomeClangModule {
header "SomeClangModule.h"
}
//--- AmbiguousClientName.h
struct UnderlyingType {};
void underlyingFunc() {}
//--- SomeClangModule.h
struct CType {};
//--- ExportedLib.swift
public struct ExportedStruct {}
//--- AmbiguousLib.swift
@_exported import ExportedLib
// 1. AmbiguousLib defined a type named AmbiguousLib
public struct AmbiguousLib {
public struct Nested {}
}
// 2. A lib defines a type of the same name as a client's module
public struct AmbiguousClientName {
}
//--- AmbiguousClientName.swift
@_exported import AmbiguousClientName
import AmbiguousLib
import SomeClangModule
public struct SomeType {
@inlinable
public func inlinableFunc() {
var x: AmbiguousClientName
var y: Swift.Int
}
}
public func refToLocalType(_ a: SomeType) {}
public func refToNestedInLib(_ a: AmbiguousLib.Nested) {}
public func refToStdlib(_ a: Swift.Int) {}
public func refToUnderlying(_ a: UnderlyingType) {}
public func refToC(_ a: CType) {}
public func refToReexport(_ a: ExportedStruct) {}
//--- OverlayClient.swift
import AmbiguousClientName
public func refToImportedType(_ a: SomeType) {}
public func refToImportedUnderlying(_ a: UnderlyingType) {}
|