about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_ast_passes/src/ast_validation.rs5
-rw-r--r--tests/ui/parser/unsafe-foreign-mod-2.rs5
-rw-r--r--tests/ui/parser/unsafe-foreign-mod-2.stderr12
-rw-r--r--tests/ui/parser/unsafe-foreign-mod.rs6
-rw-r--r--tests/ui/parser/unsafe-foreign-mod.stderr8
-rw-r--r--tests/ui/rust-2024/unsafe-extern-blocks/extern-items.rs3
-rw-r--r--tests/ui/rust-2024/unsafe-extern-blocks/extern-items.stderr8
7 files changed, 11 insertions, 36 deletions
diff --git a/compiler/rustc_ast_passes/src/ast_validation.rs b/compiler/rustc_ast_passes/src/ast_validation.rs
index 435b0b6a956..c0011fd9c45 100644
--- a/compiler/rustc_ast_passes/src/ast_validation.rs
+++ b/compiler/rustc_ast_passes/src/ast_validation.rs
@@ -1016,15 +1016,12 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
                 walk_list!(self, visit_attribute, &item.attrs);
                 return; // Avoid visiting again.
             }
-            ItemKind::ForeignMod(ForeignMod { abi, safety, .. }) => {
+            ItemKind::ForeignMod(ForeignMod { abi, .. }) => {
                 let old_item = mem::replace(&mut self.extern_mod, Some(item));
                 self.visibility_not_permitted(
                     &item.vis,
                     errors::VisibilityNotPermittedNote::IndividualForeignItems,
                 );
-                if let &Safety::Unsafe(span) = safety {
-                    self.dcx().emit_err(errors::UnsafeItem { span, kind: "extern block" });
-                }
                 if abi.is_none() {
                     self.maybe_lint_missing_abi(item.span, item.id);
                 }
diff --git a/tests/ui/parser/unsafe-foreign-mod-2.rs b/tests/ui/parser/unsafe-foreign-mod-2.rs
index 77856fb6734..c0994090eff 100644
--- a/tests/ui/parser/unsafe-foreign-mod-2.rs
+++ b/tests/ui/parser/unsafe-foreign-mod-2.rs
@@ -1,8 +1,7 @@
 extern "C" unsafe {
-               //~^ ERROR expected `{`, found keyword `unsafe`
-               //~| ERROR extern block cannot be declared unsafe
+    //~^ ERROR expected `{`, found keyword `unsafe`
     unsafe fn foo();
-        //~^ ERROR functions in `extern` blocks cannot have qualifiers
+    //~^ ERROR functions in `extern` blocks cannot have qualifiers
 }
 
 fn main() {}
diff --git a/tests/ui/parser/unsafe-foreign-mod-2.stderr b/tests/ui/parser/unsafe-foreign-mod-2.stderr
index fc05184f018..620d042540e 100644
--- a/tests/ui/parser/unsafe-foreign-mod-2.stderr
+++ b/tests/ui/parser/unsafe-foreign-mod-2.stderr
@@ -4,20 +4,14 @@ error: expected `{`, found keyword `unsafe`
 LL | extern "C" unsafe {
    |            ^^^^^^ expected `{`
 
-error: extern block cannot be declared unsafe
-  --> $DIR/unsafe-foreign-mod-2.rs:1:12
-   |
-LL | extern "C" unsafe {
-   |            ^^^^^^
-
 error: functions in `extern` blocks cannot have qualifiers
-  --> $DIR/unsafe-foreign-mod-2.rs:4:5
+  --> $DIR/unsafe-foreign-mod-2.rs:3:5
    |
 LL | extern "C" unsafe {
    | ----------------- in this `extern` block
-...
+LL |
 LL |     unsafe fn foo();
    |     ^^^^^^ help: remove this qualifier
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
diff --git a/tests/ui/parser/unsafe-foreign-mod.rs b/tests/ui/parser/unsafe-foreign-mod.rs
index eab134a4a4d..26015a3c444 100644
--- a/tests/ui/parser/unsafe-foreign-mod.rs
+++ b/tests/ui/parser/unsafe-foreign-mod.rs
@@ -1,5 +1,5 @@
-unsafe extern "C" {
-    //~^ ERROR extern block cannot be declared unsafe
-}
+//@ build-pass
+
+unsafe extern "C" {}
 
 fn main() {}
diff --git a/tests/ui/parser/unsafe-foreign-mod.stderr b/tests/ui/parser/unsafe-foreign-mod.stderr
deleted file mode 100644
index 77f6e93be10..00000000000
--- a/tests/ui/parser/unsafe-foreign-mod.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: extern block cannot be declared unsafe
-  --> $DIR/unsafe-foreign-mod.rs:1:1
-   |
-LL | unsafe extern "C" {
-   | ^^^^^^
-
-error: aborting due to 1 previous error
-
diff --git a/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.rs b/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.rs
index de5947fc07b..fd2cd29fd74 100644
--- a/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.rs
+++ b/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.rs
@@ -1,10 +1,11 @@
+//@ build-pass
+
 extern "C" {
     static TEST1: i32;
     fn test1(i: i32);
 }
 
 unsafe extern "C" {
-    //~^ ERROR: extern block cannot be declared unsafe
     static TEST2: i32;
     fn test2(i: i32);
 }
diff --git a/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.stderr b/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.stderr
deleted file mode 100644
index d9585ed3db6..00000000000
--- a/tests/ui/rust-2024/unsafe-extern-blocks/extern-items.stderr
+++ /dev/null
@@ -1,8 +0,0 @@
-error: extern block cannot be declared unsafe
-  --> $DIR/extern-items.rs:6:1
-   |
-LL | unsafe extern "C" {
-   | ^^^^^^
-
-error: aborting due to 1 previous error
-