Skip to content

Swift frontend crashes with infinite recursion with cxx-compatibility-mode-default #85361

@datwelk

Description

@datwelk

Description

Compiling the attached file part of the Turf target crashes the swift frontend. I extracted it from https://github.com/mapbox/turf-swift

I put up the reduced project here: https://github.com/datwelk/turf-swift/tree/feature/swift-crash-case

Compiling the target as follows:

swift build --configuration=release --target Turf -v \
  -Xswiftc -cxx-interoperability-mode=default \
  -Xswiftc -emit-clang-header-path -Xswiftc /tmp/Turf-Swift.h \
  -v

Reproduction

import Foundation

public enum JSONValue: Hashable, Sendable {
    case array(_ values: JSONArray)
    case object(_ properties: JSONObject)
    
    public init(_ values: JSONArray) {
        self = .array(values)
    }
    
    public init(_ properties: JSONObject) {
        self = .object(properties)
    }
}

extension JSONValue {
    public var array: JSONArray? {
        if case let .array(value) = self {
            return value
        }
        return nil
    }
    
    public var object: JSONObject? {
        if case let .object(value) = self {
            return value
        }
        return nil
    }
}

extension JSONValue: RawRepresentable {
    public typealias RawValue = Any
    
    public init?(rawValue: Any) {
        if let rawArray = rawValue as? JSONArray.TurfRawValue,
                  let array = JSONArray(turfRawValue: rawArray) {
            self = .array(array)
        } else if let rawObject = rawValue as? JSONObject.TurfRawValue,
                  let object = JSONObject(turfRawValue: rawObject) {
            self = .object(object)
        } else {
            return nil
        }
    }
    
    public var rawValue: Any {
        switch self {
        case let .object(value):
            return value.turfRawValue
        case let .array(value):
            return value.turfRawValue
        }
    }
}

public typealias JSONArray = [JSONValue?]

extension JSONArray {
    public typealias TurfRawValue = [Any?]

    public init?(turfRawValue values: TurfRawValue) {
        self = values.map(JSONValue.init(rawValue:))
    }

    public var turfRawValue: TurfRawValue {
        return map { $0?.rawValue }
    }
}

public typealias JSONObject = [String: JSONValue?]

extension JSONObject {
    public typealias TurfRawValue = [String: Any?]
    
    public init?(turfRawValue: TurfRawValue) {
        self = turfRawValue.mapValues { $0.flatMap(JSONValue.init(rawValue:)) }
    }
    
    public var turfRawValue: TurfRawValue {
        return mapValues { $0?.rawValue }
    }
}


extension JSONValue: ExpressibleByArrayLiteral {
    public typealias ArrayLiteralElement = JSONValue?
    
    public init(arrayLiteral elements: ArrayLiteralElement...) {
        self = .init(elements)
    }
}

extension JSONValue: ExpressibleByDictionaryLiteral {
    public typealias Key = String
    public typealias Value = JSONValue?
    
    public init(dictionaryLiteral elements: (Key, Value)...) {
        self = .init(.init(uniqueKeysWithValues: elements))
    }
}

