mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
To support nested structs, we emit type aliases in the outer class. Unfortunately, we emitted these type aliases unconditionally, even if the actualy nested struct was not emitted to the reverse interop header (due to visibility or the construct being unsupported). This PR fixed this issue by checking first if the nested entity should be included in the reverse interop header. rdar://141688074
69 lines
1.5 KiB
Swift
69 lines
1.5 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend %s -enable-library-evolution -typecheck -module-name Structs -clang-header-expose-decls=all-public -emit-clang-header-path %t/structs.h
|
|
// RN: %FileCheck %s < %t/structs.h
|
|
|
|
// RUN: %check-interop-cxx-header-in-clang(%t/structs.h -DSWIFT_CXX_INTEROP_HIDE_STL_OVERLAY -std=c++17)
|
|
|
|
public enum AudioFileType {
|
|
public enum WaveType {
|
|
case THIS
|
|
case THAT
|
|
}
|
|
|
|
public struct SubType {
|
|
public var id: Int
|
|
}
|
|
|
|
case CAF(SubType), WAVE(WaveType)
|
|
}
|
|
|
|
public struct RecordConfig {
|
|
public enum AudioFormat {
|
|
case PCM, ALAC, AAC
|
|
}
|
|
|
|
public struct Directory {
|
|
public var path: String?
|
|
}
|
|
|
|
public struct File {
|
|
public var type: AudioFileType = .CAF(AudioFileType.SubType(id: 42))
|
|
public var format: AudioFormat = .ALAC
|
|
|
|
public struct Gate {
|
|
public var prop: Double = -80.0
|
|
}
|
|
}
|
|
|
|
public class Serializer {
|
|
public init(_ x: Int) { self.id = x }
|
|
public var id: Int
|
|
}
|
|
|
|
public var directory = Directory()
|
|
public var file = File()
|
|
public var gate = File.Gate()
|
|
}
|
|
|
|
public class AuxConfig {
|
|
public struct AuxDirectory {
|
|
public var path: String?
|
|
}
|
|
|
|
public var directory = AuxDirectory()
|
|
}
|
|
|
|
public func makeRecordConfig() -> RecordConfig {
|
|
return RecordConfig()
|
|
}
|
|
|
|
public func makeAudioFileType() -> AudioFileType {
|
|
return AudioFileType.CAF(AudioFileType.SubType(id: 42))
|
|
}
|
|
|
|
public class TestObject {
|
|
enum CustomError: Swift.Error {
|
|
case invalid
|
|
}
|
|
}
|