about summary refs log tree commit diff
path: root/compiler/rustc_errors/src/json.rs
diff options
context:
space:
mode:
authorLaurențiu Nicola <lnicola@dend.ro>2024-07-11 20:06:05 +0300
committerLaurențiu Nicola <lnicola@dend.ro>2024-07-11 20:06:05 +0300
commit62bbce2ad2b20d5cf1282da407d01de5c54161f1 (patch)
tree24923a8226aad3064a6c5739540c2d404d64f76e /compiler/rustc_errors/src/json.rs
parentb159b3fd80f7aac6aef57c64f820adbc11bc692c (diff)
parentbcf1f6db4594ae6132378b179a30cdb3599a863d (diff)
downloadrust-62bbce2ad2b20d5cf1282da407d01de5c54161f1.tar.gz
rust-62bbce2ad2b20d5cf1282da407d01de5c54161f1.zip
Merge from rust-lang/rust
Diffstat (limited to 'compiler/rustc_errors/src/json.rs')
-rw-r--r--compiler/rustc_errors/src/json.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler/rustc_errors/src/json.rs b/compiler/rustc_errors/src/json.rs
index af82d8092c2..764134d5335 100644
--- a/compiler/rustc_errors/src/json.rs
+++ b/compiler/rustc_errors/src/json.rs
@@ -135,7 +135,12 @@ impl Emitter for JsonEmitter {
         let data: Vec<FutureBreakageItem<'_>> = diags
             .into_iter()
             .map(|mut diag| {
-                if diag.level == crate::Level::Allow {
+                // Allowed or expected lints don't normally (by definition) emit a lint
+                // but future incompat lints are special and are emitted anyway.
+                //
+                // So to avoid ICEs and confused users we "upgrade" the lint level for
+                // those `FutureBreakageItem` to warn.
+                if matches!(diag.level, crate::Level::Allow | crate::Level::Expect(..)) {
                     diag.level = crate::Level::Warning;
                 }
                 FutureBreakageItem {