about summary refs log tree commit diff
path: root/compiler/rustc_parse/src/parser
diff options
context:
space:
mode:
authorclubby789 <jamie@hill-daniel.co.uk>2023-01-28 21:16:50 +0000
committerclubby789 <jamie@hill-daniel.co.uk>2023-01-28 21:57:35 +0000
commitc5688794e2c3bb94f93e37a4f77576ac0d86a14e (patch)
treefaa2e9aa0ab1e378cc6ee7be8b782515f802ad91 /compiler/rustc_parse/src/parser
parent4bfab39f9b466fa89f85c57a42c1e71a99c6aa4e (diff)
downloadrust-c5688794e2c3bb94f93e37a4f77576ac0d86a14e.tar.gz
rust-c5688794e2c3bb94f93e37a4f77576ac0d86a14e.zip
Migrate some range parsing diagnostics
Diffstat (limited to 'compiler/rustc_parse/src/parser')
-rw-r--r--compiler/rustc_parse/src/parser/pat.rs27
1 files changed, 8 insertions, 19 deletions
diff --git a/compiler/rustc_parse/src/parser/pat.rs b/compiler/rustc_parse/src/parser/pat.rs
index 9cde0026920..912f7cc14f6 100644
--- a/compiler/rustc_parse/src/parser/pat.rs
+++ b/compiler/rustc_parse/src/parser/pat.rs
@@ -1,5 +1,7 @@
 use super::{ForceCollect, Parser, PathStyle, TrailingToken};
-use crate::errors::RemoveLet;
+use crate::errors::{
+    InclusiveRangeExtraEquals, InclusiveRangeMatchArrow, InclusiveRangeNoEnd, RemoveLet,
+};
 use crate::{maybe_recover_from_interpolated_ty_qpath, maybe_whole};
 use rustc_ast::mut_visit::{noop_visit_pat, MutVisitor};
 use rustc_ast::ptr::P;
@@ -9,7 +11,7 @@ use rustc_ast::{
     PatField, PatKind, Path, QSelf, RangeEnd, RangeSyntax,
 };
 use rustc_ast_pretty::pprust;
-use rustc_errors::{struct_span_err, Applicability, DiagnosticBuilder, ErrorGuaranteed, PResult};
+use rustc_errors::{Applicability, DiagnosticBuilder, ErrorGuaranteed, PResult};
 use rustc_session::errors::ExprParenthesesNeeded;
 use rustc_span::source_map::{respan, Span, Spanned};
 use rustc_span::symbol::{kw, sym, Ident};
@@ -782,29 +784,16 @@ impl<'a> Parser<'a> {
     }
 
     fn error_inclusive_range_with_extra_equals(&self, span: Span) {
-        self.struct_span_err(span, "unexpected `=` after inclusive range")
-            .span_suggestion_short(span, "use `..=` instead", "..=", Applicability::MaybeIncorrect)
-            .note("inclusive ranges end with a single equals sign (`..=`)")
-            .emit();
+        self.sess.emit_err(InclusiveRangeExtraEquals { span });
     }
 
     fn error_inclusive_range_match_arrow(&self, span: Span) {
-        let without_eq = span.with_hi(span.hi() - rustc_span::BytePos(1));
-        self.struct_span_err(span, "unexpected `=>` after open range")
-            .span_suggestion_verbose(
-                without_eq.shrink_to_hi(),
-                "add a space between the pattern and `=>`",
-                " ",
-                Applicability::MachineApplicable,
-            )
-            .emit();
+        let after_pat = span.with_hi(span.hi() - rustc_span::BytePos(1)).shrink_to_hi();
+        self.sess.emit_err(InclusiveRangeMatchArrow { span, after_pat });
     }
 
     fn error_inclusive_range_with_no_end(&self, span: Span) {
-        struct_span_err!(self.sess.span_diagnostic, span, E0586, "inclusive range with no end")
-            .span_suggestion_short(span, "use `..` instead", "..", Applicability::MachineApplicable)
-            .note("inclusive ranges must be bounded at the end (`..=b` or `a..=b`)")
-            .emit();
+        self.sess.emit_err(InclusiveRangeNoEnd { span });
     }
 
     /// Parse a range-to pattern, `..X` or `..=X` where `X` remains to be parsed.