about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/ui/asm/bad-arch.stderr2
-rw-r--r--tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.rs20
-rw-r--r--tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.stderr27
3 files changed, 47 insertions, 2 deletions
diff --git a/tests/ui/asm/bad-arch.stderr b/tests/ui/asm/bad-arch.stderr
index 23aad9908ef..c6f726600eb 100644
--- a/tests/ui/asm/bad-arch.stderr
+++ b/tests/ui/asm/bad-arch.stderr
@@ -9,8 +9,6 @@ error[E0472]: inline assembly is unsupported on this target
    |
 LL | global_asm!("");
    | ^^^^^^^^^^^^^^^
-   |
-   = note: this error originates in the macro `global_asm` (in Nightly builds, run with -Z macro-backtrace for more info)
 
 error: aborting due to 2 previous errors
 
diff --git a/tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.rs b/tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.rs
new file mode 100644
index 00000000000..02df0e6de95
--- /dev/null
+++ b/tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.rs
@@ -0,0 +1,20 @@
+//@ needs-asm-support
+#![deny(unsafe_code)]
+
+use std::arch::global_asm;
+
+#[allow(unsafe_code)]
+mod allowed_unsafe {
+    std::arch::global_asm!("");
+}
+
+macro_rules! unsafe_in_macro {
+    () => {
+        global_asm!(""); //~ ERROR: usage of `core::arch::global_asm`
+    };
+}
+
+global_asm!(""); //~ ERROR: usage of `core::arch::global_asm`
+unsafe_in_macro!();
+
+fn main() {}
diff --git a/tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.stderr b/tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.stderr
new file mode 100644
index 00000000000..deb67a174f1
--- /dev/null
+++ b/tests/ui/lint/unsafe_code/lint-global-asm-as-unsafe.stderr
@@ -0,0 +1,27 @@
+error: usage of `core::arch::global_asm`
+  --> $DIR/lint-global-asm-as-unsafe.rs:17:1
+   |
+LL | global_asm!("");
+   | ^^^^^^^^^^^^^^^
+   |
+   = note: using this macro is unsafe even though it does not need an `unsafe` block
+note: the lint level is defined here
+  --> $DIR/lint-global-asm-as-unsafe.rs:2:9
+   |
+LL | #![deny(unsafe_code)]
+   |         ^^^^^^^^^^^
+
+error: usage of `core::arch::global_asm`
+  --> $DIR/lint-global-asm-as-unsafe.rs:13:9
+   |
+LL |         global_asm!("");
+   |         ^^^^^^^^^^^^^^^
+...
+LL | unsafe_in_macro!();
+   | ------------------ in this macro invocation
+   |
+   = note: using this macro is unsafe even though it does not need an `unsafe` block
+   = note: this error originates in the macro `unsafe_in_macro` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 2 previous errors
+