Skip to content

Passing parameter pack results in ICE #66392

Open
@keith

Description

@keith

With this code:

class Store<State> {
    var currentState: State { fatalError() }
}

class CompositeStore<CompositeState, each State, OriginalState>: Store<CompositeState> {
    let store: (repeat Store<each State>)
    let combine: ((repeat (each State)) -> CompositeState)

    override var currentState: CompositeState {
        return self.combine(repeat (each store).currentState)
    }

    func foo(_ all: (repeat Store<each State>)) {}

    init(store1: (repeat Store<each State>),
         combine: @escaping (repeat (each State)) -> CompositeState)
    {
        self.store = store1
        self.combine = combine

        foo(store1)
   }
}

The attempted call to foo(store1) results in a crash:

error: compile command failed due to signal 6 (use -v to see invocation)
Assertion failed: (!tupleTy.containsPackExpansionType() && "can't extract elements from tuples containing pack expansions " "right now"), function extractElements, file RValue.cpp, line 709.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0.      Program arguments: /Users/ksmiley/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/bin/swift-frontend -frontend -c -primary-file /tmp/foo.swift -target arm64-apple-macosx13.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode-15.0.0-beta1.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.0.sdk -color-diagnostics -new-driver-path /Users/ksmiley/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/bin/swift-driver -disable-availability-checking -empty-abi-descriptor -plugin-path /Users/ksmiley/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/lib/swift/host/plugins -plugin-path /Users/ksmiley/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/local/lib/swift/host/plugins -resource-dir /Users/ksmiley/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2023-06-05-a.xctoolchain/usr/lib/swift -module-name foo -target-sdk-version 14.0 -target-sdk-name macosx14.0 -o /var/folders/gj/wf3swl0x215b2sq1qy84kzkm0000gn/T/TemporaryDirectory.03bCcE/foo-1.o
1.      Apple Swift version 5.9-dev (LLVM 4a3b38183d7bb09, Swift 44a40979e52be8e)
2.      Compiling with the current language version
3.      While evaluating request ASTLoweringRequest(Lowering AST to SIL for file "/tmp/foo.swift")
4.      While silgen constructor initializer SIL function "@$s3foo14CompositeStoreC6store17combineACyxq_q_Qp_QPq0_GAA0C0Cyq_Gq_Qp_t_xq_q_Qpctcfc".
 for 'init(store1:combine:)' (at /tmp/foo.swift:15:5)
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           0x00000001097ddf30 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  swift-frontend           0x00000001097dd2d4 llvm::sys::RunSignalHandlers() + 112
2  swift-frontend           0x00000001097de570 SignalHandler(int) + 304
3  libsystem_platform.dylib 0x00000001a84eaa24 _sigtramp + 56
4  libsystem_pthread.dylib  0x00000001a84bbc28 pthread_kill + 288
5  libsystem_c.dylib        0x00000001a83c9ae8 abort + 180
6  libsystem_c.dylib        0x00000001a83c8e44 err + 0
7  swift-frontend           0x00000001098b4738 swift::Lowering::RValue::extractElements(llvm::SmallVectorImpl<swift::Lowering::RValue>&) && (.cold.3) + 0
8  swift-frontend           0x000000010503a528 swift::Lowering::RValue::extractElements(llvm::SmallVectorImpl<swift::Lowering::RValue>&) && + 436
9  swift-frontend           0x00000001050604e4 (anonymous namespace)::ArgEmitter::emitExpanded(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 284
10 swift-frontend           0x00000001050607ec (anonymous namespace)::ArgEmitter::emitExpanded(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 1060
11 swift-frontend           0x000000010505ee70 (anonymous namespace)::ArgEmitter::emit(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 160
12 swift-frontend           0x0000000105051a10 (anonymous namespace)::ArgEmitter::emitSingleArg(swift::Lowering::ArgumentSource&&, swift::Lowering::AbstractionPattern) + 400
13 swift-frontend           0x000000010505e720 (anonymous namespace)::ArgEmitter::emitPreparedArgs(swift::Lowering::PreparedArguments&&, swift::Lowering::AbstractionPattern) + 160
14 swift-frontend           0x0000000105068928 (anonymous namespace)::CallSite::emit(swift::Lowering::SILGenFunction&, swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, (anonymous namespace)::ParamLowering&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::SmallVectorImpl<(anonymous namespace)::DelayedArgument>&, swift::ForeignInfo const&) && + 536
15 swift-frontend           0x00000001050682a8 (anonymous namespace)::CallEmission::emitArgumentsForNormalApply(swift::Lowering::AbstractionPattern, swift::CanTypeWrapper<swift::SILFunctionType>, swift::ForeignInfo const&, llvm::SmallVectorImpl<swift::Lowering::ManagedValue>&, llvm::Optional<swift::SILLocation>&) + 1112
16 swift-frontend           0x0000000105055098 (anonymous namespace)::CallEmission::apply(swift::Lowering::SGFContext) + 2288
17 swift-frontend           0x00000001050534c8 swift::Lowering::SILGenFunction::emitApplyExpr(swift::ApplyExpr*, swift::Lowering::SGFContext) + 1728
18 swift-frontend           0x00000001050a2690 swift::Lowering::SILGenFunction::emitIgnoredExpr(swift::Expr*) + 944
19 swift-frontend           0x000000010510dd8c swift::ASTVisitor<(anonymous namespace)::StmtEmitter, void, void, void, void, void, void>::visit(swift::Stmt*) + 4156
20 swift-frontend           0x000000010510cd44 swift::Lowering::SILGenFunction::emitStmt(swift::Stmt*) + 24
21 swift-frontend           0x0000000105084cec swift::Lowering::SILGenFunction::emitClassConstructorInitializer(swift::ConstructorDecl*) + 2656
22 swift-frontend           0x0000000105043094 swift::Lowering::SILGenModule::emitFunctionDefinition(swift::SILDeclRef, swift::SILFunction*) + 3348
23 swift-frontend           0x0000000105045940 emitOrDelayFunction(swift::Lowering::SILGenModule&, swift::SILDeclRef) + 200
24 swift-frontend           0x0000000105045c78 swift::Lowering::SILGenModule::emitConstructor(swift::ConstructorDecl*) + 372
25 swift-frontend           0x000000010511ae58 swift::ASTVisitor<(anonymous namespace)::SILGenType, void, void, void, void, void, void>::visit(swift::Decl*) + 356
26 swift-frontend           0x000000010511810c (anonymous namespace)::SILGenType::emitType() + 156
27 swift-frontend           0x0000000105118064 swift::Lowering::SILGenModule::visitNominalTypeDecl(swift::NominalTypeDecl*) + 24
28 swift-frontend           0x00000001050478e0 swift::ASTLoweringRequest::evaluate(swift::Evaluator&, swift::ASTLoweringDescriptor) const + 1000
29 swift-frontend           0x000000010510c7e0 swift::SimpleRequest<swift::ASTLoweringRequest, std::__1::unique_ptr<swift::SILModule, std::__1::default_delete<swift::SILModule>> (swift::ASTLoweringDescriptor), (swift::RequestFlags)9>::evaluateRequest(swift::ASTLoweringRequest const&, swift::Evaluator&) + 148
30 swift-frontend           0x000000010504b60c llvm::Expected<swift::ASTLoweringRequest::OutputType> swift::Evaluator::getResultUncached<swift::ASTLoweringRequest>(swift::ASTLoweringRequest const&) + 396
31 swift-frontend           0x0000000105048b94 swift::performASTLowering(swift::FileUnit&, swift::Lowering::TypeConverter&, swift::SILOptions const&, swift::IRGenOptions const*) + 100
32 swift-frontend           0x0000000104b21350 swift::performCompileStepsPostSema(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 524
33 swift-frontend           0x0000000104b3056c withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>, bool) + 160
34 swift-frontend           0x0000000104b23e5c performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 724
35 swift-frontend           0x0000000104b22df0 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2456
36 swift-frontend           0x000000010496d524 swift::mainEntry(int, char const**) + 2144
37 dyld                     0x00000001a8163f28 start + 2236

Steps to reproduce

xcrun --toolchain org.swift.59202306051a swiftc /tmp/foo.swift -Xfrontend -disable-availability-checking

Environment

  • 6/5/23 main snapshot

Metadata

Metadata

Assignees

No one assigned

    Labels

    SILGenArea → compiler: The SIL generation stageassertion failureBug → crash: An assertion failurebugA deviation from expected or documented behavior. Also: expected but undesirable behavior.compilerThe Swift compiler itselfcrashBug: A crash, i.e., an abnormal termination of softwareexpressionsFeature: expressionsgenericsFeature: generic declarations and typesparameter packsFeature → generics: Parameter packsswift 6.0tuplesFeature: tuples

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions