Skip to content

Commit 61a8d6a

Browse files
committed
Remove Parser methods that duplicate DiagCtxt methods.
1 parent 9a26e5a commit 61a8d6a

File tree

11 files changed

+53
-60
lines changed

11 files changed

+53
-60
lines changed

compiler/rustc_builtin_macros/src/source_util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ pub fn expand_include<'cx>(
155155
if self.p.token != token::Eof {
156156
let token = pprust::token_to_string(&self.p.token);
157157
let msg = format!("expected item, found `{token}`");
158-
self.p.struct_span_err(self.p.token.span, msg).emit();
158+
self.p.dcx().struct_span_err(self.p.token.span, msg).emit();
159159
}
160160

161161
break;

compiler/rustc_parse/src/lexer/tokentrees.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ impl<'a> TokenTreesReader<'a> {
257257
// This might be the beginning of the `if`/`while` body (i.e., the end of the condition)
258258
in_cond = false;
259259
} else if maybe_andand == token::AndAnd && maybe_let.is_keyword(kw::Let) {
260-
let mut err = parser.struct_span_err(
260+
let mut err = parser.dcx().struct_span_err(
261261
parser.token.span,
262262
"found a `{` in the middle of a let-chain",
263263
);

compiler/rustc_parse/src/parser/attr.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ impl<'a> Parser<'a> {
200200
if let InnerAttrPolicy::Forbidden(reason) = policy {
201201
let mut diag = match reason.as_ref().copied() {
202202
Some(InnerAttrForbiddenReason::AfterOuterDocComment { prev_doc_comment_span }) => {
203-
let mut diag = self.struct_span_err(
203+
let mut diag = self.dcx().struct_span_err(
204204
attr_sp,
205205
fluent::parse_inner_attr_not_permitted_after_outer_doc_comment,
206206
);
@@ -209,7 +209,7 @@ impl<'a> Parser<'a> {
209209
diag
210210
}
211211
Some(InnerAttrForbiddenReason::AfterOuterAttribute { prev_outer_attr_sp }) => {
212-
let mut diag = self.struct_span_err(
212+
let mut diag = self.dcx().struct_span_err(
213213
attr_sp,
214214
fluent::parse_inner_attr_not_permitted_after_outer_attr,
215215
);
@@ -218,7 +218,7 @@ impl<'a> Parser<'a> {
218218
diag
219219
}
220220
Some(InnerAttrForbiddenReason::InCodeBlock) | None => {
221-
self.struct_span_err(attr_sp, fluent::parse_inner_attr_not_permitted)
221+
self.dcx().struct_span_err(attr_sp, fluent::parse_inner_attr_not_permitted)
222222
}
223223
};
224224

compiler/rustc_parse/src/parser/diagnostics.rs

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use rustc_ast_pretty::pprust;
3535
use rustc_data_structures::fx::FxHashSet;
3636
use rustc_errors::{
3737
pluralize, AddToDiagnostic, Applicability, DiagCtxt, Diagnostic, DiagnosticBuilder,
38-
DiagnosticMessage, ErrorGuaranteed, FatalError, IntoDiagnostic, MultiSpan, PResult,
38+
ErrorGuaranteed, FatalError, IntoDiagnostic, PResult,
3939
};
4040
use rustc_session::errors::ExprParenthesesNeeded;
4141
use rustc_span::source_map::Spanned;
@@ -239,21 +239,7 @@ impl<'a> DerefMut for SnapshotParser<'a> {
239239
}
240240

241241
impl<'a> Parser<'a> {
242-
#[rustc_lint_diagnostics]
243-
#[track_caller]
244-
pub fn struct_span_err<S: Into<MultiSpan>>(
245-
&self,
246-
sp: S,
247-
m: impl Into<DiagnosticMessage>,
248-
) -> DiagnosticBuilder<'a, ErrorGuaranteed> {
249-
self.dcx().struct_span_err(sp, m)
250-
}
251-
252-
pub fn span_bug<S: Into<MultiSpan>>(&self, sp: S, msg: impl Into<DiagnosticMessage>) -> ! {
253-
self.dcx().span_bug(sp, msg)
254-
}
255-
256-
pub(super) fn dcx(&self) -> &'a DiagCtxt {
242+
pub fn dcx(&self) -> &'a DiagCtxt {
257243
&self.sess.dcx
258244
}
259245

@@ -611,7 +597,7 @@ impl<'a> Parser<'a> {
611597
};
612598
self.last_unexpected_token_span = Some(self.token.span);
613599
// FIXME: translation requires list formatting (for `expect`)
614-
let mut err = self.struct_span_err(self.token.span, msg_exp);
600+
let mut err = self.dcx().struct_span_err(self.token.span, msg_exp);
615601

616602
if let TokenKind::Ident(symbol, _) = &self.prev_token.kind {
617603
if ["def", "fun", "func", "function"].contains(&symbol.as_str()) {
@@ -1629,7 +1615,7 @@ impl<'a> Parser<'a> {
16291615
kind: IncDecRecovery,
16301616
op_span: Span,
16311617
) -> PResult<'a, P<Expr>> {
1632-
let mut err = self.struct_span_err(
1618+
let mut err = self.dcx().struct_span_err(
16331619
op_span,
16341620
format!("Rust has no {} {} operator", kind.fixity, kind.op.name()),
16351621
);
@@ -1825,7 +1811,7 @@ impl<'a> Parser<'a> {
18251811
_ => this_token_str,
18261812
},
18271813
);
1828-
let mut err = self.struct_span_err(sp, msg);
1814+
let mut err = self.dcx().struct_span_err(sp, msg);
18291815
let label_exp = format!("expected `{token_str}`");
18301816
let sm = self.sess.source_map();
18311817
if !sm.is_multiline(prev_sp.until(sp)) {
@@ -1960,7 +1946,7 @@ impl<'a> Parser<'a> {
19601946
self.consume_block(Delimiter::Parenthesis, ConsumeClosingDelim::No); //eat the block
19611947
let hi = self.token.span;
19621948
self.bump(); //remove )
1963-
let mut err = self.struct_span_err(lo.to(hi), "use of deprecated `try` macro");
1949+
let mut err = self.dcx().struct_span_err(lo.to(hi), "use of deprecated `try` macro");
19641950
err.note("in the 2018 edition `try` is a reserved keyword, and the `try!()` macro is deprecated");
19651951
let prefix = if is_empty { "" } else { "alternatively, " };
19661952
if !is_empty {
@@ -2310,7 +2296,7 @@ impl<'a> Parser<'a> {
23102296
format!("expected expression, found {}", super::token_descr(&self.token)),
23112297
),
23122298
};
2313-
let mut err = self.struct_span_err(span, msg);
2299+
let mut err = self.dcx().struct_span_err(span, msg);
23142300
let sp = self.sess.source_map().start_point(self.token.span);
23152301
if let Some(sp) = self.sess.ambiguous_block_expr_parse.borrow().get(&sp) {
23162302
err.subdiagnostic(ExprParenthesesNeeded::surrounding(*sp));
@@ -2432,7 +2418,7 @@ impl<'a> Parser<'a> {
24322418
// We are causing this error here exclusively in case that a `const` expression
24332419
// could be recovered from the current parser state, even if followed by more
24342420
// arguments after a comma.
2435-
let mut err = self.struct_span_err(
2421+
let mut err = self.dcx().struct_span_err(
24362422
self.token.span,
24372423
format!("expected one of `,` or `>`, found {}", super::token_descr(&self.token)),
24382424
);
@@ -2822,7 +2808,7 @@ impl<'a> Parser<'a> {
28222808
let label = self.eat_label().expect("just checked if a label exists");
28232809
self.bump(); // eat `:`
28242810
let span = label.ident.span.to(self.prev_token.span);
2825-
let mut err = self.struct_span_err(span, "block label not supported here");
2811+
let mut err = self.dcx().struct_span_err(span, "block label not supported here");
28262812
err.span_label(span, "not supported here");
28272813
err.tool_only_span_suggestion(
28282814
label.ident.span.until(self.token.span),
@@ -2857,7 +2843,7 @@ impl<'a> Parser<'a> {
28572843
err.cancel();
28582844
}
28592845
let seq_span = lo.to(self.prev_token.span);
2860-
let mut err = self.struct_span_err(comma_span, "unexpected `,` in pattern");
2846+
let mut err = self.dcx().struct_span_err(comma_span, "unexpected `,` in pattern");
28612847
if let Ok(seq_snippet) = self.span_to_snippet(seq_span) {
28622848
err.multipart_suggestion(
28632849
format!(
@@ -2953,7 +2939,7 @@ impl<'a> Parser<'a> {
29532939
}
29542940
self.bump();
29552941
}
2956-
let mut err = self.struct_span_err(spans, "encountered diff marker");
2942+
let mut err = self.dcx().struct_span_err(spans, "encountered diff marker");
29572943
err.span_label(start, "after this is the code before the merge");
29582944
if let Some(middle) = middlediff3 {
29592945
err.span_label(middle, "");

compiler/rustc_parse/src/parser/expr.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ impl<'a> Parser<'a> {
371371
self.mk_expr(span, aopexpr)
372372
}
373373
AssocOp::As | AssocOp::DotDot | AssocOp::DotDotEq => {
374-
self.span_bug(span, "AssocOp should have been handled by special case")
374+
self.dcx().span_bug(span, "AssocOp should have been handled by special case")
375375
}
376376
};
377377

@@ -858,7 +858,7 @@ impl<'a> Parser<'a> {
858858
_ => unreachable!("parse_dot_or_call_expr_with_ shouldn't produce this"),
859859
}
860860
);
861-
let mut err = self.struct_span_err(span, msg);
861+
let mut err = self.dcx().struct_span_err(span, msg);
862862

863863
let suggest_parens = |err: &mut Diagnostic| {
864864
let suggestions = vec![
@@ -1966,7 +1966,7 @@ impl<'a> Parser<'a> {
19661966
let token = self.token.clone();
19671967
let err = |self_: &Self| {
19681968
let msg = format!("unexpected token: {}", super::token_descr(&token));
1969-
self_.struct_span_err(token.span, msg)
1969+
self_.dcx().struct_span_err(token.span, msg)
19701970
};
19711971
// On an error path, eagerly consider a lifetime to be an unclosed character lit
19721972
if self.token.is_lifetime() {

compiler/rustc_parse/src/parser/generics.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ impl<'a> Parser<'a> {
6464
Ok(p) => {
6565
if let TyKind::ImplTrait(_, bounds) = &p.kind {
6666
let span = impl_span.to(self.token.span.shrink_to_lo());
67-
let mut err = self.struct_span_err(
67+
let mut err = self.dcx().struct_span_err(
6868
span,
6969
"expected trait bound, found `impl Trait` type",
7070
);
@@ -141,7 +141,7 @@ impl<'a> Parser<'a> {
141141
// Parse optional const generics default value.
142142
let default = if self.eat(&token::Eq) { Some(self.parse_const_arg()?) } else { None };
143143

144-
let mut err = self.struct_span_err(
144+
let mut err = self.dcx().struct_span_err(
145145
mistyped_const_ident.span,
146146
format!("`const` keyword was mistyped as `{}`", mistyped_const_ident.as_str()),
147147
);

compiler/rustc_parse/src/parser/item.rs

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ impl<'a> Parser<'a> {
6666
let token_str = super::token_descr(&self.token);
6767
if !self.maybe_consume_incorrect_semicolon(&items) {
6868
let msg = format!("expected item, found {token_str}");
69-
let mut err = self.struct_span_err(self.token.span, msg);
69+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
7070
let span = self.token.span;
7171
if self.is_kw_followed_by_ident(kw::Let) {
7272
err.span_label(
@@ -487,7 +487,7 @@ impl<'a> Parser<'a> {
487487
} else {
488488
"expected item after attributes"
489489
};
490-
let mut err = self.struct_span_err(end.span, msg);
490+
let mut err = self.dcx().struct_span_err(end.span, msg);
491491
if end.is_doc_comment() {
492492
err.span_label(end.span, "this doc comment doesn't document anything");
493493
} else if self.token.kind == TokenKind::Semi {
@@ -715,7 +715,8 @@ impl<'a> Parser<'a> {
715715
let non_item_span = self.token.span;
716716
let is_let = self.token.is_keyword(kw::Let);
717717

718-
let mut err = self.struct_span_err(non_item_span, "non-item in item list");
718+
let mut err =
719+
self.dcx().struct_span_err(non_item_span, "non-item in item list");
719720
self.consume_block(Delimiter::Brace, ConsumeClosingDelim::Yes);
720721
if is_let {
721722
err.span_suggestion(
@@ -1621,7 +1622,7 @@ impl<'a> Parser<'a> {
16211622
} else {
16221623
let token_str = super::token_descr(&self.token);
16231624
let msg = format!("expected `where` or `{{` after union name, found {token_str}");
1624-
let mut err = self.struct_span_err(self.token.span, msg);
1625+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
16251626
err.span_label(self.token.span, "expected `where` or `{` after union name");
16261627
return Err(err);
16271628
};
@@ -1661,7 +1662,7 @@ impl<'a> Parser<'a> {
16611662
if parsed_where { "" } else { "`where`, or " },
16621663
token_str
16631664
);
1664-
let mut err = self.struct_span_err(self.token.span, msg);
1665+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
16651666
err.span_label(
16661667
self.token.span,
16671668
format!(
@@ -1753,7 +1754,8 @@ impl<'a> Parser<'a> {
17531754
}
17541755
if self.eat(&token::Semi) {
17551756
let sp = self.prev_token.span;
1756-
let mut err = self.struct_span_err(sp, format!("{adt_ty} fields are separated by `,`"));
1757+
let mut err =
1758+
self.dcx().struct_span_err(sp, format!("{adt_ty} fields are separated by `,`"));
17571759
err.span_suggestion_short(
17581760
sp,
17591761
"replace `;` with `,`",
@@ -1792,7 +1794,7 @@ impl<'a> Parser<'a> {
17921794
}
17931795
_ => {
17941796
let sp = self.prev_token.span.shrink_to_hi();
1795-
let mut err = self.struct_span_err(
1797+
let mut err = self.dcx().struct_span_err(
17961798
sp,
17971799
format!("expected `,`, or `}}`, found {}", super::token_descr(&self.token)),
17981800
);
@@ -1939,7 +1941,7 @@ impl<'a> Parser<'a> {
19391941
Case::Insensitive,
19401942
) {
19411943
Ok(_) => {
1942-
let mut err = self.struct_span_err(
1944+
let mut err = self.dcx().struct_span_err(
19431945
lo.to(self.prev_token.span),
19441946
format!("functions are not allowed in {adt_ty} definitions"),
19451947
);
@@ -1958,7 +1960,7 @@ impl<'a> Parser<'a> {
19581960
} else if self.eat_keyword(kw::Struct) {
19591961
match self.parse_item_struct() {
19601962
Ok((ident, _)) => {
1961-
let mut err = self.struct_span_err(
1963+
let mut err = self.dcx().struct_span_err(
19621964
lo.with_hi(ident.span.hi()),
19631965
format!("structs are not allowed in {adt_ty} definitions"),
19641966
);
@@ -2105,7 +2107,7 @@ impl<'a> Parser<'a> {
21052107

21062108
fn report_invalid_macro_expansion_item(&self, args: &DelimArgs) {
21072109
let span = args.dspan.entire();
2108-
let mut err = self.struct_span_err(
2110+
let mut err = self.dcx().struct_span_err(
21092111
span,
21102112
"macros that expand to items must be delimited with braces or followed by a semicolon",
21112113
);

compiler/rustc_parse/src/parser/pat.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ impl<'a> Parser<'a> {
459459
super::token_descr(&self_.token)
460460
);
461461

462-
let mut err = self_.struct_span_err(self_.token.span, msg);
462+
let mut err = self_.dcx().struct_span_err(self_.token.span, msg);
463463
err.span_label(self_.token.span, format!("expected {expected}"));
464464
err
465465
});
@@ -695,7 +695,7 @@ impl<'a> Parser<'a> {
695695
let expected = Expected::to_string_or_fallback(expected);
696696
let msg = format!("expected {}, found {}", expected, super::token_descr(&self.token));
697697

698-
let mut err = self.struct_span_err(self.token.span, msg);
698+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
699699
err.span_label(self.token.span, format!("expected {expected}"));
700700

701701
let sp = self.sess.source_map().start_point(self.token.span);
@@ -1027,7 +1027,7 @@ impl<'a> Parser<'a> {
10271027
}
10281028
let token_str = super::token_descr(&self.token);
10291029
let msg = format!("expected `}}`, found {token_str}");
1030-
let mut err = self.struct_span_err(self.token.span, msg);
1030+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
10311031

10321032
err.span_label(self.token.span, "expected `}`");
10331033
let mut comma_sp = None;

compiler/rustc_parse/src/parser/path.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ impl<'a> Parser<'a> {
615615
// FIXME(compiler-errors): this could be improved by suggesting lifting
616616
// this up to the trait, at least before this becomes real syntax.
617617
// e.g. `Trait<for<'a> Assoc = Ty>` -> `for<'a> Trait<Assoc = Ty>`
618-
return Err(self.struct_span_err(
618+
return Err(self.dcx().struct_span_err(
619619
arg_span,
620620
"`for<...>` is not allowed on associated type bounds",
621621
));
@@ -686,6 +686,7 @@ impl<'a> Parser<'a> {
686686
let after_eq = eq.shrink_to_hi();
687687
let before_next = self.token.span.shrink_to_lo();
688688
let mut err = self
689+
.dcx()
689690
.struct_span_err(after_eq.to(before_next), "missing type to the right of `=`");
690691
if matches!(self.token.kind, token::Comma | token::Gt) {
691692
err.span_suggestion(
@@ -784,10 +785,13 @@ impl<'a> Parser<'a> {
784785
&& let Some(expr) =
785786
self.recover_unbraced_const_arg_that_can_begin_ty(snapshot)
786787
{
787-
return Ok(Some(self.dummy_const_arg_needs_braces(
788-
self.struct_span_err(expr.span, "invalid const generic expression"),
789-
expr.span,
790-
)));
788+
return Ok(Some(
789+
self.dummy_const_arg_needs_braces(
790+
self.dcx()
791+
.struct_span_err(expr.span, "invalid const generic expression"),
792+
expr.span,
793+
),
794+
));
791795
}
792796

793797
GenericArg::Type(ty)
@@ -812,7 +816,7 @@ impl<'a> Parser<'a> {
812816
match self.parse_expr_res(Restrictions::CONST_EXPR, None) {
813817
Ok(expr) => {
814818
return Ok(Some(self.dummy_const_arg_needs_braces(
815-
self.struct_span_err(expr.span, "invalid const generic expression"),
819+
self.dcx().struct_span_err(expr.span, "invalid const generic expression"),
816820
expr.span,
817821
)));
818822
}

compiler/rustc_parse/src/parser/stmt.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ impl<'a> Parser<'a> {
444444
msg: Cow<'static, str>,
445445
) -> DiagnosticBuilder<'a, ErrorGuaranteed> {
446446
let sp = self.token.span;
447-
let mut e = self.struct_span_err(sp, msg);
447+
let mut e = self.dcx().struct_span_err(sp, msg);
448448
let do_not_suggest_help = self.token.is_keyword(kw::In) || self.token == token::Colon;
449449

450450
// Check to see if the user has written something like

0 commit comments

Comments
 (0)