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-1551] Compilation stuck instead of failing on misspelt property name #44160

Closed
swift-ci opened this issue May 18, 2016 · 5 comments
Closed
Labels
bug A deviation from expected or documented behavior. Also: expected but undesirable behavior. compiler The Swift compiler itself

Comments

@swift-ci
Copy link
Contributor

Previous ID SR-1551
Radar rdar://problem/26345641
Original Reporter TadeasKriz (JIRA User)
Type Bug
Status Resolved
Resolution Done

Attachment: Download

Environment

XCode 7.3.1
Apple Swift version 2.2 (swiftlang-703.0.18.8 clang-703.0.31)
Target: x86_64-apple-macosx10.9

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug
Assignee TadeasKriz (JIRA)
Priority Medium

md5: 66fa91bd65bbc4079d9f2e6016ba16c0

Issue Description:

I've attached a small file to reproduce this. Just do

@swift-ci
Copy link
Contributor Author

Comment by Tadeas Kriz (JIRA)

With latest snapshot (Apple Swift version 3.0-dev (LLVM dffa09ffd8, Clang 9f0d189820, Swift 1c720b8)) it produces:

SourceKitServiceLeak.swift:2:23: warning: single argument function types require parentheses
    private let path: PARAMS -> (String)
                      ^~~~~~
                      (     )
