Skip to content

Assertion failed: (!as->isFolded() && "already folded 'as' expr in sequence?!") #66926

Open
@ahoppen

Description

@ahoppen

The following new test case causes an assertion failure. No assertion failure is hit if the #if true is removed.

// RUN: %empty-directory(%t)
// RUN: %target-swift-ide-test -batch-code-completion -source-filename %s -filecheck %raw-FileCheck -completion-output-dir %t

func test(_ value: Int?) {
#if true
  switch value {
  case .some(let underlyingValue) where #^COMPLETE^#underlyingValue is Int: 
    break
  }
#endif
}

// COMPLETE: Decl[LocalVar]/Local:               underlyingValue[#(Int)#]; name=underlyingValue

Stack trace:

Assertion failed: (!as->isFolded() && "already folded 'as' expr in sequence?!"), function makeBinOp, file TypeCheckExpr.cpp, line 373.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: /Users/alex/sbin/swift-ide-test -code-completion -source-filename test/test.swift -code-completion-token COMPLETE
1.	While performing new IDE inspection
2.	While evaluating request IDEInspectionSecondPassRequest(source_file "test/test.swift", )
3.	While evaluating request InterfaceTypeRequest(swift_ide_test.(file).test(_:).underlyingValue@test/test.swift:7:20)
4.	While evaluating request NamingPatternRequest(swift_ide_test.(file).test(_:).underlyingValue@test/test.swift:7:20)
5.	While type-checking statement at [test/test.swift:6:5 - line:9:5] RangeText="switch value {
    case .some(let underlyingValue) where underlyingValue is Int: 
        break
    "
