Commit 81bbefe9b8

emma <39064859+ieeemma@users.noreply.github.com>
2022-07-07 20:38:32
AstGen: fix catch payoad not checking for shadowing
1 parent c9006d9
Changed files (2)
src/AstGen.zig
@@ -4997,10 +4997,14 @@ fn orelseCatchExpr(
     var err_val_scope: Scope.LocalVal = undefined;
     const else_sub_scope = blk: {
         const payload = payload_token orelse break :blk &else_scope.base;
-        if (mem.eql(u8, tree.tokenSlice(payload), "_")) {
+        const err_str = tree.tokenSlice(payload);
+        if (mem.eql(u8, err_str, "_")) {
             return astgen.failTok(payload, "discard of error capture; omit it instead", .{});
         }
         const err_name = try astgen.identAsString(payload);
+
+        try astgen.detectLocalShadowing(scope, err_name, payload, err_str);
+
         err_val_scope = .{
             .parent = &else_scope.base,
             .gen_zir = &else_scope,
test/cases/variable_shadowing.10.zig
@@ -0,0 +1,9 @@
+fn foo() !void {
+    var i: anyerror!usize = 1;
+    _ = i catch |i| return i;
+}
+
+// error
+//
+// :3:18: error: redeclaration of local variable 'i'
+// :2:9: note: previous declaration here