about summary refs log tree commit diff
path: root/src/test/ui/lint/reasons-forbidden.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/lint/reasons-forbidden.rs')
-rw-r--r--src/test/ui/lint/reasons-forbidden.rs37
1 files changed, 15 insertions, 22 deletions
diff --git a/src/test/ui/lint/reasons-forbidden.rs b/src/test/ui/lint/reasons-forbidden.rs
index 5f6764c789d..9c2edec4d52 100644
--- a/src/test/ui/lint/reasons-forbidden.rs
+++ b/src/test/ui/lint/reasons-forbidden.rs
@@ -1,13 +1,19 @@
 #![feature(lint_reasons)]
 
+// If you turn off deduplicate diagnostics (which rustc turns on by default but
+// compiletest turns off when it runs ui tests), then the errors are
+// (unfortunately) repeated here because the checking is done as we read in the
+// errors, and currently that happens two or three different times, depending on
+// compiler flags.
+//
+// The test is much cleaner if we deduplicate, though.
+
+// compile-flags: -Z deduplicate-diagnostics=yes
+
 #![forbid(
     unsafe_code,
     //~^ NOTE `forbid` level set here
-    //~| NOTE `forbid` level set here
-    //~| NOTE `forbid` level set here
-    //~| NOTE `forbid` level set here
-    //~| NOTE `forbid` level set here
-    //~| NOTE `forbid` level set here
+    //~| NOTE the lint level is defined here
     reason = "our errors & omissions insurance policy doesn't cover unsafe Rust"
 )]
 
@@ -17,25 +23,12 @@ fn main() {
     let a_billion_dollar_mistake = ptr::null();
 
     #[allow(unsafe_code)]
-    //~^ ERROR allow(unsafe_code) overruled by outer forbid(unsafe_code)
-    //~| ERROR allow(unsafe_code) overruled by outer forbid(unsafe_code)
-    //~| ERROR allow(unsafe_code) overruled by outer forbid(unsafe_code)
-    //~| ERROR allow(unsafe_code) overruled by outer forbid(unsafe_code)
-    //~| ERROR allow(unsafe_code) overruled by outer forbid(unsafe_code)
-    //~| ERROR allow(unsafe_code) overruled by outer forbid(unsafe_code)
-    //~| NOTE overruled by previous forbid
-    //~| NOTE overruled by previous forbid
-    //~| NOTE overruled by previous forbid
-    //~| NOTE overruled by previous forbid
-    //~| NOTE overruled by previous forbid
-    //~| NOTE overruled by previous forbid
-    //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
-    //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
-    //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
-    //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
-    //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
+    //~^ ERROR allow(unsafe_code) incompatible with previous forbid
     //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
+    //~| NOTE overruled by previous forbid
     unsafe {
+        //~^ ERROR usage of an `unsafe` block
+        //~| NOTE our errors & omissions insurance policy doesn't cover unsafe Rust
         *a_billion_dollar_mistake
     }
 }