Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide-diagnostics/src/handlers/missing_unsafe.rs')
-rw-r--r--crates/ide-diagnostics/src/handlers/missing_unsafe.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/crates/ide-diagnostics/src/handlers/missing_unsafe.rs b/crates/ide-diagnostics/src/handlers/missing_unsafe.rs
index 3c36b455ca..364bead34e 100644
--- a/crates/ide-diagnostics/src/handlers/missing_unsafe.rs
+++ b/crates/ide-diagnostics/src/handlers/missing_unsafe.rs
@@ -23,6 +23,7 @@ pub(crate) fn missing_unsafe(ctx: &DiagnosticsContext<'_>, d: &hir::MissingUnsaf
format!("{operation} is unsafe and requires an unsafe function or block"),
d.node.map(|it| it.into()),
)
+ .stable()
.with_fixes(fixes(ctx, d))
}
@@ -893,4 +894,25 @@ fn main() {
"#,
);
}
+
+ #[test]
+ fn asm_label() {
+ check_diagnostics(
+ r#"
+//- minicore: asm
+fn foo() {
+ unsafe {
+ core::arch::asm!(
+ "jmp {}",
+ label {
+ let p = 0xDEADBEAF as *mut u8;
+ *p = 3;
+ // ^^ error: dereference of raw pointer is unsafe and requires an unsafe function or block
+ },
+ );
+ }
+}
+ "#,
+ );
+ }
}