Skip to content

Compiler crash attempting to call a function with a pack archetype expansion parameter #78396

Open
@hamishknight

Description

@hamishknight

The following crashes the compiler:

func foo<each T>(_ fn: (repeat each T) -> Void) {
  fn()
}

We instead ought to be diagnosing the missing argument.

Assertion failed: (param), function getDefaultArgOwner, file CSApply.cpp, line 5644.
Please submit a bug report (https://swift.org/contributing/#reporting-bugs) and include the crash backtrace.
Stack dump:
0.      Program arguments: /Users/hamish/src/swift-dev/build/Release/swift-macosx-arm64/bin/swift-frontend -typecheck /Users/hamish/src/swift-test-arena/swift-test-arena/main.swift -sdk /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk -debug-diagnostic-names
1.      Swift version 6.2-dev (LLVM 9f6c3d784782c34, Swift 55189bae8e55169)
2.      Compiling with effective version 5.10
3.      While evaluating request TypeCheckSourceFileRequest(source_file "/Users/hamish/src/swift-test-arena/swift-test-arena/main.swift")
4.      While evaluating request TypeCheckFunctionBodyRequest(main.(file).foo@/Users/hamish/src/swift-test-arena/swift-test-arena/main.swift:139:6)
5.      While type-checking statement at [/Users/hamish/src/swift-test-arena/swift-test-arena/main.swift:139:49 - line:141:1] RangeText="{
  fn()
"
6.      While type-checking expression at [/Users/hamish/src/swift-test-arena/swift-test-arena/main.swift:140:3 - line:140:6] RangeText="fn("
7.      While type-checking-target starting at /Users/hamish/src/swift-test-arena/swift-test-arena/main.swift:140:3
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           0x0000000105d6e8bc llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 56
1  swift-frontend           0x0000000105d6cbd8 llvm::sys::RunSignalHandlers() + 112
2  swift-frontend           0x0000000105d6ef18 SignalHandler(int) + 292
3  libsystem_platform.dylib 0x0000000187176e04 _sigtramp + 56
4  libsystem_pthread.dylib  0x000000018713ff70 pthread_kill + 288
5  libsystem_c.dylib        0x000000018704c908 abort + 128
6  libsystem_c.dylib        0x000000018704bc1c err + 0
7  swift-frontend           0x0000000105e598cc (anonymous namespace)::ExprRewriter::openExistentialReference(swift::Expr*, swift::OpenedArchetypeType*, swift::ValueDecl*) (.cold.1) + 0
8  swift-frontend           0x0000000101234ff0 llvm::DenseMapBase<llvm::DenseMap<swift::constraints::ConstraintLocator*, swift::OpenedArchetypeType*, llvm::DenseMapInfo<swift::constraints::ConstraintLocator*, void>, llvm::detail::DenseMapPair<swift::constraints::ConstraintLocator*, swift::OpenedArchetypeType*>>, swift::constraints::ConstraintLocator*, swift::OpenedArchetypeType*, llvm::DenseMapInfo<swift::constraints::ConstraintLocator*, void>, llvm::detail::DenseMapPair<swift::constraints::ConstraintLocator*, swift::OpenedArchetypeType*>>::find(swift::constraints::ConstraintLocator const*) + 0
9  swift-frontend           0x0000000101234118 (anonymous namespace)::ExprRewriter::coerceCallArguments(swift::ArgumentList*, swift::AnyFunctionType*, swift::ConcreteDeclRef, swift::ApplyExpr*, swift::constraints::ConstraintLocatorBuilder, llvm::ArrayRef<swift::AppliedPropertyWrapper>) + 2432
10 swift-frontend           0x000000010123b818 (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder, swift::constraints::ConstraintLocatorBuilder) + 6140
11 swift-frontend           0x000000010123f7dc (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) + 220
12 swift-frontend           0x0000000101228ce0 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) + 112
13 swift-frontend           0x000000010178831c (anonymous namespace)::Traversal::doIt(swift::Expr*) + 988
14 swift-frontend           0x0000000101787f34 swift::Expr::walk(swift::ASTWalker&) + 32
15 swift-frontend           0x0000000101224820 (anonymous namespace)::ExprWalker::rewriteTarget(swift::constraints::SyntacticElementTarget) + 632
16 swift-frontend           0x00000001012244f8 swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::constraints::SyntacticElementTarget) + 620
17 swift-frontend           0x000000010143b850 swift::TypeChecker::typeCheckTarget(swift::constraints::SyntacticElementTarget&, swift::optionset::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::DiagnosticTransaction*) + 372
18 swift-frontend           0x000000010143b680 swift::TypeChecker::typeCheckExpression(swift::constraints::SyntacticElementTarget&, swift::optionset::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::DiagnosticTransaction*) + 196
19 swift-frontend           0x000000010143b548 swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::constraints::ContextualTypeInfo, swift::optionset::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 96
20 swift-frontend           0x00000001014fb568 (anonymous namespace)::StmtChecker::typeCheckASTNode(swift::ASTNode&) + 236
21 swift-frontend           0x00000001014fe608 swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 136
22 swift-frontend           0x00000001014fcf74 bool (anonymous namespace)::StmtChecker::typeCheckStmt<swift::BraceStmt>(swift::BraceStmt*&) + 136
23 swift-frontend           0x00000001014fc924 (anonymous namespace)::StmtChecker::typeCheckBody(swift::BraceStmt*&) + 32
24 swift-frontend           0x00000001014fc66c swift::TypeCheckFunctionBodyRequest::evaluate(swift::Evaluator&, swift::AbstractFunctionDecl*) const + 1076
25 swift-frontend           0x000000010187f9bc swift::TypeCheckFunctionBodyRequest::OutputType swift::Evaluator::getResultUncached<swift::TypeCheckFunctionBodyRequest, swift::TypeCheckFunctionBodyRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckFunctionBodyRequest>(swift::Evaluator&, swift::TypeCheckFunctionBodyRequest, swift::TypeCheckFunctionBodyRequest::OutputType)::'lambda'()>(swift::TypeCheckFunctionBodyRequest const&, swift::TypeCheckFunctionBodyRequest::OutputType swift::evaluateOrDefault<swift::TypeCheckFunctionBodyRequest>(swift::Evaluator&, swift::TypeCheckFunctionBodyRequest, swift::TypeCheckFunctionBodyRequest::OutputType)::'lambda'()) + 224
26 swift-frontend           0x00000001017fe3e4 swift::AbstractFunctionDecl::getTypecheckedBody() const + 112
27 swift-frontend           0x000000010191e080 swift::SourceFile::typeCheckDelayedFunctions() + 96
28 swift-frontend           0x0000000101542a4c swift::TypeCheckSourceFileRequest::evaluate(swift::Evaluator&, swift::SourceFile*) const + 228
29 swift-frontend           0x0000000101544224 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'()) + 216
30 swift-frontend           0x0000000101542940 swift::performTypeChecking(swift::SourceFile&) + 84
31 swift-frontend           0x00000001005a8ed8 bool llvm::function_ref<bool (swift::SourceFile&)>::callback_fn<swift::CompilerInstance::performSema()::$_0>(long, swift::SourceFile&) + 16
32 swift-frontend           0x00000001005a2528 swift::CompilerInstance::forEachFileToTypeCheck(llvm::function_ref<bool (swift::SourceFile&)>) + 164
33 swift-frontend           0x00000001005a2464 swift::CompilerInstance::performSema() + 76
34 swift-frontend           0x000000010036b294 withSemanticAnalysis(swift::CompilerInstance&, swift::FrontendObserver*, llvm::function_ref<bool (swift::CompilerInstance&)>, bool) + 60
35 swift-frontend           0x0000000100360f38 performCompile(swift::CompilerInstance&, int&, swift::FrontendObserver*) + 700
36 swift-frontend           0x0000000100360794 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2200
37 swift-frontend           0x000000010014e0b0 swift::mainEntry(int, char const**) + 3052
38 dyld                     0x0000000186dc0274 start + 2840
fish: Job 1, './swift -frontend -typecheck ~/…' terminated by signal SIGABRT (Abort)

Metadata

Metadata

Assignees

Labels

assertion 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: expressionsfunction typesFeature → types: function typesgenericsFeature: generic declarations and typesparameter packsFeature → generics: Parameter packsswift 6.1type checkerArea → compiler: Semantic analysistypesFeature: types

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions