| ... | @@ -363,25 +363,30 @@ pub const TestContext = struct { | ... | @@ -363,25 +363,30 @@ pub const TestContext = struct { |
| 363 | break :f false; | 363 | break :f false; |
| 364 | }; | 364 | }; |
| 365 | module_node.end(); | 365 | module_node.end(); |
| | 366 | var err: ?anyerror = null; |
| 366 | { | 367 | { |
| 367 | var i = module.failed_files.iterator(); | 368 | var i = module.failed_files.iterator(); |
| 368 | var index: usize = 0; | 369 | var index: usize = 0; |
| 369 | while (i.next()) |pair| : (index += 1) { | 370 | while (i.next()) |pair| : (index += 1) { |
| 370 | if (index == case.expected_file_errors.len) { | 371 | if (index == case.expected_file_errors.len) { |
| 371 | std.debug.warn("Unexpected file error: {}\n", .{pair.value}); | 372 | std.debug.warn("Unexpected file error: {}\n", .{pair.value}); |
| 372 | return error.UnexpectedError; | 373 | err = error.UnexpectedError; |
| 373 | } | 374 | } |
| 374 | const v1 = pair.value.*; | 375 | const v1 = pair.value.*; |
| 375 | const v2 = case.expected_file_errors[index]; | 376 | const v2 = case.expected_file_errors[index]; |
| 376 | if (v1.byte_offset != v2.byte_offset) { | 377 | if (v1.byte_offset != v2.byte_offset) { |
| 377 | std.debug.warn("Expected error at {}, found it at {}\n", .{ v2.byte_offset, v1.byte_offset }); | 378 | std.debug.warn("Expected error at {}, found it at {}\n", .{ v2.byte_offset, v1.byte_offset }); |
| 378 | return error.ExpectedErrorElsewhere; | 379 | err = error.ExpectedErrorElsewhere; |
| 379 | } | 380 | } |
| 380 | if (!std.mem.eql(u8, v1.msg, v2.msg)) { | 381 | if (!std.mem.eql(u8, v1.msg, v2.msg)) { |
| 381 | std.debug.warn("Expected '{}', found '{}'\n", .{ v2.msg, v1.msg }); | 382 | std.debug.warn("Expected '{}', found '{}'\n", .{ v2.msg, v1.msg }); |
| 382 | return error.ExpectedOtherError; | 383 | err = error.ExpectedOtherError; |
| 383 | } | 384 | } |
| 384 | } | 385 | } |
| | 386 | if (index != case.expected_file_errors.len) { |
| | 387 | std.debug.warn("Expected an error ('{}'), but did not receive it\n", .{case.expected_file_errors[index]}); |
| | 388 | err = error.MissingError; |
| | 389 | } |
| 385 | } | 390 | } |
| 386 | { | 391 | { |
| 387 | var i = module.failed_decls.iterator(); | 392 | var i = module.failed_decls.iterator(); |
| ... | @@ -389,19 +394,23 @@ pub const TestContext = struct { | ... | @@ -389,19 +394,23 @@ pub const TestContext = struct { |
| 389 | while (i.next()) |pair| : (index += 1) { | 394 | while (i.next()) |pair| : (index += 1) { |
| 390 | if (index == case.expected_decl_errors.len) { | 395 | if (index == case.expected_decl_errors.len) { |
| 391 | std.debug.warn("Unexpected decl error: {}\n", .{pair.value}); | 396 | std.debug.warn("Unexpected decl error: {}\n", .{pair.value}); |
| 392 | return error.UnexpectedError; | 397 | err = error.UnexpectedError; |
| 393 | } | 398 | } |
| 394 | const v1 = pair.value.*; | 399 | const v1 = pair.value.*; |
| 395 | const v2 = case.expected_decl_errors[index]; | 400 | const v2 = case.expected_decl_errors[index]; |
| 396 | if (v1.byte_offset != v2.byte_offset) { | 401 | if (v1.byte_offset != v2.byte_offset) { |
| 397 | std.debug.warn("Expected error at {}, found it at {}\n", .{ v2.byte_offset, v1.byte_offset }); | 402 | std.debug.warn("Expected error at {}, found it at {}\n", .{ v2.byte_offset, v1.byte_offset }); |
| 398 | return error.ExpectedErrorElsewhere; | 403 | err = error.ExpectedErrorElsewhere; |
| 399 | } | 404 | } |
| 400 | if (!std.mem.eql(u8, v1.msg, v2.msg)) { | 405 | if (!std.mem.eql(u8, v1.msg, v2.msg)) { |
| 401 | std.debug.warn("Expected '{}', found '{}'\n", .{ v2.msg, v1.msg }); | 406 | std.debug.warn("Expected '{}', found '{}'\n", .{ v2.msg, v1.msg }); |
| 402 | return error.ExpectedOtherError; | 407 | err = error.ExpectedOtherError; |
| 403 | } | 408 | } |
| 404 | } | 409 | } |
| | 410 | if (index != case.expected_decl_errors.len) { |
| | 411 | std.debug.warn("Expected an error ('{}'), but did not receive it\n", .{case.expected_decl_errors[index]}); |
| | 412 | err = error.MissingError; |
| | 413 | } |
| 405 | } | 414 | } |
| 406 | { | 415 | { |
| 407 | var i = module.failed_exports.iterator(); | 416 | var i = module.failed_exports.iterator(); |
| ... | @@ -409,19 +418,26 @@ pub const TestContext = struct { | ... | @@ -409,19 +418,26 @@ pub const TestContext = struct { |
| 409 | while (i.next()) |pair| : (index += 1) { | 418 | while (i.next()) |pair| : (index += 1) { |
| 410 | if (index == case.expected_export_errors.len) { | 419 | if (index == case.expected_export_errors.len) { |
| 411 | std.debug.warn("Unexpected export error: {}\n", .{pair.value}); | 420 | std.debug.warn("Unexpected export error: {}\n", .{pair.value}); |
| 412 | return error.UnexpectedError; | 421 | err = error.UnexpectedError; |
| 413 | } | 422 | } |
| 414 | const v1 = pair.value.*; | 423 | const v1 = pair.value.*; |
| 415 | const v2 = case.expected_export_errors[index]; | 424 | const v2 = case.expected_export_errors[index]; |
| 416 | if (v1.byte_offset != v2.byte_offset) { | 425 | if (v1.byte_offset != v2.byte_offset) { |
| 417 | std.debug.warn("Expected error at {}, found it at {}\n", .{ v2.byte_offset, v1.byte_offset }); | 426 | std.debug.warn("Expected error at {}, found it at {}\n", .{ v2.byte_offset, v1.byte_offset }); |
| 418 | return error.ExpectedErrorElsewhere; | 427 | err = error.ExpectedErrorElsewhere; |
| 419 | } | 428 | } |
| 420 | if (!std.mem.eql(u8, v1.msg, v2.msg)) { | 429 | if (!std.mem.eql(u8, v1.msg, v2.msg)) { |
| 421 | std.debug.warn("Expected '{}', found '{}'\n", .{ v2.msg, v1.msg }); | 430 | std.debug.warn("Expected '{}', found '{}'\n", .{ v2.msg, v1.msg }); |
| 422 | return error.ExpectedOtherError; | 431 | err = error.ExpectedOtherError; |
| 423 | } | 432 | } |
| 424 | } | 433 | } |
| | 434 | if (index != case.expected_export_errors.len) { |
| | 435 | std.debug.warn("Expected an error ('{}'), but did not receive it\n", .{case.expected_export_errors[index]}); |
| | 436 | err = error.MissingError; |
| | 437 | } |
| | 438 | } |
| | 439 | if (err) |e| { |
| | 440 | return e; |
| 425 | } | 441 | } |
| 426 | } | 442 | } |
| 427 | }; | 443 | }; |