Commit Graph

115426 Commits

Author SHA1 Message Date
Michael Howell dcba95f43e Declare word outside the loop, as recommended by eslint 2021-03-15 11:58:34 -07:00
Michael Howell 8eba927a3e Make nameWithoutUndescores lowercased
This basically fixes a search bug introduced by earlier changes.
2021-03-14 14:45:00 -07:00
Michael Howell f57d71533e Use a number for row.id, instead of a string
There's no reason for it to be a string, since it's only used for
de-duplicating the results arrays anyhow.
2021-03-14 10:17:20 -07:00
Michael Howell 0bfd142926 Avoid generating new strings for names that have no undescores
This should have negligible effect on time, but it cuts about 1MiB
off of resident memory usage.
2021-03-14 10:16:09 -07:00
Michael Howell d92f8405ce Remove tab character 2021-03-13 10:29:21 -07:00
Michael Howell 26f85cc172 Avoid potential collisions with constructor and the search query 2021-03-13 10:28:36 -07:00
Michael Howell 7834aeb95c Add comments regarding object shapes in buildIndex 2021-03-13 10:14:11 -07:00
Michael Howell b7d14b1b4d Fix jslint warnings 2021-03-13 09:54:19 -07:00
Michael Howell ca04ce3645 Use null instead of undefined here 2021-03-13 09:34:52 -07:00
Michael Howell b76a3d3592 Update src/librustdoc/html/static/main.js
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
2021-03-13 09:32:40 -07:00
Michael Howell 3f70bfa79c Eagerly generate the underscore-less name to search on
Basically, it doesn't make sense to generate those things every time
you search. That generates a bunch of stuff for the GC to clean up,
when, if the user wanted to do another search, it would just need
to re-do it again.
2021-03-13 00:04:04 -07:00
Michael Howell d7971e587c In checkGenerics and checkType, don't use Array.prototype.splice so much
Every time splice() is called, another temporary object is created.
This version, which uses plain objects as a sort of Hash Bag,
should only produce one temporary object each time it's called.
2021-03-13 00:02:56 -07:00
Michael Howell 5fe3b87034 Get rid of the garbage produced by getObjectFromId
There is no reason for this function to return an object,
since it is always used for getting at the name anyhow.
It's used in the inner loop for some popular functions,
so we want to avoid allocating in it.
2021-03-12 23:58:31 -07:00
Yuki Okushi 684fa1977c Rollup merge of #83059 - notriddle:config-toml-disable-minification, r=Mark-Simulacrum
Allow configuring `rustdoc --disable-minification` in config.toml

This way, you can debug rustdoc's JavaScript and CSS file with normal F12 Dev Tools and you'll have useful line numbers to work with.
2021-03-13 09:44:47 +09:00
Yuki Okushi 04e24ae67e Rollup merge of #83020 - hi-rustin:rustin-patch-enum, r=lcnr
Emit the enum range assumption if the range only contains one element

close https://github.com/rust-lang/rust/issues/82871
2021-03-13 09:44:44 +09:00
Yuki Okushi 7f319c7478 Rollup merge of #83012 - flip1995:clippyup, r=Manishearth
Update Clippy

Bi-weekly Clippy sync.

r? ``@Manishearth``
2021-03-13 09:44:43 +09:00
Michael Howell 095b6d2037 Make docs-minification default to true 2021-03-12 15:03:54 -07:00
Michael Howell fdb3e820b1 Add a disable-minification option for rustdoc
This way, you can debug rustdoc's JavaScript and CSS file
with normal F12 Dev Tools and you'll have useful line numbers
to work with.
2021-03-12 12:25:16 -07:00
bors b3e19a221e Auto merge of #83024 - Xanewok:update-rls, r=Dylan-DPC
Update RLS

Fixes #82932

