Rollup merge of #139091 - mejrs:format, r=compiler-errors
Rewrite on_unimplemented format string parser. This PR rewrites the format string parser for `rustc_on_unimplemented` and `diagnostic::on_unimplemented`. I plan on moving this code (and more) into the new attribute parsing system soon and wanted to PR it separately. This PR introduces some minor differences though: - `rustc_on_unimplemented` on trait *implementations* is no longer checked/used - this is actually never used (outside of some tests) so I plan on removing it in the future. - for `rustc_on_unimplemented`, it introduces the `{This}` argument in favor of `{ThisTraitname}` (to be removed later). It'll be easier to parse. - for `rustc_on_unimplemented`, `Self` can now consistently be used as a filter, rather than just `_Self`. It used to not match correctly on for example `Self = "[{integer}]"` - Some error messages now have better spans. Fixes https://github.com/rust-lang/rust/issues/130627
This commit is contained in:
commit
aad59a30de
25 changed files with 965 additions and 688 deletions
|
@ -1232,6 +1232,25 @@ impl DesugaringKind {
|
|||
DesugaringKind::PatTyRange => "pattern type",
|
||||
}
|
||||
}
|
||||
|
||||
/// For use with `rustc_unimplemented` to support conditions
|
||||
/// like `from_desugaring = "QuestionMark"`
|
||||
pub fn matches(&self, value: &str) -> bool {
|
||||
match self {
|
||||
DesugaringKind::CondTemporary => value == "CondTemporary",
|
||||
DesugaringKind::Async => value == "Async",
|
||||
DesugaringKind::Await => value == "Await",
|
||||
DesugaringKind::QuestionMark => value == "QuestionMark",
|
||||
DesugaringKind::TryBlock => value == "TryBlock",
|
||||
DesugaringKind::YeetExpr => value == "YeetExpr",
|
||||
DesugaringKind::OpaqueTy => value == "OpaqueTy",
|
||||
DesugaringKind::ForLoop => value == "ForLoop",
|
||||
DesugaringKind::WhileLoop => value == "WhileLoop",
|
||||
DesugaringKind::BoundModifier => value == "BoundModifier",
|
||||
DesugaringKind::Contract => value == "Contract",
|
||||
DesugaringKind::PatTyRange => value == "PatTyRange",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Default)]
|
||||
|
|
|
@ -372,6 +372,7 @@ symbols! {
|
|||
SyncUnsafeCell,
|
||||
T,
|
||||
Target,
|
||||
This,
|
||||
ToOwned,
|
||||
ToString,
|
||||
TokenStream,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue