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-4439] Compiler crashes when chaining case statements that capture values with weak references #47016

Closed
swift-ci opened this issue Mar 30, 2017 · 2 comments

Comments

@swift-ci
Copy link
Collaborator

@swift-ci swift-ci commented Mar 30, 2017

Previous ID SR-4439
Radar None
Original Reporter ibsh (JIRA User)
Type Bug
Status Resolved
Resolution Done

Attachment: Download

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

md5: 42ecce32954c17632e7caea2dde28d5f

is duplicated by:

  • SR-4487 Crash when pattern matching two cases with associated values of protocol type

relates to:

  • SR-4417 Compiler crashes when get value from enum specific case.

Issue Description:

If a value type has a weak property, a switch statement that chains multiple case statements together, where those case statements each capture an instance of that type, will crash the Swift compiler with a segfault when attempting to emit SIL.

See the attached Playground and compare the two implementations of equality for TroubledEnum, but in short:

switch self {
    case .a(let x): return x
    case .b(let x): return x
}

works fine but

switch self {
    case .a(let x), .b(let x): return x
}

does not.

@belkadan
Copy link
Contributor

@belkadan belkadan commented Mar 31, 2017

Possibly related to SR-4417?

@DougGregor
Copy link
Member

@DougGregor DougGregor commented Jul 25, 2020

Seems to work in Swift 5.3

@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
Projects
None yet
Development

No branches or pull requests

3 participants