From c9d0bdccb23a67cf1730ead1ff50725dc111c71d Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Mon, 27 Apr 2026 15:18:42 +1000 Subject: [PATCH] Return a single diagnostic from `lex_token_trees`. It currently returns a `Vec` but in practice it always has one diagnostic in it. LLM disclosure: Claude Code identified this when I asked it to review `tokentrees.rs`. I made the change by hand and tested it myself. --- compiler/rustc_parse/src/lexer/mod.rs | 2 +- compiler/rustc_parse/src/lexer/tokentrees.rs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compiler/rustc_parse/src/lexer/mod.rs b/compiler/rustc_parse/src/lexer/mod.rs index 5766d25bc86c..173a92fdbf75 100644 --- a/compiler/rustc_parse/src/lexer/mod.rs +++ b/compiler/rustc_parse/src/lexer/mod.rs @@ -115,7 +115,7 @@ pub(crate) fn lex_token_trees<'psess, 'src>( Err(errs) => { // We emit delimiter mismatch errors first, then emit the unclosing delimiter mismatch // because the delimiter mismatch is more likely to be the root cause of error - unmatched_closing_delims.extend(errs); + unmatched_closing_delims.push(errs); Err(unmatched_closing_delims) } } diff --git a/compiler/rustc_parse/src/lexer/tokentrees.rs b/compiler/rustc_parse/src/lexer/tokentrees.rs index bce298118b7a..757cd755bf65 100644 --- a/compiler/rustc_parse/src/lexer/tokentrees.rs +++ b/compiler/rustc_parse/src/lexer/tokentrees.rs @@ -14,7 +14,7 @@ impl<'psess, 'src> Lexer<'psess, 'src> { pub(super) fn lex_token_trees( &mut self, is_delimited: bool, - ) -> Result<(Spacing, TokenStream), Vec>> { + ) -> Result<(Spacing, TokenStream), Diag<'psess>> { // Move past the opening delimiter. let open_spacing = self.bump_minimal(); @@ -35,11 +35,11 @@ pub(super) fn lex_token_trees( return if is_delimited { Ok((open_spacing, TokenStream::new(buf))) } else { - Err(vec![self.close_delim_err(delim)]) + Err(self.close_delim_err(delim)) }; } else if self.token.kind == token::Eof { return if is_delimited { - Err(vec![self.eof_err()]) + Err(self.eof_err()) } else { Ok((open_spacing, TokenStream::new(buf))) }; @@ -54,7 +54,7 @@ pub(super) fn lex_token_trees( fn lex_token_tree_open_delim( &mut self, open_delim: Delimiter, - ) -> Result>> { + ) -> Result> { // The span for beginning of the delimited section. let pre_span = self.token.span;