r? `@ghost`
2021-03-12 16:57:11 +00:00
flip1995 99d05196d6 Clippy: HACK! Fix bootstrap error
This will be removed in the next sync, once beta is at 1.52. Until then
this hack avoids to put `cfg(bootstrap)` into Clippy.
2021-03-12 15:32:35 +01:00
flip1995 fb311e14d5 Merge commit '6ed6f1e6a1a8f414ba7e6d9b8222e7e5a1686e42' into clippyup 2021-03-12 15:30:50 +01:00
bors 215ebc364e Auto merge of #83030 - nikic:update-llvm, r=nagisa
Update llvm-project submodule

Fixes #82833. Fixes #82859. Probably also `fixes` #83025. This also merges in the current upstream 12.x branch.

r? `@nagisa`
2021-03-12 14:16:01 +00:00
bors 0cc64a34e9 Auto merge of #82935 - henryboisdequin:diagnostic-cleanups, r=estebank
Diagnostic cleanups

Follow up to #81503
Helps with #82916 (don't show note if `span` is `DUMMY_SP`)
2021-03-12 09:05:38 +00:00
hi-rustin d180f91824 Emit the enum range assumption if the range only contains one element
test: add test case

make tidy happy
2021-03-12 12:06:10 +08:00
Henry Boisdequin 26478c81fd Don't show note if span is DUMMY_SP 2021-03-12 06:18:33 +05:30
Yuki Okushi 02326d5521 Rollup merge of #83003 - notriddle:rustdoc-index-v3, r=GuillaumeGomez
rustdoc: tweak the search index format

This essentially switches search-index.js from a "array of struct" to a "struct of array" format, like this:

    {
    "doc": "Crate documentation",
    "t": [ 1, 1, 2, 3, ... ],
    "n": [ "Something", "SomethingElse", "whatever", "do_stuff", ... ],
    "q": [ "a::b", "", "", "", ... ],
    "d": [ "A Struct That Does Something", "Another Struct", "a function", "another function", ... ],
    "i": [ 0, 0, 1, 1, ... ],
    "f": [ null, null, [], [], ... ],
    "p": ...,
    "a": ...
    }

So `{ty: 1, name: "Something", path: "a::b", desc: "A Struct That Does Something", parent_idx: 0, search_type: null}` is the first item.

This makes the uncompressed version smaller, but it really shows on the compressed version:

    notriddle:rust$ wc -c new-search-index1.52.0.js
    2622427 new-search-index1.52.0.js
    notriddle:rust$ wc -c old-search-index1.52.0.js
    2725046 old-search-index1.52.0.js
    notriddle:rust$ gzip new-search-index1.52.0.js
    notriddle:rust$ gzip old-search-index1.52.0.js
    notriddle:rust$ wc -c new-search-index1.52.0.js.gz
    239385 new-search-index1.52.0.js.gz
    notriddle:rust$ wc -c old-search-index1.52.0.js.gz
    296328 old-search-index1.52.0.js.gz

That's a 4% improvement on the uncompressed version (fewer `[]`, and also changing `null` to `0` in the parent_idx list), and 20% improvement after gzipping it, thanks to putting like-typed data next to each other. Any compression algorithm based on a sliding window will probably show this kind of improvement.
2021-03-12 08:55:20 +09:00
Yuki Okushi 6ea16859fb Rollup merge of #82979 - GuillaumeGomez:run-button-pos, r=Nemo157
Fix "run" button position in error index

This isn't really a rustdoc issue but I still made the same fix in the `rustdoc.css` file (doesn't hurt).

Before:

![Screenshot from 2021-03-10 16-35-49](https://user-images.githubusercontent.com/3050060/110655807-aa402800-81bf-11eb-8a88-bc979efd1697.png)

After:

![Screenshot from 2021-03-10 16-40-08](https://user-images.githubusercontent.com/3050060/110655843-b4622680-81bf-11eb-8670-42975d92b4eb.png)

cc ````@jyn514```` (considering this is quite a big bug and an easy fix)
r? ````@Nemo157````
2021-03-12 08:55:18 +09:00
Yuki Okushi bb790d3412 Rollup merge of #82965 - XAMPPRocky:spv-ext, r=nagisa
Add spirv extension handling in compiletest

We're trying to use `compiletest` for Rust-GPU's testsuite, and ran into an issue with host specific extensions. This adds handling to fix that.
2021-03-12 08:55:16 +09:00
Yuki Okushi 16ce4f7513 Rollup merge of #82950 - mockersf:slice-intra-doc-link, r=jyn514
convert slice doc link to intra-doc links

Continuing where #80189 stopped, with `core::slice`.

I had an issue with two dead links in my doc when implementing `Deref<Target = [T]>` for one of my type. This means that [`binary_search_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key) was available, but not [`sort_by_key`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key) even though it was linked in it's doc (same issue with [`as_ptr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr) and [`as_mut_pbr`](https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr)). It becomes available if I implement `DerefMut`, as it needs an `&mut self`.

<details>
  <summary>Code that will have dead links in its doc</summary>

```rust
pub struct A;
pub struct B;

impl std::ops::Deref for B{
    type Target = [A];

    fn deref(&self) -> &Self::Target {
        &A
    }
}
```
</details>

I removed the link to `sort_by_key` from `binary_search_by_key` doc as I didn't find a nice way to have a live link:
- `binary_search_by_key` is in `core`
- `sort_by_key` is in `alloc`
- intra-doc link `slice::sort_by_key` doesn't work, as `alloc` is not available when `core` is being build (the warning can't be ignored: ```error[E0710]: an unknown tool name found in scoped lint: `rustdoc::broken_intra_doc_links` ```)
- keeping the link as an anchor `#method.sort_by_key` meant a dead link
- an absolute link would work but doesn't feel right...
2021-03-12 08:55:15 +09:00
Yuki Okushi a98dc9b3e7 Rollup merge of #82571 - aDotInTheVoid:reexport-tests, r=CraftSpider
Rustdoc Json: Add tests for Reexports, and improve jsondocck

The two changes are orthognal, so you can land just one if you want, but the improved errors realy helped write the tests.

Notably does not have the case from #80664, but I want to have all the ajacent cases tested before starting work on that to ensure I dont break anything.

Improves #81359

cc ```@CraftSpider```

r? ```@jyn514```

```@rustbot``` modify labels: +A-testsuite +T-rustdoc +A-rustdoc-json
2021-03-12 08:55:13 +09:00
Nikita Popov ef269ac4fc Add tests for issues #82833 and #82859 2021-03-11 22:58:14 +01:00
Nikita Popov d9be71a5b8 Update llvm-project submodule 2021-03-11 22:04:10 +01:00
bors 4a8b6f708c Auto merge of #82806 - nikic:memcpyopt-mssa, r=nagisa
Enable MemorySSA in MemCpyOpt

LLVM 12 ships with an implementation of MemCpyOpt which is based on MSSA instead of MDA. This implementation can eliminate memcpys across blocks, and as such fixes many (but not all) failures to eliminate redundant memcpys for Rust code. Unfortunately this was only enabled by default shortly after LLVM 12 was cut. This backports the enablement to our LLVM fork.

Perf results: https://perf.rust-lang.org/compare.html?start=8fd946c63a6c3aae9788bd459d278cb2efa77099&end=0628b91ce17035fb5b6a1a99a4f2ab9ab69be7a8

There are improvements on check and debug builds, which indicate that rustc itself has become faster. For opt builds this is, on average, a very minor improvement as well, although there is one significant outlier with deep-vector-opt. This benchmark creates ~140000 zero stores, which are now coalesced into a memset slightly later, resulting in longer compile-time for intermediate passes.
2021-03-11 18:14:59 +00:00
Igor Matuszewski ae5cc8a75b Update RLS 2021-03-11 19:02:00 +01:00
Nikita Popov 623ca84ab7 Enable MemorySSA-based MemCpyOpt
This updates the LLVM submodule to pick up a backported patch
to enable MemorySSA-based MemCpyOpt, which is capable of optimizing
away memcpy's across basic blocks.
2021-03-11 14:28:47 +01:00
bors 5c6d3bf389 Auto merge of #83009 - RalfJung:miri, r=RalfJung
bump Miri

