Augment the file_test framework to allow per-file fail checks. (#3747)

This handles toolchain failures per-file. The intent is to allow placing
both "success" and "fail" tests in the same file, using splits. However,
this PR only adds support and updates existing tests to continue
passing.
This commit is contained in:
Jon Ross-Perkins
2024-03-08 20:28:25 +00:00
committed by GitHub
parent 0405fff68c
commit 551a6d385e
39 changed files with 473 additions and 316 deletions
+23 -23
View File
@@ -4,66 +4,66 @@
//
// AUTOUPDATE
// --- type.carbon
// --- fail_type.carbon
// CHECK:STDERR: type.carbon:[[@LINE+3]]:12: ERROR: Expected `;` in array type.
// CHECK:STDERR: fail_type.carbon:[[@LINE+3]]:12: ERROR: Expected `;` in array type.
// CHECK:STDERR: var x: [i32];
// CHECK:STDERR: ^
var x: [i32];
// --- invalid_char.carbon
// --- fail_invalid_char.carbon
// CHECK:STDERR: invalid_char.carbon:[[@LINE+12]]:12: ERROR: Expected expression.
// CHECK:STDERR: fail_invalid_char.carbon:[[@LINE+12]]:12: ERROR: Expected expression.
// CHECK:STDERR: fn X() -> [:];
// CHECK:STDERR: ^
// CHECK:STDERR: invalid_char.carbon:[[@LINE+9]]:12: ERROR: Expected `;` in array type.
// CHECK:STDERR: fail_invalid_char.carbon:[[@LINE+9]]:12: ERROR: Expected `;` in array type.
// CHECK:STDERR: fn X() -> [:];
// CHECK:STDERR: ^
// CHECK:STDERR: invalid_char.carbon:[[@LINE+6]]:12: ERROR: Expected expression.
// CHECK:STDERR: fail_invalid_char.carbon:[[@LINE+6]]:12: ERROR: Expected expression.
// CHECK:STDERR: fn X() -> [:];
// CHECK:STDERR: ^
// CHECK:STDERR: invalid_char.carbon:[[@LINE+3]]:12: ERROR: Unexpected tokens before `]`.
// CHECK:STDERR: fail_invalid_char.carbon:[[@LINE+3]]:12: ERROR: Unexpected tokens before `]`.
// CHECK:STDERR: fn X() -> [:];
// CHECK:STDERR: ^
fn X() -> [:];
// --- unlexed_expr.carbon
// --- fail_unlexed_expr.carbon
// CHECK:STDERR: unlexed_expr.carbon:[[@LINE+15]]:9: ERROR: Encountered unrecognized characters while parsing.
// CHECK:STDERR: fail_unlexed_expr.carbon:[[@LINE+15]]:9: ERROR: Encountered unrecognized characters while parsing.
// CHECK:STDERR: var y: [`];
// CHECK:STDERR: ^
// CHECK:STDERR: unlexed_expr.carbon:[[@LINE+12]]:9: ERROR: Expected expression.
// CHECK:STDERR: fail_unlexed_expr.carbon:[[@LINE+12]]:9: ERROR: Expected expression.
// CHECK:STDERR: var y: [`];
// CHECK:STDERR: ^
// CHECK:STDERR: unlexed_expr.carbon:[[@LINE+9]]:9: ERROR: Expected `;` in array type.
// CHECK:STDERR: fail_unlexed_expr.carbon:[[@LINE+9]]:9: ERROR: Expected `;` in array type.
// CHECK:STDERR: var y: [`];
// CHECK:STDERR: ^
// CHECK:STDERR: unlexed_expr.carbon:[[@LINE+6]]:9: ERROR: Expected expression.
// CHECK:STDERR: fail_unlexed_expr.carbon:[[@LINE+6]]:9: ERROR: Expected expression.
// CHECK:STDERR: var y: [`];
// CHECK:STDERR: ^
// CHECK:STDERR: unlexed_expr.carbon:[[@LINE+3]]:9: ERROR: Unexpected tokens before `]`.
// CHECK:STDERR: fail_unlexed_expr.carbon:[[@LINE+3]]:9: ERROR: Unexpected tokens before `]`.
// CHECK:STDERR: var y: [`];
// CHECK:STDERR: ^
var y: [`];
// --- no_close_bracket.carbon
// --- fail_no_close_bracket.carbon
// CHECK:STDERR: no_close_bracket.carbon:[[@LINE+6]]:8: ERROR: Opening symbol without a corresponding closing symbol.
// CHECK:STDERR: fail_no_close_bracket.carbon:[[@LINE+6]]:8: ERROR: Opening symbol without a corresponding closing symbol.
// CHECK:STDERR: var x: [i32;;
// CHECK:STDERR: ^
// CHECK:STDERR: no_close_bracket.carbon:[[@LINE+3]]:8: ERROR: Expected expression.
// CHECK:STDERR: fail_no_close_bracket.carbon:[[@LINE+3]]:8: ERROR: Expected expression.
// CHECK:STDERR: var x: [i32;;
// CHECK:STDERR: ^
var x: [i32;;
// --- no_semi.carbon
// --- fail_no_semi.carbon
// CHECK:STDERR: no_semi.carbon:[[@LINE+3]]:12: ERROR: Expected `;` in array type.
// CHECK:STDERR: fail_no_semi.carbon:[[@LINE+3]]:12: ERROR: Expected `;` in array type.
// CHECK:STDERR: var x: [i32];
// CHECK:STDERR: ^
var x: [i32];
// CHECK:STDOUT: - filename: type.carbon
// CHECK:STDOUT: - filename: fail_type.carbon
// CHECK:STDOUT: parse_tree: [
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
@@ -76,7 +76,7 @@ var x: [i32];
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 8},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
// CHECK:STDOUT: - filename: invalid_char.carbon
// CHECK:STDOUT: - filename: fail_invalid_char.carbon
// CHECK:STDOUT: parse_tree: [
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'FunctionIntroducer', text: 'fn'},
@@ -92,7 +92,7 @@ var x: [i32];
// CHECK:STDOUT: {kind: 'FunctionDecl', text: ';', subtree_size: 11},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
// CHECK:STDOUT: - filename: unlexed_expr.carbon
// CHECK:STDOUT: - filename: fail_unlexed_expr.carbon
// CHECK:STDOUT: parse_tree: [
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
@@ -106,7 +106,7 @@ var x: [i32];
// CHECK:STDOUT: {kind: 'VariableDecl', text: ';', subtree_size: 9},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
// CHECK:STDOUT: - filename: no_close_bracket.carbon
// CHECK:STDOUT: - filename: fail_no_close_bracket.carbon
// CHECK:STDOUT: parse_tree: [
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},
@@ -117,7 +117,7 @@ var x: [i32];
// CHECK:STDOUT: {kind: 'EmptyDecl', text: ';'},
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
// CHECK:STDOUT: ]
// CHECK:STDOUT: - filename: no_semi.carbon
// CHECK:STDOUT: - filename: fail_no_semi.carbon
// CHECK:STDOUT: parse_tree: [
// CHECK:STDOUT: {kind: 'FileStart', text: ''},
// CHECK:STDOUT: {kind: 'VariableIntroducer', text: 'var'},