Commit graph

116138 commits

Author SHA1 Message Date
Manish Goregaokar
f146b9701d rustdoc: hide fields of structs/unions > 5 2021-04-12 08:45:45 -07:00
Manish Goregaokar
71c52acf32 rustdoc: hide variants of enums > 5 2021-04-12 08:45:45 -07:00
Manish Goregaokar
c96f86de30 rustdoc: Stop hiding entire item declarations 2021-04-12 08:45:45 -07:00
bors
c18c0ad2bc Auto merge of #84068 - Amanieu:fix_lint, r=lcnr
Add `bad_asm_style` to  HardwiredLints

This was missed when the lint was added, which prevents the lint from being ignored with `#[allow]`.
2021-04-12 10:49:39 +00:00
bors
67e402f946 Auto merge of #84095 - infinity0:master, r=Mark-Simulacrum
bootstrap: check local_rebuild before adding --cfg=bootstrap, closes #84057
2021-04-12 08:03:59 +00:00
bors
e41f378f82 Auto merge of #84112 - Dylan-DPC:rollup-tapsrzz, r=Dylan-DPC
Rollup of 7 pull requests

Successful merges:

 - #83669 (Issue 81508 fix)
 - #84014 (Improve trait/impl method discrepancy errors)
 - #84059 (Bump libc dependency of std to 0.2.93)
 - #84067 (clean up example on read_to_string)
 - #84079 (Improve test for `rustdoc::bare_urls` lint)
 - #84094 (Remove FixedSizeArray)
 - #84101 (rustdoc: Move crate loader to collect_intra_doc_links::early )

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-04-12 00:38:20 +00:00
Dylan DPC
1ff117e987
Rollup merge of #84101 - jyn514:early-pass, r=Manishearth
rustdoc: Move crate loader to collect_intra_doc_links::early

This groups the similar code together, and also allows making most of collect_intra_doc_links private again.

This builds on https://github.com/rust-lang/rust/pull/84066, but it wouldn't be too hard to base it off master if you want this to land first.
Helps with https://github.com/rust-lang/rust/issues/83761.

r? manishearth

Fixes https://github.com/rust-lang/rust/issues/84046
2021-04-12 01:04:10 +02:00
Dylan DPC
ae549b5bb7
Rollup merge of #84079 - camelid:improve-bare-urls-test, r=jyn514
Improve test for `rustdoc::bare_urls` lint

- Rename `url-improvements` test to `bare-urls`
- Run rustfix for `bare-urls` test
2021-04-12 01:04:08 +02:00
Dylan DPC
c905e9d0ca
Rollup merge of #84014 - estebank:cool-bears-hot-tip, r=varkor
Improve trait/impl method discrepancy errors

* Use more accurate spans
* Clean up some code by removing previous hack
* Provide structured suggestions

Structured suggestions are particularly useful for cases where arbitrary self types are used, like in custom `Future`s, because the way to write `self: Pin<&mut Self>` is not necessarily self-evident when first encountered.
2021-04-12 01:04:04 +02:00
Dylan DPC
b6780b3a20
Rollup merge of #83669 - kwj2104:issue-81508-fix, r=varkor
Issue 81508 fix

Fix #81508

**Problem**: When variable name is used incorrectly as path, error and warning point to undeclared/unused name, when in fact the name is used, just incorrectly (should be used as a variable, not part of a path).

**Summary for fix**: When path resolution errs, diagnostics checks for variables in ```ValueNS``` that have the same name (e.g., variable rather than path named Foo), and adds additional suggestion that user may actually intend to use the variable name rather than a path.

The fix does not suppress or otherwise change the *warning* that results. I did not find a straightforward way in the code to modify this, but would love to make changes here as well with any guidance.
2021-04-12 01:04:03 +02:00
bors
3f8added70 Auto merge of #84100 - sjakobi:77548-reenable-check, r=jyn514
tidy: Re-enable the "ignoring line length unnecessarily" check

Closes #77548.
2021-04-11 22:11:31 +00:00
Joshua Nelson
cba50731a6 Move crate loader to collect_intra_doc_links::early
This groups the similar code together, and also allows making most of collect_intra_doc_links private again
2021-04-11 16:00:26 -04:00
Simon Jakobi
761ef8fc53 tidy: Re-enable the "ignoring file length unnecessarily" check
Closes #77548.
2021-04-11 16:38:13 +02:00
hyd-dev
2fd4dd20d7
Allow using -C force-unwind-tables=no when panic=unwind 2021-04-11 22:32:40 +08:00
Amanieu d'Antras
83c2c5b98c Add test to allow bad_asm_style 2021-04-11 15:11:02 +01:00
Ximin Luo
be5d72129e bootstrap: check local_rebuild before adding --cfg=bootstrap, closes #84057 2021-04-11 14:02:28 +01:00
bors
ba6275b6a9 Auto merge of #82608 - Aaron1011:feature/final-preexp-tts, r=petrochenkov
Implement token-based handling of attributes during expansion

This PR modifies the macro expansion infrastructure to handle attributes
in a fully token-based manner. As a result:

* Derives macros no longer lose spans when their input is modified
  by eager cfg-expansion. This is accomplished by performing eager
  cfg-expansion on the token stream that we pass to the derive
  proc-macro
* Inner attributes now preserve spans in all cases, including when we
  have multiple inner attributes in a row.

This is accomplished through the following changes:

* New structs `AttrAnnotatedTokenStream` and `AttrAnnotatedTokenTree` are introduced.
  These are very similar to a normal `TokenTree`, but they also track
  the position of attributes and attribute targets within the stream.
  They are built when we collect tokens during parsing.
  An `AttrAnnotatedTokenStream` is converted to a regular `TokenStream` when
  we invoke a macro.
* Token capturing and `LazyTokenStream` are modified to work with
  `AttrAnnotatedTokenStream`. A new `ReplaceRange` type is introduced, which
  is created during the parsing of a nested AST node to make the 'outer'
  AST node aware of the attributes and attribute target stored deeper in the token stream.
* When we need to perform eager cfg-expansion (either due to `#[derive]` or `#[cfg_eval]`), we tokenize and reparse our target, capturing additional information about the locations of `#[cfg]` and `#[cfg_attr]` attributes at any depth within the target. This is a performance optimization, allowing us to perform less work in the typical case where captured tokens never have eager cfg-expansion run.
2021-04-11 07:36:33 +00:00
Aaron Hill
a93c4f05de
Implement token-based handling of attributes during expansion
This PR modifies the macro expansion infrastructure to handle attributes
in a fully token-based manner. As a result:

* Derives macros no longer lose spans when their input is modified
  by eager cfg-expansion. This is accomplished by performing eager
  cfg-expansion on the token stream that we pass to the derive
  proc-macro
* Inner attributes now preserve spans in all cases, including when we
  have multiple inner attributes in a row.

This is accomplished through the following changes:

* New structs `AttrAnnotatedTokenStream` and `AttrAnnotatedTokenTree` are introduced.
  These are very similar to a normal `TokenTree`, but they also track
  the position of attributes and attribute targets within the stream.
  They are built when we collect tokens during parsing.
  An `AttrAnnotatedTokenStream` is converted to a regular `TokenStream` when
  we invoke a macro.
* Token capturing and `LazyTokenStream` are modified to work with
  `AttrAnnotatedTokenStream`. A new `ReplaceRange` type is introduced, which
  is created during the parsing of a nested AST node to make the 'outer'
  AST node aware of the attributes and attribute target stored deeper in the token stream.
* When we need to perform eager cfg-expansion (either due to `#[derive]` or `#[cfg_eval]`),
we tokenize and reparse our target, capturing additional information about the locations of
`#[cfg]` and `#[cfg_attr]` attributes at any depth within the target.
This is a performance optimization, allowing us to perform less work
in the typical case where captured tokens never have eager cfg-expansion run.
2021-04-11 01:31:36 -04:00
bors
28b948fc5c Auto merge of #83806 - JohnTitor:issue-51446, r=estebank
Add a regression test for issue-51446

Closes #51446
r? `@estebank`
2021-04-11 05:23:11 +00:00
bors
ea1252e7e3 Auto merge of #84071 - nagisa:nixos-patching-fix, r=Mark-Simulacrum
Fix NixOS patching

Moving the `.nix-deps` has resulted in rpath links being broken and
therefore bootstrap on NixOS broken entirely.

This PR still produces a `.nix-deps` but only for the purposes of
producing a gc root. We rpath a symlink-resolved result instead.

For purposes of simplicity we also use joinSymlink to produce a single
merged output directory so that we don't need to update multiple
locations every time we add a library or something.

Fixes a regression from https://github.com/rust-lang/rust/pull/82739.
2021-04-11 02:59:30 +00:00
Joshua Nelson
47d1ed9690 Preprocess intra-doc links consistently
Previously, rustdoc would panic on links to external crates if they were
surrounded by backticks.
2021-04-10 22:32:09 -04:00
Camelid
aabc363bc2 Run rustfix for bare-urls test
This will help us ensure that it emits valid suggestions.
2021-04-10 18:39:05 -07:00
Camelid
d931e2b7bf Rename url-improvements test to bare-urls
The lint used to be called `non-autolinks`, and linted more than just
bare URLs. Now, it is called `bare-urls` and only lints against bare
URLs. So, `bare-urls` is a better name for the test.
2021-04-10 18:37:51 -07:00
bors
25ea6be13e Auto merge of #84023 - Aaron1011:derive-invoc-order, r=petrochenkov
Expand derive invocations in left-to-right order

While derives were being collected in left-to-order order, the
corresponding `Invocation`s were being pushed in the wrong order.
2021-04-10 22:04:37 +00:00
Aaron Hill
21e6cc19fe
Expand derive invocations in left-to-right order
While derives were being collected in left-to-order order, the
corresponding `Invocation`s were being pushed in the wrong order.
2021-04-10 17:29:20 -04:00
Simonas Kazlauskas
3dabab1c1e Fix NixOS patching
Moving the `.nix-deps` has resulted in rpath links being broken and
therefore bootstrap on NixOS broken entirely.

This PR still produces a `.nix-deps` but only for the purposes of
producing a gc root. We rpath a symlink-resolved result instead.

For purposes of simplicity we also use joinSymlink to produce a single
merged output directory so that we don't need to update multiple
locations every time we add a library or something.
2021-04-10 23:05:28 +03:00
bors
a836d9b641 Auto merge of #84016 - Aaron1011:new-preexp-tests, r=petrochenkov
Add some proc-macro attribute token handling tests

Split out from https://github.com/rust-lang/rust/pull/82608

r? `@petrochenkov`
2021-04-10 19:20:16 +00:00
Aaron Hill
6c591112ce
Add some proc-macro attribute token handling tests 2021-04-10 14:58:12 -04:00
bors
18c524fbae Auto merge of #84051 - Amanieu:update_llvm, r=nikic
Update LLVM submodule

Fixes #84028
2021-04-10 11:17:00 +00:00
Amanieu d'Antras
4781ac2149 Update LLVM submodule 2021-04-10 10:51:54 +01:00
Ralf Jung
98c8b1778f update Miri 2021-04-10 11:03:34 +02:00
bors
481598b26d Auto merge of #84024 - estebank:unclosed-brace-use, r=jackh726
Avoid `;` -> `,` recovery and unclosed `}` recovery from being too verbose

Those two recovery attempts have a very bad interaction that causes too
unnecessary output. Add a simple gate to avoid interpreting a `;` as a
`,` when there are unclosed braces.

Fix #83498.
2021-04-10 03:02:46 +00:00
bors
dbcf3453ea Auto merge of #84015 - tdelabro:issue-76704-fix, r=Amanieu
doc asm feature - Added new 'Label' section with example and explanations

Fixes #76704
2021-04-10 00:35:38 +00:00
bors
8513e78dbb Auto merge of #84034 - jyn514:regex-in-loop, r=Mark-Simulacrum
Fix perf regression in rustdoc::bare_urls

This regressed in #81764. After that PR, rustdoc compiled the regex for every single item in the crate: https://perf.rust-lang.org/compare.html?start=125505306744a0a5bb01d62337260a95d9ff8d57&end=2e495d2e845cf27740e3665f718acfd3aa17253e&stat=instructions%3Au

This would have been caught by `clippy::declare_interior_mutable_const` (cc https://github.com/rust-lang/rust/issues/77983).
2021-04-09 18:47:52 +00:00
Esteban Küber
0d7167698f Avoid ; -> , recovery and unclosed } recovery from being too verbose
Those two recovery attempts have a very bad interaction that causes too
unnecessary output. Add a simple gate to avoid interpreting a `;` as a
`,` when there are unclosed braces.
2021-04-09 10:22:41 -07:00
bors
da0b9b6485 Auto merge of #81942 - the8472:reduce-ui-test-threads, r=Mark-Simulacrum
reduce threads spawned by ui-tests

The test harness already spawns enough tests to keep all cores busy.
Individual tests should keep their own threading to a minimum to avoid context switch overhead.

When running ui tests with lld enabled this shaves about 10% off that testsuite on my machine.

Resolves #81946
2021-04-09 16:22:23 +00:00
Joshua Nelson
8c7b7dd041 Fix perf regression in non-autolinks
Before, this was compiling the regex on every single item in the crate.

This would have been caught by `clippy::declare_interior_mutable_const`.
2021-04-09 09:58:40 -04:00
bors
e43c2005f2 Auto merge of #84030 - jyn514:no-blanket-impls, r=GuillaumeGomez
rustdoc: Don't generate blanket impls when running --show-coverage

`get_blanket_impls` is the slowest part of rustdoc, and the coverage pass
completely ignores blanket impls. This stops running it at all, and also
removes some unnecessary checks in `calculate_doc_coverage` that ignored
the impl anyway.

We don't currently measure --show-coverage in perf.rlo, but I tested
this locally on cargo and it brought the time down from 2.9 to 1.6
seconds.

This also adds back a commented-out test; Rustdoc has been able to deal with `impl trait` for almost a year now.

r? `@GuillaumeGomez`
2021-04-09 13:52:56 +00:00
Timothée Delabrouille
1f7de3fa98 set allow_fail back on each example 2021-04-09 15:41:26 +02:00
Joshua Nelson
f67103b9b2 Add back missing trait test
Rustdoc has been able to deal with `impl trait` for almost a year now.
2021-04-09 09:10:11 -04:00
Joshua Nelson
40ca3521ad rustdoc: Don't generate blanket impls when running --show-coverage
get_blanket_impls is the slowest part of rustdoc, and the coverage pass
completely ignores blanket impls. This stops running it at all, and also
removes some unnecessary checks in `calculate_doc_coverage` that ignored
the impl anyway.

We don't currently measure --show-coverage in perf.rlo, but I tested
this locally on cargo and it brought the time down from 2.9 to 1.6
seconds.
2021-04-09 09:09:19 -04:00
Timothée Delabrouille
4f8dbf66de fix misspelling of register xmm23 which made xmm13 being clobbered twice 2021-04-09 14:08:49 +02:00
Timothée Delabrouille
d58a0de505 conjugation 2021-04-09 12:39:35 +02:00
Timothée Delabrouille
fab2d46d24 remove allow_fail and uncomment the [feature(asm)] on every example 2021-04-09 12:34:30 +02:00
Timothée Delabrouille
1ddddca57e Merge branch 'issue-76704-fix' of https://github.com/tdelabro/rust into issue-76704-fix
merging
2021-04-09 12:18:18 +02:00
Timothée Delabrouille
41c9c9b51f precisions on the authorized labels + typo 2021-04-09 12:18:12 +02:00
bors
971608b54c Auto merge of #83956 - estebank:issue-83892, r=varkor
Use a more appropriate span for `;` suggestion

Fix #83892.
2021-04-09 04:19:25 +00:00
The8472
27868700ec reduce threads spawned by ui-tests
the test harness already spawns enough tests for all cores, individual
tests should keep their own threading to a minimum to avoid context switch
overhead

some tests fail with 1 CGU, so explicit compile flags have been added
to keep their old behavior
2021-04-09 04:58:53 +02:00
Esteban Küber
8e8159681f Add unclosed brace in use tree test 2021-04-08 19:14:39 -07:00
bors
cd56e255c4 Auto merge of #83870 - jackh726:binder-refactor-fix, r=nikomatsakis
Don't concatenate binders across types

Partially addresses #83737

There's actually two issues that I uncovered in #83737. The first is that we are concatenating bound vars across types, i.e. in
```
F: Fn(&()) -> &mut (dyn Future<Output = ()> + Unpin)
```
the bound vars on `Future` get set as `for<anon>` since those are the binders on `Fn(&()`. This is obviously wrong, since we should only concatenate directly nested trait refs. This is solved here by introducing a new `TraitRefBoundary` scope, that we put around the "syntactical" trait refs and basically don't allow concatenation across.

Now, this alone *shouldn't* be a super terrible problem. At least not until you consider the other issue, which is a much more elusive and harder to design a "perfect" fix. A repro can be seen in:
```
use core::future::Future;

async fn handle<F>(slf: &F)
where
    F: Fn(&()) -> &mut (dyn for<'a> Future<Output = ()> + Unpin),
{
    (slf)(&()).await;
}
```
Notice the `for<'a>` around `Future`. Here, `'a` is unused, so the `for<'a>` Binder gets changed to a `for<>` Binder in the generator witness, but the "local decl" still has it. This has heavy intersections with region anonymization and erasing. Luckily, it's not *super* common to find this unique set of circumstances. It only became apparently because of the first issue mentioned here. However, this *is* still a problem, so I'm leaving #83737 open.

r? `@nikomatsakis`
2021-04-09 01:50:01 +00:00