Fixes https://github.com/rust-lang/rust/issues/82961
Cc `@rust-lang/miri` r? `@ghost`
2021-03-11 11:37:36 +00:00
flip1995 78c740e2f3 Merge remote-tracking branch 'upstream/master' into rustup 2021-03-11 10:37:58 +01:00
bors ea16128233 Auto merge of #82947 - GuillaumeGomez:fix-nojs-style-issues, r=Nemo157
Fix nojs style issues

There are two issues fixed here:
 1. The position of "{version}" and "[src]" spans.
 2. The position of attributes (on top of functions)

Please note that these issues only happen if you have disabled javascript.

Before:

![Screenshot from 2021-03-09 20-45-54](https://user-images.githubusercontent.com/3050060/110534652-9e048e00-811f-11eb-979e-6d85545edd65.png)

After:

![Screenshot from 2021-03-09 21-01-32](https://user-images.githubusercontent.com/3050060/110534667-a1981500-811f-11eb-8a19-32f4d5381a2b.png)

In the last commit, I added a test to enforce the attributes position. I need to think how to enforce it for the spans but that can comes later on.

r? `@Nemo157`
2021-03-11 09:08:57 +00:00
Ralf Jung 9a30337601 bump Miri 2021-03-11 09:29:12 +01:00
Michael Howell 3934dd1b3e rustdoc: tweak the search index format
This essentially switches search-index.js from a "array of struct"
to a "struct of array" format, like this:

    {
    "doc": "Crate documentation",
    "t": [ 1, 1, 2, 3, ... ],
    "n": [ "Something", "SomethingElse", "whatever", "do_stuff", ... ],
    "q": [ "a::b", "", "", "", ... ],
    "d": [ "A Struct That Does Something", "Another Struct", "a function", "another function", ... ],
    "i": [ 0, 0, 1, 1, ... ],
    "f": [ null, null, [], [], ... ],
    "p": ...,
    "a": ...
    }

So `{ty: 1, name: "Something", path: "a::b", desc: "A Struct That Does Something", parent_idx: 0, search_type: null}` is the first item.

This makes the uncompressed version smaller, but it really shows on the
compressed version:

    notriddle:rust$ wc -c new-search-index1.52.0.js
    2622427 new-search-index1.52.0.js
    notriddle:rust$ wc -c old-search-index1.52.0.js
    2725046 old-search-index1.52.0.js
    notriddle:rust$ gzip new-search-index1.52.0.js
    notriddle:rust$ gzip old-search-index1.52.0.js
    notriddle:rust$ wc -c new-search-index1.52.0.js.gz
    239385 new-search-index1.52.0.js.gz
    notriddle:rust$ wc -c old-search-index1.52.0.js.gz
    296328 old-search-index1.52.0.js.gz
    notriddle:rust$

That's a 4% improvement on the uncompressed version (fewer `[]`),
and 20% improvement after gzipping it, thanks to putting like-typed
data next to each other. Any compression algorithm based on a sliding
window will probably show this kind of improvement.
2021-03-10 20:20:42 -07:00
Nixon Enraght-Moony 5f24798b9e Improve some jsondocck errors 2021-03-10 22:06:05 +00:00
Nixon Enraght-Moony 9925ecb392 Add reexport tests 2021-03-10 22:06:05 +00:00
bors 066f01d81b Auto merge of #82960 - camelid:masked_crates, r=jyn514
Remove `masked_crates` from `clean::Crate`

Previously, `masked_crates` existed both on `Cache` and on
`clean::Crate`. During cache population, the `clean::Crate` version was
`take`n and moved to `Cache`.

This change removes the version on `clean::Crate` and instead directly
mutates `Cache.masked_crates` to initialize it. This has the advantage
of avoiding duplication and avoiding unnecessary allocation, as well as
making the flow of information through rustdoc less confusing.

The one downside I see is that `clean::utils::krate()` now uses the side
effect of mutating `DocContext.cache` instead of returning the data
directly, but it already mutated the `Cache` for other things (e.g.,
`deref_trait_did`) so it's not really new behavior. Also,
`clean::utils::krate()` is only called once (and is meant to only be
called once since it performs expensive and potentially destructive
operations) so the mutation shouldn't be an issue.

Follow-up to https://github.com/rust-lang/rust/pull/82018#discussion_r584197747.

cc `@jyn514`
2021-03-10 21:54:06 +00:00
bors f98721f886 Auto merge of #82982 - Dylan-DPC:rollup-mt497z7, r=Dylan-DPC
Rollup of 9 pull requests

Successful merges:

 - #81309 (always eagerly eval consts in Relate)
 - #82217 (Edition-specific preludes)
 - #82807 (rustdoc: Remove redundant enableSearchInput function)
 - #82924 (WASI: Switch to crt1-command.o to enable support for new-style commands)
 - #82949 (Do not attempt to unlock envlock in child process after a fork.)
 - #82955 (fix: wrong word)
 - #82962 (Treat header as first paragraph for shortened markdown descriptions)
 - #82976 (fix error message for copy(_nonoverlapping) overflow)
 - #82977 (Rename `Option::get_or_default` to `get_or_insert_default`)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-03-10 19:12:53 +00:00
François Mockers 06669056b5 remove slice linkcheck exceptions 2021-03-10 18:18:56 +01:00
Dylan DPC f5196aea65 Rollup merge of #82976 - RalfJung:copy-nonoverlapping, r=oli-obk
fix error message for copy(_nonoverlapping) overflow

Fixes an error message regression introduced in https://github.com/rust-lang/rust/pull/77511 (and adds tests).

r? `@oli-obk`
2021-03-10 17:55:46 +01:00
Dylan DPC 5c62a182a1 Rollup merge of #82962 - notriddle:cleanup-index, r=jyn514
Treat header as first paragraph for shortened markdown descriptions

"The Rust Standard LibraryThe Rust Standard Library is the …" is an awful description.
2021-03-10 17:55:45 +01:00
Dylan DPC d01648b60e Rollup merge of #82949 - the8472:forget-envlock-on-fork, r=joshtriplett
Do not attempt to unlock envlock in child process after a fork.

This implements the first two points from https://github.com/rust-lang/rust/issues/64718#issuecomment-793030479

This is a breaking change for cases where the environment is accessed in a Command::pre_exec closure. Except for single-threaded programs these uses were not correct anyway since they aren't async-signal safe.

Note that we had a ui test that explicitly tried `env::set_var` in `pre_exec`. As expected it failed with these changes when I tested locally.
2021-03-10 17:55:43 +01:00
Dylan DPC 881bbb758a Rollup merge of #82924 - sunfishcode:wasi-command, r=alexcrichton
WASI: Switch to crt1-command.o to enable support for new-style commands

This switches Rust's WASI target to use crt1-command.o instead of
crt1.o, which enables support for new-style commands. By default,
new-style commands work the same way as old-style commands, so nothing
immediately changes here, but this will be needed by later changes to
enable support for typed arguments.

See here for more information on new-style commands:
 - https://github.com/WebAssembly/wasi-libc/pull/203
 - https://reviews.llvm.org/D81689

r? ```@alexcrichton```
2021-03-10 17:55:41 +01:00
Dylan DPC 9ac57b1520 Rollup merge of #82807 - notriddle:cleanup-js, r=jyn514
rustdoc: Remove redundant enableSearchInput function

enableSearchInput was called from two places:

- setupSearchLoader
- addSearchOptions, which is itself called from setupSearchLoader only

This commit can safely get rid of the addSearchOptions calls entirely, and since the setupSearchLoader call is immediately preceded by other method calls on search_input, there's no need to check if it's set.
2021-03-10 17:55:40 +01:00