SourceKitServiceLeak.swift:4:25: warning: single argument function types require parentheses
    public init(_ path: PARAMS -> String) {
                        ^~~~~~
                        (     )
SourceKitServiceLeak.swift:22:9: error: static member 'init(stringInterpolationSegment:)' cannot be used on instance of type 'String'
        "\(a.propert)\(a)\(a)"
        ^~~~~~~~~~~~~~~~~~~~~~

Which is better because it does not get stuck, but the error message is still not helpful.

@swift-ci
Copy link
Contributor Author

Comment by Tadeas Kriz (JIRA)

I edited the file slightly SourceKitServiceLeak_swift3.swift and got the compiler stuck as well using Swift 3.

@jckarter
Copy link
Contributor

Speculatively putting on the type checker. Maybe we run amok trying to offer a near-miss fixit.

@jopamer
Copy link
Contributor

jopamer commented May 18, 2016

Not a fix-it - looks like we're throwing the overload resolution engine into a loop when trying to cons up a diagnostic:

frame #8: 0x0000000105ca90f9 swift`swift::constraints::ConstraintSystem::compareSolutions(cs=0x00007fff5b0b7428, solutions=ArrayRef<swift::constraints::Solution> @ 0x00007fff5b0acb50, diff=0x00007fff5b0ad1e8, idx1=2716, idx2=307) + 2041 at CSRanking.cpp:851
frame #9: 0x0000000105caaea3 swift`swift::constraints::ConstraintSystem::findBestSolution(this=0x00007fff5b0b7428, viable=0x00007fed7b229808, minimize=true) + 627 at CSRanking.cpp:1152
frame #10: 0x0000000105cd4f25 swift`swift::constraints::ConstraintSystem::solveRec(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 6037 at CSSolver.cpp:1466
frame #11: 0x0000000105cd85df swift`tryTypeVariableBindings(cs=0x00007fff5b0b7428, depth=2, typeVar=0x00007fed7b1b9fb0, bindings=ArrayRef<(anonymous namespace)::PotentialBinding> @ 0x00007fff5b0aecf8, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType)::PotentialBinding>, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 2575 at CSSolver.cpp:1143
frame #12: 0x0000000105cd6018 swift`swift::constraints::ConstraintSystem::solveSimplified(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 920 at CSSolver.cpp:1620
frame #13: 0x0000000105cd3aa3 swift`swift::constraints::ConstraintSystem::solveRec(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 787 at CSSolver.cpp:1325
frame #14: 0x0000000105cd85df swift`tryTypeVariableBindings(cs=0x00007fff5b0b7428, depth=1, typeVar=0x00007fed7b1cfab8, bindings=ArrayRef<(anonymous namespace)::PotentialBinding> @ 0x00007fff5b0b1508, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType)::PotentialBinding>, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 2575 at CSSolver.cpp:1143
frame #15: 0x0000000105cd6018 swift`swift::constraints::ConstraintSystem::solveSimplified(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 920 at CSSolver.cpp:1620
frame #16: 0x0000000105cd3aa3 swift`swift::constraints::ConstraintSystem::solveRec(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 787 at CSSolver.cpp:1325
frame #17: 0x0000000105cd85df swift`tryTypeVariableBindings(cs=0x00007fff5b0b7428, depth=0, typeVar=0x00007fed7b1b9620, bindings=ArrayRef<(anonymous namespace)::PotentialBinding> @ 0x00007fff5b0b3d18, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType)::PotentialBinding>, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 2575 at CSSolver.cpp:1143
frame #18: 0x0000000105cd6018 swift`swift::constraints::ConstraintSystem::solveSimplified(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 920 at CSSolver.cpp:1620
frame #19: 0x0000000105cd3aa3 swift`swift::constraints::ConstraintSystem::solveRec(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 787 at CSSolver.cpp:1325
frame #20: 0x0000000105cd3433 swift`swift::constraints::ConstraintSystem::solve(this=0x00007fff5b0b7428, solutions=0x00007fff5b0b6728, allowFreeTypeVariables=UnresolvedType) + 211 at CSSolver.cpp:1258
frame #21: 0x0000000105d46276 swift`swift::TypeChecker::solveForExpression(this=0x00007fff5b0bc840, expr=0x00007fff5b0b8108, dc=0x00007fed7a155020, convertType=Type @ 0x00007fff5b0b63c8, allowFreeTypeVariables=UnresolvedType, listener=0x0000000000000000, cs=0x00007fff5b0b7428, viable=0x00007fff5b0b6728, options=(Storage = 74)) + 822 at TypeCheckConstraints.cpp:1230
frame #22: 0x0000000105d491c8 swift`swift::TypeChecker::typeCheckExpression(this=0x00007fff5b0bc840, expr=0x00007fff5b0b8108, dc=0x00007fed7a155020, convertType=TypeLoc @ 0x00007fff5b0b66b0, convertTypePurpose=CTP_CallArgument, options=(Storage = 74), listener=0x0000000000000000) + 1192 at TypeCheckConstraints.cpp:1382
frame #23: 0x0000000105c06fca swift`(anonymous namespace)::FailureDiagnosis::typeCheckChildIndependently(this=0x00007fff5b0b9668, subExpr=0x00007fed7a155750, convertType=Type @ 0x00007fff5b0b8120, convertTypePurpose=CTP_CallArgument, options=(Storage = 4), listener=0x0000000000000000) + 1194 at CSDiag.cpp:2933
frame #24: 0x0000000105c0b73f swift`(anonymous namespace)::FailureDiagnosis::typeCheckArgumentChildIndependently(this=0x00007fff5b0b9668, argExpr=0x00007fed7a155750, argType=Type @ 0x00007fff5b0b86e0, candidates=0x00007fff5b0b94d8, options=(Storage = 4))::CalleeCandidateInfo const&, swift::OptionSet<TCCFlags, unsigned int>) + 1103 at CSDiag.cpp:3464
frame #25: 0x0000000105c5274f swift`(anonymous namespace)::FailureDiagnosis::visitApplyExpr(this=0x00007fff5b0b9668, callExpr=0x00007fed7a155788) + 1871 at CSDiag.cpp:4124
frame #26: 0x0000000105c04658 swift`swift::ASTVisitor<(anonymous namespace)::FailureDiagnosis, bool, void, void, void, void, void>::visitCallExpr(this=0x00007fff5b0b9668, E=0x00007fed7a155788) + 40 at ExprNodes.def:112
frame #27: 0x0000000105bfdce2 swift`swift::ASTVisitor<(anonymous namespace)::FailureDiagnosis, bool, void, void, void, void, void>::visit(this=0x00007fff5b0b9668, E=0x00007fed7a155788) + 1426 at ExprNodes.def:112
frame #28: 0x0000000105bf977d swift`(anonymous namespace)::FailureDiagnosis::diagnoseExprFailure(this=0x00007fff5b0b9668) + 125 at CSDiag.cpp:5275
frame #29: 0x0000000105bf9669 swift`swift::constraints::ConstraintSystem::diagnoseFailureForExpr(this=0x00007fff5b0bac28, expr=0x00007fed7a155788) + 105 at CSDiag.cpp:5299
frame #30: 0x0000000105bfc11b swift`swift::constraints::ConstraintSystem::salvage(this=0x00007fff5b0bac28, viable=0x00007fff5b0b9f28, expr=0x00007fed7a155788) + 1963 at CSDiag.cpp:5607
frame #31: 0x0000000105d46356 swift`swift::TypeChecker::solveForExpression(this=0x00007fff5b0bc840, expr=0x00007fff5b0bb8d0, dc=0x00007fed7a155020, convertType=Type @ 0x00007fff5b0b9bc8, allowFreeTypeVariables=Disallow, listener=0x00007fff5b0bb7f8, cs=0x00007fff5b0bac28, viable=0x00007fff5b0b9f28, options=(Storage = 16)) + 1046 at TypeCheckConstraints.cpp:1237
frame #32: 0x0000000105d491c8 swift`swift::TypeChecker::typeCheckExpression(this=0x00007fff5b0bc840, expr=0x00007fff5b0bb8d0, dc=0x00007fed7a155020, convertType=TypeLoc @ 0x00007fff5b0b9eb0, convertTypePurpose=CTP_Unused, options=(Storage = 16), listener=0x00007fff5b0bb7f8) + 1192 at TypeCheckConstraints.cpp:1382
frame #33: 0x0000000105d4ad5a swift`swift::TypeChecker::typeCheckBinding(this=0x00007fff5b0bc840, pattern=0x00007fff5b0bb8d8, initializer=0x00007fff5b0bb8d0, DC=0x00007fed7a155020) + 682 at TypeCheckConstraints.cpp:1696
frame #34: 0x0000000105d4afe2 swift`swift::TypeChecker::typeCheckPatternBinding(this=0x00007fff5b0bc840, PBD=0x00007fed7a1557b0, patternNumber=0) + 242 at TypeCheckConstraints.cpp:1746
frame #35: 0x0000000105d707d9 swift`validatePatternBindingDecl(tc=0x00007fff5b0bc840, binding=0x00007fed7a1557b0, entryNumber=0) + 1145 at TypeCheckDecl.cpp:1215
frame #36: 0x0000000105d7a661 swift`(anonymous namespace)::DeclChecker::visitPatternBindingDecl(this=0x00007fff5b0bc660, PBD=0x00007fed7a1557b0) + 97 at TypeCheckDecl.cpp:3256
frame #37: 0x0000000105d794cc swift`swift::ASTVisitor<(anonymous namespace)::DeclChecker, void, void, void, void, void, void>::visit(this=0x00007fff5b0bc660, D=0x00007fed7a1557b0) + 140 at DeclNodes.def:91
frame #38: 0x0000000105d6cac9 swift`(anonymous namespace)::DeclChecker::visit(this=0x00007fff5b0bc660, decl=0x00007fed7a1557b0) + 57 at TypeCheckDecl.cpp:3091
frame #39: 0x0000000105d7bc35 swift`(anonymous namespace)::DeclChecker::visitStructDecl(this=0x00007fff5b0bc660, SD=0x00007fed7a154e80) + 773 at TypeCheckDecl.cpp:3686
frame #40: 0x0000000105d795d4 swift`swift::ASTVisitor<(anonymous namespace)::DeclChecker, void, void, void, void, void, void>::visit(this=0x00007fff5b0bc660, D=0x00007fed7a154e80) + 404 at DeclNodes.def:112
frame #41: 0x0000000105d6cac9 swift`(anonymous namespace)::DeclChecker::visit(this=0x00007fff5b0bc660, decl=0x00007fed7a154e80) + 57 at TypeCheckDecl.cpp:3091
frame #42: 0x0000000105d6ca30 swift`swift::TypeChecker::typeCheckDecl(this=0x00007fff5b0bc840, D=0x00007fed7a154e80, isFirstPass=true) + 160 at TypeCheckDecl.cpp:6174
frame #43: 0x0000000105dba61e swift`swift::performTypeChecking(SF=0x00007fed7a083fd0, TLC=0x00007fff5b0bf690, Options=(Storage = 0), StartElem=3, WarnLongFunctionBodies=0) + 766 at TypeChecker.cpp:603
frame #44: 0x0000000104c176b0 swift`appendToREPLFile(SF=0x00007fed7a083fd0, PersistentState=0x00007fff5b0bf5f8, RC=0x00007fff5b0bf5e8, Buffer=unique_ptr<llvm::MemoryBuffer, std::**1::default_delete<llvm::MemoryBuffer> > @ 0x00007fff5b0bcfe8)::REPLContext&, std::1::unique_ptr<llvm::MemoryBuffer, std::_1::default_delete<llvm::MemoryBuffer> >) + 960 at REPL.cpp:183
frame #45: 0x0000000104c1d85e swift`REPLEnvironment::executeSwiftSource(this=0x00007fff5b0bec20, Line=(Data = "private struct Test {\n static let something = Target<(SomeEnum, String, String)> { a, b, c in\n "
(a.propert)
(b)
(c)"\n }\n}\n", Length = 140), CmdLine=size=9) + 574 at REPL.cpp:823
frame #46: 0x0000000104c17258 swift`REPLEnvironment::handleREPLInput(this=0x00007fff5b0bec20, inputKind=SourceCode, Line=(Data = "private struct Test {\n static let something = Target<(SomeEnum, String, String)> { a, b, c in\n "
(a.propert)
(b)
(c)"\n }\n}\n", Length = 140))::REPLInputKind, llvm::StringRef) + 9432 at REPL.cpp:1151
frame #47: 0x0000000104c1469f swift`swift::runREPL(CI=0x00007fff5b0c3d38, CmdLine=size=9, ParseStdlib=false) + 303 at REPL.cpp:1176
frame #48: 0x0000000104bf12b7 swift`performCompile(Instance=0x00007fff5b0c3d38, Invocation=0x00007fff5b0c36a0, Args=ArrayRef<const char *> @ 0x00007fff5b0c00e8, ReturnValue=0x00007fff5b0c1f4c, observer=0x0000000000000000) + 4055 at FrontendTool.cpp:685
frame #49: 0x0000000104befa3c swift`swift::performFrontend(Args=ArrayRef<const char *> @ 0x00007fff5b0c2238, Argv0="/Users/jpamer/lab/s/build/Ninja-DebugAssert/swift-macosx-x86_64/bin/swift", MainAddr=0x0000000104b45c00, observer=0x0000000000000000) + 12764 at FrontendTool.cpp:1163
frame #50: 0x0000000104b46ccc swift`main(argc
=11, argv_=0x00007fff5b0c69b0) + 4236 at driver.cpp:156

@DougGregor
Copy link
Member

Fixed in Xcode 9

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 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 itself
Projects
None yet
Development

No branches or pull requests

4 participants