Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-7840] Crash with operator and function overloads #50376

Closed
swift-ci opened this issue Jun 1, 2018 · 2 comments
Closed

[SR-7840] Crash with operator and function overloads #50376

swift-ci opened this issue Jun 1, 2018 · 2 comments
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software type checker Area → compiler: Semantic analysis

Comments

@swift-ci
Copy link
Collaborator

swift-ci commented Jun 1, 2018

Previous ID SR-7840
Radar rdar://problem/40722855
Original Reporter Coder-256 (JIRA User)
Type Bug
Status Closed
Resolution Done
Environment

macOS High Sierra 10.13.5, Xcode 9.4 (stable).

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, CompilerCrash, TypeChecker
Assignee Coder-256 (JIRA)
Priority Medium

md5: f2dbe965f7e707739bd0d7d62f104a41

Issue Description:

Here is the most simple example I could make:

postfix operator %
postfix func % (foo: Any) {}

class Bar {
    func baz(qux: Int) {}
    func baz(qux: String) {
        baz(qux: qux)%
    }
}

This crashes the compiler with the following output:

0  swift                    0x00000001072d5fea PrintStackTraceSignalHandler(void*) + 42
1  swift                    0x00000001072d53a6 SignalHandler(int) + 966
2  libsystem_platform.dylib 0x00007fff5842ef5a _sigtramp + 26
3  libsystem_platform.dylib 0x00007fc99c619bf0 _sigtramp + 1142860976
4  swift                    0x000000010494bc75 swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) + 293
5  swift                    0x0000000104803149 getCallerDefaultArg(swift::constraints::ConstraintSystem&, swift::DeclContext*, swift::SourceLoc, swift::ConcreteDeclRef&, unsigned int) + 1033
6  swift                    0x0000000104823f3d (anonymous namespace)::ExprRewriter::coerceCallArguments(swift::Expr*, swift::AnyFunctionType*, swift::ApplyExpr*, llvm::ArrayRef<swift::Identifier>, bool, swift::constraints::ConstraintLocatorBuilder) + 4189
7  swift                    0x0000000104817676 (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder) + 5414
8  swift                    0x000000010481f5b7 (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) + 199
9  swift                    0x0000000104805429 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) + 25
10 swift                    0x000000010494c30c swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) + 1980
11 swift                    0x00000001049dc05e swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 11278
12 swift                    0x00000001049d85f7 swift::TypeChecker::typeCheckAbstractFunctionBodyUntil(swift::AbstractFunctionDecl*, swift::SourceLoc) + 727
13 swift                    0x00000001049dd6e1 swift::TypeChecker::typeCheckAbstractFunctionBody(swift::AbstractFunctionDecl*) + 561
14 swift                    0x00000001049ffe0b swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int, unsigned int, unsigned int) + 2491
15 swift                    0x0000000104681bd0 swift::CompilerInstance::performSema() + 5616
16 swift                    0x000000010392d4f4 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 1892
17 swift                    0x000000010392b304 swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 7908
18 swift                    0x00000001038dfce5 main + 18917
19 libdyld.dylib            0x00007fff58120015 start + 1
Stack dump:
0.  Program arguments: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -frontend -c -primary-file /Users/jacob/Downloads/SwiftBuildTest/SwiftBuildTest/main.swift -target x86_64-apple-macosx10.13 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -I /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Products/Debug -F /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Products/Debug -enable-testing -g -module-cache-path /Users/jacob/Library/Developer/Xcode/DerivedData/ModuleCache.noindex -swift-version 4 -enforce-exclusivity=checked -Onone -D DEBUG -serialize-debugging-options -Xcc -I/Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/SwiftBuildTest-generated-files.hmap -Xcc -I/Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/SwiftBuildTest-own-target-headers.hmap -Xcc -I/Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/SwiftBuildTest-all-target-headers.hmap -Xcc -iquote -Xcc /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/SwiftBuildTest-project-headers.hmap -Xcc -I/Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Products/Debug/include -Xcc -I/Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/DerivedSources/x86_64 -Xcc -I/Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/jacob/Downloads/SwiftBuildTest -emit-module-doc-path /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/Objects-normal/x86_64/main~partial.swiftdoc -serialize-diagnostics-path /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/Objects-normal/x86_64/main.dia -module-name SwiftBuildTest -emit-module-path /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/Objects-normal/x86_64/main~partial.swiftmodule -emit-dependencies-path /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/Objects-normal/x86_64/main.swiftdeps -o /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Build/Intermediates.noindex/SwiftBuildTest.build/Debug/SwiftBuildTest.build/Objects-normal/x86_64/main.o -index-store-path /Users/jacob/Library/Developer/Xcode/DerivedData/SwiftBuildTest-ckapcamwldpkyceaggdmqvosozrl/Index/DataStore -index-system-modules 
1.  While type-checking 'baz(qux:)' at /Users/jacob/Downloads/SwiftBuildTest/SwiftBuildTest/main.swift:14:5
2.  While type-checking expression at [/Users/jacob/Downloads/SwiftBuildTest/SwiftBuildTest/main.swift:15:9 - line:15:22] RangeText="baz(qux: qux)%"
3.  While type-checking NULL expression!
@belkadan
Copy link
Contributor

