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-1902] Computed getter type inference bug #44511

Closed
swift-ci opened this issue Jun 25, 2016 · 0 comments
Closed

[SR-1902] Computed getter type inference bug #44511

swift-ci opened this issue Jun 25, 2016 · 0 comments
Assignees
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

Previous ID SR-1902
Radar None
Original Reporter zmeyc (JIRA User)
Type Bug
Status Resolved
Resolution Duplicate
Environment

OS X, Swift Development Snapshot 2016-06-20 (a)

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, CompilerCrash, TypeChecker
Assignee @rudkx
Priority Medium

md5: 99e05d8a7358464dfbf50d2d24bad7ff

duplicates:

  • SR-1512 Assertion failure: "Already marked as a fixed binding" when implementing index(_:offsetBy:limit:)

Issue Description:

Some computed getter combinations cause the compiler to crash. I've reproduced this with a simple example:

import Foundation

struct A {
    var a: Int32 { return 0 }
}

struct B {
    var b: Int64 { return 0 }
}

struct C {
    var c: Int64 { return 0 }
}

class S {
    var a: A? = A()
    var b: B? = B()
    var c: C? = C()
    var result: Int64? { return a?.a ?? b?.b ?? c?.c }
}

let s = S()
print(s.result)

This crashes the compiler on build and also crashes Xcode itself in Playgrounds on Xcode8 Preview1.

On latest snapshot (2016-06-20 a) the following error is produced:

CompileSwift normal x86_64 /Users/user/Desktop/Test/Test/main.swift
    cd /Users/user/Desktop/Test
    /Users/user/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-06-20-a.xctoolchain/usr/bin/swift -frontend -c -primary-file /Users/user/Desktop/Test/Test/main.swift -target x86_64-apple-macosx10.11 -enable-objc-interop -sdk /Users/user/Downloads/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -I /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Products/Debug -F /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Products/Debug -enable-testing -g -module-cache-path /Users/user/Library/Developer/Xcode/DerivedData/ModuleCache -serialize-debugging-options -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-generated-files.hmap -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-own-target-headers.hmap -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-all-target-headers.hmap -Xcc -iquote -Xcc /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-project-headers.hmap -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Products/Debug/include -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/DerivedSources/x86_64 -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/user/Desktop/Test -emit-module-doc-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main~partial.swiftdoc -Onone -module-name Test -emit-module-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main~partial.swiftmodule -serialize-diagnostics-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.dia -emit-dependencies-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.swiftdeps -o /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.o

