about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-10-24 00:41:27 +0000
committerMichael Goulet <michael@errs.io>2024-10-24 00:41:27 +0000
commit4e1b3ab0e7965b8cce016f1ca01cd2df37e11635 (patch)
treed6077bca531e61ec50ed7e2d437ebe1854b09699
parent4f2f477fded0a47b21ed3f6aeddeafa5db8bf518 (diff)
downloadrust-4e1b3ab0e7965b8cce016f1ca01cd2df37e11635.tar.gz
rust-4e1b3ab0e7965b8cce016f1ca01cd2df37e11635.zip
Print safety correctly in extern static items
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/state/item.rs7
-rw-r--r--tests/ui/unpretty/extern-static.rs6
-rw-r--r--tests/ui/unpretty/extern-static.stdout6
3 files changed, 18 insertions, 1 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/state/item.rs b/compiler/rustc_ast_pretty/src/pprust/state/item.rs
index 8217b6df5b4..8279c66836c 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state/item.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state/item.rs
@@ -38,7 +38,6 @@ impl<'a> State<'a> {
                 self.print_fn_full(sig, ident, generics, vis, *defaultness, body.as_deref(), attrs);
             }
             ast::ForeignItemKind::Static(box ast::StaticItem { ty, mutability, expr, safety }) => {
-                self.print_safety(*safety);
                 self.print_item_const(
                     ident,
                     Some(*mutability),
@@ -46,6 +45,7 @@ impl<'a> State<'a> {
                     ty,
                     expr.as_deref(),
                     vis,
+                    *safety,
                     ast::Defaultness::Final,
                 )
             }
@@ -84,10 +84,12 @@ impl<'a> State<'a> {
         ty: &ast::Ty,
         body: Option<&ast::Expr>,
         vis: &ast::Visibility,
+        safety: ast::Safety,
         defaultness: ast::Defaultness,
     ) {
         self.head("");
         self.print_visibility(vis);
+        self.print_safety(safety);
         self.print_defaultness(defaultness);
         let leading = match mutbl {
             None => "const",
@@ -181,6 +183,7 @@ impl<'a> State<'a> {
                     ty,
                     body.as_deref(),
                     &item.vis,
+                    ast::Safety::Default,
                     ast::Defaultness::Final,
                 );
             }
@@ -192,6 +195,7 @@ impl<'a> State<'a> {
                     ty,
                     expr.as_deref(),
                     &item.vis,
+                    ast::Safety::Default,
                     *defaultness,
                 );
             }
@@ -549,6 +553,7 @@ impl<'a> State<'a> {
                     ty,
                     expr.as_deref(),
                     vis,
+                    ast::Safety::Default,
                     *defaultness,
                 );
             }
diff --git a/tests/ui/unpretty/extern-static.rs b/tests/ui/unpretty/extern-static.rs
new file mode 100644
index 00000000000..fbd605b12ca
--- /dev/null
+++ b/tests/ui/unpretty/extern-static.rs
@@ -0,0 +1,6 @@
+//@ compile-flags: -Zunpretty=normal
+//@ check-pass
+
+unsafe extern "C" {
+    pub unsafe static STATIC: ();
+}
diff --git a/tests/ui/unpretty/extern-static.stdout b/tests/ui/unpretty/extern-static.stdout
new file mode 100644
index 00000000000..fbd605b12ca
--- /dev/null
+++ b/tests/ui/unpretty/extern-static.stdout
@@ -0,0 +1,6 @@
+//@ compile-flags: -Zunpretty=normal
+//@ check-pass
+
+unsafe extern "C" {
+    pub unsafe static STATIC: ();
+}