Skip to content

Commit

Permalink
Rollup merge of rust-lang#91682 - camelid:alias-layout, r=jyn514
Browse files Browse the repository at this point in the history
rustdoc: Show type layout for type aliases

Fixes rust-lang#91265.

At first, you might think, "Why not just click through to the aliased
type?" But, if a type alias instantiates all of the generic parameters
of the aliased type, then it can show layout info even though the
aliased type cannot (because we can't compute layout for generic types).
So, I think it's useful to show layout info for type aliases.

This is a followup of 78d4b453ad2e19d44011b26fc55c949bff5dba3d
(originally part of rust-lang#83501).
  • Loading branch information
matthiaskrgr committed Dec 11, 2021
2 parents f33ca93 + e36da67 commit 74f225b
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/librustdoc/html/render/print_item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -976,6 +976,7 @@ fn item_typedef(
// associated items from the aliased type (see discussion in #32077), but
// we need #14072 to make sense of the generics.
render_assoc_items(w, cx, it, def_id, AssocItemRender::All);
document_type_layout(w, cx, def_id);
}

fn item_union(w: &mut Buffer, cx: &Context<'_>, it: &clean::Item, s: &clean::Union) {
Expand Down
12 changes: 12 additions & 0 deletions src/test/rustdoc/type-layout.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,18 @@ pub struct GenericLifetimes<'a>(&'a str);
// @has - '(unsized)'
pub struct Unsized([u8]);

// @has type_layout/type.TypeAlias.html 'Size: '
// @has - ' bytes'
pub type TypeAlias = X;

// @has type_layout/type.GenericTypeAlias.html 'Size: '
// @has - '8 bytes'
pub type GenericTypeAlias = (Generic<(u32, ())>, Generic<u32>);

// Regression test for the rustdoc equivalent of #85103.
// @has type_layout/type.Edges.html 'Encountered an error during type layout; the type failed to be normalized.'
pub type Edges<'a, E> = std::borrow::Cow<'a, [E]>;

// @!has type_layout/trait.MyTrait.html 'Size: '
pub trait MyTrait {}

Expand Down

0 comments on commit 74f225b

Please sign in to comment.