Commit graph

6893 commits

Author SHA1 Message Date
bors
0846043440 Auto merge of #82511 - jsha:fix-bfcache2, r=GuillaumeGomez
Fix back-forward cache in rustdoc frontend

Rustdoc's frontend set a no-op unload handler, specifically to disable
Firefox's back-forward cache because it caused a bug. It's nice to
allow the back-forward cache because it permits faster navigations.

This change addresses the issues that were caused by back-forward cache.

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching
https://web.dev/bfcache/

Demo: https://jacob.hoffman-andrews.com/rust/fix-bfcache/std/string/struct.String.html

Related: #72272
2021-02-27 05:06:05 +00:00
Guillaume Gomez
0da9b474de
Rollup merge of #82549 - rust-lang:revert-82313-update-normalize-css, r=apiraino
Revert "Update normalize.css to 8.0.1"

Reverts rust-lang/rust#82313

Fixes #82548
Fixes #82542

``@jsha:`` I'm reverting until we can come up with a new version which is fully working.

r? ``@jyn514``
2021-02-26 15:52:37 +01:00
Guillaume Gomez
b4ded5a07b
Rollup merge of #82545 - jsha:woff2, r=GuillaumeGomez
rustdoc: add optional woff2 versions of FiraSans.

For browsers that support woff2 (most modern ones:
https://caniuse.com/woff2), this offers a reduction in download size
for these two fonts from 362k to 257k (32% reduction). It decreases the
total page size for `struct.String.html` (counting all subresources) by
about 2.5%.

If this is interesting, I'm happy to apply the same treatment to the
other fonts, but these two are the biggest.
2021-02-26 15:52:36 +01:00
Guillaume Gomez
0db8349fff
Rollup merge of #81940 - jhpratt:stabilize-str_split_once, r=m-ou-se
Stabilize str_split_once

Closes #74773
2021-02-26 15:52:29 +01:00
Guillaume Gomez
b0dc39ec12
Revert "Update normalize.css to 8.0.1" 2021-02-26 14:59:24 +01:00
Jacob Hoffman-Andrews
ad7ed13eab Embed woff2 files in rustdoc binary. 2021-02-26 00:38:05 -08:00
Jacob Hoffman-Andrews
c47903f063 Add optional woff2 versions of FiraSans.
For browsers that support woff2 (most modern ones:
https://caniuse.com/woff2), this offers a reduction in download size
for these two fonts from 362k to 257k (32% reduction). It decreases the
total page size for `struct.String.html` (counting all subresources) by
about 2.5%.

If this is interesting, I'm happy to apply the same treatment to the
other fonts, but these two are the biggest.
2021-02-26 00:02:11 -08:00
bors
d95d304861 Auto merge of #78429 - casey:doctest-attribute-splitting, r=jyn514
[librustdoc] Only split lang string on `,`, ` `, and `\t`

Split markdown lang strings into tokens on `,`.

The previous behavior was to split lang strings into tokens on any
character that wasn't a `_`, `_`, or alphanumeric.

This is a potentially breaking change, so please scrutinize! See discussion in #78344.

I noticed some test cases that made me wonder if there might have been some reason for the original behavior:

```
t("{.no_run .example}", false, true, Ignore::None, true, false, false, false, v(), None);
t("{.sh .should_panic}", true, false, Ignore::None, false, false, false, false, v(), None);
t("{.example .rust}", false, false, Ignore::None, true, false, false, false, v(), None);
t("{.test_harness .rust}", false, false, Ignore::None, true, true, false, false, v(), None);
```

It seemed pretty peculiar to specifically test lang strings in braces, with all the tokens prefixed by `.`.

I did some digging, and it looks like the test cases were added way back in [this commit from 2014](3fef7a74ca) by `@skade.`

It looks like they were added just to make sure that the splitting was permissive, and aren't testing that those strings in particular are accepted.

Closes https://github.com/rust-lang/rust/issues/78344.
2021-02-26 00:17:22 +00:00
Aaron Hill
8250a2510d
Rollup merge of #82484 - bugadani:docfix, r=jyn514
rustdoc: Remove duplicate "List of all items"

Closes #82477

r? `@jyn514`
2021-02-25 16:06:23 -05:00
bors
0ab7c1d56f Auto merge of #82517 - Dylan-DPC:rollup-a1958gb, r=Dylan-DPC
Rollup of 16 pull requests

Successful merges:

 - #75807 (Convert core/num/mod.rs to intra-doc links)
 - #80534 (Use #[doc = include_str!()] in std)
 - #80553 (Add an impl of Error on `Arc<impl Error>`.)
 - #81167 (Make ptr::write const)
 - #81575 (rustdoc: Name fields of `ResolutionFailure::WrongNamespace`)
 - #81713 (Account for associated consts in the "unstable assoc item name colission" lint)
 - #82078 (Make char and u8 methods const)
 - #82087 (Fix ICE caused by suggestion with no code substitutions)
 - #82090 (Do not consider using a semicolon inside of a different-crate macro)
 - #82213 (Slices for vecs)
 - #82214 (Remove redundant to_string calls)
 - #82220 (fix the false 'defined here' messages)
 - #82313 (Update normalize.css to 8.0.1)
 - #82321 (AST: Remove some unnecessary boxes)
 - #82364 (Improve error msgs when found type is deref of expected)
 - #82514 (Update Clippy)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-02-25 15:15:59 +00:00
Dylan DPC
05ed0814b9
Rollup merge of #82313 - jsha:update-normalize-css, r=GuillaumeGomez
Update normalize.css to 8.0.1

From From https://github.com/necolas/normalize.css/releases/tag/8.0.1.

The old version was 3.0.0, from 2014. The new version is from 2018.

I noticed when looking at frontend performance for rustdoc that this file was out of date. The URL in the 3.0.0 license header now resolves to an incorrect destination. And generally it seems good to be up-to-date.

Before-and-after images, plus diff, under details. TL;DR: Nothing changes except a slight adjustment to line height.

<details>

![with-normalize-8 0 1](https://user-images.githubusercontent.com/220205/108581849-bd5c8800-72e4-11eb-9150-78c8d67ca37a.png)

![with-normalize-3 0 0](https://user-images.githubusercontent.com/220205/108581848-bcc3f180-72e4-11eb-8b45-0cd1415a51e5.png)

![diff](https://user-images.githubusercontent.com/220205/108581890-dfeea100-72e4-11eb-93c5-6284492f54a9.png)

</details>
2021-02-25 14:34:02 +01:00
Dylan DPC
749d70ae69
Rollup merge of #81575 - camelid:rustdoc-wrongnamespace-cleanup, r=jyn514
rustdoc: Name fields of `ResolutionFailure::WrongNamespace`

It makes it clearer that the `Namespace` is the one requested by the
disambiguator, rather than the actual namespace of the item. It said
that in the docs before, but now you can tell in the code so it reduces
the potential for confusion.
2021-02-25 14:33:52 +01:00
bors
b36f77012d Auto merge of #82265 - GuillaumeGomez:cleanup-attrs-twice, r=jyn514
Prevent to compute Item attributes twice

I came across this case when working on another part of rustdoc. Not a game changer but a nice little improvement.

cc `@camelid`

r? `@jyn514`
2021-02-25 12:33:21 +00:00
Jacob Hoffman-Andrews
51a14c7265 Fix back-forward cache in rustdoc frontend.
Rustdoc's frontend set a no-op unload handler, specifically to disable
Firefox's back-forward cache because it caused a bug. It's nice to
allow the back-forward cache because it permits faster navigations.

This change addresses the issues that were caused by back-forward cache.

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/1.5/Using_Firefox_1.5_caching
https://web.dev/bfcache/
2021-02-24 22:16:26 -08:00
Dániel Buga
d3f75ebf60 Add test 2021-02-24 18:14:31 +01:00
Dániel Buga
3be69b100f Remove duplicate string 2021-02-24 17:44:37 +01:00
Guillaume Gomez
cc0d531463 Make DocContext &mut for clean 2021-02-24 10:16:33 +01:00
Guillaume Gomez
f24eac5e64 Prevent to compute Item attributes twice 2021-02-24 10:05:19 +01:00
Camelid
a03950bc88 rustdoc: Name fields of ResolutionFailure::WrongNamespace
It makes it clearer that the `Namespace` is the one requested by the
disambiguator, rather than the actual namespace of the item. It said
that in the docs before, but now you can tell in the code so it reduces
the potential for confusion.
2021-02-23 20:58:08 -08:00
Guillaume Gomez
33aaead6a1 Improve code readability 2021-02-23 22:13:48 +01:00
Guillaume Gomez
3c59e64abf * Fix some typo
* Improve documentation
* Add a test to ensure that spotlighted traits from dependencies are taken into account as expected
2021-02-23 21:58:17 +01:00
Guillaume Gomez
b5c8eea55d Put clean::Trait extra information into a new struct to make it more coherent 2021-02-23 21:58:16 +01:00
Guillaume Gomez
fa51c0f472 Use a qualified path to make it more clear where list_contains_name function comes from 2021-02-23 21:57:42 +01:00
Guillaume Gomez
58a34a4dde Remove is_spotlight field from Trait 2021-02-23 21:57:40 +01:00
Dylan DPC
8e67fe5011
Rollup merge of #82305 - camelid:no-more-refcell, r=jyn514
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!

r? `@jyn514`
2021-02-23 16:10:26 +01:00
Dylan DPC
8541435e8d
Rollup merge of #82234 - GuillaumeGomez:remove-query-param-on-esc, r=Nemo157
Remove query parameters when skipping search results

Fixes #81330.

This PR changes the following: when pressing ESC and that no other "action" was performed (understand: no closing the search result, or hiding a menu or something along the line), then we discard the URL query parameters (the `?whatever=dsjfs`). What do you think about this change ```@rust-lang/rustdoc``` ?

EDIT: finally we're simply removing the query parameter when we're skipping the search results.

r? ```@Nemo157```
2021-02-23 02:51:54 +01:00
Dylan DPC
1c2a949736
Rollup merge of #79423 - camelid:smart-punct, r=jyn514
Enable smart punctuation

Closes #76690.
2021-02-23 02:51:42 +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
Yuki Okushi
86940bed98
Rollup merge of #82382 - camelid:remove-fake_def_ids-refcell, r=jyn514
rustdoc: Remove `fake_def_ids` RefCell
2021-02-22 18:26:14 +09:00
Yuki Okushi
4dfe69a6e6
Rollup merge of #82353 - camelid:no-more-param_env-cell, r=jyn514
rustdoc: Remove unnecessary `Cell` around `param_env`

r? `@jyn514`
2021-02-22 18:26:09 +09:00
Yuki Okushi
1dba8ce8a5
Rollup merge of #82351 - notriddle:docs-meta-description, r=jyn514
Use the first paragraph, instead of cookie-cutter text, for rustdoc descriptions

Partially addresses #82283.
2021-02-22 18:26:08 +09:00
Camelid
45673e2d44 rustdoc: Remove fake_def_ids RefCell 2021-02-21 18:45:56 -08:00
bors
24bfcee941 Auto merge of #82295 - jyn514:feature-gate, r=Manishearth
[intra-doc links] Don't check feature gates of items re-exported across crates

It should be never break another crate to re-export a public item.

Note that this doesn't check the feature gate at
*all* for other crates:

- Feature-gates aren't currently serialized, so the only way to check
  the gate is with ad-hoc attribute checking.
- Checking the feature gate twice (once when documenting the original
  crate and one when documenting the current crate) seems not great.

This should still catch using the feature most of the time though, since
people tend to document their own crates.

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

r? `@Manishearth`
2021-02-22 00:04:09 +00:00
Camelid
6a85719b6a rustdoc: Remove unnecessary Cell around param_env 2021-02-20 17:12:22 -08:00
Michael Howell
bcef5e7077 Revert changes to all.html
This code wasn't actually working, and trying to SEO optimize that page is pointless anyway.
2021-02-20 17:26:05 -07:00
Michael Howell
1bedd4d678 Cut off plain text descriptions after headers
Before:

    The Rust Standard LibraryThe Rust Standard Library is the foundation of portable Rust software, a set of minimal and battle-tested shared abstractions for the broader Rust ecosystem. It offers core types, like `Vec<T>` and `Option<T>`, library-defined operations on language primitives, standard macros, I/O and multithreading, among many other things.

After:

    The Rust Standard Library
2021-02-20 16:48:37 -07:00
Michael Howell
553852806d Use the first paragraph, instead of cookie-cutter text, for rustdoc descriptions
Fixes #82283
2021-02-20 16:48:37 -07:00
Guillaume Gomez
3071685505 Don't render [src] link on dummy spans 2021-02-20 19:51:38 +01:00
Jacob Hoffman-Andrews
7acb10514b Re-minify normalize.css.
This bypasses tidy's complaints about tab indent. Also, this lets us
remove comments while keeping the MIT license comment.
2021-02-19 18:49:00 -08:00
Jacob Hoffman-Andrews
9bbd48256d Update normalize.css to 8.0.1
From https://github.com/necolas/normalize.css/releases/tag/8.0.1.
2021-02-19 18:28:53 -08:00
Jacob Hoffman-Andrews
7ad4b7a62f Replace normalize.css 3.0.0 with unminified version.
This is in preparation to upgrade to 8.0.1, so the next commit
can contain more meaningful diffs.
2021-02-19 18:26:19 -08:00
Guillaume Gomez
d20e05b78b Show negative implementation of Sized trait 2021-02-19 22:38:07 +01:00
bors
9b471a3f5f Auto merge of #82020 - jyn514:mut-passes, r=camelid,GuillaumeGomez
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.

This combined with https://github.com/rust-lang/rust/pull/82018 should hopefully help with https://github.com/rust-lang/rust/pull/82014 by allowing `cx.cache.exported_traits` to be modified in `register_res`. Previously it had to use interior mutability, which required either adding a RefCell to `cache.exported_traits` on *top* of the existing `RefCell<Cache>` or mixing reads and writes between `cx.exported_traits` and `cx.cache.exported_traits`. I don't currently have that working but I expect it to be reasonably easy to add after this.
2021-02-19 16:39:03 +00:00
Joshua Nelson
fdb32e997b [intra-doc links] Don't check feature gates of items re-exported across crates
It should be never break another crate to re-export a public item.

Note that this doesn't check the feature gate at
*all* for other crates:

- Feature-gates aren't currently serialized, so the only way to check
  the gate is with ad-hoc attribute checking.
- Checking the feature gate twice (once when documenting the original
  crate and one when documenting the current crate) seems not great.

This should still catch using the feature most of the time though, since
people tend to document their own crates.
2021-02-19 11:38:14 -05:00
Dylan DPC
d9bc16cf36
Rollup merge of #82261 - ojeda:rustdoc-argfile, r=jyn514
rustdoc: Support argument files

Factors out the `rustc_driver` logic that handles argument files so that rustdoc supports them as well, e.g.:

    rustdoc `@argfile`

This is needed to be able to generate docs for projects that already use argument files when compiling them, e.g. projects that pass a huge number of `--cfg` arguments.

The feature was stabilized for `rustc` in #66172.
2021-02-19 02:49:12 +01:00
Miguel Ojeda
755b3fc722 rustdoc: Support argument files
Factors out the `rustc_driver` logic that handles argument files
so that rustdoc supports them as well, e.g.:

    rustdoc @argfile

This is needed to be able to generate docs for projects that
already use argument files when compiling them, e.g. projects
that pass a huge number of `--cfg` arguments.

The feature was stabilized for `rustc` in #66172.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
2021-02-19 02:32:45 +01:00
Dylan DPC
04df75a429
Rollup merge of #82236 - matthiaskrgr:useless_conv, r=jyn514
avoid converting types into themselves (clippy::useless_conversion)
2021-02-18 16:57:40 +01:00
Guillaume Gomez
eeb5552667 Remove query parameters when leaving search results 2021-02-17 22:04:30 +01:00
Guillaume Gomez
f97e1121a7
Rollup merge of #82207 - ehuss:rustdoc-2021, r=jyn514
rustdoc: treat edition 2021 as unstable

This ensures that `--edition=2021` requires `-Z unstable-options` in rustdoc.
2021-02-17 20:38:07 +01:00
Matthias Krüger
ec50a2086a avoid converting types into themselves (clippy::useless_conversion) 2021-02-17 20:37:09 +01:00