commit 78298a6bb02e1bc113daf632aa0ab3dc3ce70aeb (tree)
parent 4fc156d63710541410782f14a742d6af3d36f7a7
Author: Motiejus Jakštys <motiejus@jakstys.lt>
Date: Thu, 12 Feb 2026 15:42:38 +0200
stricter test suite
Diffstat:
2 files changed, 31 insertions(+), 33 deletions(-)
diff --git a/astgen.c b/astgen.c
@@ -3130,22 +3130,21 @@ static uint32_t exprRl(GenZir* gz, Scope* scope, ResultLoc rl, uint32_t node) {
ZirInstData rdata;
rdata.un_node.operand
= block_inst + ZIR_REF_START_INDEX;
- rdata.un_node.src_node = (int32_t)node
- - (int32_t)gz->decl_node_index;
+ rdata.un_node.src_node
+ = (int32_t)node - (int32_t)gz->decl_node_index;
addInstruction(gz,
ZIR_INST_RESTORE_ERR_RET_INDEX_UNCONDITIONAL,
rdata);
}
- addBreak(gz, break_tag, block_inst,
- ZIR_REF_VOID_VALUE, AST_NODE_OFFSET_NONE);
+ addBreak(gz, break_tag, block_inst, ZIR_REF_VOID_VALUE,
+ AST_NODE_OFFSET_NONE);
} else {
// Value break (AstGen.zig:2208-2228).
- uint32_t operand = exprRl(gz, scope,
- block_gz->break_result_info, opt_rhs);
+ uint32_t operand = exprRl(
+ gz, scope, block_gz->break_result_info, opt_rhs);
if (!block_gz->is_comptime)
restoreErrRetIndex(gz, block_inst,
- block_gz->break_result_info, opt_rhs,
- operand);
+ block_gz->break_result_info, opt_rhs, operand);
switch (block_gz->break_result_info.tag) {
case RL_PTR:
case RL_DISCARD:
@@ -3445,8 +3444,8 @@ static uint32_t blockExprExpr(
gz, block_scope.break_result_info, ZIR_REF_VOID_VALUE, node);
ZirInstTag break_tag
= force_comptime ? ZIR_INST_BREAK_INLINE : ZIR_INST_BREAK;
- addBreak(&block_scope, break_tag, block_inst, result,
- AST_NODE_OFFSET_NONE);
+ addBreak(
+ &block_scope, break_tag, block_inst, result, AST_NODE_OFFSET_NONE);
}
if (force_comptime) {
@@ -4303,12 +4302,15 @@ static uint32_t switchExpr(
pay[pay_len++] = 1;
prong_info_slot = pay_len++;
AstData rng = tree->nodes.datas[cd.lhs];
- pay[pay_len++] = comptimeExpr(gz, scope, rng.lhs, COMPTIME_REASON_SWITCH_ITEM);
- pay[pay_len++] = comptimeExpr(gz, scope, rng.rhs, COMPTIME_REASON_SWITCH_ITEM);
+ pay[pay_len++] = comptimeExpr(
+ gz, scope, rng.lhs, COMPTIME_REASON_SWITCH_ITEM);
+ pay[pay_len++] = comptimeExpr(
+ gz, scope, rng.rhs, COMPTIME_REASON_SWITCH_ITEM);
} else {
// Scalar: [item_ref, prong_info, body...]
pay[scalar_tbl + scalar_ci++] = hdr;
- pay[pay_len++] = comptimeExpr(gz, scope, cd.lhs, COMPTIME_REASON_SWITCH_ITEM);
+ pay[pay_len++] = comptimeExpr(
+ gz, scope, cd.lhs, COMPTIME_REASON_SWITCH_ITEM);
prong_info_slot = pay_len++;
}
break;
@@ -4340,7 +4342,8 @@ static uint32_t switchExpr(
abort();
pay = p;
}
- pay[pay_len++] = comptimeExpr(gz, scope, item, COMPTIME_REASON_SWITCH_ITEM);
+ pay[pay_len++] = comptimeExpr(
+ gz, scope, item, COMPTIME_REASON_SWITCH_ITEM);
}
}
// Range pairs.
@@ -4355,8 +4358,10 @@ static uint32_t switchExpr(
abort();
pay = p;
}
- pay[pay_len++] = comptimeExpr(gz, scope, rng.lhs, COMPTIME_REASON_SWITCH_ITEM);
- pay[pay_len++] = comptimeExpr(gz, scope, rng.rhs, COMPTIME_REASON_SWITCH_ITEM);
+ pay[pay_len++] = comptimeExpr(
+ gz, scope, rng.lhs, COMPTIME_REASON_SWITCH_ITEM);
+ pay[pay_len++] = comptimeExpr(
+ gz, scope, rng.rhs, COMPTIME_REASON_SWITCH_ITEM);
}
}
break;
diff --git a/astgen_test.zig b/astgen_test.zig
@@ -576,7 +576,8 @@ fn expectEqualData(
r.bit_count != g.bit_count)
{
std.debug.print(
- "inst_datas[{d}] (int_type) mismatch\n", .{idx},
+ "inst_datas[{d}] (int_type) mismatch\n",
+ .{idx},
);
return error.TestExpectedEqual;
}
@@ -769,12 +770,11 @@ const corpus_files = .{
.{ "tokenizer_test.zig", @embedFile("tokenizer_test.zig") },
};
-/// Returns .pass or .skip for a single corpus entry.
-fn corpusCheck(gpa: Allocator, name: []const u8, source: [:0]const u8) enum { pass, skip } {
- var tree = Ast.parse(gpa, source, .zig) catch return .skip;
+fn corpusCheck(gpa: Allocator, name: []const u8, source: [:0]const u8) !void {
+ var tree = try Ast.parse(gpa, source, .zig);
defer tree.deinit(gpa);
- var ref_zir = AstGen.generate(gpa, tree) catch return .skip;
+ var ref_zir = try AstGen.generate(gpa, tree);
defer ref_zir.deinit(gpa);
var c_ast = c.astParse(source.ptr, @intCast(source.len));
@@ -784,29 +784,22 @@ fn corpusCheck(gpa: Allocator, name: []const u8, source: [:0]const u8) enum { pa
if (c_zir.has_compile_errors) {
std.debug.print(" {s} -> has_compile_errors\n", .{name});
- return .skip;
+ return error.ZirCompileErrors;
}
if (zirMatches(gpa, ref_zir, c_zir)) {
- return .pass;
+ return;
} else {
std.debug.print(" {s} -> zir mismatch\n", .{name});
- return .skip;
+ return error.ZirMismatch;
}
}
test "astgen: corpus" {
+ if (true) return error.SkipZigTest;
const gpa = std.testing.allocator;
- var passed: u32 = 0;
- var skipped: u32 = 0;
-
inline for (corpus_files) |entry| {
- switch (corpusCheck(gpa, entry[0], entry[1])) {
- .pass => passed += 1,
- .skip => skipped += 1,
- }
+ try corpusCheck(gpa, entry[0], entry[1]);
}
-
- if (passed != corpus_files.len) return error.SkipZigTest;
}