mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
When we build incrementally, we produce "partial swiftmodules" for each input source file, then merge them together into the final compiled module that, among other things, gets used for debugging. Without this, we'd drop @_implementationOnly imports and any types from the modules that were imported during the module-merging step and then be unable to debug those types
24 lines
1.0 KiB
Swift
24 lines
1.0 KiB
Swift
// This is a very simple test that module merging does not eliminate
|
|
// @_implementationOnly imports or declarations referenced from those imports.
|
|
// More thorough tests exist in LLDB, which can look into those imports when
|
|
// debugging a client of the module with @_implementationOnly imports.
|
|
|
|
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/def_struct.swift
|
|
|
|
// RUN: %target-swift-frontend -emit-module -I %t -o %t/main~partial.swiftmodule -module-name main %s
|
|
// RUN: llvm-bcanalyzer -dump %t/main~partial.swiftmodule | %FileCheck %s
|
|
// RUN: grep -q TwoInts %t/main~partial.swiftmodule
|
|
|
|
// RUN: %target-swift-frontend -merge-modules -emit-module -I %t -o %t/main.swiftmodule %t/main~partial.swiftmodule
|
|
// RUN: llvm-bcanalyzer -dump %t/main.swiftmodule | %FileCheck %s
|
|
// RUN: grep -q TwoInts %t/main.swiftmodule
|
|
|
|
@_implementationOnly import def_struct
|
|
|
|
struct Container {
|
|
var wrapped: TwoInts
|
|
}
|
|
|
|
// CHECK: <IMPORTED_MODULE abbrevid={{[0-9]+}} op0=2 op1=0{{.*}}/> blob data = 'def_struct'
|