Refactor rustc_on_unimplemented's filter parser by mejrs · Pull Request #140307 · rust-lang/rust (original) (raw)
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request
Rollup merge of rust-lang#140307 - mejrs:condition_parser, r=nnethercote
Refactor rustc_on_unimplemented's filter parser
Followup to rust-lang#139091; I plan on moving most of this code into rustc_attr_parsing
at some point, but want to land this separately first.
I have taken care to preserve the original behavior as much as I could:
- All but one of the new error variants are replacements for the ones originally emitted by the cfg parsing machinery; so these errors are not "new".
- the
InvalidFlag
variant is new, this PR turns this (from being ignored and silently doing nothing) into an error:
This does not occur anywhere except in this test. I couldn't find a way that I liked to keep allowing this or to do nothing, erroring was the cleanest solution.#[rustc_on_unimplemented(on(something, message = "y"))] //~^ ERROR invalid boolean flag //~^^ NOTE expected one of `crate_local`, `direct` or `from_desugaring`, not `something` trait InvalidFlag {}
- There are a bunch of FIXME throughout this and the previous PR, I plan on addressing those in follow up prs..
Finally, this gets rid of the "longest" dependency in rustc: