-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Can't branch inside tuple literal (peer result location does not work for inferred tuple literal fields) #3882
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
Comments
Happens to with const std = @import("std");
test "orelse in tuple" {
var opt: ?u32 = 1;
std.debug.warn("A tuple: ({}, {}, {})\n", .{ 1, 2, opt orelse 3 });
} λ zig test tuples.zig
/Users/giann/tmp-code/tuples.zig:5:67: error: duplicate struct field: '2'
std.debug.warn("A tuple: ({}, {}, {})\n", .{ 1, 2, opt orelse 3 });
^
/Users/giann/tmp-code/tuples.zig:5:67: note: other field here
std.debug.warn("A tuple: ({}, {}, {})\n", .{ 1, 2, opt orelse 3 }); |
This is currently broken because of ziglang/zig#3882, should work after it's been fixed though. Can't be bothered to work around that bug.
The workaround I've been using (below) no longer works as of 2505183. std.debug.warn("I feel {}\n", [_][]const u8{ if (good) "good" else "bad" }); I think the only way around now is to put the conditional around the whole function call. |
Sorry, will prioritize fixing this bug |
"I think the only way around now is to put the conditional around the whole function call." My workaround is to use a temp variable before the function call, which is slightly smaller. e.g. {const t = if (good) "good" else "bad";
std.debug.warn("The world is {}\n", .{t});} Not sure if this works on master though. |
This now gives:
Workaround noted by @pixelherodev is: const std = @import("std");
pub fn main() void {
var good = true;
const t = if (good) "good" else "bad";
std.debug.warn("I feel {}\n", .{t});
} Making this a normal-priority bug since the workaround is not so bad. |
Note : the bug is still present in 0.10.0-dev.3072+d1d892c83 |
Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Closes ziglang#1994 Closes ziglang#2140 Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3234 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Closes ziglang#1957 Closes ziglang#1994 Closes ziglang#2140 Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3234 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Closes ziglang#1957 Closes ziglang#1994 Closes ziglang#2140 Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3234 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Closes ziglang#1957 Closes ziglang#1994 Closes ziglang#2140 Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3234 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Closes ziglang#1957 Closes ziglang#1994 Closes ziglang#2140 Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3234 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Closes ziglang#1957 Closes ziglang#1994 Closes ziglang#2140 Closes ziglang#2746 Closes ziglang#2802 Closes ziglang#2855 Closes ziglang#2895 Closes ziglang#2981 Closes ziglang#3054 Closes ziglang#3158 Closes ziglang#3234 Closes ziglang#3259 Closes ziglang#3371 Closes ziglang#3376 Closes ziglang#3387 Closes ziglang#3529 Closes ziglang#3653 Closes ziglang#3750 Closes ziglang#3778 Closes ziglang#3882 Closes ziglang#3915 Closes ziglang#3929 Closes ziglang#3961 Closes ziglang#3988 Closes ziglang#4123 Closes ziglang#7448
Update: this has been narrowed down since OP. See andrewrk's last comment
These also don't work (different problem):
Switch expressions don't work either.
These work (forcing a list type):
The text was updated successfully, but these errors were encountered: