Commit graph

1448 commits

Author SHA1 Message Date
Guillaume Gomez
7967152eee Add test for inherent impls anchors 2022-07-06 14:58:46 +02:00
Guillaume Gomez
4986379d79
Rollup merge of #98256 - GuillaumeGomez:whitespace-where-clause, r=notriddle
Fix whitespace handling after where clause

Fixes #97733.

You can see the result [here](https://rustdoc.crud.net/imperio/whitespace-where-clause/doc/foo/index.html).

r? `@jsha`
2022-07-05 23:43:31 +02:00
Guillaume Gomez
c8a5b671a0 Add test for invalid whitespace display after where clause 2022-07-05 22:37:42 +02:00
Dylan DPC
6a61e18688
Rollup merge of #98856 - GuillaumeGomez:rustdoc-test-rm-fixme, r=Dylan-DPC
Remove FIXME from rustdoc intra-doc test

Removed the FIXME.

For the `extern crate`, even if `pub` exported, its documentation wasn't rendered so there is no point in keeping it.

r? ``@notriddle``
2022-07-05 16:04:34 +05:30
Matthias Krüger
9ad3ef13ac
Rollup merge of #98814 - fmease:minimal-fix-for-issue-97933, r=GuillaumeGomez
rustdoc: Censor certain complex unevaluated const exprs

Fixes #97933.

This is more of a hotfix for the aforementioned issue. By that, I mean that my proposed patch is
not the best solution but one that does not change as much existing code.
It treats symptoms rather than the root cause.

This PR “censors” certain complex unevaluated constant expressions like `match`es, blocks, function calls, struct literals etc. by pretty-printing them as `_` / `{ _ }` (number and string literals, paths and `()` are still printed as one would expect).
Resorting to this placeholder is preferable to printing the full expression verbatim since
they can be quite large and verbose resulting in an unreadable mess in the generated documentation.
Further, mindlessly printing the const would leak private and `doc(hidden)` struct fields (#97933), at least in the current
stable & nightly implementations which rely on `span_to_snippet` (!) and `rustc_hir_pretty::id_to_string`.

The censoring of _verbose_ expressions is probably going to stay longer term.
However, in regards to private and `doc(hidden)` struct fields, I have a more proper fix in mind
which I have already partially implemented locally and for which I am going to open a separate PR sometime soon.
For that, I was already in contact with `@GuillaumeGomez.`
The proper fix involves rustdoc not falling back on pretty-printing unevaluated consts so easily (what this PR is concerned about)
and instead preferring to print evaluated consts which contain more information allowing it to selectively hide private and `doc(hidden)` fields, create hyperlinks etc. generally making the output more granular and precise (compared to the brutal `_` placeholder).

Unfortunately, I was a bit too late and the issue just hit stable (1.62).
Should this be backported to beta or even a potential 1.62.1?

r? `@GuillaumeGomez`
2022-07-04 23:11:11 +02:00
León Orell Valerian Liehr
d3181a9a01 rustdoc: censor certain complex unevaluated const exprs 2022-07-04 18:39:52 +02:00
Matthias Krüger
f236b6853a
Rollup merge of #98806 - GuillaumeGomez:decl-trailing-whitespace, r=notriddle
Fix long declaration trailing whitespace

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

Interestingly enough, it even simplifies the code a bit.

r? `@notriddle`
2022-07-04 06:08:09 +02:00
Guillaume Gomez
69f7a6216e Add test for trailing whitespace in long declaration 2022-07-03 20:28:47 +02:00
Guillaume Gomez
ce9e834b6b Remove FIXME from rustdoc intra-doc test 2022-07-03 20:23:30 +02:00
Camille GILLOT
42e4eee893 Shorten def_span for more items. 2022-07-01 17:39:19 +02:00
Michael Howell
cd7bd8bf0a rustdoc: filter '_ lifetimes from ty::PolyTraitRef
Fixes #98697
2022-06-30 10:35:50 -07:00
Guillaume Gomez
0398aa8ccb Add regression test for #92859 2022-06-26 14:01:00 +02:00
Guillaume Gomez
f4db07ed4c Add test for macro support in "jump to def" feature 2022-06-20 21:09:55 +02:00
Dylan DPC
3174a694e0
Rollup merge of #98105 - notriddle:notriddle/tuple-links, r=jsha
rustdoc: remove tuple link on round braces

This is #98069 but for tuples. The reasoning is the same:

* This PR also changes it so that tuples with all-generic elements still link to the primitive.tuple.html page, just like slices. So there still plenty of on-ramps for anybody who doesn't know about it.
* It's too hard to see when round braces are a separate link from the type inside of them.
* It's too hard to click even if you do notice them.

Before:

* impl [ToSocketAddrs](https://doc.rust-lang.org/nightly/std/net/trait.ToSocketAddrs.html) for [(](https://doc.rust-lang.org/nightly/std/primitive.tuple.html)[IpAddr](https://doc.rust-lang.org/nightly/std/net/enum.IpAddr.html), [u16](https://doc.rust-lang.org/nightly/std/primitive.u16.html)[)](https://doc.rust-lang.org/nightly/std/primitive.tuple.html)
* impl<K, V> [FromIterator](https://notriddle.com/notriddle-rustdoc-test/std/iter/trait.FromIterator.html)<[(](https://notriddle.com/notriddle-rustdoc-test/std/primitive.tuple.html)K, V[)](https://notriddle.com/notriddle-rustdoc-test/std/primitive.tuple.html)> for [BTreeMap](https://notriddle.com/notriddle-rustdoc-test/std/collections/struct.BTreeMap.html)<K, V>

After:

* impl [ToSocketAddrs](https://doc.rust-lang.org/nightly/std/net/trait.ToSocketAddrs.html) for ([IpAddr](https://doc.rust-lang.org/nightly/std/net/enum.IpAddr.html), [u16](https://doc.rust-lang.org/nightly/std/primitive.u16.html))
* impl<K, V> [FromIterator](https://notriddle.com/notriddle-rustdoc-test/std/iter/trait.FromIterator.html)<[(K, V)](https://notriddle.com/notriddle-rustdoc-test/std/primitive.tuple.html)> for [BTreeMap](https://notriddle.com/notriddle-rustdoc-test/std/collections/struct.BTreeMap.html)<K, V>
2022-06-19 15:26:27 +02:00
Michael Howell
b068e6aeb7 Add test cases for tuples with links 2022-06-18 10:35:19 -07:00
bors
6ec3993ef4 Auto merge of #97842 - notriddle:notriddle/tuple-docs, r=jsha,GuillaumeGomez
Improve the tuple and unit trait docs

* Reduce duplicate impls; show only the `(T,)` and include a sentence saying that there exists ones up to twelve of them.
* Show `Copy` and `Clone`.
* Show auto traits like `Send` and `Sync`, and blanket impls like `Any`.

Here's the new version:

* <https://notriddle.com/notriddle-rustdoc-test/std/primitive.tuple.html>
* <https://notriddle.com/notriddle-rustdoc-test/std/primitive.unit.html>
2022-06-16 11:13:30 +00:00
Sprite
713578b827 Exclude cfg "doc" and "doctest" from feature doc_auto_cfg 2022-06-16 01:11:29 +08:00
Sprite
9aa1ccdae8 Fix cfg(not) and cfg(all) causing Rustdoc stab to disappear 2022-06-16 01:11:26 +08:00
Michael Howell
f1d24beb68 rustdoc: add test case for "variadic tuple" search notation 2022-06-14 14:17:20 -07:00
Michael Howell
682889fb06 rustdoc: remove link on slice brackets
Since #97668 was merged, the slice::get function now looks like this:

![image](https://user-images.githubusercontent.com/1593513/173430685-1dd2b275-2439-4392-b7d4-96bcb355a377.png)

That whole thing, `[T]`, is a single link to `primitive.slice.html`. This
definitely fixes it for this case, but it's not obvious what we should do for
slices of concrete types:

![image](https://user-images.githubusercontent.com/1593513/173430968-7eed1aec-b688-4f84-a492-9210aff0037a.png)

There are actually three links in that `[u8]`: the opening brace `[` is a
link to `primitive.slice.html`, the `u8` is a link to `primitive.u8.html`,
and the final `]` is a link to `primitive.slice.html`. This is a serious
[usability bug](https://usability.yale.edu/web-accessibility/articles/links):
the square braces are much too small for anyone who doesn't have perfect
motor control using mouse or touch, provide an excessive number of tab stops
for anyone using keyboard, and no visual indication whatsoever that they're
separate links.

Now that slices of generic types are linked, it seems reasonable to err on
the side of less clutter and stop linking concrete slices to the slice page.
2022-06-13 13:16:01 -07:00
Michael Howell
c1487550ca Add test case for #trait-implementations-1 link 2022-06-11 09:54:23 -07:00
Guillaume Gomez
e846c523e4 Add regression test for #84634 2022-06-08 14:26:37 +02:00
Michael Howell
1e6a85789e rustdoc: show auto/blanket docs for tuple and unit 2022-06-07 11:25:00 -07:00
Matthias Krüger
77f0209fde
Rollup merge of #90905 - GuillaumeGomez:empty-impl-blocks, r=jsha
Add empty impl blocks if they have documentation

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

The update for the test script is needed to count the number of impl blocks we have with only the struct. To be noted that with https://github.com/rust-lang/rust/pull/89676 merged, it wouldn't be needed (I don't know what is the status of it btw. cc ```@Mark-Simulacrum).```

It looks like this:

![Screenshot from 2021-11-14 16-51-28](https://user-images.githubusercontent.com/3050060/141689100-e57123c0-bf50-4c42-adf5-d991e169a0e4.png)

cc ```@jyn514```
r? ```@camelid```
2022-06-06 08:36:59 +02:00
Dylan DPC
d6f35b3454
Rollup merge of #97668 - notriddle:notriddle/slice-link, r=jsha
rustdoc: clean up primitive.slice.html links

Before: <a href="https://doc.rust-lang.org/stable/std/boxed/struct.Box.html">Box</a>&lt;<a href="https://doc.rust-lang.org/stable/std/primitive.slice.html">[</a>T<a href="https://doc.rust-lang.org/stable/std/primitive.slice.html">]</a>&gt;

After: <a href="https://doc.rust-lang.org/stable/std/boxed/struct.Box.html">Box</a>&lt;<a href="https://doc.rust-lang.org/stable/std/primitive.slice.html">[T]</a>&gt;
2022-06-03 11:18:27 +02:00
Michael Howell
7dd3861235 rustdoc: clean up primitive.slice.html links 2022-06-02 15:02:19 -07:00
Matthias Krüger
ba54e75b55
Rollup merge of #97502 - onlineSoftwareDevOK:rustdocTests, r=GuillaumeGomez
rustdoc: Add more test coverage

Related issue https://github.com/rust-lang/rust/issues/91113
2022-06-02 23:39:03 +02:00
onlinesoftwaredevok@protonmail.com
9292c907fa rustdoc: Add more test coverage 2022-06-02 11:50:36 -03:00
Dylan DPC
f95e2d34c3
Rollup merge of #97617 - GuillaumeGomez:rustdoc-anonymous-reexports, r=Nemo157
Rustdoc anonymous reexports

Fixes #97615.

r? `@Nemo157`
2022-06-02 15:27:00 +02:00
Guillaume Gomez
1d12b7eb29 Add test for anonymous reexports 2022-06-01 23:46:07 +02:00
Yuki Okushi
a96e71c752
Rollup merge of #97613 - jsha:implementation-is-on-local-type, r=GuillaumeGomez
rustdoc: Improve calculation of "Impls on Foreign Types"

The existing code to calculate whether an implementation was on a "Foreign Type" was duplicated across the sidebar generation and the page generation. It also came to the wrong conclusion for some cases where both the trait and the "for" type were re-exports.

This PR extracts the logic into a method of `Impl`, breaks it into a multi-line method so it can be commented, and adds a case for when the trait and the "for" type came from the same crate. This fixes some cases - like the platform-specific integer types (`__m256`, `__m128`, etc). But it doesn't fix all cases. See the screenshots below.

[Before](https://doc.rust-lang.org/nightly/std/clone/trait.Clone.html#foreign-impls):

<img src="https://user-images.githubusercontent.com/220205/171338226-59ce6daf-3d76-4bad-bc8d-72a8259a8f43.png" width=200>

[After](https://rustdoc.crud.net/jsha/implementation-is-on-local-type/std/clone/trait.Clone.html):

<img src="https://user-images.githubusercontent.com/220205/171338147-28308a65-1597-4223-be47-9550062404dd.png" width=200>

The remaining types (`CString`, `NulError`, etc) are all from the `alloc` crate, while the `Clone` trait is from the `core` crate. Since `CString` and `Clone` are both re-exported by `std`, they are logically local to each other, but I couldn't figure out a good way to detect that in this code. I figure this is still a good step forward.

Related: #97610

r? `@camelid`
2022-06-02 06:44:29 +09:00
Yuki Okushi
9fc3fc3a0c
Rollup merge of #97130 - notriddle:notriddle/collect-trait-impls-dup, r=GuillaumeGomez
rustdoc: avoid including impl blocks with filled-in generics

Fixes #94937

# Before

![image](https://user-images.githubusercontent.com/1593513/168933282-02ccc4ae-9c89-4836-ba34-e2bd83946105.png)

# After

![image](https://user-images.githubusercontent.com/1593513/168933255-4c17407d-d8d1-406e-87f5-9ea809437173.png)
2022-06-02 06:44:26 +09:00
Michael Howell
434adfff42 rustdoc: add test case for auto traits on slice primitive 2022-06-01 11:00:25 -07:00
Jacob Hoffman-Andrews
37d363879e Improve calculation of "Impls on Foreign Types" 2022-06-01 09:11:50 -07:00
Yuki Okushi
a1dc541c69
Rollup merge of #97470 - notriddle:notriddle/test-cases, r=GuillaumeGomez
rustdoc: add more test coverage

https://github.com/rust-lang/rust/issues/91113
2022-06-01 23:36:48 +09:00
Guillaume Gomez
51dd090d5e Add test for empty impl blocks 2022-05-31 14:02:36 +02:00
Deadbeef
257f06587c Remove #[default..] and add #[const_trait] 2022-05-30 08:52:24 +00:00
Michael Howell
5d86305ffd rustdoc: add test case for the implementors JS file placement 2022-05-27 19:22:29 -07:00
Michael Howell
e4d48c38c5 rustdoc: add test case for email that looks like intra-doc link 2022-05-27 16:37:29 -07:00
Guillaume Gomez
d803caec71 Strenghten strip-enum-variant.rs test 2022-05-21 13:21:12 +02:00
Jacob Pratt
6970246886
Remove crate visibility modifier in libs, tests 2022-05-21 00:32:47 -04:00
Guillaume Gomez
afcf099e30
Rollup merge of #96565 - notriddle:notriddle/impl-box, r=camelid
rustdoc: show implementations on `#[fundamental]` wrappers

Fixes #92940
2022-05-20 14:03:01 +02:00
bors
8a2fe75d0e Auto merge of #95960 - jhpratt:remove-rustc_deprecated, r=compiler-errors
Remove `#[rustc_deprecated]`

This removes `#[rustc_deprecated]` and introduces diagnostics to help users to the right direction (that being `#[deprecated]`). All uses of `#[rustc_deprecated]` have been converted. CI is expected to fail initially; this requires #95958, which includes converting `stdarch`.

I plan on following up in a short while (maybe a bootstrap cycle?) removing the diagnostics, as they're only intended to be short-term.
2022-05-09 04:47:30 +00:00
Guillaume Gomez
3346d11f4e
Rollup merge of #96636 - GuillaumeGomez:fix-jump-to-def-regression, r=notriddle
Fix jump to def regression

https://github.com/rust-lang/rust/pull/93803 introduced a regression in the "jump to def" feature. This fixes it.

Nice side-effect: it adds a new regression test. :)

I also used this opportunity to add documentation about this unstable feature in the rustdoc book.

cc ``@cjgillot``
r? ``@notriddle``
2022-05-07 15:23:45 +02:00
Guillaume Gomez
fd6b01f0e9 Add regression test for jump-to-def 2022-05-06 22:02:04 +02:00
Michael Howell
903aebe318 Fix test case checking for where the JS goes 2022-05-05 18:26:47 -07:00
Dylan DPC
0b96be79de
Rollup merge of #96536 - rust-lang:notriddle/deref-slice-core, r=GuillaumeGomez
rustdoc: fix missing method list for primitive deref target

This change makes it so that local impls count when listing primitives that need retained.

Fixes #95325
2022-04-29 23:54:40 +02:00
Michael Howell
62b9e0643b rustdoc: show implementations on #[fundamental] wrappers
Fixes #92940
2022-04-29 14:21:40 -07:00
Michael Howell
346065f621 rustdoc: fix missing method list for primitive deref target
This change makes it so that local impls count when listing primitives that
need retained.
2022-04-28 16:45:05 -07:00
Dylan DPC
875b22ff30
Rollup merge of #96410 - notriddle:notriddle/issue-95873, r=GuillaumeGomez
rustdoc: do not write `{{root}}` in `pub use ::foo` docs

Fixes #95873
2022-04-27 02:47:11 +02:00