From 4e1b3ab0e7965b8cce016f1ca01cd2df37e11635 Mon Sep 17 00:00:00 2001 From: Michael Goulet Date: Thu, 24 Oct 2024 00:41:27 +0000 Subject: [PATCH] Print safety correctly in extern static items --- compiler/rustc_ast_pretty/src/pprust/state/item.rs | 7 ++++++- tests/ui/unpretty/extern-static.rs | 6 ++++++ tests/ui/unpretty/extern-static.stdout | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 tests/ui/unpretty/extern-static.rs create mode 100644 tests/ui/unpretty/extern-static.stdout 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 @@ fn print_foreign_item(&mut self, item: &ast::ForeignItem) { 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 @@ fn print_foreign_item(&mut self, item: &ast::ForeignItem) { ty, expr.as_deref(), vis, + *safety, ast::Defaultness::Final, ) } @@ -84,10 +84,12 @@ fn print_item_const( 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 @@ pub(crate) fn print_item(&mut self, item: &ast::Item) { ty, body.as_deref(), &item.vis, + ast::Safety::Default, ast::Defaultness::Final, ); } @@ -192,6 +195,7 @@ pub(crate) fn print_item(&mut self, item: &ast::Item) { ty, expr.as_deref(), &item.vis, + ast::Safety::Default, *defaultness, ); } @@ -549,6 +553,7 @@ fn print_assoc_item(&mut self, item: &ast::AssocItem) { 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: (); +}