Rollup merge of #92487 - dtolnay:traitalias, r=matthewjasper
Fix unclosed boxes in pretty printing of TraitAlias
This was causing trait aliases to not even render at all in stringified / pretty printed output.
```rust
macro_rules! repro {
($item:item) => {
stringify!($item)
};
}
fn main() {
println!("{:?}", repro!(pub trait Trait<T> = Sized where T: 'a;));
}
```
Before: `""`
After: `"pub trait Trait<T> = Sized where T: 'a;"`
The fix is copied from how `head`/`end` for `ItemKind::Use`, `ItemKind::ExternCrate`, and `ItemKind::Mod` are all done in the pretty printer:
dd3ac41495/compiler/rustc_ast_pretty/src/pprust/state.rs (L1178-L1184)
This commit is contained in:
commit
9527533408
@ -1357,9 +1357,7 @@ fn print_associated_type(
|
||||
self.bclose(item.span, empty);
|
||||
}
|
||||
ast::ItemKind::TraitAlias(ref generics, ref bounds) => {
|
||||
self.head("");
|
||||
self.print_visibility(&item.vis);
|
||||
self.word_nbsp("trait");
|
||||
self.head(visibility_qualified(&item.vis, "trait"));
|
||||
self.print_ident(item.ident);
|
||||
self.print_generic_params(&generics.params);
|
||||
let mut real_bounds = Vec::with_capacity(bounds.len());
|
||||
@ -1377,6 +1375,8 @@ fn print_associated_type(
|
||||
self.print_type_bounds("=", &real_bounds);
|
||||
self.print_where_clause(&generics.where_clause);
|
||||
self.word(";");
|
||||
self.end(); // end inner head-block
|
||||
self.end(); // end outer head-block
|
||||
}
|
||||
ast::ItemKind::MacCall(ref mac) => {
|
||||
self.print_mac(mac);
|
||||
|
@ -705,9 +705,7 @@ pub fn print_item(&mut self, item: &hir::Item<'_>) {
|
||||
self.bclose(item.span);
|
||||
}
|
||||
hir::ItemKind::TraitAlias(ref generics, ref bounds) => {
|
||||
self.head("");
|
||||
self.print_visibility(&item.vis);
|
||||
self.word_nbsp("trait");
|
||||
self.head(visibility_qualified(&item.vis, "trait"));
|
||||
self.print_ident(item.ident);
|
||||
self.print_generic_params(&generics.params);
|
||||
let mut real_bounds = Vec::with_capacity(bounds.len());
|
||||
@ -725,6 +723,8 @@ pub fn print_item(&mut self, item: &hir::Item<'_>) {
|
||||
self.print_bounds("=", real_bounds);
|
||||
self.print_where_clause(&generics.where_clause);
|
||||
self.word(";");
|
||||
self.end(); // end inner head-block
|
||||
self.end(); // end outer head-block
|
||||
}
|
||||
}
|
||||
self.ann.post(self, AnnNode::Item(item))
|
||||
|
@ -589,7 +589,7 @@ trait Trait<'a>: Sized
|
||||
stringify_item!(
|
||||
pub trait Trait<T> = Sized where T: 'a;
|
||||
),
|
||||
"", // FIXME
|
||||
"pub trait Trait<T> = Sized where T: 'a;",
|
||||
);
|
||||
|
||||
// ItemKind::Impl
|
||||
|
Loading…
Reference in New Issue
Block a user