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 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
// RUN: %empty-directory(%t)
// RUN: cp -r %S/Inputs/imported_modules/ComplexModuleGraph2 %t/include
// REQUIRES: objc_interop
// Dependency graph:
//
// * CoreFilesystem - Swift module with generated ObjC header
// * FilesystemKit - ObjC module without overlay, has #import <CoreFileystem-Generated.h>
// * TestFilesystem - Swift module, has import CoreFilesystem or FilesystemKit.
//
// * CoreDaemon - ObjC module with overlay, the overlay has import DaemonKit
// * DaemonKit - ObjC module without overlay, has #import <CoreDaemon.h>
// * TestDaemon - Swift module, has import CoreDaemon or DaemonKit.
// NOTE: This mimics the Darwin -> SwiftOverlayShims -> Darwin dependency "cycle".
//
// * CoreMemory - ObjC module with overlay and generated header for overlay, the overlay has import MemoryKit
// * MemoryKit - ObjC module without overlay, has #import <CoreMemory-Generated.h>
// * TestMemory - Swift module, has import CoreMemory or MemoryKit.
// 1. CoreFilesystem - Build.
// RUN: %target-swift-frontend %s -emit-module -o %t/include/CoreFilesystem.swiftmodule -DCoreFilesystem -module-name CoreFilesystem -emit-objc-header-path %t/include/CoreFilesystem-Generated.h -disable-objc-attr-requires-foundation-module
#if CoreFilesystem
@objc
public class MyNode {
public var number: Int
public init(_ n: Int) { number = n }
}
#endif
// 2. FilesystemKit - Nothing to do (pure Clang module).
// 3. TestFilesystem - Check that CoreFilesystem and Filesystem can be imported.
// RUN: %target-swift-frontend %s -typecheck -DTestFilesystem -DV1 -module-name TestFilesystemV1 -emit-loaded-module-trace-path %t/TestFilesystemV1.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTFILESYSTEM < %t/TestFilesystemV1.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestFilesystem -DV2 -module-name TestFilesystemV2 -emit-loaded-module-trace-path %t/TestFilesystemV2.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTFILESYSTEM < %t/TestFilesystemV2.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestFilesystem -DV3 -module-name TestFilesystemV3 -emit-loaded-module-trace-path %t/TestFilesystemV3.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTFILESYSTEM < %t/TestFilesystemV3.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestFilesystem -DV4 -module-name TestFilesystemV4 -emit-loaded-module-trace-path %t/TestFilesystemV4.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTFILESYSTEM < %t/TestFilesystemV4.trace.json
#if TestFilesystem
#if V1
import CoreFilesystem
#endif
#if V2
import FilesystemKit
public func noop(_: CoreFilesystem.MyNode) {}
#endif
#if V3
import CoreFilesystem
import FilesystemKit
#endif
#if V4
import FilesystemKit
import CoreFilesystem
#endif
#endif
// FilesystemKit has no overlay, so it shouldn't show up.
// TESTFILESYSTEM: "swiftmodulesDetailedInfo":[
// TESTFILESYSTEM-NOT: FilesystemKit
// TESTFILESYSTEM-DAG: {"name":"CoreFilesystem","path":"{{[^"]*}}CoreFilesystem.swiftmodule","isImportedDirectly":true,
// TESTFILESYSTEM: ]
// 4. CoreDaemon - Build.
// RUN: %target-swift-frontend %s -emit-module -o %t/include/CoreDaemon.swiftmodule -DCoreDaemon -module-name CoreDaemon -emit-loaded-module-trace-path %t/CoreDaemon.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=COREDAEMON < %t/CoreDaemon.trace.json
// * CoreDaemon - ObjC module with overlay, the overlay has import DaemonKit
// * DaemonKit - ObjC module without overlay, has #import <CoreDaemon.h>
// * TestDaemon - Swift module, has import CoreDaemon or DaemonKit.
#if CoreDaemon
@_exported import CoreDaemon
import DaemonKit
public func runBoth(_ pair: DaemonKit.DaemonPair) {
let daemons : (CoreDaemon.Daemon, CoreDaemon.Daemon) = pair.daemons;
daemons.0.run(0);
daemons.1.run(1);
}
#endif
// COREDAEMON: "swiftmodulesDetailedInfo":[
// COREDAEMON-NOT: CoreDaemon
// COREDAEMON-NOT: DaemonKit
// COREDAEMON: ]
// 5. DaemonKit - Nothing to do (pure Clang module).
// 6. TestCoreDaemon
// RUN: %target-swift-frontend %s -typecheck -DTestDaemon -DV1 -module-name TestDaemonV1 -emit-loaded-module-trace-path %t/TestDaemonV1.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTDAEMON < %t/TestDaemonV1.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestDaemon -DV2 -module-name TestDaemonV2 -emit-loaded-module-trace-path %t/TestDaemonV2.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTDAEMON < %t/TestDaemonV2.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestDaemon -DV3 -module-name TestDaemonV3 -emit-loaded-module-trace-path %t/TestDaemonV3.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTDAEMON < %t/TestDaemonV3.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestDaemon -DV4 -module-name TestDaemonV4 -emit-loaded-module-trace-path %t/TestDaemonV4.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTDAEMON < %t/TestDaemonV4.trace.json
#if TestDaemon
#if V1
import CoreDaemon
#endif
#if V2
import DaemonKit
public func noop(_: CoreDaemon.Daemon, _: MaxwellsDaemon) {}
#endif
#if V3
import CoreDaemon
import DaemonKit
#endif
#if V4
import DaemonKit
import CoreDaemon
#endif
#endif
// DaemonKit has no overlay, so it shouldn't show up.
// TESTDAEMON: "swiftmodulesDetailedInfo":[
// TESTDAEMON-NOT: DaemonKit
// TESTDAEMON-DAG: {"name":"CoreDaemon","path":"{{[^"]*}}CoreDaemon.swiftmodule","isImportedDirectly":true,
// TESTDAEMON: ]
// 7. CoreMemory - Build.
// RUN: %target-swift-frontend %s -emit-module -o %t/include/CoreMemory.swiftmodule -DCoreMemory -module-name CoreMemory -emit-objc-header-path %t/include/CoreMemory-Generated.h -disable-objc-attr-requires-foundation-module -I %t/include
#if CoreMemory
@_exported import CoreMemory
@objc
public class MemoryMapEntry {
public var region: MemoryMapRegion
public var permissions: Int = 0
public init(_ r: MemoryMapRegion) { region = r }
}
#endif
// 8. MemoryKit - Nothing to do (pure Clang module).
// 9. TestMemory - Check that CoreMemory and MemoryKit can be imported.
// RUN: %target-swift-frontend %s -typecheck -DTestMemory -DV1 -module-name TestMemoryV1 -emit-loaded-module-trace-path %t/TestMemoryV1.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTMEMORY < %t/TestMemoryV1.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestMemory -DV2 -module-name TestMemoryV2 -emit-loaded-module-trace-path %t/TestMemoryV2.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTMEMORY < %t/TestMemoryV2.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestMemory -DV3 -module-name TestMemoryV3 -emit-loaded-module-trace-path %t/TestMemoryV3.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTMEMORY < %t/TestMemoryV3.trace.json
// RUN: %target-swift-frontend %s -typecheck -DTestMemory -DV4 -module-name TestMemoryV4 -emit-loaded-module-trace-path %t/TestMemoryV4.trace.json -I %t/include
// RUN: %FileCheck %s --check-prefix=TESTMEMORY < %t/TestMemoryV4.trace.json
#if TestMemory
#if V1
import CoreMemory
#endif
#if V2
import MemoryKit
public func noop(_: CoreMemory.MemoryMapRegion, _: CoreMemory.MemoryMapEntry) {}
#endif
#if V3
import CoreMemory
import MemoryKit
#endif
#if V4
import MemoryKit
import CoreMemory
#endif
#endif
// MemoryKit has no overlay, so it shouldn't show up.
// TESTMEMORY: "swiftmodulesDetailedInfo":[
// TESTMEMORY-NOT: MemoryKit
// TESTMEMORY-DAG: {"name":"CoreMemory","path":"{{[^"]*}}CoreMemory.swiftmodule","isImportedDirectly":true,
// TESTMEMORY: ]
|