Open matthiaskrgr opened 1 year ago
Confirming I can reproduce this with rustfmt 1.5.1-nightly (ee2bed96 2022-11-08)
. I don't think this is an issue with rustfmt unless we're calling the parser incorrectly. We call into the rustc parser here:
https://github.com/rust-lang/rustfmt/blob/ee2bed96d60fd7e46b1fb868f6a8f27e3a8058d0/src/parse/parser.rs#L166
which will get called when we call Parser::parse_crate
from format_project
These are the first errors that get emitted
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
error: this file contains an unclosed delimiter
--> <stdin>:93:15
|
9 | fn T(){trait Copy {}
| - unclosed delimiter
...
17 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
25 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
33 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
41 | fn T(){trait Copy {}
| - unclosed delimiter
...
49 | fn T<'a, main>(){trait Copy {}
| - unclosed delimiter
...
57 | pub fn T(){trait Copy {}
| - unclosed delimiter
...
65 | async fn T<'a, main>(){"sized"
| - unclosed delimiter
...
93 | (0)
| ^
and I believe they get emitted when we try to build the rustc Parser with either rustc_parse::new_parser_from_file
or rustc_parse::maybe_new_parser_from_source_str
. Are these lexing errors that should prevent us from creating a rustc_parse::parser::Parser
?
if I run rustfmt on this, it looks like it just prints errors in a loop