about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-01-06 23:15:16 +0100
committerGitHub <noreply@github.com>2022-01-06 23:15:16 +0100
commit1a8f69826c75a65acb018a183610e4b1cb32c46d (patch)
treeea5db60f5bc134d89e3ce5c5961b4ca4d7cd7711
parent0604cf5fd8aacb5eee6a627066e11ca3b5f48cf2 (diff)
parenta24e238bdf07b2e59f5d3af376647742a6d7f05a (diff)
downloadrust-1a8f69826c75a65acb018a183610e4b1cb32c46d.tar.gz
rust-1a8f69826c75a65acb018a183610e4b1cb32c46d.zip
Rollup merge of #92417 - dtolnay:printimpl, r=jackh726
Fix spacing and ordering of words in pretty printed Impl

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

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

fn main() {
    println!("{}", repro!(impl<T> Struct<T> {}));
    println!("{}", repro!(impl<T> const Trait for T {}));
}
```

Before:&ensp;`impl <T> Struct<T> {}`
After:&ensp;`impl<T> Struct<T> {}`

Before:&ensp;`impl const <T> Trait for T {}` :crying_cat_face:
After:&ensp;`impl<T> const Trait for T {}`
-rw-r--r--compiler/rustc_ast_pretty/src/pprust/state.rs9
-rw-r--r--src/test/ui/macros/stringify.rs8
2 files changed, 13 insertions, 4 deletions
diff --git a/compiler/rustc_ast_pretty/src/pprust/state.rs b/compiler/rustc_ast_pretty/src/pprust/state.rs
index 91fa4595241..3267945f427 100644
--- a/compiler/rustc_ast_pretty/src/pprust/state.rs
+++ b/compiler/rustc_ast_pretty/src/pprust/state.rs
@@ -1287,14 +1287,17 @@ impl<'a> State<'a> {
                 self.print_visibility(&item.vis);
                 self.print_defaultness(defaultness);
                 self.print_unsafety(unsafety);
-                self.word_nbsp("impl");
-                self.print_constness(constness);
+                self.word("impl");
 
-                if !generics.params.is_empty() {
+                if generics.params.is_empty() {
+                    self.nbsp();
+                } else {
                     self.print_generic_params(&generics.params);
                     self.space();
                 }
 
+                self.print_constness(constness);
+
                 if let ast::ImplPolarity::Negative(_) = polarity {
                     self.word("!");
                 }
diff --git a/src/test/ui/macros/stringify.rs b/src/test/ui/macros/stringify.rs
index 90983f35a5e..820dcdb9394 100644
--- a/src/test/ui/macros/stringify.rs
+++ b/src/test/ui/macros/stringify.rs
@@ -603,7 +603,7 @@ fn test_item() {
         stringify_item!(
             impl<T> Struct<T> {}
         ),
-        "impl <T> Struct<T> {}", // FIXME
+        "impl<T> Struct<T> {}",
     );
     assert_eq!(
         stringify_item!(
@@ -613,6 +613,12 @@ fn test_item() {
     );
     assert_eq!(
         stringify_item!(
+            impl<T> const Trait for T {}
+        ),
+        "impl<T> const Trait for T {}",
+    );
+    assert_eq!(
+        stringify_item!(
             impl ~const Struct {}
         ),
         "impl Struct {}", // FIXME