Description
Description
When conforming to a complex protocol with (at least?) three associated types, where:
- one associated type (say
A
) is unbounded - the other two associated types (say
Param
andRet
) are constrained to the protocol itself - there is a generic function over
B
in the formfunc fn<B>(param: Param) -> Ret where Param.A == (A) -> B, Ret.A == B
When the conformer itself is used as the substitution for Param
and Ret
, the compiler goes stuck for a bit and then crashes saying:
(there's more info after the stack trace)
error: compile command failed due to signal 6 (use -v to see invocation)
ConcreteTypeMatcher::verify(): Duplicate substitution
Abstract differences with LHS < RHS:
Abstract differences with RHS < LHS:
- τ_1_0 (#1) -> τ_0_0
- τ_1_0 (#3) -> τ_0_0
... lots and lots of this ...
- τ_1_0 (#65533) -> τ_0_0
- τ_1_0 (#65535) -> τ_0_0
Concrete differences with LHS < RHS:
Concrete differences with RHS < LHS:
Concrete conflicts:
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
(trace #1)
If I remove Param
(which is on function parameter position) and replace it with the type (A) -> B
, everything is ok. But if I replace Ret
(which is on function return position) with B
, the compiler crashes again but with a different error:
error: compile command failed due to signal 6 (use -v to see invocation)
Rewrite system exceeded concrete type nesting depth limit
Requirement machine for fresh signature < τ_0_0 τ_1_0 >
Rewrite system: {
- [Copyable].[Copyable] => [Copyable] [permanent]
- [Escapable].[Escapable] => [Escapable] [permanent]
- τ_1_0.[Copyable] => τ_1_0 [explicit]
- τ_1_0.[Escapable] => τ_1_0 [explicit]
- τ_0_0.[concrete: (τ_0_0) -> τ_1_0] => τ_0_0 [explicit] [subst↓]
- τ_0_0.[concrete: (@escaping (τ_0_0) -> τ_1_0) -> τ_1_0] => τ_0_0 [subst↓]
- τ_0_0.[concrete: (@escaping (@escaping (τ_0_0) -> τ_1_0) -> τ_1_0) -> τ_1_0] => τ_0_0 [subst↓]
- τ_0_0.[concrete: (@escaping (@escaping (@escaping (τ_0_0) -> τ_1_0) -> τ_1_0) -> τ_1_0) -> τ_1_0] => τ_0_0 [subst↓]
- τ_0_0.[concrete: (@escaping (@escaping (@escaping (@escaping (τ_0_0) -> τ_1_0) -> τ_1_0) -> τ_1_0) -> τ_1_0) -> τ_1_0] => τ_0_0 [subst↓]
... every row expands with one nested level per row until it gets massive! ...
Conformance paths: {
}
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
(trace #2)
Reproduction
protocol Crash {
associatedtype A
associatedtype Param: Crash
associatedtype Ret: Crash
func fn<B>(param: Param) -> Ret
where Param.A == (A) -> B, Ret.A == B
}
extension Optional: Crash {
typealias A = Wrapped
typealias Param = Optional
typealias Ret = Optional
func fn<B>(param: Param) -> Ret {
fatalError()
}
}
/* Also try to replace `Param` with `(A) -> B` and `Ret` with `B` */
Stack dump
(trace #1)
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file crash.swift -target arm64-apple-macosx14.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk -color-diagnostics -new-driver-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -module-name sw -disable-clang-spi -target-sdk-version 15.0 -target-sdk-name macosx15.0 -external-plugin-path /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins#/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -external-plugin-path /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/local/lib/swift/host/plugins#/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/lib/swift/host/plugins -o /var/folders/32/8zz3lkfd3tld9689tm_2nyym0000gp/T/TemporaryDirectory.MeEQ6t/sw-1.o
1. Apple Swift version 6.0 (swiftlang-6.0.0.9.10 clang-1600.0.26.2)
2. Compiling with effective version 5.10
3. While evaluating request TypeCheckSourceFileRequest(source_file "crash.swift")
4. While type-checking extension of Optional (at crash.swift:10:1)
5. While type-checking protocol conformance Optional<Wrapped>: Crash at extension of Optional (at crash.swift:10:1)
6. While evaluating request ResolveValueWitnessesRequest(<Wrapped> Optional<Wrapped>: Crash module sw)
7. While evaluating request AbstractGenericSignatureRequest(NULL, {τ_0_0, τ_1_0}, {τ_0_0 : Copyable, τ_0_0 : Escapable, Optional<τ_0_0> : Crash, τ_1_0 == Optional<Wrapped>.A, Optional<Wrapped>.A == (Optional<Wrapped>.A) -> τ_1_0}, 0)
8. While evaluating request AbstractGenericSignatureRequest(NULL, {τ_0_0, τ_1_0}, {τ_0_0 : Copyable, τ_0_0 : Escapable, Optional<τ_0_0> : Crash, τ_1_0 == τ_0_0, τ_0_0 == (τ_0_0) -> τ_1_0}, 0)
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 swift-frontend 0x0000000107c1f0fc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x0000000107c1d350 llvm::sys::RunSignalHandlers() + 112
2 swift-frontend 0x0000000107c1f6c8 SignalHandler(int) + 292
3 libsystem_platform.dylib 0x000000018ec06584 _sigtramp + 56
4 libsystem_pthread.dylib 0x000000018ebd5c20 pthread_kill + 288
5 libsystem_c.dylib 0x000000018eae2a30 abort + 180
6 swift-frontend 0x0000000103fcdb64 swift::rewriting::RewriteSystem::computeTypeDifference(swift::rewriting::Term, swift::rewriting::Symbol, swift::rewriting::Symbol, std::__1::optional<unsigned int>&, std::__1::optional<unsigned int>&) + 2216
7 swift-frontend 0x0000000103f97a1c swift::rewriting::PropertyMap::unifyConcreteTypes(swift::rewriting::Term, std::__1::optional<swift::rewriting::Symbol>&, llvm::SmallVectorImpl<std::__1::pair<swift::rewriting::Symbol, unsigned int>>&, swift::rewriting::Symbol, unsigned int) + 760
8 swift-frontend 0x0000000103f944dc swift::rewriting::PropertyMap::buildPropertyMap() + 1688
9 swift-frontend 0x0000000103fa6c40 swift::rewriting::RequirementMachine::computeCompletion(swift::rewriting::RewriteSystem::ValidityPolicy) + 240
10 swift-frontend 0x0000000103fa7d30 swift::rewriting::RequirementMachine::initWithWrittenRequirements(llvm::ArrayRef<swift::GenericTypeParamType*>, llvm::ArrayRef<swift::StructuralRequirement>) + 772
11 swift-frontend 0x0000000103fac1a4 swift::AbstractGenericSignatureRequest::evaluate(swift::Evaluator&, swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) const + 3744
12 swift-frontend 0x0000000103a29b50 swift::SimpleRequest<swift::AbstractGenericSignatureRequest, llvm::PointerIntPair<swift::GenericSignature, 3u, swift::optionset::OptionSet<swift::GenericSignatureErrorFlags, unsigned int>, llvm::PointerLikeTypeTraits<swift::GenericSignature>, llvm::PointerIntPairInfo<swift::GenericSignature, 3u, llvm::PointerLikeTypeTraits<swift::GenericSignature>>> (swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool), (swift::RequestFlags)2>::evaluateRequest(swift::AbstractGenericSignatureRequest const&, swift::Evaluator&) + 288
13 swift-frontend 0x0000000103ecb8cc swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultUncached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 660
14 swift-frontend 0x0000000103ecb580 swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultCached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'(), (void*)0>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 692
15 swift-frontend 0x0000000103fabb94 swift::AbstractGenericSignatureRequest::evaluate(swift::Evaluator&, swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) const + 2192
16 swift-frontend 0x0000000103a29b50 swift::SimpleRequest<swift::AbstractGenericSignatureRequest, llvm::PointerIntPair<swift::GenericSignature, 3u, swift::optionset::OptionSet<swift::GenericSignatureErrorFlags, unsigned int>, llvm::PointerLikeTypeTraits<swift::GenericSignature>, llvm::PointerIntPairInfo<swift::GenericSignature, 3u, llvm::PointerLikeTypeTraits<swift::GenericSignature>>> (swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool), (swift::RequestFlags)2>::evaluateRequest(swift::AbstractGenericSignatureRequest const&, swift::Evaluator&) + 288
17 swift-frontend 0x0000000103ecb8cc swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultUncached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 660
18 swift-frontend 0x0000000103ecb580 swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultCached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'(), (void*)0>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 692
19 swift-frontend 0x0000000103ec99b4 swift::buildGenericSignature(swift::ASTContext&, swift::GenericSignature, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) + 272
20 swift-frontend 0x0000000103f7267c swift::RequirementEnvironment::RequirementEnvironment(swift::DeclContext*, swift::GenericSignature, swift::ProtocolDecl*, swift::ClassDecl*, swift::RootProtocolConformance*) + 2280
21 swift-frontend 0x0000000103a03c90 swift::matchWitness(llvm::DenseMap<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, swift::RequirementEnvironment, llvm::DenseMapInfo<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, void>, llvm::detail::DenseMapPair<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, swift::RequirementEnvironment>>&, swift::ProtocolDecl*, swift::RootProtocolConformance*, swift::DeclContext*, swift::ValueDecl*, swift::ValueDecl*) + 520
22 swift-frontend 0x0000000103a04d28 swift::WitnessChecker::findBestWitness(swift::ValueDecl*, bool*, swift::NormalProtocolConformance*, llvm::SmallVectorImpl<swift::RequirementMatch>&, unsigned int&, unsigned int&, bool&) + 868
23 swift-frontend 0x0000000103a078d0 swift::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*) + 552
24 swift-frontend 0x0000000103a09ab0 swift::ConformanceChecker::resolveValueWitnesses() + 1364
25 swift-frontend 0x0000000103a2c1ec swift::SimpleRequest<swift::ResolveValueWitnessesRequest, std::__1::tuple<> (swift::NormalProtocolConformance*), (swift::RequestFlags)2>::evaluateRequest(swift::ResolveValueWitnessesRequest const&, swift::Evaluator&) + 140
26 swift-frontend 0x0000000103f69f9c swift::ResolveValueWitnessesRequest::OutputType swift::Evaluator::getResultCached<swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType swift::evaluateOrDefault<swift::ResolveValueWitnessesRequest>(swift::Evaluator&, swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType)::'lambda'(), (void*)0>(swift::ResolveValueWitnessesRequest const&, swift::ResolveValueWitnessesRequest::OutputType swift::evaluateOrDefault<swift::ResolveValueWitnessesRequest>(swift::Evaluator&, swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType)::'lambda'()) + 1260
27 swift-frontend 0x0000000103a15694 (anonymous namespace)::MultiConformanceChecker::checkAllConformances() + 16612
28 swift-frontend 0x0000000103a0ecd4 swift::TypeChecker::checkConformancesInContext(swift::IterableDeclContext*) + 6792
29 swift-frontend 0x000000010399e42c (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 22656
30 swift-frontend 0x0000000103998b9c swift::TypeChecker::typeCheckDecl(swift::Decl*) + 152
31 swift-frontend 0x0000000103a7fd5c swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 660
32 swift-frontend 0x0000000103a873c0 swift::TypeCheckSourceFileRequest::OutputType swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType)::'lambda'()>(swift::TypeCheckSourceFileRequest const&, swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType)::'lambda'()) + 620
33 swift-frontend 0x0000000103a7faac swift::performTypeChecking(swift::SourceFile&) + 328
34 swift-frontend 0x000000010299ece0 swift::CompilerInstance::performSema() + 260
35 swift-frontend 0x00000001025cc190 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1528
36 swift-frontend 0x00000001025caf58 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3572
37 swift-frontend 0x000000010255201c swift::mainEntry(int, char const**) + 3680
38 dyld 0x000000018e84b154 start + 2476
(trace #2)
0. Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file crash.swift -target arm64-apple-macosx14.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.0.sdk -color-diagnostics -new-driver-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -module-name sw -disable-clang-spi -target-sdk-version 15.0 -target-sdk-name macosx15.0 -external-plugin-path /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins#/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -external-plugin-path /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/local/lib/swift/host/plugins#/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins -plugin-path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/lib/swift/host/plugins -o /var/folders/32/8zz3lkfd3tld9689tm_2nyym0000gp/T/TemporaryDirectory.XtqAK2/sw-1.o
1. Apple Swift version 6.0 (swiftlang-6.0.0.9.10 clang-1600.0.26.2)
2. Compiling with effective version 5.10
3. While evaluating request TypeCheckSourceFileRequest(source_file "crash.swift")
4. While type-checking extension of Optional (at crash.swift:9:1)
5. While type-checking protocol conformance Optional<Wrapped>: Crash at extension of Optional (at crash.swift:9:1)
6. While evaluating request ResolveValueWitnessesRequest(<Wrapped> Optional<Wrapped>: Crash module sw)
7. While evaluating request AbstractGenericSignatureRequest(NULL, {τ_0_0, τ_1_0}, {τ_0_0 : Copyable, τ_0_0 : Escapable, Optional<τ_0_0> : Crash, τ_1_0 : Copyable, τ_1_0 : Escapable, Optional<Wrapped>.A == (Optional<Wrapped>.A) -> τ_1_0}, 0)
8. While evaluating request AbstractGenericSignatureRequest(NULL, {τ_0_0, τ_1_0}, {τ_0_0 : Copyable, τ_0_0 : Escapable, Optional<τ_0_0> : Crash, τ_1_0 : Copyable, τ_1_0 : Escapable, τ_0_0 == (τ_0_0) -> τ_1_0}, 0)
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0 swift-frontend 0x0000000107bbf0fc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x0000000107bbd350 llvm::sys::RunSignalHandlers() + 112
2 swift-frontend 0x0000000107bbf6c8 SignalHandler(int) + 292
3 libsystem_platform.dylib 0x000000018ec06584 _sigtramp + 56
4 libsystem_pthread.dylib 0x000000018ebd5c20 pthread_kill + 288
5 libsystem_c.dylib 0x000000018eae2a30 abort + 180
6 swift-frontend 0x0000000103f45e44 swift::rewriting::RequirementMachine::checkCompletionResult(swift::rewriting::CompletionResult) const + 88
7 swift-frontend 0x0000000103f4c1b0 swift::AbstractGenericSignatureRequest::evaluate(swift::Evaluator&, swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) const + 3756
8 swift-frontend 0x00000001039c9b50 swift::SimpleRequest<swift::AbstractGenericSignatureRequest, llvm::PointerIntPair<swift::GenericSignature, 3u, swift::optionset::OptionSet<swift::GenericSignatureErrorFlags, unsigned int>, llvm::PointerLikeTypeTraits<swift::GenericSignature>, llvm::PointerIntPairInfo<swift::GenericSignature, 3u, llvm::PointerLikeTypeTraits<swift::GenericSignature>>> (swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool), (swift::RequestFlags)2>::evaluateRequest(swift::AbstractGenericSignatureRequest const&, swift::Evaluator&) + 288
9 swift-frontend 0x0000000103e6b8cc swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultUncached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 660
10 swift-frontend 0x0000000103e6b580 swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultCached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'(), (void*)0>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 692
11 swift-frontend 0x0000000103f4bb94 swift::AbstractGenericSignatureRequest::evaluate(swift::Evaluator&, swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) const + 2192
12 swift-frontend 0x00000001039c9b50 swift::SimpleRequest<swift::AbstractGenericSignatureRequest, llvm::PointerIntPair<swift::GenericSignature, 3u, swift::optionset::OptionSet<swift::GenericSignatureErrorFlags, unsigned int>, llvm::PointerLikeTypeTraits<swift::GenericSignature>, llvm::PointerIntPairInfo<swift::GenericSignature, 3u, llvm::PointerLikeTypeTraits<swift::GenericSignature>>> (swift::GenericSignatureImpl const*, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool), (swift::RequestFlags)2>::evaluateRequest(swift::AbstractGenericSignatureRequest const&, swift::Evaluator&) + 288
13 swift-frontend 0x0000000103e6b8cc swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultUncached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 660
14 swift-frontend 0x0000000103e6b580 swift::AbstractGenericSignatureRequest::OutputType swift::Evaluator::getResultCached<swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'(), (void*)0>(swift::AbstractGenericSignatureRequest const&, swift::AbstractGenericSignatureRequest::OutputType swift::evaluateOrDefault<swift::AbstractGenericSignatureRequest>(swift::Evaluator&, swift::AbstractGenericSignatureRequest, swift::AbstractGenericSignatureRequest::OutputType)::'lambda'()) + 692
15 swift-frontend 0x0000000103e699b4 swift::buildGenericSignature(swift::ASTContext&, swift::GenericSignature, llvm::SmallVector<swift::GenericTypeParamType*, 2u>, llvm::SmallVector<swift::Requirement, 2u>, bool) + 272
16 swift-frontend 0x0000000103f1267c swift::RequirementEnvironment::RequirementEnvironment(swift::DeclContext*, swift::GenericSignature, swift::ProtocolDecl*, swift::ClassDecl*, swift::RootProtocolConformance*) + 2280
17 swift-frontend 0x00000001039a3c90 swift::matchWitness(llvm::DenseMap<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, swift::RequirementEnvironment, llvm::DenseMapInfo<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, void>, llvm::detail::DenseMapPair<std::__1::pair<swift::GenericSignatureImpl const*, swift::ClassDecl const*>, swift::RequirementEnvironment>>&, swift::ProtocolDecl*, swift::RootProtocolConformance*, swift::DeclContext*, swift::ValueDecl*, swift::ValueDecl*) + 520
18 swift-frontend 0x00000001039a4d28 swift::WitnessChecker::findBestWitness(swift::ValueDecl*, bool*, swift::NormalProtocolConformance*, llvm::SmallVectorImpl<swift::RequirementMatch>&, unsigned int&, unsigned int&, bool&) + 868
19 swift-frontend 0x00000001039a78d0 swift::ConformanceChecker::resolveWitnessViaLookup(swift::ValueDecl*) + 552
20 swift-frontend 0x00000001039a9ab0 swift::ConformanceChecker::resolveValueWitnesses() + 1364
21 swift-frontend 0x00000001039cc1ec swift::SimpleRequest<swift::ResolveValueWitnessesRequest, std::__1::tuple<> (swift::NormalProtocolConformance*), (swift::RequestFlags)2>::evaluateRequest(swift::ResolveValueWitnessesRequest const&, swift::Evaluator&) + 140
22 swift-frontend 0x0000000103f09f9c swift::ResolveValueWitnessesRequest::OutputType swift::Evaluator::getResultCached<swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType swift::evaluateOrDefault<swift::ResolveValueWitnessesRequest>(swift::Evaluator&, swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType)::'lambda'(), (void*)0>(swift::ResolveValueWitnessesRequest const&, swift::ResolveValueWitnessesRequest::OutputType swift::evaluateOrDefault<swift::ResolveValueWitnessesRequest>(swift::Evaluator&, swift::ResolveValueWitnessesRequest, swift::ResolveValueWitnessesRequest::OutputType)::'lambda'()) + 1260
23 swift-frontend 0x00000001039b5694 (anonymous namespace)::MultiConformanceChecker::checkAllConformances() + 16612
24 swift-frontend 0x00000001039aecd4 swift::TypeChecker::checkConformancesInContext(swift::IterableDeclContext*) + 6792
25 swift-frontend 0x000000010393e42c (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 22656
26 swift-frontend 0x0000000103938b9c swift::TypeChecker::typeCheckDecl(swift::Decl*) + 152
27 swift-frontend 0x0000000103a1fd5c swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 660
28 swift-frontend 0x0000000103a273c0 swift::TypeCheckSourceFileRequest::OutputType swift::Evaluator::getResultUncached<swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType)::'lambda'()>(swift::TypeCheckSourceFileRequest const&, swift::TypeCheckSourceFileRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckSourceFileRequest>(swift::Evaluator&, swift::TypeCheckSourceFileRequest, swift::TypeCheckSourceFileRequest::OutputType)::'lambda'()) + 620
29 swift-frontend 0x0000000103a1faac swift::performTypeChecking(swift::SourceFile&) + 328
30 swift-frontend 0x000000010293ece0 swift::CompilerInstance::performSema() + 260
31 swift-frontend 0x000000010256c190 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1528
32 swift-frontend 0x000000010256af58 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3572
33 swift-frontend 0x00000001024f201c swift::mainEntry(int, char const**) + 3680
34 dyld 0x000000018e84b154 start + 2476
Expected behavior
I expected the compiler to not crash and give some info about why the code is wrong at high level (e.g. the issue is that the generic constraints are... under constrained, so there are infinite solutions available?), not in tau / substitution map terms.
Environment
swift-driver version: 1.115 Apple Swift version 6.0 (swiftlang-6.0.0.9.10 clang-1600.0.26.2)
Target: arm64-apple-macosx14.0
Additional information
No response