Commit graph

1393 commits

Author SHA1 Message Date
bors
d39864d64e Auto merge of #96135 - petrochenkov:doclink6, r=GuillaumeGomez
rustdoc: Optimize and refactor doc link resolution

One more subset of https://github.com/rust-lang/rust/pull/94857 that should bring perf improvements rather than regressions + a couple more optimizations on top of it.
It's better to read individual commits and their descriptions to understand the changes.
The `may_have_doc_links` optimization is not *very* useful here, but it's much more important for https://github.com/rust-lang/rust/pull/94857.

Closes https://github.com/rust-lang/rust/issues/96079
2022-04-20 13:34:48 +00:00
Dylan DPC
a0ba15bfab
Rollup merge of #95813 - Urgau:rustdoc-where-clause-space, r=GuillaumeGomez
Remove extra space before a where clause

Remove extra space before where clause in the generated documentation.

The fix is to move the space before the break-line so that it doesn't appear visually but is still here. Removing it completely would create things like this `impl<D> Delta<D>where D: MyTrait` (missing a space before the where) which I don't think we want.

Added two regression test, first one test that the `<br>` is after the space and the second check that the `<br>` is before the spaces.

Before:
![image](https://user-images.githubusercontent.com/3616612/162475212-d4bb6727-ed66-4a55-a4a2-4f55189bf8bd.png)

After:
![image](https://user-images.githubusercontent.com/3616612/162475467-508fd082-60a7-4a8c-b693-8b188e8843e6.png)

r? ``@GuillaumeGomez``
2022-04-19 22:57:40 +02:00
Guillaume Gomez
ca5c752a7a Add regression test for #96079 2022-04-19 22:57:04 +03:00
Guillaume Gomez
6d10fd0b5b Add regression test for rustdoc duplicated blanket impls 2022-04-17 18:04:10 +02:00
Loïc BRANSTETT
f7ce145d83 Remove extra space before a where clause in the documentation 2022-04-17 12:00:52 +02:00
Andy Russell
753d567989
clarify doc(cfg) wording
The current "This is supported" wording implies that it's possible to
still use the item on other configurations, but in an unsupported way.
Changing this to "Available" removes this ambiguity.
2022-04-14 21:12:13 -04:00
León Orell Valerian Liehr
8de453a8c6 rustdoc: discr. required+provided assoc consts+tys 2022-04-12 15:38:39 +02:00
Matthias Krüger
7ed15fb584
Rollup merge of #95876 - fee1-dead:note-const-drop, r=oli-obk
Add a note for unsatisfied `~const Drop` bounds

r? ``@oli-obk``
2022-04-11 12:06:56 +02:00
Deadbeef
7f54d68f26
Add a note for unsatisfied ~const Drop bounds 2022-04-11 12:00:39 +10:00
Dylan DPC
24fa80dbb2
Rollup merge of #95769 - fmease:fix-issue-95717, r=GuillaumeGomez
Hide cross-crate `#[doc(hidden)]` associated items in trait impls

Fixes #95717.

r? ```@GuillaumeGomez```
This is the bug I ran into in #95316.

```@rustbot``` label T-rustdoc A-cross-crate-reexports
2022-04-09 12:52:04 +02:00
Guillaume Gomez
5e8bd9bbaa Add test for empty doc comments with a backline 2022-04-08 15:30:53 +02:00
León Orell Valerian Liehr
4623d51573 Hide cross-crate doc-hidden assoc items in trait impls 2022-04-07 20:40:17 +02:00
bors
f565016edd Auto merge of #95678 - pietroalbini:pa-1.62.0-bootstrap, r=Mark-Simulacrum
Bump bootstrap compiler to 1.61.0 beta

This PR bumps the bootstrap compiler to the 1.61.0 beta. The first commit changes the stage0 compiler, the second commit applies the "mechanical" changes and the third and fourth commits apply changes explained in the relevant comments.

r? `@Mark-Simulacrum`
2022-04-07 07:34:04 +00:00
Guillaume Gomez
56d0f9484b Update rustdoc test following DOM change 2022-04-06 20:41:57 +02:00
Pietro Albini
73dc13058d
remove ~const Drop from rustdoc test 2022-04-06 10:35:49 +02:00
Dylan DPC
bf44a87732
Rollup merge of #95645 - GuillaumeGomez:intra-doc-link-ice-traits-in-scope-primitive, r=jyn514
Fix intra doc link ICE when trying to get traits in scope for primitive

Fixes #95633.

I think ``@notriddle`` was the one who worked on this part of the code last so:

r? ``@notriddle``
2022-04-05 09:33:24 +02:00
bors
949b98cab8 Auto merge of #95337 - petrochenkov:doclink3, r=camelid
rustdoc: Fix resolution of `crate`-relative paths in doc links

Resolve `crate::foo` paths transparently to rustdoc, so their resolution no longer affects diagnostics and modules used for determining traits in scope.

The proper solution is to account for the current `module_id`/`parent_scope` in `fn resolve_crate_root`, but it's a slightly larger compiler changes. This PR moves the code closer to it, but keeps it rustdoc-specific.

Fixes https://github.com/rust-lang/rust/issues/78696
Fixes https://github.com/rust-lang/rust/issues/94924
2022-04-05 04:39:34 +00:00
Guillaume Gomez
50cc0fa8ab Add test to ensure rustdoc does not panic on intra doc link pass 2022-04-04 17:37:09 +02:00
Dylan DPC
5925c8ee79
Rollup merge of #95613 - GuillaumeGomez:fix-rustdoc-attr-display, r=notriddle
Fix rustdoc attribute display

Fixes #81482.

r? `@notriddle`
2022-04-03 23:21:43 +02:00
Guillaume Gomez
995513c929 Add test for attribute display in rustdoc 2022-04-03 13:41:12 +02:00
Dylan DPC
d7a24003d8
Rollup merge of #95354 - dtolnay:rustc_const_stable, r=lcnr
Handle rustc_const_stable attribute in library feature collector

The library feature collector in [compiler/rustc_passes/src/lib_features.rs](551b4fa395/compiler/rustc_passes/src/lib_features.rs) has only been looking at `#[stable(…)]`, `#[unstable(…)]`, and `#[rustc_const_unstable(…)]` attributes, while ignoring `#[rustc_const_stable(…)]`. The consequences of this were:

- When any const feature got stabilized (changing one or more `rustc_const_unstable` to `rustc_const_stable`), users who had previously enabled that unstable feature using `#![feature(…)]` would get told "unknown feature", rather than rustc's nicer "the feature … has been stable since … and no longer requires an attribute to enable".

    This can be seen in the way that https://github.com/rust-lang/rust/pull/93957#issuecomment-1079794660 failed after rebase:

    ```console
    error[E0635]: unknown feature `const_ptr_offset`
      --> $DIR/offset_from_ub.rs:1:35
       |
    LL | #![feature(const_ptr_offset_from, const_ptr_offset)]
       |                                   ^^^^^^^^^^^^^^^^
    ```

- We weren't enforcing that a particular feature is either stable everywhere or unstable everywhere, and that a feature that has been stabilized has the same stabilization version everywhere, both of which we enforce for the other stability attributes.

This PR updates the library feature collector to handle `rustc_const_stable`, and fixes places in the standard library and test suite where `rustc_const_stable` was being used in a way that does not meet the rules for a stability attribute.
2022-04-02 03:34:21 +02:00
bors
297a8018b5 Auto merge of #95552 - matthiaskrgr:rollup-bxminn9, r=matthiaskrgr
Rollup of 6 pull requests

Successful merges:

 - #95032 (Clean up, categorize and sort unstable features in std.)
 - #95260 (Better suggestions for `Fn`-family trait selection errors)
 - #95293 (suggest wrapping single-expr blocks in square brackets)
 - #95344 (Make `impl Debug for rustdoc::clean::Item` easier to read)
 - #95388 (interpret: make isize::MAX the limit for dynamic value sizes)
 - #95530 (rustdoc: do not show primitives and keywords as private)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-04-01 17:19:15 +00:00
Matthias Krüger
e21b27ff7a
Rollup merge of #95475 - Jules-Bertholet:rustdoc-hide-assoc-consts-from-trait-impls, r=jsha
rustdoc: Only show associated consts from inherent impls in sidebar

Resolves #95459
2022-04-01 12:07:01 +02:00
David Tolnay
4246916619
Adjust feature names that disagree on const stabilization version 2022-03-31 12:34:48 -07:00
Michael Howell
2983698b20 rustdoc: do not show primitives and keywords as private 2022-03-31 09:16:33 -07:00
Vadim Petrochenkov
f5ee822098 rustdoc: Fix resolution of crate-relative paths in doc links 2022-03-31 10:58:36 +03:00
Jules Bertholet
c8ab63b30f Only show associated consts from inherent impls in sidebar 2022-03-30 13:49:50 -04:00
lcnr
ee62514b16 fix rustdoc wrt builtin impls switch 2022-03-30 11:23:58 +02:00
lcnr
0d0d9cd718 update rustdoc 2022-03-30 11:23:58 +02:00
lcnr
983c12f7f6 update ui tests 2022-03-30 11:23:58 +02:00
bors
11909e3588 Auto merge of #95096 - GuillaumeGomez:rm-header-fn-field, r=camelid
Remove header field from clean::Function

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

This is another take on https://github.com/rust-lang/rust/issues/89673 (compared to https://github.com/rust-lang/rust/pull/91217) but very different on the approach: I moved the header call in one place but still require to have the `clean::Item` so I can use the `DefId` to get what is missing.

cc `@jyn514` (you reviewed the original so maybe you want to take a look?)
r? `@camelid`
2022-03-29 12:49:03 +00:00
Guillaume Gomez
fd48ea02af Add test to ensure foreign functions from dependencies are correctly handled 2022-03-29 11:46:57 +02:00
bors
2d37f38f87 Auto merge of #95024 - koehlma:rustdoc-private-items, r=GuillaumeGomez,camelid,jsha
rustdoc: add 🔒 to items with restricted visibility

This change marks items with restricted visibility with 🔒 when building with `--document-private-items`:

<img width="278" alt="Screen Shot 2022-03-20 at 23 50 24" src="https://user-images.githubusercontent.com/509209/159189513-9e4b09bb-6785-41a5-bfe2-df02f83f8641.png">

There also appears a “Restricted Visibility” tooltip when hovering over the emoji.

---

The original PR for reference:

This change makes private items slightly transparent (similar to `unstable` items in rustc):

<img width="272" alt="Screen Shot 2022-03-16 at 22 17 43" src="https://user-images.githubusercontent.com/509209/158692627-a1f6f5ec-e043-4aa2-9352-8d2b15c31c08.png">

I found myself using `--document-private-items` a lot recently because I find the documentation of private internals quite helpful when working on a larger project. However, not being able to distinguish private from public items (see #87785) when looking at the documentation makes this somewhat cumbersome.

This PR addresses the third suggestion of issue #87785 by marking private items typographically. It seems to me that the other suggestions are more involved but this is at least a first step.

A private item is also made slightly transparent in the path displayed in the header of a page:

<img width="467" alt="Screen Shot 2022-03-16 at 22 19 51" src="https://user-images.githubusercontent.com/509209/158692885-0bbd3417-3c0b-486f-b8ab-99c05c6fa7ca.png">

I am looking forward to feedback and suggestions.
2022-03-28 13:49:22 +00:00
Maximilian Köhl
1c523ba772 add tests for 🔒 2022-03-21 11:40:25 +01:00
Guillaume Gomez
7c53ae09a8 Add test to ensure auto-traits are respecting constraints 2022-03-18 11:27:18 +01:00
Matthias Krüger
82215ce646
Rollup merge of #94740 - GuillaumeGomez:unify-impl-blocks, r=notriddle
Unify impl blocks by wrapping them into a div

The blanket and "auto traits" sections are wrapped into a `div` with an ID. This PR fixes this incoherence by wrapping each impl section (the "deref impl" and the "inherent impl" sections were missing it). It'll also make some tests simpler to write.

r? `````@notriddle`````
2022-03-10 19:00:08 +01:00
Guillaume Gomez
fbd9c284d7 Update GUI tests for impl blocks path changes 2022-03-08 23:12:11 +01:00
Guillaume Gomez
a5216cf67d Unify inherent impl blocks by wrapping them into a div 2022-03-08 23:12:11 +01:00
Michael Goulet
890a44f66b Fix rustdoc for GATs with with anonymous bound regions 2022-03-06 15:58:35 -08:00
Matthias Krüger
faf1a7ffc8
Rollup merge of #93412 - fee1-dead:improve-rustdoc-const-bounds, r=GuillaumeGomez
Improve rustdoc const bounds

 - Rustdoc no longer displays `~const` in trait bounds, because it currently means nothing for stable users, and because we still haven't decided on the final syntax yet.
 - Rustdoc will hide trait bounds where the trait is `Drop` AND it is `~const`, i.e. `~const Drop` bounds because it has no effect on stable users as well.
 - Because of additional logic that hides the whole `where` statement where it consists of `~const Drop` bounds (so it doesn't display `struct Foo<T>() where ;` like that), bounds that have no trait e.g. `where [T; N+1]: ;` are also hidden.

Cherry-picked from #92433.
2022-03-06 15:41:26 +01:00
bors
1661e4c7e0 Auto merge of #93805 - petrochenkov:doclinkself, r=camelid,GuillaumeGomez
rustdoc: Stop textually replacing `Self` in doc links before resolving them

Resolve it directly to a type / def-id instead.

Also never pass `Self` to `Resolver`, it is useless because it's guaranteed that no resolution will be found.

This is a pre-requisite for https://github.com/rust-lang/rust/issues/83761.
2022-03-06 02:14:49 +00:00
bors
6d7684101a Auto merge of #94009 - compiler-errors:gat-rustdoc, r=GuillaumeGomez
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:
![image](https://user-images.githubusercontent.com/3674314/153988325-9732cbf3-0645-4e1a-9e64-ddfd93877b55.png)
2022-03-04 00:27:23 +00:00
Michael Goulet
0e57a16c88 add tests 2022-03-03 13:01:35 -08:00
Matthias Krüger
835eaaa77e
Rollup merge of #94550 - GuillaumeGomez:HKF-macros, r=notriddle
rustdoc: Add test for higher kinded functions generated by macros

Fixes #75564.

The problem has been solved apparently so adding a test to prevent a regression.

r? ```@notriddle```
2022-03-03 20:01:46 +01:00
Guillaume Gomez
e3f04de3d4 Add test for higher kinded functions generated by macros 2022-03-03 11:32:07 +01:00
Matthias Krüger
850511d483
Rollup merge of #94101 - notriddle:notriddle/strip-test-cases, r=GuillaumeGomez
rustdoc: add test cases for hidden enum variants
2022-03-03 11:02:50 +01:00
Matthias Krüger
04ecf52a48
Rollup merge of #94417 - GuillaumeGomez:fix-duplicated-impl-links, r=notriddle
Fix duplicated impl links

Fixes #78701.

The problem is that the blanket impl has the same ID as the other impl, except that we don't derive IDs when we generate the sidebar. We now do.

r? ``@notriddle``
2022-02-27 21:46:37 +01:00
Guillaume Gomez
9b8a6b97e5 Add test to ensure that links to impls are correctly generated 2022-02-27 12:07:54 +01:00
Guillaume Gomez
1d95acba34 Add test for infinite redirection 2022-02-22 16:18:18 +01:00
Deadbeef
79f2180928
Add ui test 2022-02-22 10:26:18 +11:00