Open
Description
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
Labels
Feature → compiler control statements: Conditional compilation blocksBug → crash: An assertion failureArea → source tooling: code completionFeature: compiler control statementsBug: A crash, i.e., an abnormal termination of softwareFlag: An issue found by the SourceKit stress testerFeature: pattern matchingFeature → patterns: Pattern `where` clausesFeature: patternsArea: IDE support, SourceKit, and other source toolingArea → compiler: Semantic analysis