Commit Graph

1799 Commits

Author SHA1 Message Date
Noah Lev
c39ef72d74 Remove a Clean impl for a tuple (5) 2021-12-03 14:05:42 -08:00
Noah Lev
9b51072309 Remove a Clean impl for a tuple (4) 2021-12-03 14:05:42 -08:00
Noah Lev
f9ed012000 Clean up definition of clean_ty_generics a bit 2021-12-03 14:05:41 -08:00
Noah Lev
927a5e393c Remove a Clean impl for a tuple (3) 2021-12-03 14:05:41 -08:00
Noah Lev
63d434a363 Remove a Clean impl for a tuple (2) 2021-12-03 14:05:41 -08:00
Noah Lev
2fbdc79ae6 Remove a Clean impl for a tuple (1)
This commit removes the first of nine Clean impls on tuples, converting
it to a function instead.

The fact that these are impls causes several problems:

  1. They are nameless, so it's unclear what they do.

  2. It's hard to find where they're used apart from removing them and
     seeing what errors occur (this applies to all Clean impls, not just
     the tuple ones).

  3. Rustc doesn't currently warn when impls are unused, so dead code
     can accumulate easily (all Clean impls).

  4. Their bodies often use tuple field indexing syntax (e.g., `self.1`)
     to refer to their "arguments", which makes reading the code more
     difficult.

As I noted, some of these problems apply to all Clean impls, but even
those problems are exacerbated by the tuple impls since they make
general understanding of the code harder.

Converting the impls to functions solves all four of these problems.
2021-12-03 13:58:45 -08:00
Noah Lev
f2ecfc7e2e rustdoc: Rename bounds to bindings where appropriate 2021-12-03 13:18:52 -08:00
Matthias Krüger
444635df25
Rollup merge of #89954 - GuillaumeGomez:legacy-const-generic-doc, r=Amanieu
Fix legacy_const_generic doc arguments display

Fixes https://github.com/rust-lang/rust/issues/83167.

cc ``@Amanieu``
2021-12-02 22:16:08 +01:00
Guillaume Gomez
bd8d7e4a45 Transform const generics if the function uses rustc_legacy_const_generics 2021-12-02 11:27:01 +01:00
Joshua Nelson
18ddf8d636 Use try_normalize_erasing_regions instead of a custom infer context
This unfortunately is still giving an unsilenceable overflow error :(
2021-12-01 19:22:24 +00:00
Camille GILLOT
5fb4648757 Take a LocalDefId in expect_*item. 2021-11-28 21:09:45 +01:00
Noah Lev
79c718f1d5 Rename Type::ResolvedPath to Type::Path
At last! The new name is shorter, simpler, and consistent with
`hir::Ty`.
2021-11-26 12:40:27 -08:00
Noah Lev
d81deb33fa Stop re-exporting Type::ResolvedPath
I would like to rename it to `Type::Path`, but then it can't be
re-exported since the name would conflict with the `Path` struct.
Usually enum variants are referred to using their qualified names in
Rust (and parts of rustdoc already do that with `clean::Type`), so this
is also more consistent with the language.
2021-11-25 12:08:05 -08:00
Noah Lev
8adb0b6d6c Clean up clean re-exports
This will allow re-exporting only certain enum variants.
2021-11-25 12:08:05 -08:00
Noah Lev
43651125ee Remove ResolvedPath.did 2021-11-24 12:06:47 -08:00
bors
2e055d92e0 Auto merge of #91094 - inquisitivecrystal:rustdoc-top-mod, r=jyn514
Avoid documenting top-level private imports

PR #88447 aimed to make rustdoc's `--document-private-items` mode only document imports that are visible outside the importing module. Unfortunately, I inadvertently set things up so that imports at the crate top-level are always documented, regardless of their visibility. This behavior was unintended and is [not desirable](https://github.com/rust-lang/rust/issues/90865#issuecomment-971172649).

This PR treats top-level imports as never being visible outside their parent module. In practice, the only way a top-level import can be visible externally is if it's fully public, and there's a seperate check for that.

It's worth calling attention to the fact that this change means that `pub(crate)` imports will be visible in lower level modules, but not at the top-level. This is because, at the top level of the crate, `pub(crate)` means the same thing as `pub(self)`.

It turned out that there were existing tests checking for the only behavior, which I didn't notice at the time of my previous PR. I have updated them to check for the new behavior and substantially extended them to handle differences between the top-level module and lower level modules. I may have gone overboard, so please tell me if there's anything I should cut.

r? `@jyn514`

Fixes #90865.
2021-11-23 03:13:26 +00:00
bors
49d42325d0 Auto merge of #90844 - camelid:cleanup-vis, r=jyn514
rustdoc: Finish transition to computed visibility

This finishes the transition to using computed visibility in rustdoc.
2021-11-21 13:26:31 +00:00
Yuki Okushi
08c1639fd9
Rollup merge of #91002 - petrochenkov:nosynth, r=davidtwco
rustc: Remove `#[rustc_synthetic]`

This function parameter attribute was introduced in https://github.com/rust-lang/rust/pull/44866 as an intermediate step in implementing `impl Trait`, it's not necessary or used anywhere by itself.

Noticed while reviewing https://github.com/rust-lang/rust/pull/90947.
2021-11-19 02:22:59 +09:00
Yuki Okushi
47c1bd1bcc
Rollup merge of #90750 - camelid:rm-tuple-impls-1, r=jyn514
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``
2021-11-19 02:22:57 +09:00
Vadim Petrochenkov
91e02177a1 rustc: Remove #[rustc_synthetic]
This function parameter attribute was introduced in https://github.com/rust-lang/rust/pull/44866 as an intermediate step in implementing `impl Trait`, it's not necessary or used anywhere by itself.
2021-11-18 14:32:29 +08:00
Noah Lev
64d69977a0 rustdoc: Cleanup visibility cleaning some more
* Remove outdated comment
* Remove duplicated code
* Extract helper function
2021-11-17 10:53:01 -05:00
Noah Lev
94ae60a2a3 rustdoc: Remove Clean impl for hir::Visibility
This should be the last bit of the transition to computed visibility,
rather than syntactic visibility.
2021-11-17 10:52:07 -05:00
Noah Lev
7a7698aa1b rustdoc: Clean Visibility outside of display_macro_source
This change should make the code a bit clearer and easier to change.
2021-11-17 10:52:06 -05:00
inquisitivecrystal
7b3978ec3e Avoid documenting top-level private imports 2021-11-16 21:05:08 -08:00
hi-rustin
e7a20c96b1 Delete rustdoc::doctree
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2021-11-13 21:50:13 +08:00
Noah Lev
c20ee3e4d6 Add comments ensuring that generics are cleaned before args
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.
2021-11-09 21:10:42 -08:00
Noah Lev
c615b11aa7 Remove unnecessary reborrows 2021-11-09 20:06:33 -08:00
Noah Lev
cf6a73c1a4 Remove where bound from clean_fn_decl_with_args
Basically, this entails moving the arguments cleaning to the call site.

I extracted several local variables because:

1. It makes the code easier to read and understand.

2. If I hadn't, the extra `clean()` calls would have caused complicated
   tuples to be split across several lines.

3. I couldn't just extract local variables for `args` because then the
   arguments would be cleaned *before* the generics, while rustdoc expects
   them to be cleaned *after*. Only extracting `args` caused panics like
   this:

       thread 'rustc' panicked at 'assertion failed: cx.impl_trait_bounds.is_empty()',
       src/librustdoc/clean/utils.rs:462:5

   Extracting variables makes the control flow -- and the required
   order of cleaning -- more explicit.
2021-11-09 20:05:42 -08:00
inquisitivecrystal
6622376ff6 Use computed visibility in rustdoc 2021-11-09 19:10:34 -08:00
Noah Lev
169b84fee3 Replace where-bounded Clean impl with function
This was the only Clean impl I found with `where` bounds.

This impl was doubly-confusing: it was implemented on a tuple and it
was polymorphic. Combined, this caused a "spooky action at a distance"
effect to make the code very confusing.
2021-11-09 18:09:09 -08:00
bors
515472757d Auto merge of #90443 - camelid:rustdoc-subst, r=GuillaumeGomez
Merge `DocContext.{ty,lt,ct}_substs` into one map

It should be impossible to have more than one entry with a particular
key across the three maps, so they should be one map. In addition to
making it impossible for multiple entries to exist, this should improve
memory usage since now only one map is allocated on the stack and heap.

r? `@GuillaumeGomez`
2021-11-08 21:37:59 +00:00
Noah Lev
7c7bf451eb Remove Clean impl for &T 2021-11-07 09:23:33 -08:00
Noah Lev
d07997702f Remove unused Clean impl for Rc<T> 2021-11-07 09:20:35 -08:00
Noah Lev
72b0a57244 Remove Clean impl for Vec<T> 2021-11-07 09:19:58 -08:00
Noah Lev
efe4d7ca7e Remove Clean impl for IndexVec<T> 2021-11-07 09:19:54 -08:00
Noah Lev
750568d49c Remove Clean impl for Option<T> 2021-11-07 09:06:50 -08:00
Noah Lev
120ef36307 rustdoc: Use ty::ImplPolarity instead of custom enum 2021-11-07 08:57:33 -08:00
Noah Lev
543aea6c03 Use an enum to record polarity in clean::Impl 2021-11-07 08:52:28 -08:00
Noah Lev
7b7023cb72 rustdoc: Refactor Impl.{synthetic,blanket_impl} into enum
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.
2021-11-07 08:41:18 -08:00
Noah Lev
c32ee54380 rustdoc: Remove redundant Impl.span field
It can be computed on-demand in `Item::span()`.
2021-11-06 22:48:29 -07:00
Matthias Krüger
952fea793e rustdoc: clippy::complexity fixes 2021-11-05 22:06:17 +01:00
Noah Lev
5a77f3006f Merge DocContext.{ty,lt,ct}_substs into one map
It should be impossible to have more than one entry with a particular
key across the three maps, so they should be one map. In addition to
making it impossible for multiple entries to exist, this should improve
memory usage since now only one map is allocated on the stack and heap.
2021-10-31 10:40:18 -07:00
Noah Lev
bbc58e8ccc Reduce rightward drift 2021-10-31 10:19:18 -07:00
Noah Lev
eeb2a6203b Extract function for expanding private type aliases 2021-10-31 10:19:18 -07:00
Matthias Krüger
e3eebfeea6
Rollup merge of #90154 - camelid:remove-getdefid, r=jyn514
rustdoc: Remove `GetDefId`

See the individual commit messages for details.

r? `@jyn514`
2021-10-27 06:11:35 +02:00
Guillaume Gomez
4614ca4541 Fix clippy lints in librustdoc 2021-10-25 11:30:09 +02:00
Matthias Krüger
dcf9242795
Rollup merge of #85833 - willcrichton:example-analyzer, r=jyn514
Scrape code examples from examples/ directory for Rustdoc

Adds support for the functionality described in https://github.com/rust-lang/rfcs/pull/3123

Matching changes to Cargo are here: https://github.com/rust-lang/cargo/pull/9525

Live demo here: https://willcrichton.net/example-analyzer/warp/trait.Filter.html#method.and
2021-10-23 14:58:39 +02:00
Noah Lev
f93cf66507 Rename Type::def_id_full() to Type::def_id()
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.
2021-10-22 13:07:43 -07:00
Noah Lev
0853c33c3b Use def_id_full() where easily possible
In general, it should be preferred over `Type::def_id()`. See each
method's docs for more.
2021-10-22 13:07:43 -07:00
Will Crichton
d1c29c696e Revert def_id addition from clean::Function, add test for
scrape-examples options
2021-10-22 12:46:45 -07:00
Noah Lev
90986897c5 rustdoc: Box ty field of GenericParamDefKind::Const
This cuts the size of `GenericParamDef` in half, from 104 bytes to 56
bytes. I think the extra indirection should be worth the size savings.
2021-10-18 10:16:01 -07:00
Noah Lev
9b52a633e4 rustdoc: Box default fields of GenericParamDefKind
This reduces the size of `GenericParamDef` a bit, but some of the size
savings are hidden because of the `ty` field of the `Const` variant.
I will box that in the next commit.
2021-10-18 10:14:59 -07:00
bors
a8f2463c68 Auto merge of #88379 - camelid:cleanup-clean, r=jyn514
rustdoc: Cleanup various `clean` types

Cleanup various `clean` types.
2021-10-09 19:05:08 +00:00
Will Crichton
5c05b3c03d Add target crates as inputs to reduce size of intermediates
Add tests for module-path remapping and scrape example options

Find all crates with a given name
2021-10-06 19:45:25 -07:00
Will Crichton
829b1a9dd9 Incorporate jyn's feedback
* Move call location logic from function constructor to rendering
* Fix issue with macro spans in scraping examples
* Clean up example loading logic

Documentation / newtype for DecorationInfo

Fix line number display

Serialize edition of call site, other small cleanup
2021-10-06 19:45:23 -07:00
Will Crichton
4b3f82ad03 Add updated support for example-analyzer
Move rendering of examples into

Finalize design

Cleanup, rename found -> scraped

Softer yellow

Clean up dead code

Document scrape_examples

More simplification and documentation

Remove extra css

Test
2021-10-06 19:44:47 -07:00
Wim Looman
18fdd816b7 Allow adding a set of cfg's to hide from being implicitly doc(cfg)'d
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.
2021-10-05 18:04:15 +02:00
Wim Looman
10cdbd847f Make cfg implicitly imply doc(cfg)
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)
2021-10-05 17:25:44 +02:00
Noah Lev
f359b316df Fix a place that used the old Path representation 2021-10-03 12:29:17 -07:00
Noah Lev
962e451443 Replace all uses of path.res.def_id() with path.def_id() 2021-10-02 15:57:57 -07:00
Manish Goregaokar
743e842afb
Rollup merge of #88963 - fee1-dead:const-iterator, r=oli-obk
Coerce const FnDefs to implement const Fn traits

You can now pass a FnDef to a function expecting `F` where `F: ~const FnTrait`.

r? ``@oli-obk``

``@rustbot`` label T-compiler F-const_trait_impl
2021-10-01 14:46:48 -07:00
Noah Lev
a83112fe3e Remove temporary GetDefId impl for Path 2021-09-30 13:52:58 -07:00
Noah Lev
4128a3dc1f Remove unused Clean impl 2021-09-30 13:52:58 -07:00
Noah Lev
e20bb157a2 Remove unnecessary Box in Type::QPath 2021-09-30 13:52:58 -07:00
Noah Lev
b8351c30e4 Avoid unnecessary matches by changing Clean impl 2021-09-30 13:52:58 -07:00
Noah Lev
91d3b7201e Use Path instead of Type in PolyTrait
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.
2021-09-30 13:52:58 -07:00
Noah Lev
4c6385ff93 Make Impl.trait_ a Path, not a Type
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.
2021-09-30 13:52:57 -07:00
Noah Lev
d91946b3f4 Remove Path.global 2021-09-30 13:52:57 -07:00
Guillaume Gomez
bdd34717b8 Remove Never variant from clean::Type enum 2021-09-29 20:29:33 +02:00
Manish Goregaokar
7777f952f0
Rollup merge of #88895 - camelid:cleanup-pt2, r=jyn514
rustdoc: Cleanup `clean` part 2

Split out from #88379. This contains the following commits from that PR:

- Remove `Type::ResolvedPath.is_generic`
- Rename `is_generic()` to `is_assoc_ty()`

r? `@jyn514`
2021-09-25 18:22:17 -07:00
Jubilee
ee2e97c416
Rollup merge of #89001 - jackh726:binder-cleanup, r=nikomatsakis
Be explicit about using Binder::dummy

This is somewhat of a late followup to the binder refactor PR. It removes `ToPredicate` and `ToPolyTraitImpls` that hide the use of `Binder::dummy`. While this does make code a bit more verbose, it allows us be more careful about where we create binders.

Another alternative here might be to add a new trait `ToBinder` or something with a `dummy()` fn. Which could still allow grepping but allows doing something like `trait_ref.dummy()` (but I also wonder if longer-term, it would be better to be even more explicit with a `bind_with_vars(ty::List::empty())` *but* that's not clear yet.

r? ``@nikomatsakis``
2021-09-24 11:40:11 -07:00
est31
f809ed657c Revert the rustdoc box syntax removal
It turned out to cause (minor) perf regressions.
2021-09-21 01:54:23 +02:00
jackh726
b73c8b823f Fix rustdoc 2021-09-15 23:43:19 -04:00
Deadbeef
d3f981b144
Move is_const_fn to under TyCtxt 2021-09-15 11:27:34 +00:00
Noah Lev
07d6454a0f Remove Type::ResolvedPath.is_generic
It can be computed on-demand.
2021-09-12 13:27:06 -07:00
Manish Goregaokar
b3af37ac7b
Rollup merge of #88810 - camelid:cleanup-pt1, r=jyn514
rustdoc: Cleanup `clean` part 1

Split out from #88379.

These commits are completely independent of each other, and each is a fairly
small change (the last few are new commits; they are not from #88379):

- Remove unnecessary `Cache.*_did` fields
- rustdoc: Get symbol for `TyParam` directly
- Create a valid `Res` in `external_path()`
- Remove unused `hir_id` parameter from `resolve_type`
- Fix redundant arguments in `external_path()`
- Remove unnecessary `is_trait` argument
- rustdoc: Cleanup a pattern match in `external_generic_args()`

r? ``@jyn514``
2021-09-12 03:44:58 -07:00
Joshua Nelson
f78acaee03 downgrade some logging 2021-09-12 02:23:08 +00:00
Noah Lev
913764dcef Remove unnecessary is_trait argument
It was only used for sugaring `Fn` trait bounds, and rustdoc already
checks that the `did` is for a `Fn` (or `FnMut`, `FnOnce`) lang item,
so it's not necessary to also check that the `did` belongs to a trait.
2021-09-11 15:55:21 -07:00
Noah Lev
5321b35a5a Fix redundant arguments in external_path()
If the path is for a trait, it is always true that `trait_did ==
Some(did)`, so instead, `external_path()` now takes an `is_trait`
boolean.
2021-09-11 15:43:44 -07:00
Noah Lev
c2207f5a48 Remove unused hir_id parameter from resolve_type 2021-09-11 11:24:54 -07:00
Noah Lev
6a84d34784 Create a valid Res in external_path()
The order of the `where` bounds on auto trait impls changed because
rustdoc currently sorts auto trait `where` bounds based on the `Debug`
output for the bound. Now that the bounds have an actual `Res`, they are
being unintentionally sorted by their `DefId` rather than their path.
So, I had to update a test for the change in ordering of the rendered
bounds.
2021-09-11 11:24:53 -07:00
Fabian Wolff
79adda930f Ignore automatically derived impls of Clone and Debug in dead code analysis 2021-09-09 19:49:07 +02:00
bors
97032a6dfa Auto merge of #80522 - cjgillot:borrowcrate, r=oli-obk
Split rustc_mir

The `rustc_mir` crate is the second largest in the compiler.
This PR splits it up into 5 crates:
- rustc_borrowck;
- rustc_const_eval;
- rustc_mir_dataflow;
- rustc_mir_transform;
- rustc_monomorphize.
2021-09-08 20:42:42 +00:00
jackh726
22ef04e22f A bit of cleanup to astconv 2021-09-07 18:25:57 -04:00
Camille GILLOT
c5fc2609f0 Rename rustc_mir to rustc_const_eval. 2021-09-07 20:46:26 +02:00
bors
f7c00dc409 Auto merge of #88604 - camelid:rustdoc-lifetime-bounds, r=GuillaumeGomez
rustdoc: Clean up handling of lifetime bounds

Previously, rustdoc recorded lifetime bounds by rendering them into the
name of the lifetime parameter. Now, it leaves the name as the actual
name and instead records lifetime bounds in an `outlives` list, similar
to how type parameter bounds are recorded.

Also, higher-ranked lifetimes cannot currently have bounds, so I simplified
the code to reflect that.

r? `@GuillaumeGomez`
2021-09-05 12:52:34 +00:00
bors
b89e01cd8e Auto merge of #88574 - camelid:box-genericarg-const, r=GuillaumeGomez
rustdoc: Box `GenericArg::Const` to reduce enum size

This should reduce the amount of memory allocated in the common cases
where the `GenericArg` is a lifetime or type.
2021-09-04 18:18:00 +00:00
Noah Lev
5c0e6c18e1 rustdoc: Box GenericArg::Const to reduce enum size 2021-09-03 14:34:58 -07:00
Noah Lev
3a3f99a79b rustdoc: Higher-ranked lifetimes can't have bounds
This cleans up the other spot I found where rustdoc was rendering bounds
into the lifetime name itself. However, in this case, I don't think it
could have actually happened because higher-ranked lifetime definitions
aren't currently allowed to have bounds.
2021-09-02 14:28:10 -07:00
Noah Lev
2a60229490 rustdoc: Clean up handling of lifetime bounds
Previously, rustdoc recorded lifetime bounds by rendering them into the
name of the lifetime parameter. Now, it leaves the name as the actual
name and instead records lifetime bounds in an `outlives` list, similar
to how type parameter bounds are recorded.
2021-09-02 14:27:59 -07:00
Mara Bos
73162aabc7
Rollup merge of #88573 - camelid:rustdoc-assoc-panic, r=GuillaumeGomez
rustdoc: Don't panic on ambiguous inherent associated types

Instead, return `Type::Infer` since compilation should fail anyway.
That's how rustdoc handles `hir::TyKind::Err`s, so this just extends
that behavior to `ty::Err`s when analyzing associated types.

For some reason, the error is printed twice with rustdoc (though only
once with rustc). I'm not sure why that is, but it's better than
panicking.

This commit also makes rustdoc fail early in the non-projection,
non-error case, instead of returning a `Res::Err` that would likely
cause rustdoc to panic later on. This change is originally from #88379.

r? `@GuillaumeGomez`
2021-09-02 19:10:21 +02:00
bors
e3c71f1e33 Auto merge of #88522 - camelid:box-paren-output, r=jyn514
rustdoc: Box `GenericArgs::Parenthesized.output`

Split out from #88379.

This reduces the size of `GenericArgs` from 104 bytes to 56 bytes,
essentially reducing it by half.

`GenericArgs` is one of the fields of `PathSegment`, so this should
reduce the amount of memory allocated for `PathSegment`s in the cases
where the generics are not for a `Fn`, `FnMut`, or `FnOnce` trait.

r? `@jyn514`
2021-09-02 00:12:21 +00:00
Noah Lev
50983ba6df rustdoc: Don't panic on ambiguous inherent associated types
Instead, return `Type::Infer` since compilation should fail anyway.
That's how rustdoc handles `hir::TyKind::Err`s, so this just extends
that behavior to `ty::Err`s when analyzing associated types.

For some reason, the error is printed twice with rustdoc (though only
once with rustc). I'm not sure why that is, but it's better than
panicking.

This commit also makes rustdoc fail early in the non-projection,
non-error case, instead of returning a `Res::Err` that would likely
cause rustdoc to panic later on. This change is originally from #88379.
2021-09-01 15:04:50 -07:00
Noah Lev
2d1240e6f7 Box GenericArgs::Parenthesized.output
This reduces the size of `GenericArgs` from 104 bytes to 56 bytes,
essentially reducing it by half.

`GenericArgs` is one of the fields of `PathSegment`, so this should
reduce the amount of memory allocated for `PathSegment`s in the cases
where the generics are not for a `Fn`, `FnMut`, or `FnOnce` trait.

I also added `static_assert_size!`s to `GenericArgs` and `PathSegment`
to ensure they don't increase in size unexpectedly.
2021-08-31 20:32:17 -07:00
Mara Bos
f4f5dd5186
Rollup merge of #88391 - GuillaumeGomez:fix-json-enum-variant, r=camelid,notriddle
Fix json tuple struct enum variant

Fixes #87887.

cc `@dsherret` `@camelid`

r? `@notriddle`
2021-08-31 17:54:54 +02:00
Guillaume Gomez
ed30993456 Use the correct type for Enum variant tuples 2021-08-29 16:00:48 +02:00
inquisitivecrystal
1f7bce012d Teach tools that macros are now HIR items 2021-08-28 00:24:39 -07:00
Niko Matsakis
947c0de028 introduce a Coerce predicate 2021-08-19 17:28:24 -04:00
Marcel Hellwig
0f081832b4 remove box_syntax uses from cranelift and tools 2021-08-18 09:31:51 +02:00
Deadbeef
32390a0df6
move Constness into TraitPredicate 2021-08-13 09:26:33 +00:00
Guillaume Gomez
38444f61bb * Rename Span::from_rustc_span to Span::new
* Rename Span::wrap to Span::wrap_raw
* Improve documentation for Span::wrap_raw
2021-08-05 23:08:28 +02:00
Matthias Krüger
02b7754f9e don't use .into() to convert types to identical types (clippy::useless_conversion)
Example:
let _x: String = String::from("hello world").into();
2021-08-03 10:17:57 +02:00
Esteban Küber
15a40c7ee8 Do not discard ?Sized type params and suggest their removal 2021-07-30 08:44:31 -07:00
Yuki Okushi
014e22c836
Rollup merge of #87451 - GuillaumeGomez:tuple-struct-field-doc, r=jyn514
Add support for tuple struct field documentation

Fixes  #42615.
This is #80320 updated to new codebase and with added tests.
Part of https://github.com/rust-lang/rust/issues/83255.

cc ```@camelid``` (since you were involved on the original PR).
r? ```@jyn514```
2021-07-29 06:11:45 +09:00
Guillaume Gomez
c4aa73525b Add explanations for why we use Variant::Struct instead of Variant::Tuple for tuple structs in enums 2021-07-27 13:52:15 +02:00
Guillaume Gomez
2b790944a0 Add support for tuple struct fields documentation in enums as well 2021-07-26 11:15:20 +02:00
kadmin
417b098cfc Add generic arg infer 2021-07-25 07:28:51 +00:00
Joshua Nelson
a30fa08928 Remove trival impl Clean for CrateNum 2021-07-13 20:21:58 -04:00
Yuki Okushi
a49927350f
Rollup merge of #86887 - jyn514:cleanup-clean, r=CraftSpider
rustdoc: remove dead code in `clean`

Builds on https://github.com/rust-lang/rust/pull/86886 and should not be merged before.
2021-07-13 08:54:31 +09:00
Guillaume Gomez
74d71c204f Only show restricted pub use 2021-07-07 13:47:28 +02:00
Guillaume Gomez
e948e8de79 Fix reexports visibility 2021-07-07 11:30:08 +02:00
Guillaume Gomez
84f259e44c Unify macro source display 2021-07-07 11:30:08 +02:00
Guillaume Gomez
d1ad40eac4 Fix rendering of reexported macros 2.0 2021-07-07 11:30:08 +02:00
Joshua Nelson
b0e8b7ddf7 rustdoc: Remove unused Clean impls 2021-07-05 11:53:05 -04:00
Joshua Nelson
6f931da0f6 Remove impl Clean for {Ident, Symbol}
These were only used once, in a place where it was trivial to replace.
Also, it's unclear what 'clean' would mean for these, so it seems better
to be explicit.
2021-07-05 11:23:05 -04:00
Noah Lev
f82d4845f2 Pretty-print macro matchers instead of using source code
The output is not quite as nice as it used to be, but it does work.
2021-07-03 15:36:32 -07:00
bors
3ddb78a346 Auto merge of #86449 - Stupremee:render-self-cast-in-type-bound, r=GuillaumeGomez
rustdoc: Render `<Self as X>::Y` type casts properly across crate bounds

My last PR that introduced the type casting did not work for cross-crate re-exported traits, which is fixed in this PR.

Fully resolves #85454
2021-06-26 16:13:52 +00:00
Justus K
4ea27484c9
rustdoc: Introduce new DynTrait type for better representation of trait objects 2021-06-19 09:44:29 +02:00
Justus K
f14bdb506a
rustdoc: Render <Self as X>::Y type casts properly across crate bounds 2021-06-18 23:39:55 +02:00
Justus K
1f65f56461
rustdoc: Render for<'_> lifetimes in trait objects 2021-06-18 21:58:09 +02:00
Justus K
e0162a8a56
rustdoc: Render for<'_> lifetimes in front of where bound 2021-06-18 21:57:55 +02:00
Yuki Okushi
98d58420c1
Rollup merge of #86327 - GuillaumeGomez:safe-intrinsics, r=lqd
Don't mark "safe" intrinsics as unsafe

A good example of this is [intrinsics::abort](https://doc.rust-lang.org/nightly/core/intrinsics/fn.abort.html).

Before:

![Screenshot from 2021-06-15 14-58-42](https://user-images.githubusercontent.com/3050060/122056942-65ddad00-cdea-11eb-829e-5f5e258387de.png)

After:

![Screenshot from 2021-06-15 14-59-22](https://user-images.githubusercontent.com/3050060/122056956-6aa26100-cdea-11eb-94d8-e18b4956cfa4.png)

cc ``@jyn514``
r? ``@lqd``
2021-06-16 13:31:12 +09:00
Guillaume Gomez
91f491ecf2 Don't mark "safe" intrinsics as unsafe 2021-06-15 22:14:00 +02:00
Ellen
00a5ec1375 dont ICE on ConstEvaluatable predicates 2021-06-12 09:56:25 +01:00
Ellen
6dff51f37d rustdoc- Show defaults on const generics 2021-06-03 09:01:25 +01:00
Justus K
449a431822
rustdoc: render <Self as X>::Y type casts properly 2021-05-19 19:38:37 +02:00
Justus K
67d8d18b23
Minimize amount of fake DefIds used in rustdoc 2021-05-15 13:21:35 +02:00
Dylan DPC
0c8c21d224
Rollup merge of #84442 - jyn514:doc-cfg, r=petrochenkov
Unify rustc and rustdoc parsing of `cfg()`

This extracts a new `parse_cfg` function that's used between both.

- Treat `#[doc(cfg(x), cfg(y))]` the same as `#[doc(cfg(x)]
  #[doc(cfg(y))]`. Previously it would be completely ignored.
- Treat `#[doc(inline, cfg(x))]` the same as `#[doc(inline)]
  #[doc(cfg(x))]`. Previously, the cfg would be ignored.
- Pass the cfg predicate through to rustc_expand to be validated

Technically this is a breaking change, but doc_cfg is still nightly so I don't think it matters.

Fixes https://github.com/rust-lang/rust/issues/84437.

r? `````````@petrochenkov`````````
2021-05-07 16:19:19 +02:00
Justus K
b6120bfb35
Add type to differentiate between fake and real DefId's 2021-05-04 19:34:12 +02:00
Joshua Nelson
6eb4735acc Unify rustc and rustdoc parsing of cfg()
This extracts a new `parse_cfg` function that's used between both.

- Treat `#[doc(cfg(x), cfg(y))]` the same as `#[doc(cfg(x)]
  #[doc(cfg(y))]`. Previously it would be completely ignored.
- Treat `#[doc(inline, cfg(x))]` the same as `#[doc(inline)]
  #[doc(cfg(x))]`. Previously, the cfg would be ignored.
- Pass the cfg predicate through to rustc_expand to be validated

Co-authored-by: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
2021-05-03 12:49:43 -04:00
Dylan DPC
37ce3321eb
Rollup merge of #84811 - scottmcm:rustdoc-trait-alias-fix, r=jyn514
RustDoc: Fix bounds linking trait.Foo instead of traitalias.Foo

Fixes #84782

The code was assuming `Trait` when adding bounds to the cache, so add a check on the DefId to see what its kind really is.

r? `@jyn514`

Before:
![image](https://user-images.githubusercontent.com/18526288/116775611-6a751e80-aa53-11eb-84d0-ed6b7782be3c.png)

After:
![image](https://user-images.githubusercontent.com/18526288/116802227-d19cdc80-ab00-11eb-8133-7b34dd750da2.png)
2021-05-03 00:32:43 +02:00
Scott McMurray
40ffa94244 PR feedback 2021-05-02 12:29:23 -07:00
Dylan DPC
e643e2ebdf
Rollup merge of #84763 - tdelabro:shrink-doctree-module, r=jyn514
shrink doctree::Module

helps https://github.com/rust-lang/rust/issues/76382
2021-05-02 17:00:24 +02:00
Scott McMurray
fe540ae1bb RustDoc: Fix bounds linking trait.Foo instead of traitalias.Foo 2021-05-01 23:14:18 -07:00
Timothée Delabrouille
649bf22df5 compute where_outer on demand, remove it from Module 2021-05-01 15:33:49 +02:00
Joshua Nelson
b1f5917930 Remove unnecessary provided_trait_methods field from Impl
It can be calculated on-demand.
2021-04-30 21:38:43 -04:00
bors
727d101561 Auto merge of #84494 - tdelabro:84304-bis, r=jyn514
84304 - rustdoc: shrink Item::Attributes

Helps with https://github.com/rust-lang/rust/issues/84304
2021-04-27 20:19:57 +00:00
Timothée Delabrouille
727f9040aa cfg taken out of Attributes, put in Item
check item.is_fake() instead of self_id.is_some()

Remove empty branching in Attributes::from_ast

diverse small refacto after Josha review

cfg computation moved in merge_attrs

refacto use from_ast twice for coherence

take cfg out of Attributes and move it to Item
2021-04-27 10:29:58 +02:00
Timothée Delabrouille
b4f1dfd2c5 Removed usage of Attributes in FnDecl and ExternalCrate. Relocate part of the fields in Attributes, as functions in AttributesExt.
refacto use from_def_id_and_attrs_and_parts instead of an old trick

most of josha suggestions + check if def_id is not fake before using it in a query

Removed usage of Attributes in FnDecl and ExternalCrate. Relocate part of the Attributes fields as functions in AttributesExt.
2021-04-27 10:17:59 +02:00
Ralf Jung
43126f3573 get rid of min_const_fn references in library/ and rustdoc 2021-04-25 14:14:19 +02:00
Joshua Nelson
c44c64df71 Get rid of item.span
- Remove `span` field, adding `Item::span()` instead
- Special-case `Impl` and `Module` items
- Use dummy spans for primitive items
2021-04-24 19:21:48 -04:00
Joshua Nelson
b412b46cf7 Do the hard part first
The only bit failing was the module, so change that before removing the
`span` field.
2021-04-24 19:20:46 -04:00
Yuki Okushi
e25c5e2c25
Rollup merge of #84464 - jyn514:type-kind, r=CraftSpider
rustdoc: Get rid of `clean::TypeKind`

It does exactly the same thing as ItemType.
2021-04-25 01:53:15 +09:00
Joshua Nelson
8fd29bf6a1 Remove unused impl Clean<ItemType> for DefKind 2021-04-23 15:56:32 -04:00
Joshua Nelson
1481af9f59 Take ItemType instead of TypeKind in record_extern_fqn 2021-04-23 15:56:12 -04:00
Joshua Nelson
e29f46ce37 rustdoc: Remove unnecessary is_crate field from doctree::Module and clean::Module
It can be calculated on-demand even without a TyCtxt.

This also changed `from_item_kind` to take a whole item, which avoids
having to add more and more parameters.
2021-04-23 15:33:18 -04:00
Joshua Nelson
6c6bd88ab3 Remove keywords from ExternCrate 2021-04-22 19:16:41 -04:00
Joshua Nelson
d1d1739673 Get rid of ExternCrate::primitives 2021-04-22 19:10:22 -04:00
Joshua Nelson
3bef65ffaf Remove name field from ExternalCrate 2021-04-22 19:02:09 -04:00
Joshua Nelson
5407a69aa4 Remove src field from ExternCrate 2021-04-22 18:54:59 -04:00
Michael Howell
2dfd0bfe10 rustdoc: clean up and test macro visibility print
This fixes the overly-complex invariant mentioned in
<https://github.com/rust-lang/rust/pull/83237#issuecomment-815346570>,
where the macro source can't have any links in it only because the
cache hasn't been populated yet.
2021-04-10 14:22:06 -07:00
Jack Huey
6d5efa9f04 Add var to BoundRegion. Add query to get bound vars for applicable items. 2021-03-31 10:16:37 -04:00
Jack Huey
666859a6f8 Make late and late_anon regions track the bound var position 2021-03-31 10:15:56 -04:00
Jack Huey
84f82d348c Revert explicit lifetimes 2021-03-31 10:15:56 -04:00
Jack Huey
30187c81f6 Track bound vars 2021-03-31 10:15:27 -04:00
Camille GILLOT
9d8f833e05 Remove hir::CrateItem. 2021-03-30 20:31:06 +02:00
Guillaume Gomez
7b59089316 Split clean::Constant enum into a struct and an enum 2021-03-24 21:52:20 +01:00
Guillaume Gomez
ee5093374e Rename clean::Constant did fields to def_id 2021-03-24 21:48:36 +01:00
Guillaume Gomez
d61a1786a7 Improve new Constant variants' name 2021-03-24 21:48:36 +01:00
Guillaume Gomez
0cde85523f Rework rustdoc const type 2021-03-24 21:48:34 +01:00
Dylan DPC
5c0d880e4b
Rollup merge of #83415 - camelid:remove-crate-module-option, r=jyn514
Remove unnecessary `Option` wrapping around `Crate.module`

I'm wondering if it was originally there so that we could `take` the
module which enables `after_krate` to take an `&Crate`. However, the two
impls of `after_krate` only use `Crate.name`, so we can pass just the
name instead.
2021-03-24 01:52:36 +01:00
Camelid
a7f902b693 Remove another unnecessary Option
The previous changes mean that we can now remove this `Option`.
2021-03-23 11:19:42 -07:00
Camelid
8b9b106cdc Rename clean::Item.source to span
Its type is called `clean::Span`, and also the name in the rest of
rustdoc and rustc for this kind of field is `span`.
2021-03-21 19:47:11 -07:00
Vadim Petrochenkov
38ed36bba4 hir: Preserve used syntax in TyKind::TraitObject 2021-03-18 03:02:32 +03:00
Vadim Petrochenkov
b25d3ba781 ast/hir: Rename field-related structures
StructField -> FieldDef ("field definition")
Field -> ExprField ("expression field", not "field expression")
FieldPat -> PatField ("pattern field", not "field pattern")

Also rename visiting and other methods working on them.
2021-03-16 11:41:24 +03:00
Camille GILLOT
c701872a6c Remove hir::Item::attrs. 2021-03-09 19:27:50 +01:00
Guillaume Gomez
f879ecc4ef Make ItemKind::ExternCrate looks like hir::ItemKind::ExternCrate to make transition over hir::ItemKind simpler 2021-03-05 16:04:24 +01:00
Joshua Nelson
4d7a648485 Remove the dummy cache in DocContext
The same information is available everywhere; the only reason the dummy
cache was needed is because it waas previously stored in three different
places. This consolidates the info a bit so the cache in `DocContext` is
used throughout. As a bonus, it means `renderinfo` is used much much
less.

- Return a `Cache` from `run_global_ctxt`, not `RenderInfo`
- Remove the unused `render_info` from `run_renderer`
- Remove RefCell around `inlined`
- Add intra-doc links
2021-03-01 00:30:30 -05:00
Guillaume Gomez
58a34a4dde Remove is_spotlight field from Trait 2021-02-23 21:57:40 +01:00
Camelid
e4ac499b7e Remove many RefCells from DocContext
I left some of them so this change doesn't balloon in size and because
removing the RefCell in `DocContext.resolver` would require compiler
changes.

Thanks to `@jyn514` for making this a lot easier with #82020!
2021-02-22 10:02:56 -08:00
Camelid
6a85719b6a rustdoc: Remove unnecessary Cell around param_env 2021-02-20 17:12:22 -08:00
Joshua Nelson
2bc5a0a600 Make Clean take &mut DocContext
- Take `FnMut` in `rustc_trait_selection::find_auto_trait_generics`
- Take `&mut DocContext` in most of `clean`
- Collect the iterator in auto_trait_impls instead of iterating lazily; the lifetimes were really bad.
- Changes `fn sess` to properly return a borrow with the lifetime of `'tcx`, not the mutable borrow.
2021-02-16 21:25:14 -05:00
bors
8fe989dd76 Auto merge of #81611 - cjgillot:meowner, r=estebank
Only store a LocalDefId in some HIR nodes

Some HIR nodes are guaranteed to be HIR owners: Item, TraitItem, ImplItem, ForeignItem and MacroDef.
As a consequence, we do not need to store the `HirId`'s `local_id`, and we can directly store a `LocalDefId`.

This allows to avoid a bit of the dance with `tcx.hir().local_def_id` and `tcx.hir().local_def_id_to_hir_id` mappings.
2021-02-16 22:14:32 +00:00
Guillaume Gomez
46b93b2e44
Rollup merge of #82163 - matthiaskrgr:slice, r=jyn514
avoid full-slicing slices

If we already have a slice, there is no need to get another full-range slice from that, just use the original.
clippy::redundant_slicing
2021-02-16 19:21:20 +01:00
Matthias Krüger
4390a61b64 avoid full-slicing slices
If we already have a slice, there is no need to get another full-range slice from that, just use the original.
clippy::redundant_slicing
2021-02-16 00:31:11 +01:00
Camille GILLOT
c4e7427081 Only store a LocalDefId in hir::MacroDef. 2021-02-15 19:35:55 +01:00
Camille GILLOT
996dc8d5c5 Only store a LocalDefId in hir::ForeignItem. 2021-02-15 19:32:29 +01:00
Camille GILLOT
786a80e9ea Only store a LocalDefId in hir::ImplItem. 2021-02-15 19:32:29 +01:00
Camille GILLOT
a871a0f111 Only store a LocalDefId in hir::TraitItem. 2021-02-15 19:32:28 +01:00
Camille GILLOT
cebbba081e Only store a LocalDefId in hir::Item.
Items are guaranteed to be HIR owner.
2021-02-15 19:32:10 +01:00
Camille GILLOT
c676e358a5 Use ItemId as a strongly typed index. 2021-02-15 19:24:58 +01:00
Takayuki Maeda
ba72bc9b83 fix typo 2021-02-14 21:18:17 +09:00
Yuki Okushi
4c8e38aa60
Rollup merge of #82033 - magurotuna:issue82016, r=jyn514
Refactor `get_word_attr` to return only `Option`

This commit removes `bool` from the return type of `NestedAttributesExt::get_word_attr` so it will return only `Option<ast::NestedMetaItem>` for less redundancy.

Closes #82016

r? `@jyn514`
2021-02-13 16:36:48 +09:00
Yusuke Tanaka
681cccad57
Rename to inline_attr and use if-let to extract NestedMetaItem 2021-02-13 01:48:00 +09:00
Yusuke Tanaka
715c19e75e
Refactor get_word_attr to return only Option 2021-02-13 01:13:50 +09:00
Yuki Okushi
1a9d20b430
Rollup merge of #82004 - GuillaumeGomez:clean-static-struct, r=jyn514
clean up clean::Static struct

Having a `String` for the expression didn't make much sense, and even less when it's actually not used (except in json so I kept it).

r? ``@jyn514``
2021-02-12 19:32:18 +09:00
Guillaume Gomez
583563d86d clean up clean::Static struct 2021-02-11 20:37:36 +01:00
LeSeulArtichaut
2a67e2e323 Revert "Get rid of custom pretty-printing in rustdoc"
This reverts commit 31375d2074.
2021-02-08 19:51:28 +01:00
Guillaume Gomez
c92b161df0 Remove unneeded From trait impl for DefKind 2021-02-05 17:23:54 +01:00
Guillaume Gomez
4810910b0b Remove Function all_types and ret_types fields 2021-02-05 17:23:52 +01:00
Guillaume Gomez
19630ead41 Remove cache usage wherever possible 2021-01-27 10:05:05 +01:00
Guillaume Gomez
9fd5a67984 Remove CACHE_KEY global 2021-01-27 10:05:05 +01:00
Camelid
93e51b185a rustdoc: Fix visibility of trait and impl items 2021-01-22 18:30:30 -08:00
Rune Tynan
3349b40d47
Remove StructType entirely and replace it with CtorKind 2021-01-20 17:19:46 -05:00
Rune Tynan
450c5eae1d
Move StructType to clean, remove it from Unions, make JSON output whether something is a union 2021-01-20 16:46:34 -05:00
Jack Huey
dcad9f1893 More review comments 2021-01-16 18:56:37 -05:00
Jack Huey
3dea68de1d Review changes 2021-01-16 18:56:37 -05:00
Jack Huey
476bd53058 Cleanup 2021-01-16 18:50:34 -05:00
Mara Bos
1368e81bcb
Rollup merge of #81021 - CraftSpider:rustdoc-remove-import, r=jyn514
Remove doctree::Import

Per the title. Part of cleaning up doctree
2021-01-16 17:30:08 +00:00
Joshua Nelson
d11855a8ce Rename VariantKind -> Variant
There's no `Variant`, so it seems silly to have `Kind`.
2021-01-15 13:55:03 -05:00
Joshua Nelson
dd459a2be6 Remove useless clean::Variant struct
It had exactly one field and no special behavior, so there was no point.
2021-01-15 13:54:59 -05:00
Rune Tynan
2a0c9e28cb
Address nit 2021-01-15 12:50:04 -05:00
Rune Tynan
e3274fd148
Remove doctree::Import 2021-01-15 12:49:45 -05:00
Rune Tynan
c54678ab2f
Remove doctree::Variant 2021-01-14 15:21:44 -05:00
bors
c7b0ddbffe Auto merge of #80802 - jyn514:box-attributes, r=nnethercote
Box Item::Attributes

This reduces the size of Item from 128 to 40 bytes. I think this is as small as it needs to get 🎉

Builds on https://github.com/rust-lang/rust/pull/80339 and should not be merged before.

r? `@GuillaumeGomez`
2021-01-14 02:26:46 +00:00
bors
a62a76047e Auto merge of #77524 - Patryk27:fixes/66228, r=estebank
Rework diagnostics for wrong number of generic args (fixes #66228 and #71924)

This PR reworks the `wrong number of {} arguments` message, so that it provides more details and contextual hints.
2021-01-13 20:35:58 +00:00
Joshua Nelson
a8ff647deb Separate out a hir::Impl struct
This makes it possible to pass the `Impl` directly to functions, instead
of having to pass each of the many fields one at a time. It also
simplifies matches in many cases.
2021-01-12 20:32:33 -05:00
Joshua Nelson
690aeaf087 Box Item::attributes
This reduces the size of Item from 136 to 48 bytes.
2021-01-10 10:39:36 -05:00
Patryk Wychowaniec
d2f8e398f1
Rework diagnostics for wrong number of generic args 2021-01-10 13:07:40 +01:00
Guillaume Gomez
34d128a263 Replace under-used ImplPolarity enum with a boolean 2021-01-09 14:59:37 +01:00
Yuki Okushi
dec3dbd36a
Rollup merge of #80799 - jyn514:pretty-print, r=CraftSpider
Get rid of custom pretty-printing in rustdoc

and use rustc_hir_pretty directly instead.

Closes https://github.com/rust-lang/rust/issues/79497.

r? `@CraftSpider`
2021-01-08 11:11:50 +09:00
Joshua Nelson
31375d2074 Get rid of custom pretty-printing in rustdoc
and use rustc_hir_pretty directly instead
2021-01-07 17:44:59 -05:00
LingMan
961f9ee6df Use Option::map_or instead of .map(..).unwrap_or(..) 2021-01-07 20:03:59 +01:00
bors
6163bfdcce Auto merge of #80661 - jyn514:duplicate-types, r=GuillaumeGomez
Cleanup rustdoc handling of associated types

This is best reviewed a commit at a time. No particular reason for these changes, they just stood out as I was reviewing https://github.com/rust-lang/rust/pull/80653 and thinking about https://github.com/rust-lang/rust/issues/80379. The new test case worked before, it just wasn't tested.

r? `@GuillaumeGomez`
2021-01-04 10:32:28 +00:00
Joshua Nelson
24ef94593c Don't clone type_ unnecessarily 2021-01-03 16:10:46 -05:00
Joshua Nelson
a786eaac1f Simplify rustdoc handling of type aliases for associated types
The logic was very hard to follow before.
2021-01-03 15:40:41 -05:00
Matthias Krüger
a5807ac61c clippy fixes for librustdoc
fixes clippy warnings of type:
match_like_matches_macro
or_fun_call
op_ref
needless_return
let_and_return
single_char_add_str
useless_format
unnecessary_sort_by
match_ref_pats
redundant_field_names
2021-01-01 21:19:10 +01:00
Rémy Rakic
1fc3c4c16d adjust const generics defaults FIXMEs to the new feature gate 2021-01-01 11:01:01 +01:00
Julian Knodt
61f33bfd29 first pass at default values for const generics
- Adds optional default values to const generic parameters in the AST
  and HIR
- Parses these optional default values
- Adds a `const_generics_defaults` feature gate
2021-01-01 10:55:10 +01:00
Dylan DPC
7d247c9246
Rollup merge of #80368 - camelid:rustdoc-succinct-vis, r=jyn514
rustdoc: Render visibilities succinctly

Fixes #79139.

r? `@jyn514`
2020-12-31 22:20:49 +01:00
bors
a6bd5246da Auto merge of #80267 - 0urobor0s:ouro/61592, r=jyn514
Rustdoc render public underscore_imports as Re-exports

Fixes #61592
2020-12-31 09:07:52 +00:00
bors
cb4553bdae Rustdoc render public underscore_imports as Re-exports
Fixes #61592
2020-12-31 09:07:51 +00:00
Camelid
6f6afae41a Small refactor 2020-12-30 16:41:18 -08:00
Mara Bos
9e8edc8c22
Rollup merge of #80495 - jyn514:rename-empty, r=petrochenkov
Rename kw::Invalid -> kw::Empty

See https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/Is.20there.20a.20symbol.20for.20the.20empty.20string.3F/near/220054471
for context.

r? `@petrochenkov`
2020-12-30 20:56:58 +00:00
Joshua Nelson
edeac1778c Rename kw::Invalid -> kw::Empty
See https://rust-lang.zulipchat.com/#narrow/stream/182449-t-compiler.2Fhelp/topic/Is.20there.20a.20symbol.20for.20the.20empty.20string.3F/near/220054471
for context.
2020-12-30 09:50:02 -05:00
Matthias Krüger
17a8c1017f don't clone copy types 2020-12-29 19:40:03 +01:00
bors
158f8d034b Auto merge of #80014 - jyn514:box-item-kind, r=nnethercote
[rustdoc] Box ItemKind to reduce the size of `Item`

This brings the size of `Item` from

```
[src/librustdoc/lib.rs:103] std::mem::size_of::<Item>() = 536
```

to

```
[src/librustdoc/lib.rs:103] std::mem::size_of::<Item>() = 136
```

This is an alternative to https://github.com/rust-lang/rust/pull/79967; I don't think it makes sense to make both changes.

Helps with #79103.
2020-12-29 10:41:01 +00:00
Camelid
478cbb0095 Extract local variable 2020-12-25 16:37:09 -08:00
Camelid
50c1c27fa6 Fix bugs; fix and add tests 2020-12-25 15:53:17 -08:00
Camelid
d3f4c48b49 rustdoc: Render visibilities succinctly 2020-12-25 15:19:00 -08:00
Dylan DPC
28267e3839
Rollup merge of #80340 - jyn514:less-modules-attrs, r=GuillaumeGomez
Don't unnecessarily override attrs for Module

They were never changed from the default, which you can get with `tcx.get_attrs()`.
2020-12-25 03:39:48 +01:00
Dylan DPC
d837407339
Rollup merge of #80319 - jyn514:async-lifetimes, r=tmandry
Fix elided lifetimes shown as `'_` on async functions

Closes https://github.com/rust-lang/rust/issues/63037.

r? `@tmandry` on the implementation, `@Darksonn` on the test cases.
2020-12-25 03:39:40 +01:00
Joshua Nelson
6dc4f7a9d4 Don't unnecessarily override attrs for Module
They were never changed from the default, which you can get with
`tcx.get_attrs()`.
2020-12-23 15:25:30 -05:00
Joshua Nelson
4a4426377e Box ItemKind to reduce the size of Item
This brings the size of `Item` from

```
[src/librustdoc/lib.rs:103] std::mem::size_of::<Item>() = 680
```

to

```
[src/librustdoc/lib.rs:103] std::mem::size_of::<Item>() = 280
```
2020-12-23 12:50:35 -05:00
Joshua Nelson
ceb66ad464 Add more tests 2020-12-23 09:23:05 -05:00
bors
28d73a3ee3 Auto merge of #80099 - jyn514:visibility-on-demand, r=GuillaumeGomez
Remove `DefPath` from `Visibility` and calculate it on demand

Depends on #80090 and should not be merged before. Helps with https://github.com/rust-lang/rust/issues/79103 and https://github.com/rust-lang/rust/issues/76382.

cc https://github.com/rust-lang/rust/pull/80014#issuecomment-746810284 - `@nnethercote` I figured it out! It was simpler than I expected :)

This brings the size of `clean::Visibility` down from 40 bytes to 8.

Note that this does *not* remove `clean::Visibility`, even though it's now basically the same as `ty::Visibility`, because the `Invsible` variant means something different from `Inherited` and I thought it would be be confusing to merge the two. See the new comments on `impl Clean for ty::Visibility` for details.
2020-12-23 06:39:15 +00:00
bors
18b745e9bf Auto merge of #80095 - jyn514:stability-on-demand, r=GuillaumeGomez
[rustdoc] Calculate stability, const_stability, and deprecation on-demand

Previously, they would always be calculated ahead of time, which bloated the size of `clean::Item`.

Builds on https://github.com/rust-lang/rust/pull/80090 and should not be merged before. Helps with https://github.com/rust-lang/rust/issues/79103 and https://github.com/rust-lang/rust/issues/76382.

cc https://github.com/rust-lang/rust/pull/80014#issuecomment-746810284

This brings `Item` down to 568 bytes, down from 616.
2020-12-23 03:35:32 +00:00
Joshua Nelson
530c33cd5f Fix elided lifetimes shown as '_ on async functions 2020-12-22 20:49:33 -05:00
bors
b1964e60b7 Auto merge of #80163 - jackh726:binder-refactor-part-3, r=lcnr
Make BoundRegion have a kind of BoungRegionKind

Split from #76814

Also includes making `replace_escaping_bound_vars` only return `T`

Going to r? `@lcnr`
Feel free to reassign
2020-12-20 07:01:00 +00:00
bors
8bb302d34d Auto merge of #80106 - jackh726:binder-refactor-part-2, r=lcnr
A lot of refactoring to remove more `Binder::bind`s

Split out from #76814
2020-12-19 10:13:52 +00:00
Jack Huey
5e7095850c More rebinds 2020-12-19 04:26:35 -05:00
Jack Huey
328fcee4af Make BoundRegion have a kind of BoungRegionKind 2020-12-18 15:27:28 -05:00
Joshua Nelson
a2fb4b95dd Remove DefPath from Visibility and calculate it on demand 2020-12-18 12:29:55 -05:00
Joshua Nelson
1523f67f16 Calculate stability, const_stability, and deprecation on-demand
Previously, they would always be calculated ahead of time, which bloated
the size of `clean::Item`.
2020-12-18 09:27:34 -05:00
Guillaume Gomez
57266f1df6 Continue String to Symbol conversion in rustdoc 2020-12-18 12:05:51 +01:00
bors
fee693d08e Auto merge of #80119 - GuillaumeGomez:str-to-symbol, r=jyn514
Continue String to Symbol conversion in rustdoc

Follow-up of https://github.com/rust-lang/rust/pull/80091.

This PR is already big enough so I'll stop here before the next one.

r? `@jyn514`
2020-12-18 05:55:24 +00:00
Guillaume Gomez
44e226ceb7 Continue String to Symbol conversion in rustdoc 2020-12-17 18:19:38 +01:00
Guillaume Gomez
5873fe8851
Rollup merge of #80047 - jyn514:more-symbols, r=GuillaumeGomez
Use more symbols in rustdoc

Builds on https://github.com/rust-lang/rust/pull/80044 and should not be merged before.

I want to test if this is actually faster before merging it, there was a lot of `to_string()` calls so I'm not sure it will actually help. That means I have to wait for 80044 to get merged before running perf.

r? `@ghost`
2020-12-17 11:36:54 +01:00
Guillaume Gomez
50d221c924 Replace String with Symbol where possible 2020-12-16 22:04:27 +01:00
bors
90f4b52961 Auto merge of #80041 - jyn514:shrink-item, r=GuillaumeGomez
Get rid of `clean::Deprecation`

This brings the size of `item.deprecation` from 56 to 16 bytes. Helps with #79103 and https://github.com/rust-lang/rust/issues/76382, in the same vein as https://github.com/rust-lang/rust/pull/79957.

r? `@GuillaumeGomez`
2020-12-16 03:35:08 +00:00