mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Add line output to diagnostics to help identify error locations. (#3010)
This also makes the filename a reference to the buffer since the line seems better to have as a reference (versus copying a string per error). Most tests now have different line deltas due to the extra output, but the actual errors should overall stay the same. Some of the error locations look like they could be improved, but this change is only making it clear where they were before.
This commit is contained in:
+3
-1
@@ -18,5 +18,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_comma_only.carbon:[[@LINE+1]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: fail_comma_only.carbon:[[@LINE+3]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: var x: {,} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {,} = {};
|
||||
|
||||
@@ -23,5 +23,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_comma_repeat_in_type.carbon:[[@LINE+1]]:17: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: fail_comma_repeat_in_type.carbon:[[@LINE+3]]:17: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: var x: {.a: i32,,} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a: i32,,} = {};
|
||||
|
||||
@@ -23,5 +23,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_comma_repeat_in_value.carbon:[[@LINE+1]]:16: Expected `.field = value`.
|
||||
// CHECK:STDERR: fail_comma_repeat_in_value.carbon:[[@LINE+3]]:16: Expected `.field = value`.
|
||||
// CHECK:STDERR: var x: {.a = 0,,} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a = 0,,} = {};
|
||||
|
||||
+3
-1
@@ -19,5 +19,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_dot_only.carbon:[[@LINE+1]]:10: Expected identifier after `.`.
|
||||
// CHECK:STDERR: fail_dot_only.carbon:[[@LINE+3]]:10: Expected identifier after `.`.
|
||||
// CHECK:STDERR: var x: {.} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.} = {};
|
||||
|
||||
@@ -25,5 +25,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_dot_string_colon.carbon:[[@LINE+1]]:10: Expected identifier after `.`.
|
||||
// CHECK:STDERR: fail_dot_string_colon.carbon:[[@LINE+3]]:10: Expected identifier after `.`.
|
||||
// CHECK:STDERR: var x: {."hello": i32, .y: i32} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {."hello": i32, .y: i32} = {};
|
||||
|
||||
@@ -25,5 +25,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_dot_string_equals.carbon:[[@LINE+1]]:10: Expected identifier after `.`.
|
||||
// CHECK:STDERR: fail_dot_string_equals.carbon:[[@LINE+3]]:10: Expected identifier after `.`.
|
||||
// CHECK:STDERR: var x: {."hello" = 0, .y = 4} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {."hello" = 0, .y = 4} = {};
|
||||
|
||||
@@ -24,5 +24,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_extra_token_in_type.carbon:[[@LINE+1]]:17: Expected `,` or `}`.
|
||||
// CHECK:STDERR: fail_extra_token_in_type.carbon:[[@LINE+3]]:17: Expected `,` or `}`.
|
||||
// CHECK:STDERR: var x: {.a: i32 banana} = {.a = 0};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a: i32 banana} = {.a = 0};
|
||||
|
||||
@@ -24,5 +24,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_extra_token_in_value.carbon:[[@LINE+1]]:28: Expected `,` or `}`.
|
||||
// CHECK:STDERR: fail_extra_token_in_value.carbon:[[@LINE+3]]:28: Expected `,` or `}`.
|
||||
// CHECK:STDERR: var x: {.a: i32} = {.a = 0 banana};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a: i32} = {.a = 0 banana};
|
||||
|
||||
@@ -17,5 +17,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_identifier_colon.carbon:[[@LINE+1]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: fail_identifier_colon.carbon:[[@LINE+3]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: var x: {a:} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {a:} = {};
|
||||
|
||||
@@ -17,5 +17,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_identifier_equals.carbon:[[@LINE+1]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: fail_identifier_equals.carbon:[[@LINE+3]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: var x: {a=} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {a=} = {};
|
||||
|
||||
@@ -17,5 +17,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_identifier_only.carbon:[[@LINE+1]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: fail_identifier_only.carbon:[[@LINE+3]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: var x: {a} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {a} = {};
|
||||
|
||||
@@ -20,5 +20,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_missing_type.carbon:[[@LINE+1]]:12: Expected expression.
|
||||
// CHECK:STDERR: fail_missing_type.carbon:[[@LINE+3]]:12: Expected expression.
|
||||
// CHECK:STDERR: var x: {.a:} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a:} = {};
|
||||
|
||||
@@ -20,5 +20,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_missing_value.carbon:[[@LINE+1]]:12: Expected expression.
|
||||
// CHECK:STDERR: fail_missing_value.carbon:[[@LINE+3]]:12: Expected expression.
|
||||
// CHECK:STDERR: var x: {.a=} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a=} = {};
|
||||
|
||||
@@ -24,5 +24,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_mix_type_and_value.carbon:[[@LINE+1]]:21: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: fail_mix_type_and_value.carbon:[[@LINE+3]]:21: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: var x: {.a: i32, .b = 0} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a: i32, .b = 0} = {};
|
||||
|
||||
@@ -22,5 +22,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_mix_value_and_type.carbon:[[@LINE+1]]:17: Expected `.field = value`.
|
||||
// CHECK:STDERR: fail_mix_value_and_type.carbon:[[@LINE+3]]:17: Expected `.field = value`.
|
||||
// CHECK:STDERR: var x: {.a = 0, b: i32} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a = 0, b: i32} = {};
|
||||
|
||||
@@ -47,10 +47,18 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+2]]:25: Expected `.field = value`.
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+1]]:29: Expected `.field = value`.
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+6]]:25: Expected `.field = value`.
|
||||
// CHECK:STDERR: var x: i32 = {.a = 1, .b, .c: i32};
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+3]]:29: Expected `.field = value`.
|
||||
// CHECK:STDERR: var x: i32 = {.a = 1, .b, .c: i32};
|
||||
// CHECK:STDERR: ^
|
||||
var x: i32 = {.a = 1, .b, .c: i32};
|
||||
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+2]]:26: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+1]]:31: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+6]]:26: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: var x: i32 = {.a: i32, .b, .c = 1};
|
||||
// CHECK:STDERR: ^
|
||||
// CHECK:STDERR: fail_mix_with_unknown.carbon:[[@LINE+3]]:31: Expected `.field: field_type`.
|
||||
// CHECK:STDERR: var x: i32 = {.a: i32, .b, .c = 1};
|
||||
// CHECK:STDERR: ^
|
||||
var x: i32 = {.a: i32, .b, .c = 1};
|
||||
|
||||
@@ -19,5 +19,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_no_colon_or_equals.carbon:[[@LINE+1]]:11: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: fail_no_colon_or_equals.carbon:[[@LINE+3]]:11: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: var x: {.a} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {.a} = {};
|
||||
|
||||
@@ -17,5 +17,7 @@
|
||||
// CHECK:STDOUT: {kind: 'FileEnd', text: ''},
|
||||
// CHECK:STDOUT: ]
|
||||
|
||||
// CHECK:STDERR: fail_type_no_designator.carbon:[[@LINE+1]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: fail_type_no_designator.carbon:[[@LINE+3]]:9: Expected `.field: field_type` or `.field = value`.
|
||||
// CHECK:STDERR: var x: {i32} = {};
|
||||
// CHECK:STDERR: ^
|
||||
var x: {i32} = {};
|
||||
|
||||
Reference in New Issue
Block a user