Skip to content

Commit

Permalink
Rollup merge of rust-lang#109937 - compiler-errors:rustdoc-rpit-cant-…
Browse files Browse the repository at this point in the history
…be-documented, r=GuillaumeGomez

Don't collect return-position impl traits for documentation

rust-lang#104889 modified the rustdoc ast collection step to use a HIR visitor, which more thoroughly walks the HIR tree. that means that we're going to encounter inner items (incl return-position impl traits and async fn opaque futures) that are not possible to document.

FIxes (but does not close due to being a beta regression) rust-lang#109931

r? `@GuillaumeGomez`
  • Loading branch information
compiler-errors authored Apr 4, 2023
2 parents 72e535e + 72ef85d commit d984671
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 1 deletion.
10 changes: 9 additions & 1 deletion src/librustdoc/visit_ast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -421,12 +421,20 @@ impl<'a, 'tcx> RustdocVisitor<'a, 'tcx> {
| hir::ItemKind::Struct(..)
| hir::ItemKind::Union(..)
| hir::ItemKind::TyAlias(..)
| hir::ItemKind::OpaqueTy(..)
| hir::ItemKind::OpaqueTy(hir::OpaqueTy {
origin: hir::OpaqueTyOrigin::TyAlias, ..
})
| hir::ItemKind::Static(..)
| hir::ItemKind::Trait(..)
| hir::ItemKind::TraitAlias(..) => {
self.add_to_current_mod(item, renamed, import_id);
}
hir::ItemKind::OpaqueTy(hir::OpaqueTy {
origin: hir::OpaqueTyOrigin::AsyncFn(_) | hir::OpaqueTyOrigin::FnReturn(_),
..
}) => {
// return-position impl traits are never nameable, and should never be documented.
}
hir::ItemKind::Const(..) => {
// Underscore constants do not correspond to a nameable item and
// so are never useful in documentation.
Expand Down
15 changes: 15 additions & 0 deletions tests/rustdoc/async-fn-opaque-item.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// compile-flags: --document-private-items --crate-type=lib
// edition: 2021

// Issue 109931 -- test against accidentally documenting the `impl Future`
// that comes from an async fn desugaring.

// Check that we don't document an unnamed opaque type
// @!has async_fn_opaque_item/opaque..html

// Checking there is only a "Functions" header and no "Opaque types".
// @has async_fn_opaque_item/index.html
// @count - '//*[@class="small-section-header"]' 1
// @has - '//*[@class="small-section-header"]' 'Functions'

pub async fn test() {}

0 comments on commit d984671

Please sign in to comment.