Open
Description
Description
For context I'm attempting to modify SwiftSyntax's SyntaxVisitor to support typed throws by annotating each visitor method with a throws (E)
effect specifier, where E: Error
. I'm currently using Swift 6.1, so I'm using the @_specialize
annotation rather than @specialized
. I'm able to annotate individual visit methods but if I try to annotate walk
which drives the entire traversal I encounter the crash.
Reproduction
open class ThrowingSyntaxVisitor<E: Error> {
// initializer...
@_specialize(exported: true, kind: partial, where E == Never)
public func walk(_ node: some SyntaxProtocol) throws (E) {
try dispatchVisit(Syntax(node))
}
// remainder of visitor class...
}
Stack dump
error: compile command failed due to signal 11 (use -v to see invocation)
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0. Program arguments: /Applications/Xcode_16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c /Users/ethansmith/swift-syntax/Sources/SwiftOperators/Operator.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorError+Diagnostics.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorError.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorTable+Defaults.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorTable+Folding.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorTable+Semantics.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorTable.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/PrecedenceGraph.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/PrecedenceGroup.swift /Users/ethansmith/swift-syntax/Sources/SwiftOperators/SyntaxSynthesis.swift -supplementary-output-file-map /var/folders/1w/_t71y0091x5994q_qjw6nmsm00g9ps/T/TemporaryDirectory.DkSMz1/supplementaryOutputs-1 -target arm64-apple-macosx10.15 -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -sdk /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk -I /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/Modules -I /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -F /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/PrivateFrameworks -color-diagnostics -enable-testing -g -debug-info-format=dwarf -dwarf-version=4 -module-cache-path /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/ModuleCache -swift-version 6 -O -D SWIFT_PACKAGE -new-driver-path /Applications/Xcode_16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-driver -empty-abi-descriptor -resource-dir /Applications/Xcode_16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -file-compilation-dir /Users/ethansmith/swift-syntax -Xcc -fmodule-map-file=/Users/ethansmith/swift-syntax/Sources/_SwiftSyntaxCShims/include/module.modulemap -Xcc -I -Xcc /Users/ethansmith/swift-syntax/Sources/_SwiftSyntaxCShims/include -Xcc -isysroot -Xcc /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk -Xcc -F -Xcc /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -Xcc -F -Xcc /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/PrivateFrameworks -Xcc -fPIC -Xcc -g -module-name SwiftOperators -package-name swift_syntax -disable-clang-spi -target-sdk-version 15.5 -target-sdk-name macosx15.5 -external-plugin-path /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins#/Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -external-plugin-path /Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/local/lib/swift/host/plugins#/Applications/Xcode_16.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -in-process-plugin-server-path /Applications/Xcode_16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/libSwiftInProcPluginServer.dylib -plugin-path /Applications/Xcode_16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins -plugin-path /Applications/Xcode_16.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/lib/swift/host/plugins -enable-default-cmo -parse-as-library -num-threads 10 -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/Operator.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/OperatorError+Diagnostics.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/OperatorError.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/OperatorTable+Defaults.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/OperatorTable+Folding.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/OperatorTable+Semantics.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/OperatorTable.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/PrecedenceGraph.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/PrecedenceGroup.swift.o -o /Users/ethansmith/swift-syntax/.build/arm64-apple-macosx/release/SwiftOperators.build/SyntaxSynthesis.swift.o
1. Apple Swift version 6.1.2 (swiftlang-6.1.2.1.2 clang-1700.0.13.5)
2. Compiling with the current language version
3. While evaluating request ExecuteSILPipelineRequest(Run pipelines { PrepareOptimizationPasses, EarlyModulePasses, HighLevel,Function+EarlyLoopOpt, HighLevel,Module+StackPromote, MidLevel,Function, ClosureSpecialize, LowLevel,Function, LateLoopOpt, SIL Debug Info Generator } on SIL for SwiftOperators)
4. While running pass #109676 SILFunctionTransform "GenericSpecializer" on SILFunction "@$s14SwiftOperators13OperatorTableV13addSourceFile_12errorHandlery0A6Syntax0fgJ0V_yAA0C5ErrorOKXEtKF".
for 'addSourceFile(_:errorHandler:)' (at /Users/ethansmith/swift-syntax/Sources/SwiftOperators/OperatorTable+Semantics.swift:91:19)
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 0x000000010917ee24 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x000000010917cc5c llvm::sys::RunSignalHandlers() + 112
2 swift-frontend 0x000000010917f460 SignalHandler(int) + 360
3 libsystem_platform.dylib 0x0000000181fbc624 _sigtramp + 56
4 swift-frontend 0x0000000103929868 (anonymous namespace)::TypeClassifierBase<(anonymous namespace)::LowerType, swift::Lowering::TypeLowering*>::visitAbstractTypeParamType(swift::CanType, swift::Lowering::AbstractionPattern, swift::Lowering::IsTypeExpansionSensitive_t) + 108
5 swift-frontend 0x0000000103929868 (anonymous namespace)::TypeClassifierBase<(anonymous namespace)::LowerType, swift::Lowering::TypeLowering*>::visitAbstractTypeParamType(swift::CanType, swift::Lowering::AbstractionPattern, swift::Lowering::IsTypeExpansionSensitive_t) + 108
6 swift-frontend 0x0000000103919784 (anonymous namespace)::TypeClassifierBase<(anonymous namespace)::LowerType, swift::Lowering::TypeLowering*>::visit(swift::CanType, swift::Lowering::AbstractionPattern, swift::Lowering::IsTypeExpansionSensitive_t) + 300
7 swift-frontend 0x0000000103919ea8 swift::Lowering::TypeConverter::getTypeLoweringForLoweredType(swift::Lowering::AbstractionPattern, swift::CanType, swift::TypeExpansionContext, swift::Lowering::IsTypeExpansionSensitive_t) + 460
8 swift-frontend 0x00000001040303cc swift::ReabstractionInfo::getParamTypeCategory(swift::SILParameterInfo const&, swift::SILFunctionConventions const&, swift::TypeExpansionContext) + 580
9 swift-frontend 0x000000010402fde0 swift::ReabstractionInfo::createSubstitutedAndSpecializedTypes() + 1188
10 swift-frontend 0x0000000104030e54 swift::ReabstractionInfo::finishPartialSpecializationPreparation(swift::FunctionSignaturePartialSpecializer&) + 424
11 swift-frontend 0x00000001040312fc swift::ReabstractionInfo::ReabstractionInfo(swift::ModuleDecl*, bool, swift::SILFunction*, swift::GenericSignature, bool) + 1164
12 swift-frontend 0x0000000104037050 swift::trySpecializeApplyOfGeneric(swift::SILOptFunctionBuilder&, swift::ApplySite, llvm::SmallSetVector<swift::SILInstruction*, 8u>&, llvm::SmallVectorImpl<swift::SILFunction*>&, swift::OptRemark::Emitter&, bool) + 4880
13 swift-frontend 0x0000000103f29c14 swift::specializeAppliesInFunction(swift::SILFunction&, swift::SILTransform*, bool) + 1148
14 swift-frontend 0x0000000103f2a76c (anonymous namespace)::GenericSpecializer::run() + 40
15 swift-frontend 0x0000000103e6fa9c swift::SILPassManager::runFunctionPasses(unsigned int, unsigned int) + 3336
16 swift-frontend 0x0000000103e6906c swift::SILPassManager::executePassPipelinePlan(swift::SILPassPipelinePlan const&) + 208
17 swift-frontend 0x0000000103ea6edc swift::SimpleRequest<swift::ExecuteSILPipelineRequest, std::__1::tuple<> (swift::SILPipelineExecutionDescriptor), (swift::RequestFlags)1>::evaluateRequest(swift::ExecuteSILPipelineRequest const&, swift::Evaluator&) + 52
18 swift-frontend 0x0000000103e8a96c swift::ExecuteSILPipelineRequest::OutputType swift::Evaluator::getResultUncached<swift::ExecuteSILPipelineRequest, swift::ExecuteSILPipelineRequest::OutputType swift::evaluateOrFatal<swift::ExecuteSILPipelineRequest>(swift::Evaluator&, swift::ExecuteSILPipelineRequest)::'lambda'()>(swift::ExecuteSILPipelineRequest const&, swift::ExecuteSILPipelineRequest::OutputType swift::evaluateOrFatal<swift::ExecuteSILPipelineRequest>(swift::Evaluator&, swift::ExecuteSILPipelineRequest)::'lambda'()) + 412
19 swift-frontend 0x0000000103e8e1bc swift::runSILOptimizationPasses(swift::SILModule&) + 448
20 swift-frontend 0x0000000103390a9c swift::CompilerInstance::performSILProcessing(swift::SILModule*) + 1148
21 swift-frontend 0x0000000102fd0d90 performCompileStepsPostSILGen(swift::CompilerInstance&, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule>>, llvm::PointerUnion<swift::ModuleDecl*, swift::SourceFile*>, swift::PrimarySpecificPaths const&, int&, swift::FrontendObserver*) + 1360
22 swift-frontend 0x0000000102fd071c swift::performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 2688
23 swift-frontend 0x0000000102fd3654 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1764
24 swift-frontend 0x0000000102fd1fd8 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3716
25 swift-frontend 0x0000000102f560bc swift::mainEntry(int, char const**) + 5428
26 dyld 0x0000000181be2b98 start + 6076
[6/10] Compiling SwiftParser Attributes.swift
error: fatalError
Expected behavior
Specialized version of walk is produced that optimizes away the throwing code since E == Never
or a compiler error is produced explaining why the annotation won't work as expected.
Environment
Apple Swift version 6.1.2 (swiftlang-6.1.2.1.2 clang-1700.0.13.5)
Target: arm64-apple-macosx15.0
Additional information
No response