From b9ebeee4da258f1ed8bb93f0273180572a839058 Mon Sep 17 00:00:00 2001 From: clubby789 Date: Wed, 17 Jan 2024 21:16:22 +0000 Subject: [PATCH 1/2] Remove `box ` recovery --- compiler/rustc_parse/src/parser/expr.rs | 28 +++++++------------------ 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/compiler/rustc_parse/src/parser/expr.rs b/compiler/rustc_parse/src/parser/expr.rs index 8ca02452342b2..a1e4fc7876dc7 100644 --- a/compiler/rustc_parse/src/parser/expr.rs +++ b/compiler/rustc_parse/src/parser/expr.rs @@ -33,7 +33,6 @@ use rustc_session::errors::{report_lit_error, ExprParenthesesNeeded}; use rustc_session::lint::builtin::BREAK_WITH_LABEL_AND_LOOP; use rustc_session::lint::BuiltinLintDiagnostics; use rustc_span::source_map::{self, Spanned}; -use rustc_span::symbol::kw::PathRoot; use rustc_span::symbol::{kw, sym, Ident, Symbol}; use rustc_span::{BytePos, Pos, Span}; use thin_vec::{thin_vec, ThinVec}; @@ -642,26 +641,13 @@ impl<'a> Parser<'a> { } /// Parse `box expr` - this syntax has been removed, but we still parse this - /// for now to provide an automated way to fix usages of it - fn parse_expr_box(&mut self, lo: Span) -> PResult<'a, (Span, ExprKind)> { - let (span, expr) = self.parse_expr_prefix_common(lo)?; - let code = self.sess.source_map().span_to_snippet(span.with_lo(lo.hi())).unwrap(); - self.dcx().emit_err(errors::BoxSyntaxRemoved { span, code: code.trim() }); - // So typechecking works, parse `box ` as `::std::boxed::Box::new(expr)` - let path = Path { - span, - segments: [ - PathSegment::from_ident(Ident::with_dummy_span(PathRoot)), - PathSegment::from_ident(Ident::with_dummy_span(sym::std)), - PathSegment::from_ident(Ident::from_str("boxed")), - PathSegment::from_ident(Ident::from_str("Box")), - PathSegment::from_ident(Ident::with_dummy_span(sym::new)), - ] - .into(), - tokens: None, - }; - let path = self.mk_expr(span, ExprKind::Path(None, path)); - Ok((span, self.mk_call(path, ThinVec::from([expr])))) + /// for now to provide a more useful error + fn parse_expr_box(&mut self, box_kw: Span) -> PResult<'a, (Span, ExprKind)> { + let (span, _) = self.parse_expr_prefix_common(box_kw)?; + let inner_span = span.with_lo(box_kw.hi()); + let code = self.sess.source_map().span_to_snippet(inner_span).unwrap(); + self.dcx().emit_err(errors::BoxSyntaxRemoved { span: span, code: code.trim() }); + Ok((span, ExprKind::Err)) } fn is_mistaken_not_ident_negation(&self) -> bool { From 3f7c7842e6dd0dfc713c52fe7ffd24cd6a54fa87 Mon Sep 17 00:00:00 2001 From: clubby789 Date: Wed, 17 Jan 2024 15:59:04 +0000 Subject: [PATCH 2/2] Move `removed-syntax` tests to their own directory --- tests/ui/parser/{ => removed-syntax}/removed-syntax-box.fixed | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-box.rs | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-box.stderr | 0 .../{ => removed-syntax}/removed-syntax-closure-lifetime.rs | 0 .../{ => removed-syntax}/removed-syntax-closure-lifetime.stderr | 0 .../ui/parser/{ => removed-syntax}/removed-syntax-enum-newtype.rs | 0 .../{ => removed-syntax}/removed-syntax-enum-newtype.stderr | 0 .../ui/parser/{ => removed-syntax}/removed-syntax-field-let-2.rs | 0 .../parser/{ => removed-syntax}/removed-syntax-field-let-2.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-field-let.rs | 0 .../parser/{ => removed-syntax}/removed-syntax-field-let.stderr | 0 .../parser/{ => removed-syntax}/removed-syntax-field-semicolon.rs | 0 .../{ => removed-syntax}/removed-syntax-field-semicolon.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-fixed-vec.rs | 0 .../parser/{ => removed-syntax}/removed-syntax-fixed-vec.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-fn-sigil.rs | 0 .../ui/parser/{ => removed-syntax}/removed-syntax-fn-sigil.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-mode.rs | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-mode.stderr | 0 .../ui/parser/{ => removed-syntax}/removed-syntax-mut-vec-expr.rs | 0 .../{ => removed-syntax}/removed-syntax-mut-vec-expr.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-mut-vec-ty.rs | 0 .../parser/{ => removed-syntax}/removed-syntax-mut-vec-ty.stderr | 0 .../ui/parser/{ => removed-syntax}/removed-syntax-ptr-lifetime.rs | 0 .../{ => removed-syntax}/removed-syntax-ptr-lifetime.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-record.rs | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-record.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-static-fn.rs | 0 .../parser/{ => removed-syntax}/removed-syntax-static-fn.stderr | 0 .../parser/{ => removed-syntax}/removed-syntax-uniq-mut-expr.rs | 0 .../{ => removed-syntax}/removed-syntax-uniq-mut-expr.stderr | 0 .../ui/parser/{ => removed-syntax}/removed-syntax-uniq-mut-ty.rs | 0 .../parser/{ => removed-syntax}/removed-syntax-uniq-mut-ty.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-with-1.rs | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-with-1.stderr | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-with-2.rs | 0 tests/ui/parser/{ => removed-syntax}/removed-syntax-with-2.stderr | 0 37 files changed, 0 insertions(+), 0 deletions(-) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-box.fixed (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-box.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-box.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-closure-lifetime.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-closure-lifetime.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-enum-newtype.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-enum-newtype.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-field-let-2.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-field-let-2.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-field-let.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-field-let.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-field-semicolon.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-field-semicolon.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-fixed-vec.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-fixed-vec.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-fn-sigil.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-fn-sigil.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-mode.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-mode.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-mut-vec-expr.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-mut-vec-expr.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-mut-vec-ty.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-mut-vec-ty.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-ptr-lifetime.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-ptr-lifetime.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-record.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-record.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-static-fn.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-static-fn.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-uniq-mut-expr.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-uniq-mut-expr.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-uniq-mut-ty.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-uniq-mut-ty.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-with-1.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-with-1.stderr (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-with-2.rs (100%) rename tests/ui/parser/{ => removed-syntax}/removed-syntax-with-2.stderr (100%) diff --git a/tests/ui/parser/removed-syntax-box.fixed b/tests/ui/parser/removed-syntax/removed-syntax-box.fixed similarity index 100% rename from tests/ui/parser/removed-syntax-box.fixed rename to tests/ui/parser/removed-syntax/removed-syntax-box.fixed diff --git a/tests/ui/parser/removed-syntax-box.rs b/tests/ui/parser/removed-syntax/removed-syntax-box.rs similarity index 100% rename from tests/ui/parser/removed-syntax-box.rs rename to tests/ui/parser/removed-syntax/removed-syntax-box.rs diff --git a/tests/ui/parser/removed-syntax-box.stderr b/tests/ui/parser/removed-syntax/removed-syntax-box.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-box.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-box.stderr diff --git a/tests/ui/parser/removed-syntax-closure-lifetime.rs b/tests/ui/parser/removed-syntax/removed-syntax-closure-lifetime.rs similarity index 100% rename from tests/ui/parser/removed-syntax-closure-lifetime.rs rename to tests/ui/parser/removed-syntax/removed-syntax-closure-lifetime.rs diff --git a/tests/ui/parser/removed-syntax-closure-lifetime.stderr b/tests/ui/parser/removed-syntax/removed-syntax-closure-lifetime.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-closure-lifetime.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-closure-lifetime.stderr diff --git a/tests/ui/parser/removed-syntax-enum-newtype.rs b/tests/ui/parser/removed-syntax/removed-syntax-enum-newtype.rs similarity index 100% rename from tests/ui/parser/removed-syntax-enum-newtype.rs rename to tests/ui/parser/removed-syntax/removed-syntax-enum-newtype.rs diff --git a/tests/ui/parser/removed-syntax-enum-newtype.stderr b/tests/ui/parser/removed-syntax/removed-syntax-enum-newtype.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-enum-newtype.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-enum-newtype.stderr diff --git a/tests/ui/parser/removed-syntax-field-let-2.rs b/tests/ui/parser/removed-syntax/removed-syntax-field-let-2.rs similarity index 100% rename from tests/ui/parser/removed-syntax-field-let-2.rs rename to tests/ui/parser/removed-syntax/removed-syntax-field-let-2.rs diff --git a/tests/ui/parser/removed-syntax-field-let-2.stderr b/tests/ui/parser/removed-syntax/removed-syntax-field-let-2.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-field-let-2.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-field-let-2.stderr diff --git a/tests/ui/parser/removed-syntax-field-let.rs b/tests/ui/parser/removed-syntax/removed-syntax-field-let.rs similarity index 100% rename from tests/ui/parser/removed-syntax-field-let.rs rename to tests/ui/parser/removed-syntax/removed-syntax-field-let.rs diff --git a/tests/ui/parser/removed-syntax-field-let.stderr b/tests/ui/parser/removed-syntax/removed-syntax-field-let.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-field-let.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-field-let.stderr diff --git a/tests/ui/parser/removed-syntax-field-semicolon.rs b/tests/ui/parser/removed-syntax/removed-syntax-field-semicolon.rs similarity index 100% rename from tests/ui/parser/removed-syntax-field-semicolon.rs rename to tests/ui/parser/removed-syntax/removed-syntax-field-semicolon.rs diff --git a/tests/ui/parser/removed-syntax-field-semicolon.stderr b/tests/ui/parser/removed-syntax/removed-syntax-field-semicolon.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-field-semicolon.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-field-semicolon.stderr diff --git a/tests/ui/parser/removed-syntax-fixed-vec.rs b/tests/ui/parser/removed-syntax/removed-syntax-fixed-vec.rs similarity index 100% rename from tests/ui/parser/removed-syntax-fixed-vec.rs rename to tests/ui/parser/removed-syntax/removed-syntax-fixed-vec.rs diff --git a/tests/ui/parser/removed-syntax-fixed-vec.stderr b/tests/ui/parser/removed-syntax/removed-syntax-fixed-vec.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-fixed-vec.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-fixed-vec.stderr diff --git a/tests/ui/parser/removed-syntax-fn-sigil.rs b/tests/ui/parser/removed-syntax/removed-syntax-fn-sigil.rs similarity index 100% rename from tests/ui/parser/removed-syntax-fn-sigil.rs rename to tests/ui/parser/removed-syntax/removed-syntax-fn-sigil.rs diff --git a/tests/ui/parser/removed-syntax-fn-sigil.stderr b/tests/ui/parser/removed-syntax/removed-syntax-fn-sigil.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-fn-sigil.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-fn-sigil.stderr diff --git a/tests/ui/parser/removed-syntax-mode.rs b/tests/ui/parser/removed-syntax/removed-syntax-mode.rs similarity index 100% rename from tests/ui/parser/removed-syntax-mode.rs rename to tests/ui/parser/removed-syntax/removed-syntax-mode.rs diff --git a/tests/ui/parser/removed-syntax-mode.stderr b/tests/ui/parser/removed-syntax/removed-syntax-mode.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-mode.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-mode.stderr diff --git a/tests/ui/parser/removed-syntax-mut-vec-expr.rs b/tests/ui/parser/removed-syntax/removed-syntax-mut-vec-expr.rs similarity index 100% rename from tests/ui/parser/removed-syntax-mut-vec-expr.rs rename to tests/ui/parser/removed-syntax/removed-syntax-mut-vec-expr.rs diff --git a/tests/ui/parser/removed-syntax-mut-vec-expr.stderr b/tests/ui/parser/removed-syntax/removed-syntax-mut-vec-expr.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-mut-vec-expr.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-mut-vec-expr.stderr diff --git a/tests/ui/parser/removed-syntax-mut-vec-ty.rs b/tests/ui/parser/removed-syntax/removed-syntax-mut-vec-ty.rs similarity index 100% rename from tests/ui/parser/removed-syntax-mut-vec-ty.rs rename to tests/ui/parser/removed-syntax/removed-syntax-mut-vec-ty.rs diff --git a/tests/ui/parser/removed-syntax-mut-vec-ty.stderr b/tests/ui/parser/removed-syntax/removed-syntax-mut-vec-ty.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-mut-vec-ty.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-mut-vec-ty.stderr diff --git a/tests/ui/parser/removed-syntax-ptr-lifetime.rs b/tests/ui/parser/removed-syntax/removed-syntax-ptr-lifetime.rs similarity index 100% rename from tests/ui/parser/removed-syntax-ptr-lifetime.rs rename to tests/ui/parser/removed-syntax/removed-syntax-ptr-lifetime.rs diff --git a/tests/ui/parser/removed-syntax-ptr-lifetime.stderr b/tests/ui/parser/removed-syntax/removed-syntax-ptr-lifetime.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-ptr-lifetime.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-ptr-lifetime.stderr diff --git a/tests/ui/parser/removed-syntax-record.rs b/tests/ui/parser/removed-syntax/removed-syntax-record.rs similarity index 100% rename from tests/ui/parser/removed-syntax-record.rs rename to tests/ui/parser/removed-syntax/removed-syntax-record.rs diff --git a/tests/ui/parser/removed-syntax-record.stderr b/tests/ui/parser/removed-syntax/removed-syntax-record.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-record.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-record.stderr diff --git a/tests/ui/parser/removed-syntax-static-fn.rs b/tests/ui/parser/removed-syntax/removed-syntax-static-fn.rs similarity index 100% rename from tests/ui/parser/removed-syntax-static-fn.rs rename to tests/ui/parser/removed-syntax/removed-syntax-static-fn.rs diff --git a/tests/ui/parser/removed-syntax-static-fn.stderr b/tests/ui/parser/removed-syntax/removed-syntax-static-fn.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-static-fn.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-static-fn.stderr diff --git a/tests/ui/parser/removed-syntax-uniq-mut-expr.rs b/tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-expr.rs similarity index 100% rename from tests/ui/parser/removed-syntax-uniq-mut-expr.rs rename to tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-expr.rs diff --git a/tests/ui/parser/removed-syntax-uniq-mut-expr.stderr b/tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-expr.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-uniq-mut-expr.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-expr.stderr diff --git a/tests/ui/parser/removed-syntax-uniq-mut-ty.rs b/tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-ty.rs similarity index 100% rename from tests/ui/parser/removed-syntax-uniq-mut-ty.rs rename to tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-ty.rs diff --git a/tests/ui/parser/removed-syntax-uniq-mut-ty.stderr b/tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-ty.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-uniq-mut-ty.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-uniq-mut-ty.stderr diff --git a/tests/ui/parser/removed-syntax-with-1.rs b/tests/ui/parser/removed-syntax/removed-syntax-with-1.rs similarity index 100% rename from tests/ui/parser/removed-syntax-with-1.rs rename to tests/ui/parser/removed-syntax/removed-syntax-with-1.rs diff --git a/tests/ui/parser/removed-syntax-with-1.stderr b/tests/ui/parser/removed-syntax/removed-syntax-with-1.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-with-1.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-with-1.stderr diff --git a/tests/ui/parser/removed-syntax-with-2.rs b/tests/ui/parser/removed-syntax/removed-syntax-with-2.rs similarity index 100% rename from tests/ui/parser/removed-syntax-with-2.rs rename to tests/ui/parser/removed-syntax/removed-syntax-with-2.rs diff --git a/tests/ui/parser/removed-syntax-with-2.stderr b/tests/ui/parser/removed-syntax/removed-syntax-with-2.stderr similarity index 100% rename from tests/ui/parser/removed-syntax-with-2.stderr rename to tests/ui/parser/removed-syntax/removed-syntax-with-2.stderr