-
-
Notifications
You must be signed in to change notification settings - Fork 419
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
Segfault on Compilation of Tuple of Unions #1513
Comments
Compiler details:
I also ran this against current
Additionally, that compiler returns some more information during the fault:
|
Hey, Been looking into this issue some more, and have narrowed it down to the return from the
To get the other path (that is, returning from the First I added these types:
And then rewrite the logic this way:
This compiles and runs as expected. |
I've been looking into this a little bit, and isolated this to the primitive that's in Is probably related to the reachability ds, similar to #1474. |
@omarkj awesome digging |
This probably is another case of the general issue with tuples not having a type descriptor. |
@sylvanc doesn't believe this is tuples related. going to be looking at it. i'm leaving the needs discussion during sync tag so we revisit next week. |
This now errors at:
|
backtrace:
|
@Praetonus was exactly right. It's a union of tuples vs tuples of unions problem. |
On line 305 in |
Minimal case: actor Main
new create(env: Env) =>
let a: ((Main, Env) | (Env, Main)) = (this, env)
let b: ((Main | Env), (Main | Env)) = a |
This change fixes a compiler crash when converting a union of tuples to a tuple. Closes ponylang#1513.
This change fixes a compiler crash when converting a union of tuples to a tuple. Closes #1513.
The last line causes the segfault. Remove it and all is good.
I built using latest master. LLVM 3.9.1. OSX.
Was first reported by omarkj on IRC.
Backtrace under LLDB:
The text was updated successfully, but these errors were encountered: