| Age | Commit message (Collapse) | Author | Lines |
|
This allows to compute the `BodyOwnerKind` from `DefKind` only, and
removes a direct dependency of some MIR queries onto HIR.
As a side effect, it also simplifies metadata, since we don't need 4
flavours of `EntryKind::*Static` any more.
|
|
|
|
|
|
This commit makes `AdtDef` use `Interned`. Much the commit is tedious
changes to introduce getter functions. The interesting changes are in
`compiler/rustc_middle/src/ty/adt.rs`.
|
|
Support GATs in Rustdoc
Implements:
1. Rendering GATs in trait definitions and impl blocks
2. Rendering GATs in types (e.g. in the return type of a function)
Fixes #92341
This is my first rustdoc PR, so I have absolutely no idea how to produce tests for this. Advice from the rustdoc team would be wonderful!
I tested locally and things looked correct:

|
|
|
|
Rustdoc ty consistency fixes
Changes to make rustdoc cleaning of ty more consistent with hir, and hopefully use it in more places.
r? `@camelid`
|
|
|
|
|
|
Particularly when constructing file paths and fully qualified paths.
This avoids a lot of allocations, speeding things up on almost all
examples.
|
|
Rollup of 8 pull requests
Successful merges:
- #92055 (Add release notes for 1.58)
- #92490 (Move crate drop-down to search results page)
- #92510 (Don't resolve blocks in foreign functions)
- #92573 (expand: Refactor InvocationCollector visitor for better code reuse)
- #92608 (rustdoc: Introduce a resolver cache for sharing data between early doc link resolution and later passes)
- #92657 (Implemented const casts of raw pointers)
- #92671 (Make `Atomic*::from_mut` return `&mut Atomic*`)
- #92673 (Remove useless collapse toggle on "all items" page)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
|
|
`module_children(_untracked)`
And `each_child_of_item` to `for_each_module_child`
|
|
resolution and later passes
|
|
|
|
|
|
Use a separate nameless `DefPathData` variant instead
|
|
|
|
|
|
|
|
rustdoc: Finish transition to computed visibility
This finishes the transition to using computed visibility in rustdoc.
|
|
rustdoc: Replace where-bounded Clean impl with simple function
This is the first step in removing the Clean impls for tuples. Either way, this
significantly simplifies the code since it reduces the amount of "trait magic".
(To clarify, I'm referring to impls like `impl Clean for (A, B)`, not Clean impls
that work on tuples in the user's program.)
cc ``@jyn514``
|
|
This change should make the code a bit clearer and easier to change.
|
|
Otherwise, rustdoc panics with messages like this:
thread 'rustc' panicked at 'assertion failed: cx.impl_trait_bounds.is_empty()',
src/librustdoc/clean/utils.rs:462:5
This ordering requirement is unrelated to the `clean_fn_decl_with_args`
refactoring, but the requirement was uncovered as part of that change.
I'm not sure if *all* of these places have the requirement, but I added
comments to them just in case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This change has two advantages:
1. It makes the possible states clearer, and it makes it impossible to
construct invalid states, such as a blanket impl that is also an auto
trait impl.
2. It shrinks the size of `Impl` a bit, since now there is only one
field, rather than two.
|
|
It can be computed on-demand in `Item::span()`.
|
|
Before, it was only measuring one callsite of `build_impl`, and it
incremented the call count even if `build_impl` returned early because
the `did` was already inlined.
Now, it measures all calls, minus calls that return early.
|
|
|
|
It should be preferred over `def_id_no_primitives()`, so it should have
a shorter name. I also put it before `def_id_no_primitives()` so that it
shows up first in the docs.
|
|
The old name was confusing because it's easy to assume that using
`def_id()` is fine, but in some situations it's incorrect. In general,
`def_id_full()` should be preferred, so `def_id_full()` should have a
shorter name. That will happen in the next commit.
|
|
In general, it should be preferred over `Type::def_id()`. See each
method's docs for more.
|
|
Now that it's only implemented for `Type`, using inherent methods
instead means that imports are no longer necessary. Also, `GetDefId` is
only meant to be used with `Type`, so it shouldn't be a trait.
|
|
Based on looking at the source code, it looks like the `did` needs to be
for an impl, not functions in an impl.
|
|
rustdoc: Cleanup various `clean` types
Cleanup various `clean` types.
|
|
By adding #![doc(cfg_hide(foobar))] to the crate attributes the cfg
#[cfg(foobar)] (and _only_ that _exact_ cfg) will not be implicitly
treated as a doc(cfg) to render a message in the documentation.
|
|
This is only active when the `doc_cfg` feature is active.
The implicit cfg can be overridden via #[doc(cfg(...))], so e.g. to
hide a #[cfg] you can use something like:
```rust
#[cfg(unix)]
#[doc(cfg(all()))]
pub struct Unix;
```
(since `all()` is always true, it is never shown in the docs)
|
|
|
|
|
|
|
|
The change to `impl Clean<Path> for hir::TraitRef<'_>` was necessary to
fix a test failure for `src/test/rustdoc/trait-alias-mention.rs`.
Here's why:
The old code path was through `impl Clean<Type> for hir::TraitRef<'_>`,
which called `resolve_type`, which in turn called `register_res`. Now,
because `PolyTrait` uses a `Path` instead of a `Type`, the impl of
`Clean<Path>` was being run, which did not call `register_res`, causing
the trait alias to not be recorded in the `external_paths` cache.
|
|
It should only ever be a `ResolvedPath`, so this (a) enforces that, and
(b) reduces the size of `Impl`.
I had to update a test because the order of the rendered auto trait impl
bounds changed. I think the order changed because rustdoc sorts auto
trait bounds using their `Debug` output.
|
|
|
|
Co-authored-by: Joshua Nelson <github@jyn.dev>
|
|
By skipping trait items whose attributes include `hidden`, we void
showing
such trait methods.
|
|
It turned out to cause (minor) perf regressions.
|