Skip to content

Commit ec9af0d

Browse files
committed
Remove Parser methods that duplicate DiagCtxt methods.
1 parent d86a482 commit ec9af0d

File tree

11 files changed

+54
-61
lines changed

11 files changed

+54
-61
lines changed

compiler/rustc_builtin_macros/src/source_util.rs

+1-1
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

+1-1
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

+3-3
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

+12-26
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ use rustc_ast::{
3434
use rustc_ast_pretty::pprust;
3535
use rustc_data_structures::fx::FxHashSet;
3636
use rustc_errors::{
37-
pluralize, AddToDiagnostic, Applicability, DiagCtxt, Diagnostic, DiagnosticBuilder,
38-
DiagnosticMessage, FatalError, MultiSpan, PResult,
37+
pluralize, AddToDiagnostic, Applicability, DiagCtxt, Diagnostic, DiagnosticBuilder, FatalError,
38+
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> {
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

@@ -610,7 +596,7 @@ impl<'a> Parser<'a> {
610596
};
611597
self.last_unexpected_token_span = Some(self.token.span);
612598
// FIXME: translation requires list formatting (for `expect`)
613-
let mut err = self.struct_span_err(self.token.span, msg_exp);
599+
let mut err = self.dcx().struct_span_err(self.token.span, msg_exp);
614600

615601
if let TokenKind::Ident(symbol, _) = &self.prev_token.kind {
616602
if ["def", "fun", "func", "function"].contains(&symbol.as_str()) {
@@ -1647,7 +1633,7 @@ impl<'a> Parser<'a> {
16471633
kind: IncDecRecovery,
16481634
op_span: Span,
16491635
) -> PResult<'a, P<Expr>> {
1650-
let mut err = self.struct_span_err(
1636+
let mut err = self.dcx().struct_span_err(
16511637
op_span,
16521638
format!("Rust has no {} {} operator", kind.fixity, kind.op.name()),
16531639
);
@@ -1843,7 +1829,7 @@ impl<'a> Parser<'a> {
18431829
_ => this_token_str,
18441830
},
18451831
);
1846-
let mut err = self.struct_span_err(sp, msg);
1832+
let mut err = self.dcx().struct_span_err(sp, msg);
18471833
let label_exp = format!("expected `{token_str}`");
18481834
let sm = self.sess.source_map();
18491835
if !sm.is_multiline(prev_sp.until(sp)) {
@@ -1978,7 +1964,7 @@ impl<'a> Parser<'a> {
19781964
self.consume_block(Delimiter::Parenthesis, ConsumeClosingDelim::No); //eat the block
19791965
let hi = self.token.span;
19801966
self.bump(); //remove )
1981-
let mut err = self.struct_span_err(lo.to(hi), "use of deprecated `try` macro");
1967+
let mut err = self.dcx().struct_span_err(lo.to(hi), "use of deprecated `try` macro");
19821968
err.note("in the 2018 edition `try` is a reserved keyword, and the `try!()` macro is deprecated");
19831969
let prefix = if is_empty { "" } else { "alternatively, " };
19841970
if !is_empty {
@@ -2328,7 +2314,7 @@ impl<'a> Parser<'a> {
23282314
format!("expected expression, found {}", super::token_descr(&self.token)),
23292315
),
23302316
};
2331-
let mut err = self.struct_span_err(span, msg);
2317+
let mut err = self.dcx().struct_span_err(span, msg);
23322318
let sp = self.sess.source_map().start_point(self.token.span);
23332319
if let Some(sp) = self.sess.ambiguous_block_expr_parse.borrow().get(&sp) {
23342320
err.subdiagnostic(ExprParenthesesNeeded::surrounding(*sp));
@@ -2450,7 +2436,7 @@ impl<'a> Parser<'a> {
24502436
// We are causing this error here exclusively in case that a `const` expression
24512437
// could be recovered from the current parser state, even if followed by more
24522438
// arguments after a comma.
2453-
let mut err = self.struct_span_err(
2439+
let mut err = self.dcx().struct_span_err(
24542440
self.token.span,
24552441
format!("expected one of `,` or `>`, found {}", super::token_descr(&self.token)),
24562442
);
@@ -2840,7 +2826,7 @@ impl<'a> Parser<'a> {
28402826
let label = self.eat_label().expect("just checked if a label exists");
28412827
self.bump(); // eat `:`
28422828
let span = label.ident.span.to(self.prev_token.span);
2843-
let mut err = self.struct_span_err(span, "block label not supported here");
2829+
let mut err = self.dcx().struct_span_err(span, "block label not supported here");
28442830
err.span_label(span, "not supported here");
28452831
err.tool_only_span_suggestion(
28462832
label.ident.span.until(self.token.span),
@@ -2875,7 +2861,7 @@ impl<'a> Parser<'a> {
28752861
err.cancel();
28762862
}
28772863
let seq_span = lo.to(self.prev_token.span);
2878-
let mut err = self.struct_span_err(comma_span, "unexpected `,` in pattern");
2864+
let mut err = self.dcx().struct_span_err(comma_span, "unexpected `,` in pattern");
28792865
if let Ok(seq_snippet) = self.span_to_snippet(seq_span) {
28802866
err.multipart_suggestion(
28812867
format!(
@@ -2970,7 +2956,7 @@ impl<'a> Parser<'a> {
29702956
}
29712957
self.bump();
29722958
}
2973-
let mut err = self.struct_span_err(spans, "encountered diff marker");
2959+
let mut err = self.dcx().struct_span_err(spans, "encountered diff marker");
29742960
err.span_label(start, "after this is the code before the merge");
29752961
if let Some(middle) = middlediff3 {
29762962
err.span_label(middle, "");

compiler/rustc_parse/src/parser/expr.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ impl<'a> Parser<'a> {
370370
self.mk_expr(span, aopexpr)
371371
}
372372
AssocOp::As | AssocOp::DotDot | AssocOp::DotDotEq => {
373-
self.span_bug(span, "AssocOp should have been handled by special case")
373+
self.dcx().span_bug(span, "AssocOp should have been handled by special case")
374374
}
375375
};
376376

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

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

compiler/rustc_parse/src/parser/generics.rs

+2-2
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

+12-10
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl<'a> Parser<'a> {
6363
let token_str = super::token_descr(&self.token);
6464
if !self.maybe_consume_incorrect_semicolon(&items) {
6565
let msg = format!("expected item, found {token_str}");
66-
let mut err = self.struct_span_err(self.token.span, msg);
66+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
6767
let span = self.token.span;
6868
if self.is_kw_followed_by_ident(kw::Let) {
6969
err.span_label(
@@ -484,7 +484,7 @@ impl<'a> Parser<'a> {
484484
} else {
485485
"expected item after attributes"
486486
};
487-
let mut err = self.struct_span_err(end.span, msg);
487+
let mut err = self.dcx().struct_span_err(end.span, msg);
488488
if end.is_doc_comment() {
489489
err.span_label(end.span, "this doc comment doesn't document anything");
490490
} else if self.token.kind == TokenKind::Semi {
@@ -712,7 +712,8 @@ impl<'a> Parser<'a> {
712712
let non_item_span = self.token.span;
713713
let is_let = self.token.is_keyword(kw::Let);
714714

715-
let mut err = self.struct_span_err(non_item_span, "non-item in item list");
715+
let mut err =
716+
self.dcx().struct_span_err(non_item_span, "non-item in item list");
716717
self.consume_block(Delimiter::Brace, ConsumeClosingDelim::Yes);
717718
if is_let {
718719
err.span_suggestion(
@@ -1617,7 +1618,7 @@ impl<'a> Parser<'a> {
16171618
} else {
16181619
let token_str = super::token_descr(&self.token);
16191620
let msg = format!("expected `where` or `{{` after union name, found {token_str}");
1620-
let mut err = self.struct_span_err(self.token.span, msg);
1621+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
16211622
err.span_label(self.token.span, "expected `where` or `{` after union name");
16221623
return Err(err);
16231624
};
@@ -1657,7 +1658,7 @@ impl<'a> Parser<'a> {
16571658
if parsed_where { "" } else { "`where`, or " },
16581659
token_str
16591660
);
1660-
let mut err = self.struct_span_err(self.token.span, msg);
1661+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
16611662
err.span_label(
16621663
self.token.span,
16631664
format!(
@@ -1749,7 +1750,8 @@ impl<'a> Parser<'a> {
17491750
}
17501751
if self.eat(&token::Semi) {
17511752
let sp = self.prev_token.span;
1752-
let mut err = self.struct_span_err(sp, format!("{adt_ty} fields are separated by `,`"));
1753+
let mut err =
1754+
self.dcx().struct_span_err(sp, format!("{adt_ty} fields are separated by `,`"));
17531755
err.span_suggestion_short(
17541756
sp,
17551757
"replace `;` with `,`",
@@ -1788,7 +1790,7 @@ impl<'a> Parser<'a> {
17881790
}
17891791
_ => {
17901792
let sp = self.prev_token.span.shrink_to_hi();
1791-
let mut err = self.struct_span_err(
1793+
let mut err = self.dcx().struct_span_err(
17921794
sp,
17931795
format!("expected `,`, or `}}`, found {}", super::token_descr(&self.token)),
17941796
);
@@ -1935,7 +1937,7 @@ impl<'a> Parser<'a> {
19351937
Case::Insensitive,
19361938
) {
19371939
Ok(_) => {
1938-
let mut err = self.struct_span_err(
1940+
let mut err = self.dcx().struct_span_err(
19391941
lo.to(self.prev_token.span),
19401942
format!("functions are not allowed in {adt_ty} definitions"),
19411943
);
@@ -1954,7 +1956,7 @@ impl<'a> Parser<'a> {
19541956
} else if self.eat_keyword(kw::Struct) {
19551957
match self.parse_item_struct() {
19561958
Ok((ident, _)) => {
1957-
let mut err = self.struct_span_err(
1959+
let mut err = self.dcx().struct_span_err(
19581960
lo.with_hi(ident.span.hi()),
19591961
format!("structs are not allowed in {adt_ty} definitions"),
19601962
);
@@ -2101,7 +2103,7 @@ impl<'a> Parser<'a> {
21012103

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

compiler/rustc_parse/src/parser/pat.rs

+3-3
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);
@@ -1029,7 +1029,7 @@ impl<'a> Parser<'a> {
10291029
}
10301030
let token_str = super::token_descr(&self.token);
10311031
let msg = format!("expected `}}`, found {token_str}");
1032-
let mut err = self.struct_span_err(self.token.span, msg);
1032+
let mut err = self.dcx().struct_span_err(self.token.span, msg);
10331033

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

compiler/rustc_parse/src/parser/path.rs

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

792796
GenericArg::Type(ty)
@@ -811,7 +815,7 @@ impl<'a> Parser<'a> {
811815
match self.parse_expr_res(Restrictions::CONST_EXPR, None) {
812816
Ok(expr) => {
813817
return Ok(Some(self.dummy_const_arg_needs_braces(
814-
self.struct_span_err(expr.span, "invalid const generic expression"),
818+
self.dcx().struct_span_err(expr.span, "invalid const generic expression"),
815819
expr.span,
816820
)));
817821
}

compiler/rustc_parse/src/parser/stmt.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -444,7 +444,7 @@ impl<'a> Parser<'a> {
444444
msg: Cow<'static, str>,
445445
) -> DiagnosticBuilder<'a> {
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)