belkadan commented Jun 1, 2018

With asserts:

Assertion failed: ((matchCanFail || !failed) && "Call arguments did not match up?"), function coerceCallArguments, file /Volumes/Data/swift-public/swift/lib/Sema/CSApply.cpp, line 5822.
0  swift                    0x00000001076d6138 llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1  swift                    0x00000001076d5086 llvm::sys::RunSignalHandlers() + 86
2  swift                    0x00000001076d66fe SignalHandler(int) + 366
3  libsystem_platform.dylib 0x00007fff5d37ef5a _sigtramp + 26
4  libsystem_platform.dylib 0x00007fcfae8e9178 _sigtramp + 1364632120
5  libsystem_c.dylib        0x00007fff5d11c1ae abort + 127
6  libsystem_c.dylib        0x00007fff5d0e41ac basename_r + 0
7  swift                    0x0000000104d1e790 (anonymous namespace)::ExprRewriter::coerceCallArguments(swift::Expr*, swift::AnyFunctionType*, swift::ApplyExpr*, llvm::ArrayRef<swift::Identifier>, bool, swift::constraints::ConstraintLocatorBuilder) + 7488
8  swift                    0x0000000104d078d6 (anonymous namespace)::ExprRewriter::finishApply(swift::ApplyExpr*, swift::Type, swift::constraints::ConstraintLocatorBuilder) + 3830
9  swift                    0x0000000104d1fc1b (anonymous namespace)::ExprRewriter::visitApplyExpr(swift::ApplyExpr*) + 107
10 swift                    0x0000000104d039a9 (anonymous namespace)::ExprRewriter::walkToExprPost(swift::Expr*) + 25
11 swift                    0x0000000104d095c6 (anonymous namespace)::ExprWalker::walkToExprPost(swift::Expr*) + 22
12 swift                    0x000000010511ce36 swift::Expr::walk(swift::ASTWalker&) + 118
13 swift                    0x0000000104d00525 swift::constraints::ConstraintSystem::applySolution(swift::constraints::Solution&, swift::Expr*, swift::Type, bool, bool, bool) + 613
14 swift                    0x0000000104e1ccef swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem*) + 847
15 swift                    0x0000000104eac944 swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 612
16 swift                    0x0000000104eac155 bool (anonymous namespace)::StmtChecker::typeCheckStmt<swift::BraceStmt>(swift::BraceStmt*&) + 85
17 swift                    0x0000000104eaabd0 swift::TypeChecker::typeCheckFunctionBodyUntil(swift::FuncDecl*, swift::SourceLoc) + 336
18 swift                    0x0000000104eab841 swift::TypeChecker::typeCheckAbstractFunctionBody(swift::AbstractFunctionDecl*) + 465
19 swift                    0x0000000104ed0775 typeCheckFunctionsAndExternalDecls(swift::SourceFile&, swift::TypeChecker&) + 341
20 swift                    0x0000000104ed15b8 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) + 1800
21 swift                    0x0000000104b10e3c swift::CompilerInstance::parseAndTypeCheckMainFile(swift::PersistentParserState&, swift::DelayedParsingCallbacks*, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>) + 444
22 swift                    0x0000000104b0fb4b swift::CompilerInstance::parseAndCheckTypes(swift::CompilerInstance::ImplicitImports const&) + 651
23 swift                    0x0000000104b0f488 swift::CompilerInstance::performSema() + 472
24 swift                    0x0000000103fcfe81 performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*, swift::UnifiedStatsReporter*) + 977
25 swift                    0x0000000103fceb3a swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2986
26 swift                    0x0000000103f8ccd6 main + 2534
27 libdyld.dylib            0x00007fff5d070015 start + 1
Stack dump:
0.  Program arguments: /Volumes/Data/swift-public/build/ninja/swift-macosx-x86_64/bin/swift -frontend -interpret - -enable-objc-interop -sdk /Volumes/XIA/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -color-diagnostics -module-name main 
1.  While type-checking 'baz(qux:)' at <stdin>:6:5
2.  While type-checking statement at [<stdin>:6:27 - line:8:5] RangeText="{
        baz(qux: qux)%
    }"
3.  While type-checking expression at [<stdin>:7:9 - line:7:22] RangeText="baz(qux: qux)%"

@swift-ci create

@xedin
Copy link
Member

xedin commented Jul 3, 2018

Merged fix for this as #17669 into master. Coder-256 (JIRA User) please use nightly snapshot from tomorrow to verify and close. Thank you!

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
@AnthonyLatsis AnthonyLatsis added the crash Bug: A crash, i.e., an abnormal termination of software label Dec 12, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler in itself crash Bug: A crash, i.e., an abnormal termination of software type checker Area → compiler: Semantic analysis
Projects
None yet
Development

No branches or pull requests

4 participants