From bf8b3a4394be6b1b512531cb5217147d8bead180 Mon Sep 17 00:00:00 2001 From: Noam Preil Date: Wed, 27 May 2020 11:54:04 -0400 Subject: [PATCH] [Stage2/Testing] Handle decl and export errors --- src-self-hosted/test.zig | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src-self-hosted/test.zig b/src-self-hosted/test.zig index a2fcddb7e1d04d508e942ed08f803f6d4a84c88f..2c47a4743dc796f74c8049b353ef2c5a57728f95 100644 --- a/src-self-hosted/test.zig +++ b/src-self-hosted/test.zig @@ -446,6 +446,46 @@ pub const TestContext = struct { } } } + { + var i = module.failed_decls.iterator(); + while (i.next()) |pair| { + const v1 = pair.value.*; + var handled = false; + for (case.expected_errors) |e, index| { + if (!handled_errors[index]) { + if (v1.byte_offset == e.byte_offset and std.mem.eql(u8, v1.msg, e.msg)) { + handled_errors[index] = true; + handled = true; + break; + } + } + } + if (!handled) { + err = error.UnexpectedError; + std.debug.warn("Unexpected decl error: {}\n", .{v1}); + } + } + } + { + var i = module.failed_exports.iterator(); + while (i.next()) |pair| { + const v1 = pair.value.*; + var handled = false; + for (case.expected_errors) |e, index| { + if (!handled_errors[index]) { + if (v1.byte_offset == e.byte_offset and std.mem.eql(u8, v1.msg, e.msg)) { + handled_errors[index] = true; + handled = true; + break; + } + } + } + if (!handled) { + err = error.UnexpectedError; + std.debug.warn("Unexpected export error: {}\n", .{v1}); + } + } + } for (handled_errors) |e, i| { if (!e) { err = error.MissingExpectedError; -- 2.54.0