diff options
| author | xFrednet <xFrednet@gmail.com> | 2021-08-06 23:18:16 +0200 |
|---|---|---|
| committer | xFrednet <xFrednet@gmail.com> | 2022-03-02 17:46:05 +0100 |
| commit | 9fef3d9e0a386f8b1e277d4b598e6254c9c0516b (patch) | |
| tree | b4a23228cdaa9492eda2f09b3a761952992b11d5 /compiler/rustc_errors/src | |
| parent | c42d846add941a26bd254911e16f02c4a3f9346f (diff) | |
| download | rust-9fef3d9e0a386f8b1e277d4b598e6254c9c0516b.tar.gz rust-9fef3d9e0a386f8b1e277d4b598e6254c9c0516b.zip | |
Added `Expect` lint level and attribute (RFC-2383)
* Also added the `LintExpectationId` which will be used in future commits
Diffstat (limited to 'compiler/rustc_errors/src')
| -rw-r--r-- | compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs | 1 | ||||
| -rw-r--r-- | compiler/rustc_errors/src/diagnostic.rs | 6 | ||||
| -rw-r--r-- | compiler/rustc_errors/src/lib.rs | 14 |
3 files changed, 18 insertions, 3 deletions
diff --git a/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs b/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs index 7d7ab1ed4e5..c380455012d 100644 --- a/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs +++ b/compiler/rustc_errors/src/annotate_snippet_emitter_writer.rs @@ -75,6 +75,7 @@ fn annotation_type_for_level(level: Level) -> AnnotationType { // FIXME(#59346): Not sure how to map this level Level::FailureNote => AnnotationType::Error, Level::Allow => panic!("Should not call with Allow"), + Level::Expect(_) => panic!("Should not call with Expect"), } } diff --git a/compiler/rustc_errors/src/diagnostic.rs b/compiler/rustc_errors/src/diagnostic.rs index 6d6ada86428..802f2560601 100644 --- a/compiler/rustc_errors/src/diagnostic.rs +++ b/compiler/rustc_errors/src/diagnostic.rs @@ -133,7 +133,11 @@ impl Diagnostic { | Level::Error { .. } | Level::FailureNote => true, - Level::Warning | Level::Note | Level::Help | Level::Allow => false, + Level::Warning + | Level::Note + | Level::Help + | Level::Allow + | Level::Expect(_) => false, } } diff --git a/compiler/rustc_errors/src/lib.rs b/compiler/rustc_errors/src/lib.rs index fdfedffc529..41d2b285997 100644 --- a/compiler/rustc_errors/src/lib.rs +++ b/compiler/rustc_errors/src/lib.rs @@ -20,6 +20,7 @@ extern crate tracing; pub use emitter::ColorConfig; +use rustc_lint_defs::LintExpectationId; use Level::*; use emitter::{is_case_difference, Emitter, EmitterWriter}; @@ -677,6 +678,11 @@ impl Handler { DiagnosticBuilder::new(self, Level::Allow, msg) } + /// Construct a builder at the `Expect` level with the `msg`. + pub fn struct_expect(&self, msg: &str, id: LintExpectationId) -> DiagnosticBuilder<'_, ()> { + DiagnosticBuilder::new(self, Level::Expect(id), msg) + } + /// Construct a builder at the `Error` level at the given `span` and with the `msg`. pub fn struct_span_err( &self, @@ -953,7 +959,9 @@ impl HandlerInner { (*TRACK_DIAGNOSTICS)(diagnostic); - if diagnostic.level == Allow { + if let Level::Expect(_) = diagnostic.level { + return; + } else if diagnostic.level == Allow { return; } @@ -1250,6 +1258,7 @@ pub enum Level { Help, FailureNote, Allow, + Expect(LintExpectationId), } impl fmt::Display for Level { @@ -1275,7 +1284,7 @@ impl Level { spec.set_fg(Some(Color::Cyan)).set_intense(true); } FailureNote => {} - Allow => unreachable!(), + Allow | Expect(_) => unreachable!(), } spec } @@ -1289,6 +1298,7 @@ impl Level { Help => "help", FailureNote => "failure-note", Allow => panic!("Shouldn't call on allowed error"), + Expect(_) => panic!("Shouldn't call on expected error"), } } |
