mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 22:33:08 +00:00
fix: disallow discard as errdefer capture
This commit is contained in:
parent
ffd071f558
commit
37cd21eb5f
@ -3156,6 +3156,9 @@ fn deferStmt(
|
|||||||
const have_err_code = scope_tag == .defer_error and payload_token != 0;
|
const have_err_code = scope_tag == .defer_error and payload_token != 0;
|
||||||
const sub_scope = if (!have_err_code) &defer_gen.base else blk: {
|
const sub_scope = if (!have_err_code) &defer_gen.base else blk: {
|
||||||
const ident_name = try gz.astgen.identAsString(payload_token);
|
const ident_name = try gz.astgen.identAsString(payload_token);
|
||||||
|
if (std.mem.eql(u8, tree.tokenSlice(payload_token), "_")) {
|
||||||
|
return gz.astgen.failTok(payload_token, "discard of error capture; omit it instead", .{});
|
||||||
|
}
|
||||||
const remapped_err_code: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len);
|
const remapped_err_code: Zir.Inst.Index = @enumFromInt(gz.astgen.instructions.len);
|
||||||
opt_remapped_err_code = remapped_err_code.toOptional();
|
opt_remapped_err_code = remapped_err_code.toOptional();
|
||||||
try gz.astgen.instructions.append(gz.astgen.gpa, .{
|
try gz.astgen.instructions.append(gz.astgen.gpa, .{
|
||||||
|
|||||||
7
test/cases/errdefer_discard.zig
Normal file
7
test/cases/errdefer_discard.zig
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
pub fn main() !void {
|
||||||
|
errdefer |_| _ = @"_";
|
||||||
|
}
|
||||||
|
|
||||||
|
// error
|
||||||
|
//
|
||||||
|
// :2:15: error: discard of error capture; omit it instead
|
||||||
Loading…
x
Reference in New Issue
Block a user