about summary refs log tree commit diff
path: root/src/tools
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-11-23 07:47:52 +0000
committerbors <bors@rust-lang.org>2024-11-23 07:47:52 +0000
commit6e1c11591fc7e98015f8e793a15c8faf0bda67f1 (patch)
treefadaf2abbac0b2db1e397ee1e4ac682d3769cf2c /src/tools
parentc49a687d636e3464cdc6599fb562c29470526b01 (diff)
parent9022bb2d6f49c328ef463d95caa4959fac63c478 (diff)
downloadrust-6e1c11591fc7e98015f8e793a15c8faf0bda67f1.tar.gz
rust-6e1c11591fc7e98015f8e793a15c8faf0bda67f1.zip
Auto merge of #132915 - veluca93:unsafe-fields, r=jswrenn
Implement the unsafe-fields RFC.

RFC: rust-lang/rfcs#3458

Tracking:

- https://github.com/rust-lang/rust/issues/132922

r? jswrenn
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/rustfmt/src/items.rs6
-rw-r--r--src/tools/rustfmt/tests/source/unsafe-field.rs16
-rw-r--r--src/tools/rustfmt/tests/target/unsafe-field.rs11
3 files changed, 30 insertions, 3 deletions
diff --git a/src/tools/rustfmt/src/items.rs b/src/tools/rustfmt/src/items.rs
index 68c481bda6e..18932587f1f 100644
--- a/src/tools/rustfmt/src/items.rs
+++ b/src/tools/rustfmt/src/items.rs
@@ -1916,15 +1916,15 @@ pub(crate) fn rewrite_struct_field_prefix(
     field: &ast::FieldDef,
 ) -> RewriteResult {
     let vis = format_visibility(context, &field.vis);
+    let safety = format_safety(field.safety);
     let type_annotation_spacing = type_annotation_spacing(context.config);
     Ok(match field.ident {
         Some(name) => format!(
-            "{}{}{}:",
-            vis,
+            "{vis}{safety}{}{}:",
             rewrite_ident(context, name),
             type_annotation_spacing.0
         ),
-        None => vis.to_string(),
+        None => format!("{vis}{safety}"),
     })
 }
 
diff --git a/src/tools/rustfmt/tests/source/unsafe-field.rs b/src/tools/rustfmt/tests/source/unsafe-field.rs
new file mode 100644
index 00000000000..35cf40a22d3
--- /dev/null
+++ b/src/tools/rustfmt/tests/source/unsafe-field.rs
@@ -0,0 +1,16 @@
+struct Foo {
+    unsafe
+    field: (),
+}
+
+enum Bar {
+    Variant {
+        unsafe
+        field: (),
+    },
+}
+
+union Baz {
+    unsafe
+    field: (),
+}
diff --git a/src/tools/rustfmt/tests/target/unsafe-field.rs b/src/tools/rustfmt/tests/target/unsafe-field.rs
new file mode 100644
index 00000000000..fc7fd3750c6
--- /dev/null
+++ b/src/tools/rustfmt/tests/target/unsafe-field.rs
@@ -0,0 +1,11 @@
+struct Foo {
+    unsafe field: (),
+}
+
+enum Bar {
+    Variant { unsafe field: () },
+}
+
+union Baz {
+    unsafe field: (),
+}