-
Notifications
You must be signed in to change notification settings - Fork 10.6k
Closed
Labels
bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.A deviation from expected or documented behavior. Also: expected but undesirable behavior.closuresFeature: closuresFeature: closurescompilerThe Swift compiler itselfThe Swift compiler itselfcrashBug: A crash, i.e., an abnormal termination of softwareBug: A crash, i.e., an abnormal termination of softwareexpressionsFeature: expressionsFeature: expressionsswift 6.0swift macroFeature → declarations: Swift `macro` declarationsFeature → declarations: Swift `macro` declarationstype checkerArea → compiler: Semantic analysisArea → compiler: Semantic analysis
Description
Description
The following macro @Test
fails to parse the following arguments under swift-6.0.3. No issues with swift-6.1.2.
Reproduction
import Testing
enum TestClosure {
case failed(f: () -> Void)
}
struct ClosureWrapper {
let f: () -> Void
init(f: @escaping () -> Void) {
self.f = f
}
}
enum TestClosureWrapper {
case failed(ClosureWrapper)
}
struct AbstractClosureTests {
@Test(arguments: [TestClosure.failed(f: {})])
func example(_ input: TestClosure) async throws {
switch input {
case .failed(let f):
f()
}
}
@Test(arguments: [TestClosureWrapper.failed(ClosureWrapper(f: {}))])
func example(_ input: TestClosureWrapper) async throws {
switch input {
case .failed(let wrapper):
wrapper.f()
}
}
}
Stack dump
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0. Program arguments: ~/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file /Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift -emit-dependencies-path ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests.d -emit-const-values-path ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests.swiftconstvalues -emit-reference-dependencies-path ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests.swiftdeps -serialize-diagnostics-path ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests.dia -target arm64-apple-ios15.6-macabi -Xllvm -aarch64-use-tbi -enable-objc-interop -stack-check -cxx-interoperability-mode=default -sdk ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk -I ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Products/Debug-maccatalyst -I ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib -F ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Products/Debug-maccatalyst -Fsystem ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/System/iOSSupport/System/Library/Frameworks -F ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks -no-color-diagnostics -enable-testing -g -debug-info-format=dwarf -dwarf-version=4 -module-cache-path ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -profile-generate -profile-coverage-mapping -swift-version 5 -enforce-exclusivity=checked -Onone -D DEBUG -serialize-debugging-options -const-gather-protocols-file ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests_const_extract_protocols.json -enable-experimental-feature DebugDescriptionMacro -enable-experimental-feature OpaqueTypeErasure -enable-bare-slash-regex -empty-abi-descriptor -plugin-path ~/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins/testing -validate-clang-modules-once -clang-build-session-file ~/Library/Developer/Xcode/DerivedData/ModuleCache.noindex/Session.modulevalidation -Xcc -working-directory -Xcc /Volumes/MacintoshData2/Mobile/PGS/AbstractClosure -resource-dir ~/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift -enable-anonymous-context-mangled-names -file-compilation-dir /Volumes/MacintoshData2/Mobile/PGS/AbstractClosure -Xcc -std=gnu++20 -Xcc -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG -Xcc -ivfsstatcache -Xcc ~/Library/Developer/Xcode/DerivedData/SDKStatCaches.noindex/macosx15.2-24C94-adb7e3b2ac9371c132d38cd54945bc99.sdkstatcache -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/swift-overrides.hmap -Xcc -iquote -Xcc ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/AbstractClosureTests-generated-files.hmap -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/AbstractClosureTests-own-target-headers.hmap -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/AbstractClosureTests-all-target-headers.hmap -Xcc -iquote -Xcc ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/AbstractClosureTests-project-headers.hmap -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Products/Debug-maccatalyst/include -Xcc -isystem -Xcc ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.2.sdk/System/iOSSupport/usr/include -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/DerivedSources-normal/arm64 -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/DerivedSources/arm64 -Xcc -I~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/DerivedSources -Xcc -DDEBUG=1 -module-name AbstractClosureTests -frontend-parseable-output -disable-clang-spi -target-sdk-version 18.2 -target-sdk-name macosx15.2 -prebuilt-module-cache-path ~/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/prebuilt-modules/15.2 -external-plugin-path ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/lib/swift/host/plugins#~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -external-plugin-path ~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/local/lib/swift/host/plugins#~/Downloads/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/usr/bin/swift-plugin-server -plugin-path ~/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/host/plugins -plugin-path ~/Downloads/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/local/lib/swift/host/plugins -parse-as-library -o ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Build/Intermediates.noindex/AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests.o -index-unit-output-path /AbstractClosure.build/Debug-maccatalyst/AbstractClosureTests.build/Objects-normal/arm64/AbstractClosureTests.o -index-store-path ~/Library/Developer/Xcode/DerivedData/AbstractClosure-hidfjrycdmkglydpawncnmhrfwso/Index.noindex/DataStore -index-system-modules
1. Apple Swift version 6.0.3 (swiftlang-6.0.3.1.10 clang-1600.0.30.1)
2. Compiling with effective version 5.10
3. While evaluating request TypeCheckSourceFileRequest(source_file "/Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift")
4. While type-checking 'AbstractClosureTests' (at /Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift:25:1)
5. While evaluating request StoredPropertiesRequest(AbstractClosureTests.(file).AbstractClosureTests@/Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift:25:8)
6. While evaluating request ExpandPeerMacroRequest(AbstractClosureTests.(file).AbstractClosureTests.example@/Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift:27:10)
7. While evaluating request ResolveMacroRequest(custom-attr, 0x1268b2d98 StructDecl name=AbstractClosureTests)
8. While type-checking expression at [/Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift:26:5 - line:26:49] RangeText="@Test(arguments: [TestClosure.failed(f: {})]"
9. While type-checking-target starting at /Volumes/MacintoshData2/Mobile/PGS/AbstractClosure/AbstractClosureTests/AbstractClosureTests.swift:26:5
10. While evaluating request FragileFunctionKindRequest(0x1268b2f78 AbstractClosureExpr line=26 : () -> ())
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 0x00000001085caa9c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1 swift-frontend 0x00000001085c8cf0 llvm::sys::RunSignalHandlers() + 112
2 swift-frontend 0x00000001085cb068 SignalHandler(int) + 292
3 libsystem_platform.dylib 0x000000019f7d0624 _sigtramp + 56
4 swift-frontend 0x000000010480fe04 swift::FragileFunctionKindRequest::OutputType swift::Evaluator::getResultCached<swift::FragileFunctionKindRequest, swift::FragileFunctionKindRequest::OutputType swift::evaluateOrDefault<swift::FragileFunctionKindRequest>(swift::Evaluator&, swift::FragileFunctionKindRequest, swift::FragileFunctionKindRequest::OutputType)::'lambda'(), (void*)0>(swift::FragileFunctionKindRequest const&, swift::FragileFunctionKindRequest::OutputType swift::evaluateOrDefault<swift::FragileFunctionKindRequest>(swift::Evaluator&, swift::FragileFunctionKindRequest, swift::FragileFunctionKindRequest::OutputType)::'lambda'()) + 1256
5 swift-frontend 0x000000010480fe04 swift::FragileFunctionKindRequest::OutputType swift::Evaluator::getResultCached<swift::FragileFunctionKindRequest, swift::FragileFunctionKindRequest::OutputType swift::evaluateOrDefault<swift::FragileFunctionKindRequest>(swift::Evaluator&, swift::FragileFunctionKindRequest, swift::FragileFunctionKindRequest::OutputType)::'lambda'(), (void*)0>(swift::FragileFunctionKindRequest const&, swift::FragileFunctionKindRequest::OutputType swift::evaluateOrDefault<swift::FragileFunctionKindRequest>(swift::Evaluator&, swift::FragileFunctionKindRequest, swift::FragileFunctionKindRequest::OutputType)::'lambda'()) + 1256
6 swift-frontend 0x00000001042ab3d0 swift::ExportContext::forFunctionBody(swift::DeclContext*, swift::SourceLoc) + 208
7 swift-frontend 0x00000001042bb36c (anonymous namespace)::ExprAvailabilityWalker::walkToExprPre(swift::Expr*) + 3036
8 swift-frontend 0x00000001042bba04 (anonymous namespace)::ExprAvailabilityWalker::walkToArgumentPre(swift::Argument const&) + 52
9 swift-frontend 0x00000001046d4330 (anonymous namespace)::Traversal::visit(swift::ArgumentList*) + 208
10 swift-frontend 0x00000001046d0f18 (anonymous namespace)::Traversal::visitApplyExpr(swift::ApplyExpr*) + 196
11 swift-frontend 0x00000001046ce43c (anonymous namespace)::Traversal::visit(swift::Expr*) + 88
12 swift-frontend 0x00000001046d0d2c (anonymous namespace)::Traversal::visitCollectionExpr(swift::CollectionExpr*) + 136
13 swift-frontend 0x00000001046ce454 (anonymous namespace)::Traversal::visit(swift::Expr*) + 112
14 swift-frontend 0x00000001042bba28 (anonymous namespace)::ExprAvailabilityWalker::walkToArgumentPre(swift::Argument const&) + 88
15 swift-frontend 0x00000001046d4330 (anonymous namespace)::Traversal::visit(swift::ArgumentList*) + 208
16 swift-frontend 0x00000001046d11f0 (anonymous namespace)::Traversal::visitFreestandingMacroArgs(swift::FreestandingMacroExpansion*) + 152
17 swift-frontend 0x00000001046d0bd8 (anonymous namespace)::Traversal::visitMacroExpansionExpr(swift::MacroExpansionExpr*) + 164
18 swift-frontend 0x00000001046ce8c0 (anonymous namespace)::Traversal::visit(swift::Expr*) + 1244
19 swift-frontend 0x00000001042b3e88 swift::diagnoseExprAvailability(swift::Expr const*, swift::DeclContext*) + 272
20 swift-frontend 0x000000010422bc8c swift::performSyntacticExprDiagnostics(swift::Expr const*, swift::DeclContext const*, std::__1::optional<swift::ContextualTypePurpose>, bool, bool, bool) + 3584
21 swift-frontend 0x00000001042f0898 swift::TypeChecker::typeCheckTarget(swift::constraints::SyntacticElementTarget&, swift::optionset::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 720
22 swift-frontend 0x00000001042f04a4 swift::TypeChecker::typeCheckExpression(swift::constraints::SyntacticElementTarget&, swift::optionset::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 416
23 swift-frontend 0x000000010438cd34 swift::ResolveMacroRequest::evaluate(swift::Evaluator&, swift::UnresolvedMacroReference, swift::DeclContext*) const + 1760
24 swift-frontend 0x0000000104366a2c swift::ResolveMacroRequest::OutputType swift::Evaluator::getResultUncached<swift::ResolveMacroRequest, swift::ResolveMacroRequest::OutputType swift::evaluateOrDefault<swift::ResolveMacroRequest>(swift::Evaluator&, swift::ResolveMacroRequest, swift::ResolveMacroRequest::OutputType)::'lambda'()>(swift::ResolveMacroRequest const&, swift::ResolveMacroRequest::OutputType swift::evaluateOrDefault<swift::ResolveMacroRequest>(swift::Evaluator&, swift::ResolveMacroRequest, swift::ResolveMacroRequest::OutputType)::'lambda'()) + 600
25 swift-frontend 0x000000010436678c swift::ResolveMacroRequest::OutputType swift::Evaluator::getResultCached<swift::ResolveMacroRequest, swift::ResolveMacroRequest::OutputType swift::evaluateOrDefault<swift::ResolveMacroRequest>(swift::Evaluator&, swift::ResolveMacroRequest, swift::ResolveMacroRequest::OutputType)::'lambda'(), (void*)0>(swift::ResolveMacroRequest const&, swift::ResolveMacroRequest::OutputType swift::evaluateOrDefault<swift::ResolveMacroRequest>(swift::Evaluator&, swift::ResolveMacroRequest, swift::ResolveMacroRequest::OutputType)::'lambda'()) + 260
26 swift-frontend 0x0000000104731418 swift::Decl::forEachAttachedMacro(swift::MacroRole, llvm::function_ref<void (swift::CustomAttr*, swift::MacroDecl*)>) const + 372
27 swift-frontend 0x0000000104388eb8 swift::ExpandPeerMacroRequest::evaluate(swift::Evaluator&, swift::Decl*) const + 84
28 swift-frontend 0x00000001043f3bc0 swift::ExpandPeerMacroRequest::OutputType swift::Evaluator::getResultUncached<swift::ExpandPeerMacroRequest, swift::ExpandPeerMacroRequest::OutputType swift::evaluateOrDefault<swift::ExpandPeerMacroRequest>(swift::Evaluator&, swift::ExpandPeerMacroRequest, swift::ExpandPeerMacroRequest::OutputType)::'lambda'()>(swift::ExpandPeerMacroRequest const&, swift::ExpandPeerMacroRequest::OutputType swift::evaluateOrDefault<swift::ExpandPeerMacroRequest>(swift::Evaluator&, swift::ExpandPeerMacroRequest, swift::ExpandPeerMacroRequest::OutputType)::'lambda'()) + 612
29 swift-frontend 0x00000001043f38c0 swift::ExpandPeerMacroRequest::OutputType swift::Evaluator::getResultCached<swift::ExpandPeerMacroRequest, swift::ExpandPeerMacroRequest::OutputType swift::evaluateOrDefault<swift::ExpandPeerMacroRequest>(swift::Evaluator&, swift::ExpandPeerMacroRequest, swift::ExpandPeerMacroRequest::OutputType)::'lambda'(), (void*)0>(swift::ExpandPeerMacroRequest const&, swift::ExpandPeerMacroRequest::OutputType swift::evaluateOrDefault<swift::ExpandPeerMacroRequest>(swift::Evaluator&, swift::ExpandPeerMacroRequest, swift::ExpandPeerMacroRequest::OutputType)::'lambda'()) + 328
30 swift-frontend 0x00000001043e98d8 computeLoweredProperties(swift::NominalTypeDecl*, swift::IterableDeclContext*, (anonymous namespace)::LoweredPropertiesReason) + 800
31 swift-frontend 0x00000001043e81f4 swift::StoredPropertiesRequest::evaluate(swift::Evaluator&, swift::NominalTypeDecl*) const + 348
32 swift-frontend 0x000000010478cf88 swift::StoredPropertiesRequest::OutputType swift::Evaluator::getResultCached<swift::StoredPropertiesRequest, swift::StoredPropertiesRequest::OutputType swift::evaluateOrDefault<swift::StoredPropertiesRequest>(swift::Evaluator&, swift::StoredPropertiesRequest, swift::StoredPropertiesRequest::OutputType)::'lambda'(), (void*)0>(swift::StoredPropertiesRequest const&, swift::StoredPropertiesRequest::OutputType swift::evaluateOrDefault<swift::StoredPropertiesRequest>(swift::Evaluator&, swift::StoredPropertiesRequest, swift::StoredPropertiesRequest::OutputType)::'lambda'()) + 1268
33 swift-frontend 0x0000000104344b30 (anonymous namespace)::DeclChecker::visit(swift::Decl*) + 3452
34 swift-frontend 0x0000000104343da4 swift::TypeChecker::typeCheckDecl(swift::Decl*) + 152
35 swift-frontend 0x000000010442b01c swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 660
36 swift-frontend 0x0000000104432680 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
37 swift-frontend 0x000000010442ad6c swift::performTypeChecking(swift::SourceFile&) + 328
38 swift-frontend 0x0000000103347e00 swift::CompilerInstance::performSema() + 260
39 swift-frontend 0x0000000102f74df0 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 1532
40 swift-frontend 0x0000000102f73bb4 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 3572
41 swift-frontend 0x0000000102efaa5c swift::mainEntry(int, char const**) + 3680
42 dyld 0x000000019f3f6b98 start + 6076
Command SwiftCompile failed with a nonzero exit code
Command SwiftCompile failed with a nonzero exit code
Build failed 2025-05-23, 11:45 PM 45.3 seconds
Expected behavior
The compiler should successfully parse the closure within the enum value.
Environment
swift 6.0.3
Additional information
No response
Metadata
Metadata
Assignees
Labels
bugA deviation from expected or documented behavior. Also: expected but undesirable behavior.A deviation from expected or documented behavior. Also: expected but undesirable behavior.closuresFeature: closuresFeature: closurescompilerThe Swift compiler itselfThe Swift compiler itselfcrashBug: A crash, i.e., an abnormal termination of softwareBug: A crash, i.e., an abnormal termination of softwareexpressionsFeature: expressionsFeature: expressionsswift 6.0swift macroFeature → declarations: Swift `macro` declarationsFeature → declarations: Swift `macro` declarationstype checkerArea → compiler: Semantic analysisArea → compiler: Semantic analysis