mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
To trigger this error one needs to import a nested type from C++, use it in a generic context in Swift, and export it back to C++. We were inconsisent in what namespace did we declare the functions to get the type metadata for types. It was in the swift namespace for foreign types and in the module namespace for Swift types. This PR standardizes on how the metadata function is declared and called to fix the issue. Fixes #80538. rdar://148597079
79 lines
1.9 KiB
Swift
79 lines
1.9 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend %s -enable-library-evolution -module-name Structs -clang-header-expose-decls=all-public -typecheck -verify -emit-clang-header-path %t/structs.h
|
|
// RUN: %check-interop-cxx-header-in-clang(%t/structs.h -DSWIFT_CXX_INTEROP_HIDE_STL_OVERLAY -std=c++17)
|
|
|
|
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend %s -module-name Structs -clang-header-expose-decls=all-public -typecheck -verify -emit-clang-header-path %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
|
|
}
|
|
}
|
|
|
|
extension RecordConfig.File {
|
|
public func getFileExtension() -> String { ".wav" }
|
|
}
|
|
|
|
public func getFiles() -> [RecordConfig.File] {
|
|
[]
|
|
}
|