Skip to content

Commit 286e1cd

Browse files
Auto merge of #142925 - Oneirical:unattentive-immobility, r=<try>
Rewrite `.gitattributes` CRLF ui tests into run-make tests These tests are difficult to edit. Even adding a newline to the original UI test breaks it, as all newlines in them are supposed to be `\r\n`. (Except for `trailing-carriage-return-in-string`, which only has SOME CRLF) In the run-make suite, the test is instead automatically generated with `\r\n` clearly visible, making fixes easier. Closes #140033 Closes #139968 r? `@jieyouxu` try-job: x86_64-msvc-1 try-job: i686-msvc-1 try-job: x86_64-mingw-1
2 parents 8f21a5c + 130dcb8 commit 286e1cd

15 files changed

+431
-365
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
2+
3+
Erroneous code examples:
4+
5+
```compile_fail,E0308
6+
fn plus_one(x: i32) -> i32 {
7+
x + 1
8+
}
9+
10+
plus_one(\"Not a number\");
11+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
12+
13+
if \"Not a bool\" {
14+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
15+
}
16+
17+
let x: f32 = \"Not a float\";
18+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
19+
// |
20+
// expected due to this
21+
```
22+
23+
This error occurs when an expression was used in a place where the compiler
24+
expected an expression of a different type. It can occur in several cases, the
25+
most common being when calling a function and passing an argument which has a
26+
different type than the matching type in the function declaration.
27+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
28+
"}
29+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
30+
31+
Erroneous code examples:
32+
33+
```compile_fail,E0308
34+
fn plus_one(x: i32) -> i32 {
35+
x + 1
36+
}
37+
38+
plus_one(\"Not a number\");
39+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
40+
41+
if \"Not a bool\" {
42+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
43+
}
44+
45+
let x: f32 = \"Not a float\";
46+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
47+
// |
48+
// expected due to this
49+
```
50+
51+
This error occurs when an expression was used in a place where the compiler
52+
expected an expression of a different type. It can occur in several cases, the
53+
most common being when calling a function and passing an argument which has a
54+
different type than the matching type in the function declaration.
55+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
56+
"}
57+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
58+
59+
Erroneous code examples:
60+
61+
```compile_fail,E0308
62+
fn plus_one(x: i32) -> i32 {
63+
x + 1
64+
}
65+
66+
plus_one(\"Not a number\");
67+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
68+
69+
if \"Not a bool\" {
70+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
71+
}
72+
73+
let x: f32 = \"Not a float\";
74+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
75+
// |
76+
// expected due to this
77+
```
78+
79+
This error occurs when an expression was used in a place where the compiler
80+
expected an expression of a different type. It can occur in several cases, the
81+
most common being when calling a function and passing an argument which has a
82+
different type than the matching type in the function declaration.
83+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String =","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
84+
"}
85+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
86+
87+
Erroneous code examples:
88+
89+
```compile_fail,E0308
90+
fn plus_one(x: i32) -> i32 {
91+
x + 1
92+
}
93+
94+
plus_one(\"Not a number\");
95+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
96+
97+
if \"Not a bool\" {
98+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
99+
}
100+
101+
let x: f32 = \"Not a float\";
102+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
103+
// |
104+
// expected due to this
105+
```
106+
107+
This error occurs when an expression was used in a place where the compiler
108+
expected an expression of a different type. It can occur in several cases, the
109+
most common being when calling a function and passing an argument which has a
110+
different type than the matching type in the function declaration.
111+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = (","highlight_start":XX,"highlight_end":XX},{"text":"); // Error spanning the newline.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found `()`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf-multifile-aux.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = (","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found `()`
112+
"}
113+
{"$message_type":"diagnostic","message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors
114+
"}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
//@ reference: input.byte-order-mark
2+
//@ reference: input.crlf
3+
//@ ignore-cross-compile
4+
5+
use run_make_support::{cwd, diff, rfs, rustc};
6+
7+
fn main() {
8+
let aux_content = "\u{FEFF}\
9+
pub fn test() {\r\n\
10+
\r\n\
11+
let s : String = 1; // Error in the middle of line.\r\n\
12+
\r\n\
13+
let s : String = 1\r\n\
14+
; // Error before the newline.\r\n\
15+
\r\n\
16+
let s : String =\r\n\
17+
1; // Error after the newline.\r\n\
18+
\r\n\
19+
let s : String = (\r\n\
20+
); // Error spanning the newline.\r\n\
21+
}\r\n";
22+
23+
rfs::write(cwd().join("json-bom-plus-crlf-multifile-aux.rs"), aux_content);
24+
25+
let aux_bytes = rfs::read(cwd().join("json-bom-plus-crlf-multifile-aux.rs"));
26+
assert!(aux_bytes.starts_with(b"\xEF\xBB\xBF"), "File must start with UTF-8 BOM");
27+
assert!(aux_bytes.windows(2).any(|w| w == b"\r\n"), "File must contain CRLF line endings");
28+
29+
let main_content = "\u{FEFF}\
30+
#[path = \"json-bom-plus-crlf-multifile-aux.rs\"]\r\n\
31+
mod json_bom_plus_crlf_multifile_aux;\r\n\
32+
\r\n\
33+
fn main() {\r\n\
34+
json_bom_plus_crlf_multifile_aux::test();\r\n\
35+
}\r\n";
36+
37+
rfs::write(cwd().join("json-bom-plus-crlf-multifile.rs"), main_content);
38+
39+
let output = rustc()
40+
.input(cwd().join("json-bom-plus-crlf-multifile.rs"))
41+
.json("diagnostic-short")
42+
.error_format("json")
43+
.ui_testing()
44+
.run_fail()
45+
.stderr_utf8();
46+
47+
diff()
48+
.expected_file("json-bom-plus-crlf-multifile.stderr")
49+
.actual_text("stderr", &output)
50+
.normalize(r"\\n", "\n")
51+
.normalize(r"\\r\\n", "\n")
52+
.normalize(r#""line_start":\d+"#, r#""line_start":LL"#)
53+
.normalize(r#""line_end":\d+"#, r#""line_end":LL"#)
54+
.normalize(r#""column_start":\d+"#, r#""column_start":CC"#)
55+
.normalize(r#""column_end":\d+"#, r#""column_end":CC"#)
56+
.normalize(r#""byte_start":\d+"#, r#""byte_start":XXX"#)
57+
.normalize(r#""byte_end":\d+"#, r#""byte_end":XXX"#)
58+
.normalize(r#""highlight_start":\d+"#, r#""highlight_start":XX"#)
59+
.normalize(r#""highlight_end":\d+"#, r#""highlight_end":XX"#)
60+
.normalize(
61+
r#""file_name":"[^"]*json-bom-plus-crlf-multifile-aux\.rs""#,
62+
r#""file_name":"$$DIR/json-bom-plus-crlf-multifile-aux.rs""#,
63+
)
64+
.normalize(
65+
r#""rendered":"(?:[^"]*/)?json-bom-plus-crlf-multifile-aux\.rs:\d+:\d+:"#,
66+
r#""rendered":"$$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC:"#,
67+
)
68+
.normalize(
69+
r#""rendered":"(?:[^"]*/)?json-bom-plus-crlf-multifile-aux\.rs:\d+:\d+ error"#,
70+
r#""rendered":"$$DIR/json-bom-plus-crlf-multifile-aux.rs:LL:CC error"#,
71+
)
72+
.run();
73+
}
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
2+
3+
Erroneous code examples:
4+
5+
```compile_fail,E0308
6+
fn plus_one(x: i32) -> i32 {
7+
x + 1
8+
}
9+
10+
plus_one(\"Not a number\");
11+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
12+
13+
if \"Not a bool\" {
14+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
15+
}
16+
17+
let x: f32 = \"Not a float\";
18+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
19+
// |
20+
// expected due to this
21+
```
22+
23+
This error occurs when an expression was used in a place where the compiler
24+
expected an expression of a different type. It can occur in several cases, the
25+
most common being when calling a function and passing an argument which has a
26+
different type than the matching type in the function declaration.
27+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1; // Error in the middle of line.","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
28+
"}
29+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
30+
31+
Erroneous code examples:
32+
33+
```compile_fail,E0308
34+
fn plus_one(x: i32) -> i32 {
35+
x + 1
36+
}
37+
38+
plus_one(\"Not a number\");
39+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
40+
41+
if \"Not a bool\" {
42+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
43+
}
44+
45+
let x: f32 = \"Not a float\";
46+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
47+
// |
48+
// expected due to this
49+
```
50+
51+
This error occurs when an expression was used in a place where the compiler
52+
expected an expression of a different type. It can occur in several cases, the
53+
most common being when calling a function and passing an argument which has a
54+
different type than the matching type in the function declaration.
55+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = 1","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
56+
"}
57+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
58+
59+
Erroneous code examples:
60+
61+
```compile_fail,E0308
62+
fn plus_one(x: i32) -> i32 {
63+
x + 1
64+
}
65+
66+
plus_one(\"Not a number\");
67+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
68+
69+
if \"Not a bool\" {
70+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
71+
}
72+
73+
let x: f32 = \"Not a float\";
74+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
75+
// |
76+
// expected due to this
77+
```
78+
79+
This error occurs when an expression was used in a place where the compiler
80+
expected an expression of a different type. It can occur in several cases, the
81+
most common being when calling a function and passing an argument which has a
82+
different type than the matching type in the function declaration.
83+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found integer","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String =","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"try using a conversion method","code":null,"level":"help","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"1; // Error after the newline.","highlight_start":XX,"highlight_end":XX}],"label":null,"suggested_replacement":".to_string()","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"$DIR/json-bom-plus-crlf.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found integer
84+
"}
85+
{"$message_type":"diagnostic","message":"mismatched types","code":{"code":"E0308","explanation":"Expected type did not match the received type.
86+
87+
Erroneous code examples:
88+
89+
```compile_fail,E0308
90+
fn plus_one(x: i32) -> i32 {
91+
x + 1
92+
}
93+
94+
plus_one(\"Not a number\");
95+
// ^^^^^^^^^^^^^^ expected `i32`, found `&str`
96+
97+
if \"Not a bool\" {
98+
// ^^^^^^^^^^^^ expected `bool`, found `&str`
99+
}
100+
101+
let x: f32 = \"Not a float\";
102+
// --- ^^^^^^^^^^^^^ expected `f32`, found `&str`
103+
// |
104+
// expected due to this
105+
```
106+
107+
This error occurs when an expression was used in a place where the compiler
108+
expected an expression of a different type. It can occur in several cases, the
109+
most common being when calling a function and passing an argument which has a
110+
different type than the matching type in the function declaration.
111+
"},"level":"error","spans":[{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":true,"text":[{"text":"let s : String = (","highlight_start":XX,"highlight_end":XX},{"text":"); // Error spanning the newline.","highlight_start":XX,"highlight_end":XX}],"label":"expected `String`, found `()`","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"$DIR/json-bom-plus-crlf.rs","byte_start":XXX,"byte_end":XXX,"line_start":LL,"line_end":LL,"column_start":CC,"column_end":CC,"is_primary":false,"text":[{"text":"let s : String = (","highlight_start":XX,"highlight_end":XX}],"label":"expected due to this","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"$DIR/json-bom-plus-crlf.rs:LL:CC: error[E0308]: mismatched types: expected `String`, found `()`
112+
"}
113+
{"$message_type":"diagnostic","message":"aborting due to 4 previous errors","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to 4 previous errors
114+
"}

0 commit comments

Comments
 (0)