Assertion failed: (!adjacency.FixedBinding && "Already marked as a fixed binding?"), function addFixedBinding, file /Users/buildnode/jenkins/workspace/oss-swift-package-osx/swift/lib/Sema/ConstraintGraph.cpp, line 207.
0  swift                    0x000000010809700b llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 43
1  swift                    0x0000000108096256 llvm::sys::RunSignalHandlers() + 70
2  swift                    0x000000010809775f SignalHandler(int) + 383
3  libsystem_platform.dylib 0x00007fff86c7c52a _sigtramp + 26
4  swift                    0x0000000108c84599 cmark_strbuf__initbuf + 73928
5  swift                    0x00000001080974ae abort + 14
6  swift                    0x0000000108097491 __assert_rtn + 81
7  swift                    0x0000000105b68569 swift::constraints::ConstraintGraph::bindTypeVariable(swift::TypeVariableType*, swift::Type) + 473
8  swift                    0x0000000105b7787c swift::constraints::ConstraintSystem::assignFixedType(swift::TypeVariableType*, swift::Type, bool) + 300
9  swift                    0x0000000105bd716d swift::constraints::ConstraintSystem::matchTypes(swift::Type, swift::Type, swift::constraints::TypeMatchKind, unsigned int, swift::constraints::ConstraintLocatorBuilder) + 3293
10 swift                    0x0000000105bdb2bb swift::constraints::ConstraintSystem::matchDeepEqualityTypes(swift::Type, swift::Type, swift::constraints::ConstraintLocatorBuilder) + 875
11 swift                    0x0000000105bdc13f swift::constraints::ConstraintSystem::simplifyRestrictedConstraint(swift::constraints::ConversionRestrictionKind, swift::Type, swift::Type, swift::constraints::TypeMatchKind, unsigned int, swift::constraints::ConstraintLocatorBuilder) + 2239
12 swift                    0x0000000105be2674 swift::constraints::ConstraintSystem::simplifyConstraint(swift::constraints::Constraint const&) + 484
13 swift                    0x0000000105bed67b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10475
14 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
15 swift                    0x0000000105becd41 swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 8113
16 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
17 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
18 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
19 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
20 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
21 swift                    0x0000000105becd41 swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 8113
22 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
23 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
24 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
25 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
26 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
27 swift                    0x0000000105becd41 swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 8113
28 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
29 swift                    0x0000000105becd41 swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 8113
30 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
31 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
32 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
33 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
34 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
35 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
36 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
37 swift                    0x0000000105bed76b swift::constraints::ConstraintSystem::solveSimplified(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 10715
38 swift                    0x0000000105be8ecf swift::constraints::ConstraintSystem::solveRec(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::FreeTypeVariableBinding) + 303
39 swift                    0x0000000105ba1dc2 swift::constraints::ConstraintSystem::salvage(llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::Expr*) + 130
40 swift                    0x0000000105c1fbfe swift::TypeChecker::solveForExpression(swift::Expr*&, swift::DeclContext*, swift::Type, swift::FreeTypeVariableBinding, swift::ExprTypeCheckListener*, swift::constraints::ConstraintSystem&, llvm::SmallVectorImpl<swift::constraints::Solution>&, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>) + 910
41 swift                    0x0000000105c25847 swift::TypeChecker::typeCheckExpression(swift::Expr*&, swift::DeclContext*, swift::TypeLoc, swift::ContextualTypePurpose, swift::OptionSet<swift::TypeCheckExprFlags, unsigned int>, swift::ExprTypeCheckListener*) + 599
42 swift                    0x0000000105c9da44 swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 4820
43 swift                    0x0000000105c9c8be swift::ASTVisitor<(anonymous namespace)::StmtChecker, void, swift::Stmt*, void, void, void, void>::visit(swift::Stmt*) + 334
44 swift                    0x0000000105c9bc79 (anonymous namespace)::StmtChecker::typeCheckBody(swift::BraceStmt*&) + 25
45 swift                    0x0000000105c9af5f swift::TypeChecker::typeCheckFunctionBodyUntil(swift::FuncDecl*, swift::SourceLoc) + 383
46 swift                    0x0000000105c9ad83 swift::TypeChecker::typeCheckAbstractFunctionBodyUntil(swift::AbstractFunctionDecl*, swift::SourceLoc) + 35
47 swift                    0x0000000105c9b904 swift::TypeChecker::typeCheckAbstractFunctionBody(swift::AbstractFunctionDecl*) + 180
48 swift                    0x0000000105c56b96 typeCheckFunctionsAndExternalDecls(swift::TypeChecker&) + 166
49 swift                    0x0000000105c57830 swift::performTypeChecking(swift::SourceFile&, swift::TopLevelContext&, swift::OptionSet<swift::TypeCheckingFlags, unsigned int>, unsigned int, unsigned int) + 1568
50 swift                    0x00000001059159d0 swift::CompilerInstance::performSema() + 3664
51 swift                    0x000000010542e6ea performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef<char const*>, int&, swift::FrontendObserver*) + 442
52 swift                    0x000000010542d29f swift::performFrontend(llvm::ArrayRef<char const*>, char const*, void*, swift::FrontendObserver*) + 2895
53 swift                    0x00000001053efde0 main + 2448
54 libdyld.dylib            0x00007fff949d25ad start + 1
55 libdyld.dylib            0x000000000000003a start + 1801640590
Stack dump:
0.  Program arguments: /Users/user/Library/Developer/Toolchains/swift-DEVELOPMENT-SNAPSHOT-2016-06-20-a.xctoolchain/usr/bin/swift -frontend -c -primary-file /Users/user/Desktop/Test/Test/main.swift -target x86_64-apple-macosx10.11 -enable-objc-interop -sdk /Users/user/Downloads/Xcode-beta.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk -I /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Products/Debug -F /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Products/Debug -enable-testing -g -module-cache-path /Users/user/Library/Developer/Xcode/DerivedData/ModuleCache -serialize-debugging-options -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/swift-overrides.hmap -Xcc -iquote -Xcc /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-generated-files.hmap -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-own-target-headers.hmap -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-all-target-headers.hmap -Xcc -iquote -Xcc /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Test-project-headers.hmap -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Products/Debug/include -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/DerivedSources/x86_64 -Xcc -I/Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/DerivedSources -Xcc -DDEBUG=1 -Xcc -working-directory/Users/user/Desktop/Test -emit-module-doc-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main~partial.swiftdoc -Onone -module-name Test -emit-module-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main~partial.swiftmodule -serialize-diagnostics-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.dia -emit-dependencies-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.d -emit-reference-dependencies-path /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.swiftdeps -o /Users/user/Library/Developer/Xcode/DerivedData/Test-cgkyyxbgwcvkjlfitpelkydumwyu/Build/Intermediates/Test.build/Debug/Test.build/Objects-normal/x86_64/main.o 
1.  While type-checking getter for result at /Users/user/Desktop/Test/Test/main.swift:27:24
2.  While type-checking expression at [/Users/user/Desktop/Test/Test/main.swift:27:33 - line:27:52] RangeText="a?.a ?? b?.b ?? c?.c"
@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

2 participants