about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2021-12-30 13:12:34 +0100
committerGitHub <noreply@github.com>2021-12-30 13:12:34 +0100
commite810487b4de6e5122b802fea03f4b10c79d32467 (patch)
treec8e593f5330c24499b0093e4e7268c39f708c1c8
parentb9f7197ab35f79b4df1f60104b9d8af9e77bb566 (diff)
parentb62163515ad109dad05985b958c98a001dbcd89b (diff)
downloadrust-e810487b4de6e5122b802fea03f4b10c79d32467.tar.gz
rust-e810487b4de6e5122b802fea03f4b10c79d32467.zip
Rollup merge of #92414 - dtolnay:constnoexpr, r=oli-obk
Fix spacing of pretty printed const item without body

Follow-up to #92238 fixing one of the FIXMEs.

```rust
macro_rules! repro {
    ($item:item) => {
        stringify!($item)
    };
}

fn main() {
    println!("{}", repro!(extern "C" { static S: i32; }));
}
```

Before:&ensp;`extern "C" { static S: i32 ; }`
After:&ensp;`extern "C" { static S: i32; }`
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/state.rs4
-rw-r--r--src/test/pretty/nested-item-vis-defaultness.rs20
-rw-r--r--src/test/ui/macros/stringify.rs6
3 files changed, 16 insertions, 14 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs
index f0c1d017326..0d5ce07c6ca 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state.rs
@@ -1116,7 +1116,9 @@ impl<'a> State<'a> {
         self.print_ident(ident);
         self.word_space(":");
         self.print_type(ty);
-        self.space();
+        if body.is_some() {
+            self.space();
+        }
         self.end(); // end the head-ibox
         if let Some(body) = body {
             self.word_space("=");
diff --git a/src/test/pretty/nested-item-vis-defaultness.rs b/src/test/pretty/nested-item-vis-defaultness.rs
index f46c0e3f1bc..b094ba577db 100644
--- a/src/test/pretty/nested-item-vis-defaultness.rs
+++ b/src/test/pretty/nested-item-vis-defaultness.rs
@@ -6,42 +6,42 @@ fn main() {}
 
 #[cfg(FALSE)]
 extern "C" {
-    static X: u8 ;
+    static X: u8;
     type X;
     fn foo();
-    pub static X: u8 ;
+    pub static X: u8;
     pub type X;
     pub fn foo();
 }
 
 #[cfg(FALSE)]
 trait T {
-    const X: u8 ;
+    const X: u8;
     type X;
     fn foo();
-    default const X: u8 ;
+    default const X: u8;
     default type X;
     default fn foo();
-    pub const X: u8 ;
+    pub const X: u8;
     pub type X;
     pub fn foo();
-    pub default const X: u8 ;
+    pub default const X: u8;
     pub default type X;
     pub default fn foo();
 }
 
 #[cfg(FALSE)]
 impl T for S {
-    const X: u8 ;
+    const X: u8;
     type X;
     fn foo();
-    default const X: u8 ;
+    default const X: u8;
     default type X;
     default fn foo();
-    pub const X: u8 ;
+    pub const X: u8;
     pub type X;
     pub fn foo();
-    pub default const X: u8 ;
+    pub default const X: u8;
     pub default type X;
     pub default fn foo();
 }
diff --git a/src/test/ui/macros/stringify.rs b/src/test/ui/macros/stringify.rs
index 90bc7dc1da2..7d1c05a85bc 100644
--- a/src/test/ui/macros/stringify.rs
+++ b/src/test/ui/macros/stringify.rs
@@ -382,13 +382,13 @@ fn test_item() {
         stringify_item!(
             static S: ();
         ),
-        "static S: () ;", // FIXME
+        "static S: ();",
     );
     assert_eq!(
         stringify_item!(
             static mut S: ();
         ),
-        "static mut S: () ;",
+        "static mut S: ();",
     );
 
     // ItemKind::Const
@@ -402,7 +402,7 @@ fn test_item() {
         stringify_item!(
             const S: ();
         ),
-        "const S: () ;", // FIXME
+        "const S: ();",
     );
 
     // ItemKind::Fn