diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2021-10-23 05:28:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-23 05:28:22 +0200 |
| commit | 0f81c7faf5f657704b2e29154af3c09aca7afd67 (patch) | |
| tree | dfb7713c48a8274dc0a5f2702ce60b0a7c0f67a0 /compiler/rustc_interface/src | |
| parent | d64b3a703d8e3b76a4bcb75cef94e52eb32bf55c (diff) | |
| parent | 041212f8fbb9f52d41167448e4fbc2ce8cc7ee9a (diff) | |
| download | rust-0f81c7faf5f657704b2e29154af3c09aca7afd67.tar.gz rust-0f81c7faf5f657704b2e29154af3c09aca7afd67.zip | |
Rollup merge of #89468 - FabianWolff:issue-89358, r=jackh726
Report fatal lexer errors in `--cfg` command line arguments Fixes #89358. The erroneous behavior was apparently introduced by `@Mark-Simulacrum` in https://github.com/rust-lang/rust/commit/a678e3191197f145451c97c6cc884e15cae38186; the idea is to silence individual parser errors and instead emit one catch-all error message after parsing. However, for the example in #89358, a fatal lexer error is created here: https://github.com/rust-lang/rust/blob/edebf77e0090195bf80c0d8cda821e1bf9d03053/compiler/rustc_parse/src/lexer/mod.rs#L340-L349 This fatal error aborts the compilation, and so the call to `new_parser_from_source_str()` never returns and the catch-all error message is never emitted. I have therefore changed the `SilentEmitter` to silence only non-fatal errors; with my changes, for the rustc invocation described in #89358: ```sh rustc --cfg "abc\"" ``` I get the following output: ``` error[E0765]: unterminated double quote string | = note: this error occurred on the command line: `--cfg=abc"` ```
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/interface.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs index 0861bd290df..81585f8f4e4 100644 --- a/compiler/rustc_interface/src/interface.rs +++ b/compiler/rustc_interface/src/interface.rs @@ -75,7 +75,10 @@ pub fn parse_cfgspecs(cfgspecs: Vec<String>) -> FxHashSet<(String, Option<String let cfg = cfgspecs .into_iter() .map(|s| { - let sess = ParseSess::with_silent_emitter(); + let sess = ParseSess::with_silent_emitter(Some(format!( + "this error occurred on the command line: `--cfg={}`", + s + ))); let filename = FileName::cfg_spec_source_code(&s); let mut parser = new_parser_from_source_str(&sess, filename, s.to_string()); |
