format safety keywords on static items
This includes both `ast::StaticItem` and `ast::StaticForeignItem`. `safety` was added to both `ast::StaticItem` and `ast::SaticForeignItem` in https://github.com/rust-lang/rust/pull/124482.
This commit is contained in:
parent
3ffd7d46a9
commit
30cdc2b3e9
17
src/items.rs
17
src/items.rs
@ -1915,6 +1915,7 @@ pub(crate) fn rewrite_struct_field(
|
||||
|
||||
pub(crate) struct StaticParts<'a> {
|
||||
prefix: &'a str,
|
||||
safety: ast::Safety,
|
||||
vis: &'a ast::Visibility,
|
||||
ident: symbol::Ident,
|
||||
ty: &'a ast::Ty,
|
||||
@ -1926,11 +1927,12 @@ pub(crate) struct StaticParts<'a> {
|
||||
|
||||
impl<'a> StaticParts<'a> {
|
||||
pub(crate) fn from_item(item: &'a ast::Item) -> Self {
|
||||
let (defaultness, prefix, ty, mutability, expr) = match &item.kind {
|
||||
ast::ItemKind::Static(s) => (None, "static", &s.ty, s.mutability, &s.expr),
|
||||
let (defaultness, prefix, safety, ty, mutability, expr) = match &item.kind {
|
||||
ast::ItemKind::Static(s) => (None, "static", s.safety, &s.ty, s.mutability, &s.expr),
|
||||
ast::ItemKind::Const(c) => (
|
||||
Some(c.defaultness),
|
||||
"const",
|
||||
ast::Safety::Default,
|
||||
&c.ty,
|
||||
ast::Mutability::Not,
|
||||
&c.expr,
|
||||
@ -1939,6 +1941,7 @@ impl<'a> StaticParts<'a> {
|
||||
};
|
||||
StaticParts {
|
||||
prefix,
|
||||
safety,
|
||||
vis: &item.vis,
|
||||
ident: item.ident,
|
||||
ty,
|
||||
@ -1956,6 +1959,7 @@ impl<'a> StaticParts<'a> {
|
||||
};
|
||||
StaticParts {
|
||||
prefix: "const",
|
||||
safety: ast::Safety::Default,
|
||||
vis: &ti.vis,
|
||||
ident: ti.ident,
|
||||
ty,
|
||||
@ -1973,6 +1977,7 @@ impl<'a> StaticParts<'a> {
|
||||
};
|
||||
StaticParts {
|
||||
prefix: "const",
|
||||
safety: ast::Safety::Default,
|
||||
vis: &ii.vis,
|
||||
ident: ii.ident,
|
||||
ty,
|
||||
@ -1989,11 +1994,13 @@ fn rewrite_static(
|
||||
static_parts: &StaticParts<'_>,
|
||||
offset: Indent,
|
||||
) -> Option<String> {
|
||||
println!("rewriting static");
|
||||
let colon = colon_spaces(context.config);
|
||||
let mut prefix = format!(
|
||||
"{}{}{} {}{}{}",
|
||||
"{}{}{}{} {}{}{}",
|
||||
format_visibility(context, static_parts.vis),
|
||||
static_parts.defaultness.map_or("", format_defaultness),
|
||||
format_safety(static_parts.safety),
|
||||
static_parts.prefix,
|
||||
format_mutability(static_parts.mutability),
|
||||
rewrite_ident(context, static_parts.ident),
|
||||
@ -3338,10 +3345,12 @@ impl Rewrite for ast::ForeignItem {
|
||||
// FIXME(#21): we're dropping potential comments in between the
|
||||
// function kw here.
|
||||
let vis = format_visibility(context, &self.vis);
|
||||
let safety = format_safety(static_foreign_item.safety);
|
||||
let mut_str = format_mutability(static_foreign_item.mutability);
|
||||
let prefix = format!(
|
||||
"{}static {}{}:",
|
||||
"{}{}static {}{}:",
|
||||
vis,
|
||||
safety,
|
||||
mut_str,
|
||||
rewrite_ident(context, self.ident)
|
||||
);
|
||||
|
18
tests/target/unsafe_extern_blocks.rs
Normal file
18
tests/target/unsafe_extern_blocks.rs
Normal file
@ -0,0 +1,18 @@
|
||||
// See tracking issue for unsafe_extern_blocks
|
||||
// https://github.com/rust-lang/rust/issues/123743
|
||||
|
||||
#![feature(unsafe_extern_blocks)]
|
||||
|
||||
safe static TEST1: i32;
|
||||
|
||||
unsafe extern "C" {
|
||||
safe static TEST2: i32;
|
||||
unsafe static TEST3: i32;
|
||||
static TEST4: i32;
|
||||
|
||||
pub safe static TEST5: i32;
|
||||
pub unsafe static TEST6: i32;
|
||||
pub static TEST7: i32;
|
||||
|
||||
safe fn test1(i: i32);
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user