6.	While type-checking expression at [test/test.swift:7:43 - line:7:63] RangeText="underlyingValue is "
7.	While type-checking-target starting at test/test.swift:7:43
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-ide-test           0x000000010d8a41b7 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 39
1  swift-ide-test           0x000000010d8a3128 llvm::sys::RunSignalHandlers() + 248
2  swift-ide-test           0x000000010d8a4800 SignalHandler(int) + 272
3  libsystem_platform.dylib 0x00007ff81895e5ed _sigtramp + 29
4  libsystem_platform.dylib 0x0000000300000001 _sigtramp + 18446603383053359665
5  libsystem_c.dylib        0x00007ff818857b45 abort + 123
6  libsystem_c.dylib        0x00007ff818856e5e err + 0
7  swift-ide-test           0x0000000108212283 makeBinOp(swift::ASTContext&, swift::Expr*, swift::Expr*, swift::Expr*, swift::PrecedenceGroupDecl*, bool) (.cold.4) + 35
8  swift-ide-test           0x000000010820f870 makeBinOp(swift::ASTContext&, swift::Expr*, swift::Expr*, swift::Expr*, swift::PrecedenceGroupDecl*, bool) + 688
9  swift-ide-test           0x000000010820ed27 foldSequence(swift::DeclContext*, swift::Expr*, llvm::ArrayRef<swift::Expr*>&, (anonymous namespace)::PrecedenceBound) + 1271
10 swift-ide-test           0x000000010820e803 swift::TypeChecker::foldSequence(swift::SequenceExpr*, swift::DeclContext*) + 67
11 swift-ide-test           0x00000001080fb14c (anonymous namespace)::PreCheckExpression::walkToExprPost(swift::Expr*) + 236
12 swift-ide-test           0x0000000106948b2e (anonymous namespace)::Traversal::doIt(swift::Expr*) + 1006
13 swift-ide-test           0x000000010694872b swift::Expr::walk(swift::ASTWalker&) + 27
14 swift-ide-test           0x00000001080f9f99 swift::constraints::ConstraintSystem::preCheckExpression(swift::Expr*&, swift::DeclContext*, bool, bool) + 265
15 swift-ide-test           0x00000001080f9e49 swift::constraints::ConstraintSystem::preCheckTarget(swift::constraints::SyntacticElementTarget&, bool, bool) + 201
16 swift-ide-test           0x000000010818f003 swift::TypeChecker::typeCheckTarget(swift::constraints::SyntacticElementTarget&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 131
17 swift-ide-test           0x000000010818ef27 swift::TypeChecker::typeCheckExpression(swift::constraints::SyntacticElementTarget&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 183
18 swift-ide-test           0x000000010818ee02 swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::constraints::ContextualTypeInfo, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 82
19 swift-ide-test           0x0000000108190c75 swift::TypeChecker::typeCheckCondition(swift::Expr*&, swift::DeclContext*) + 133
20 swift-ide-test           0x00000001082df61e swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 2606
21 swift-ide-test           0x00000001082debb3 bool (anonymous namespace)::StmtChecker::typeCheckStmt<swift::Stmt>(swift::Stmt*&) + 131
22 swift-ide-test           0x00000001082dbc02 (anonymous namespace)::StmtChecker::typeCheckASTNode(swift::ASTNode&) + 146
23 swift-ide-test           0x00000001082dbb56 swift::TypeChecker::typeCheckASTNode(swift::ASTNode&, swift::DeclContext*, bool) + 54
24 swift-ide-test           0x00000001081a3aee swift::NamingPatternRequest::evaluate(swift::Evaluator&, swift::VarDecl*) const + 638
25 swift-ide-test           0x0000000106a50f26 llvm::Expected<swift::NamingPatternRequest::OutputType> swift::Evaluator::getResultUncached<swift::NamingPatternRequest>(swift::NamingPatternRequest const&) + 262
26 swift-ide-test           0x0000000106a50d7c llvm::Expected<swift::NamingPatternRequest::OutputType> swift::Evaluator::getResultCached<swift::NamingPatternRequest, (void*)0>(swift::NamingPatternRequest const&) + 92
27 swift-ide-test           0x00000001069b8713 swift::NamingPatternRequest::OutputType swift::evaluateOrDefault<swift::NamingPatternRequest>(swift::Evaluator&, swift::NamingPatternRequest, swift::NamingPatternRequest::OutputType) + 35
28 swift-ide-test           0x00000001081a2901 swift::InterfaceTypeRequest::evaluate(swift::Evaluator&, swift::ValueDecl*) const + 369
29 swift-ide-test           0x0000000106a00936 llvm::Expected<swift::InterfaceTypeRequest::OutputType> swift::Evaluator::getResultUncached<swift::InterfaceTypeRequest>(swift::InterfaceTypeRequest const&) + 262
30 swift-ide-test           0x0000000106a0078c llvm::Expected<swift::InterfaceTypeRequest::OutputType> swift::Evaluator::getResultCached<swift::InterfaceTypeRequest, (void*)0>(swift::InterfaceTypeRequest const&) + 92
31 swift-ide-test           0x00000001069a8fa3 swift::InterfaceTypeRequest::OutputType swift::evaluateOrDefault<swift::InterfaceTypeRequest>(swift::Evaluator&, swift::InterfaceTypeRequest, swift::InterfaceTypeRequest::OutputType) + 35
32 swift-ide-test           0x000000010699c713 swift::ValueDecl::getInterfaceType() const + 67
33 swift-ide-test           0x0000000106e1c387 swift::ide::CompletionLookup::foundDecl(swift::ValueDecl*, swift::DeclVisibilityKind, swift::DynamicLookupInfo) + 231
34 swift-ide-test           0x0000000106e26950 swift::ide::CompletionLookup::FilteredDeclConsumer::foundDecl(swift::ValueDecl*, swift::DeclVisibilityKind, swift::DynamicLookupInfo) + 112
35 swift-ide-test           0x0000000106ba3bae swift::UsableFilteringDeclConsumer::foundDecl(swift::ValueDecl*, swift::DeclVisibilityKind, swift::DynamicLookupInfo) + 670
36 swift-ide-test           0x0000000106bb389c swift::namelookup::FindLocalVal::checkValueDecl(swift::ValueDecl*, swift::DeclVisibilityKind) + 460
37 swift-ide-test           0x0000000106bf1eba (anonymous namespace)::WalkToVarDecls::walkToPatternPost(swift::Pattern*) + 58
38 swift-ide-test           0x000000010694cd2d swift::ASTVisitor<(anonymous namespace)::Traversal, swift::Expr*, swift::Stmt*, bool, swift::Pattern*, bool, void>::visit(swift::Pattern*) + 1277
39 swift-ide-test           0x0000000106948f66 (anonymous namespace)::Traversal::doIt(swift::Pattern*) + 118
40 swift-ide-test           0x0000000106948a6c (anonymous namespace)::Traversal::doIt(swift::Expr*) + 812
41 swift-ide-test           0x000000010694b469 (anonymous namespace)::Traversal::visitApplyExpr(swift::ApplyExpr*) + 233
42 swift-ide-test           0x000000010694880d (anonymous namespace)::Traversal::doIt(swift::Expr*) + 205
43 swift-ide-test           0x000000010694cba6 swift::ASTVisitor<(anonymous namespace)::Traversal, swift::Expr*, swift::Stmt*, bool, swift::Pattern*, bool, void>::visit(swift::Pattern*) + 886
44 swift-ide-test           0x0000000106948f66 (anonymous namespace)::Traversal::doIt(swift::Pattern*) + 118
45 swift-ide-test           0x0000000106948edb swift::Pattern::walk(swift::ASTWalker&) + 27
46 swift-ide-test           0x0000000106bf0fce swift::Pattern::forEachVariable(llvm::function_ref<void (swift::VarDecl*)>) const + 270
47 swift-ide-test           0x0000000106bb42e4 swift::namelookup::FindLocalVal::visitCaseStmt(swift::CaseStmt*) + 388
48 swift-ide-test           0x0000000106bb410b swift::namelookup::FindLocalVal::visitSwitchStmt(swift::SwitchStmt*) + 235
49 swift-ide-test           0x0000000106bb3af4 swift::namelookup::FindLocalVal::visitBraceStmt(swift::BraceStmt*, bool) + 260
50 swift-ide-test           0x00000001080cccff lookupVisibleDeclsImpl(swift::VisibleDeclConsumer&, swift::DeclContext const*, bool, swift::SourceLoc) + 719
51 swift-ide-test           0x00000001080cc9e5 swift::lookupVisibleDecls(swift::VisibleDeclConsumer&, swift::DeclContext const*, bool, swift::SourceLoc) + 117
52 swift-ide-test           0x0000000106e1fd22 swift::ide::CompletionLookup::getValueCompletionsInDeclContext(swift::SourceLoc, std::__1::function<bool (swift::ValueDecl*, swift::DeclVisibilityKind, swift::DynamicLookupInfo)>, bool, bool) + 322
53 swift-ide-test           0x0000000106e31ad2 swift::ide::ExprTypeCheckCompletionCallback::deliverResults(swift::SourceLoc, swift::ide::CodeCompletionContext&, swift::ide::CodeCompletionConsumer&) + 610
54 swift-ide-test           0x0000000106e3b1f6 (anonymous namespace)::CodeCompletionCallbacksImpl::doneParsing(swift::SourceFile*) + 486
55 swift-ide-test           0x0000000108638271 swift::Parser::performIDEInspectionSecondPassImpl(swift::IDEInspectionDelayedDeclState&) + 689
56 swift-ide-test           0x0000000108637edb swift::IDEInspectionSecondPassRequest::evaluate(swift::Evaluator&, swift::SourceFile*, swift::IDEInspectionCallbacksFactory*) const + 187
57 swift-ide-test           0x000000010863f9ae llvm::Expected<swift::IDEInspectionSecondPassRequest::OutputType> swift::Evaluator::getResultUncached<swift::IDEInspectionSecondPassRequest>(swift::IDEInspectionSecondPassRequest const&) + 270
58 swift-ide-test           0x0000000108637d46 swift::IDEInspectionSecondPassRequest::OutputType swift::evaluateOrDefault<swift::IDEInspectionSecondPassRequest>(swift::Evaluator&, swift::IDEInspectionSecondPassRequest, swift::IDEInspectionSecondPassRequest::OutputType) + 38
59 swift-ide-test           0x0000000106e75840 void llvm::function_ref<void (swift::ide::IDEInspectionInstanceResult&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)>::callback_fn<swift::ide::IDEInspectionInstance::codeComplete(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, swift::ide::CodeCompletionContext&, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)::$_1::operator()(swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>) const::'lambda'(auto&, auto)>(long, swift::ide::IDEInspectionInstanceResult&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 1152
60 swift-ide-test           0x0000000106e74da9 void swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>::mapAsync<swift::ide::CodeCompleteResult>(llvm::function_ref<void (swift::ide::IDEInspectionInstanceResult&, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 89
61 swift-ide-test           0x0000000106e74cfc void llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>::callback_fn<swift::ide::IDEInspectionInstance::codeComplete(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, swift::ide::CodeCompletionContext&, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>)::$_1>(long, swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>) + 140
62 swift-ide-test           0x0000000106e739fb llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>::operator()(swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>) const + 107
63 swift-ide-test           0x0000000106e7405c swift::ide::IDEInspectionInstance::performNewOperation(llvm::Optional<llvm::hash_code>, swift::CompilerInvocation&, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>) + 1036
64 swift-ide-test           0x0000000106e747d9 swift::ide::IDEInspectionInstance::performOperation(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::IDEInspectionInstanceResult>)>) + 585
65 swift-ide-test           0x0000000106e749bb swift::ide::IDEInspectionInstance::codeComplete(swift::CompilerInvocation&, llvm::ArrayRef<char const*>, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, llvm::MemoryBuffer*, unsigned int, swift::DiagnosticConsumer*, swift::ide::CodeCompletionContext&, std::__1::shared_ptr<std::__1::atomic<bool>>, llvm::function_ref<void (swift::ide::CancellableResult<swift::ide::CodeCompleteResult>)>) + 139
66 swift-ide-test           0x0000000106835c11 bool llvm::function_ref<bool (CompletionLikeOperationParams)>::callback_fn<doCodeCompletion(swift::CompilerInvocation const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, bool, bool, bool, bool, bool, bool, bool)::$_7>(long, CompletionLikeOperationParams) + 433
67 swift-ide-test           0x0000000106835861 performWithCompletionLikeOperationParams(swift::CompilerInvocation const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, llvm::function_ref<bool (CompletionLikeOperationParams)>) + 1249
68 swift-ide-test           0x0000000106823511 doCodeCompletion(swift::CompilerInvocation const&, llvm::StringRef, llvm::StringRef, llvm::StringRef, bool, bool, bool, bool, bool, bool, bool, bool) + 593
69 swift-ide-test           0x000000010681f061 main + 13281
70 dyld                     0x00007ff8185d741f start + 1903

rdar://108164563

Metadata

Metadata

Assignees

No one assigned

    Labels

    #ifFeature → compiler control statements: Conditional compilation blocksassertion failureBug → crash: An assertion failurecode completionArea → source tooling: code completioncompiler control statementsFeature: compiler control statementscrashBug: A crash, i.e., an abnormal termination of softwarefound by stress testerFlag: An issue found by the SourceKit stress testerpattern matchingFeature: pattern matchingpattern where clausesFeature → patterns: Pattern `where` clausespatternsFeature: patternssource toolingArea: IDE support, SourceKit, and other source toolingswift 5.9type checkerArea → compiler: Semantic analysis

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions