mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
astgen: errors for shadowing in if captures
This commit is contained in:
parent
759d1d9aef
commit
1799455e05
@ -5008,6 +5008,7 @@ fn ifExpr(
|
||||
const token_name_str = tree.tokenSlice(token_name_index);
|
||||
if (mem.eql(u8, "_", token_name_str))
|
||||
break :s &then_scope.base;
|
||||
try astgen.detectLocalShadowing(&then_scope.base, ident_name, token_name_index);
|
||||
payload_val_scope = .{
|
||||
.parent = &then_scope.base,
|
||||
.gen_zir = &then_scope,
|
||||
@ -5030,6 +5031,7 @@ fn ifExpr(
|
||||
break :s &then_scope.base;
|
||||
const payload_inst = try then_scope.addUnNode(tag, cond.inst, node);
|
||||
const ident_name = try astgen.identAsString(ident_token);
|
||||
try astgen.detectLocalShadowing(&then_scope.base, ident_name, ident_token);
|
||||
payload_val_scope = .{
|
||||
.parent = &then_scope.base,
|
||||
.gen_zir = &then_scope,
|
||||
@ -5071,6 +5073,7 @@ fn ifExpr(
|
||||
const error_token_str = tree.tokenSlice(error_token);
|
||||
if (mem.eql(u8, "_", error_token_str))
|
||||
break :s &else_scope.base;
|
||||
try astgen.detectLocalShadowing(&else_scope.base, ident_name, error_token);
|
||||
payload_val_scope = .{
|
||||
.parent = &else_scope.base,
|
||||
.gen_zir = &else_scope,
|
||||
|
||||
@ -1108,6 +1108,33 @@ pub fn addCases(ctx: *TestContext) !void {
|
||||
":5:13: error: redeclaration of local variable 'i'",
|
||||
":2:9: note: previous declaration here",
|
||||
});
|
||||
case.addError(
|
||||
\\pub fn main() void {
|
||||
\\ var i = 0;
|
||||
\\ if (true) |i| {}
|
||||
\\}
|
||||
, &[_][]const u8{
|
||||
":3:16: error: redeclaration of local variable 'i'",
|
||||
":2:9: note: previous declaration here",
|
||||
});
|
||||
case.addError(
|
||||
\\pub fn main() void {
|
||||
\\ var i = 0;
|
||||
\\ if (true) |i| {} else |e| {}
|
||||
\\}
|
||||
, &[_][]const u8{
|
||||
":3:16: error: redeclaration of local variable 'i'",
|
||||
":2:9: note: previous declaration here",
|
||||
});
|
||||
case.addError(
|
||||
\\pub fn main() void {
|
||||
\\ var i = 0;
|
||||
\\ if (true) |_| {} else |i| {}
|
||||
\\}
|
||||
, &[_][]const u8{
|
||||
":3:28: error: redeclaration of local variable 'i'",
|
||||
":2:9: note: previous declaration here",
|
||||
});
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user