extension JSONValue: Codable {
    public init(from decoder: Decoder) throws {
        let container = try decoder.singleValueContainer()
        if let object = try? container.decode(JSONObject.self) {
            self = .object(object)
        } else if let array = try? container.decode(JSONArray.self) {
            self = .array(array)
        } else {
            throw DecodingError.typeMismatch(JSONValue.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Unable to decode as a JSONValue."))
        }
    }
    
    public func encode(to encoder: Encoder) throws {
        var container = encoder.singleValueContainer()
        switch self {
        case let .object(value):
            try container.encode(value)
        case let .array(value):
            try container.encode(value)
        }
    }
}

Stack dump

0   swift-frontend                	       0x10611e774 swift::GenericEnvironment::getOrCreateArchetypeFromInterfaceType(swift::Type) + 4
1   swift-frontend                	       0x10611f0e0 swift::TypeTransform<(anonymous namespace)::MapTypeIntoContext>::doIt(swift::Type, swift::TypePosition) + 424
2   swift-frontend                	       0x106121e80 swift::TypeTransform<(anonymous namespace)::MapTypeIntoContext>::doIt(swift::Type, swift::TypePosition)::'lambda'(swift::Type, swift::TypePosition)::operator()(swift::Type, swift::TypePosition) const + 36
3   swift-frontend                	       0x10611ff90 swift::TypeTransform<(anonymous namespace)::MapTypeIntoContext>::doIt(swift::Type, swift::TypePosition) + 4184
4   swift-frontend                	       0x1060b10bc swift::DeclContext::getDeclaredTypeInContext() const + 320
5   swift-frontend                	       0x104c97014 swift::IRABIDetailsProvider::getTypeSizeAlignment(swift::NominalTypeDecl const*) + 36
6   swift-frontend                	       0x1047d67ac std::__1::__function::__func<swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*)::$_0, std::__1::allocator<swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*)::$_0>, bool (swift::NominalTypeDecl const*)>::operator()(swift::NominalTypeDecl const*&&) + 76
7   swift-frontend                	       0x1062698fc swift::cxx_translation::getDeclRepresentation(swift::ValueDecl const*, std::__1::optional<std::__1::function<bool (swift::NominalTypeDecl const*)>>) + 1716
8   swift-frontend                	       0x1047d2bbc swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 576
9   swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
10  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
11  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
12  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
13  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
14  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
15  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
16  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
17  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
18  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
19  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
20  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
21  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
22  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
23  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
24  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
25  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
26  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
27  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
28  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
29  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
30  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
31  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
32  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
33  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
34  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
35  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
36  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
37  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
38  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
39  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
40  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
41  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
42  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
43  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
44  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
45  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
46  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
47  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
48  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
49  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
50  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
51  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
52  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
53  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
54  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
55  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
56  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
57  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
58  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
59  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
60  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
61  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
62  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
63  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
64  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
65  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
66  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
67  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
68  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
69  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
70  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
71  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
72  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
73  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
74  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
75  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
76  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
77  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
78  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
79  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
80  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
81  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
82  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
83  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
84  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
85  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
86  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
87  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
88  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
89  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
90  swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
91  swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
92  swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
93  swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
94  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
95  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
96  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
97  swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
98  swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
99  swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
100 swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
101 swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
102 swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
103 swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
104 swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
105 swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
106 swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
107 swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
108 swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
109 swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
110 swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
111 swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
112 swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
113 swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
114 swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
115 swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
116 swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
117 swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216
118 swift-frontend                	       0x104810520 void llvm::function_ref<void ()>::callback_fn<(anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>)::'lambda1'()>(long) + 228
119 swift-frontend                	       0x10480f804 (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 452
120 swift-frontend                	       0x10480b654 swift::DeclAndTypeClangFunctionPrinter::getTypeRepresentation(swift::PrimitiveTypeMapping&, swift::SwiftToClangInteropContext&, swift::DeclAndTypePrinter&, swift::ModuleDecl const*, swift::Type) + 448
121 swift-frontend                	       0x1047d2ec8 swift::DeclAndTypePrinter::shouldInclude(swift::ValueDecl const*) + 1356
122 swift-frontend                	       0x10480f69c (anonymous namespace)::CFunctionSignatureTypePrinter::visitValueType(swift::TypeBase*, swift::NominalTypeDecl const*, std::__1::optional<swift::OptionalTypeKind>, bool, llvm::ArrayRef<swift::Type>) + 92
123 swift-frontend                	       0x10480e8b4 <deduplicated_symbol> + 104
124 swift-frontend                	       0x1048102d4 (anonymous namespace)::CFunctionSignatureTypePrinter::visitGenericArgs(llvm::ArrayRef<swift::Type>) + 216

Expected behavior

No crash, the c++ compat header would be output.

Environment

swift-driver version: 1.127.14.1 Apple Swift version 6.2 (swiftlang-6.2.0.19.9 clang-1700.3.19.1)
Target: arm64-apple-macosx15.0

Additional information

I had to omit frames from the stack trace due to max input size of the text field on Github. Without cxx-compatibility-mode it compiles just fine, no crash occurs.

Metadata

Metadata

Assignees

Labels

bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.c++ interopFeature: Interoperability with C++crashBug: A crash, i.e., an abnormal termination of software

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions