Commit Graph

170680 Commits

Author SHA1 Message Date
Dylan DPC
4793397f11
Rollup merge of #98013 - compiler-errors:guide-inference-2, r=lcnr
Subtype FRU fields first in `type_changing_struct_update`

So this fixes a subtle bug that `type_changing_struct_update` introduced, where it'll no longer coerce the base expr correctly. I actually think this code is easier to understand now, too.

r? `@lcnr` since you reviewed the last one
2022-06-17 12:21:49 +02:00
Dylan DPC
7eabfb5fa7
Rollup merge of #97844 - ChrisDenton:dont-panic, r=JohnTitor
Windows: No panic if function not (yet) available

In some situations (e.g. #97814) it is possible for required functions to be called before they've had a chance to be loaded. Therefore, we make it possible to recover from this situation simply by looking at error codes.

`@rustbot` label +O-windows
2022-06-17 12:21:48 +02:00
Dylan DPC
74aa55b3fc
Rollup merge of #97798 - WaffleLapkin:allow_for_suggestions_that_are_quite_far_away_from_each_other, r=estebank
Hide irrelevant lines in suggestions to allow for suggestions that are far from each other to be shown

This is an attempt to fix suggestions one part of which is 6 lines or more far from the first. I've noticed "the problem" (of not showing some parts of the suggestion) here: https://github.com/rust-lang/rust/pull/97759#discussion_r889689230.

I'm not sure about the implementation (this big closure is just bad and makes already complicated code even more so), but I want to at least discuss the result.

Here is an example of how this changes the output:

Before:
```text
help: consider enclosing expression in a block
  |
3 ~     'l: { match () { () => break 'l,
4 |
5 |
6 |
7 |
8 |
...
```

After:
```text
help: consider enclosing expression in a block
  |
3 ~     'l: { match () { () => break 'l,
4 |
...
31|
32~ } };
  |
```

r? `@estebank`
`@rustbot` label +A-diagnostics +A-suggestion-diagnostics
2022-06-17 12:21:48 +02:00
Dylan DPC
b516806774
Rollup merge of #95392 - Xuanwo:stablize_try_reserve_2, r=dtolnay
std: Stabilize feature try_reserve_2

This PR intends to stabilize feature `try_reserve_2`, closes https://github.com/rust-lang/rust/issues/91789

This PR will also replace the previous PR: https://github.com/rust-lang/rust/pull/95139
2022-06-17 12:21:46 +02:00
bors
3a8b0144c8 Auto merge of #98106 - cjgillot:split-definitions, r=michaelwoerister
Split up `Definitions` and `ResolverAstLowering`.

Split off https://github.com/rust-lang/rust/pull/95573

r? `@michaelwoerister`
2022-06-17 10:00:11 +00:00
Takayuki Maeda
2135331a33 remove the rest of unnecessary to_string 2022-06-17 18:48:09 +09:00
bors
ecdd374e61 Auto merge of #97863 - JakobDegen:bitset-choice, r=nnethercote
`BitSet` related perf improvements

This commit makes two changes:
 1. Changes `MaybeLiveLocals` to use `ChunkedBitSet`
 2. Overrides the `fold` method for the iterator for `ChunkedBitSet`

I have local benchmarks verifying that each of these changes individually yield significant perf improvements to #96451 . I'm hoping this will be true outside of that context too. If that is not the case, I'll try to gate things on where they help as needed

r? `@nnethercote` who I believe was working on closely related things, cc `@tmiasko` because of the destprop pr
2022-06-17 07:35:22 +00:00
bors
0423e06ca9 Auto merge of #98160 - nnethercote:mv-finish-out-of-Encoder, r=bjorn3
Move `finish` out of the `Encoder` trait.

This simplifies things, but requires making `CacheEncoder` non-generic.

(This was previously merged as commit 4 in #94732 and then was reverted
in #97905 because it caused a perf regression.)

r? `@ghost`
2022-06-17 05:13:07 +00:00
Ralf Jung
901cd3a844 btree: avoid forcing the allocator to be a reference 2022-06-16 22:07:10 -07:00
Nika Layzell
4d45af9e73 Try to reduce codegen complexity of TokenStream's FromIterator and Extend impls
This is an experimental patch to try to reduce the codegen complexity of
TokenStream's FromIterator and Extend implementations for downstream
crates, by moving the core logic into a helper type. This might help
improve build performance of crates which depend on proc_macro as
iterators are used less, and the compiler may take less time to do
things like attempt specializations or other iterator optimizations.

The change intentionally sacrifices some optimization opportunities,
such as using the specializations for collecting iterators derived from
Vec::into_iter() into Vec.

This is one of the simpler potential approaches to reducing the amount
of code generated in crates depending on proc_macro, so it seems worth
trying before other more-involved changes.
2022-06-17 00:42:26 -04:00
Nika Layzell
0a049fd30d proc_macro: reduce the number of messages required to create, extend, and iterate TokenStreams
This significantly reduces the cost of common interactions with TokenStream
when running with the CrossThread execution strategy, by reducing the number of
RPC calls required.
2022-06-17 00:42:26 -04:00
Michael Goulet
784e28e218 Subtype FRU fields first in type_changing_struct_update 2022-06-17 03:21:52 +00:00
Nika Layzell
2b17219468 proc_macro: use macros to simplify aggregate Mark/Unmark definitions 2022-06-16 23:16:30 -04:00
bors
3cf1275ecc Auto merge of #98143 - cuviper:futex-rwlock-inline, r=thomcc
Add `#[inline]` to small fns of futex `RwLock`

The important methods like `read` and `write` were already inlined,
which can propagate all the way to inlining in user code, but these
small state functions were left behind as normal calls. They should
almost always be inlined as well, as they're just a few instructions.
2022-06-17 02:32:14 +00:00
David Tolnay
fe9635f7c0
Fix pretty printing of empty type bound lists in where-clause 2022-06-16 17:24:50 -07:00
David Tolnay
1b8ca54002
Add pp-exact test involving where T:
Currently fails.

    ---- [pretty] src/test/pretty/where-clauses.rs stdout ----

    error: pretty-printed source does not match expected source
    expected:
    ------------------------------------------
    // pp-exact

    fn f<'a, 'b, T>(t: T) -> isize where T: 'a, 'a: 'b, T: Eq { 0 }

    // This is legal syntax, sometimes generated by macros. `where T: $($bound+)*`
    fn zero_bounds<'a, T>() where 'a:, T: {}

    fn main() {}

    ------------------------------------------
    actual:
    ------------------------------------------
    // pp-exact

    fn f<'a, 'b, T>(t: T) -> isize where T: 'a, 'a: 'b, T: Eq { 0 }

    // This is legal syntax, sometimes generated by macros. `where T: $($bound+)*`
    fn zero_bounds<'a, T>() where 'a, T {}

    fn main() {}

    ------------------------------------------
    diff:
    ------------------------------------------
    3	fn f<'a, 'b, T>(t: T) -> isize where T: 'a, 'a: 'b, T: Eq { 0 }
    4
    5	// This is legal syntax, sometimes generated by macros. `where T: $($bound+)*`
    -	fn zero_bounds<'a, T>() where 'a:, T: {}
    +	fn zero_bounds<'a, T>() where 'a, T {}
    7
    8	fn main() {}
    9
2022-06-16 17:03:47 -07:00
bors
349bda2051 Auto merge of #98181 - JohnTitor:rollup-65ztwnz, r=JohnTitor
Rollup of 5 pull requests

Successful merges:

 - #97377 (Do not suggest adding semicolon/changing delimiters for macros in item position that originates in macros)
 - #97675 (Make `std::mem::needs_drop` accept `?Sized`)
 - #98118 (Test NLL fix of bad lifetime inference for reference captured in closure.)
 - #98166 (Add rustdoc-json regression test for #98009)
 - #98169 (Keyword docs: Link to wikipedia article for dynamic dispatch)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-06-16 23:50:20 +00:00
Yuki Okushi
6ac93185f4
Rollup merge of #98169 - pierwill:dyn-disp, r=JohnTitor
Keyword docs: Link to wikipedia article for dynamic dispatch
2022-06-17 07:16:58 +09:00
Yuki Okushi
81b00b80f3
Rollup merge of #98166 - GuillaumeGomez:regression-test-98009, r=matthiaskrgr
Add rustdoc-json regression test for #98009

Fixes #98009.

There was apparently nothing to be done...

cc `@matthiaskrgr`
r? `@notriddle`
2022-06-17 07:16:57 +09:00
Yuki Okushi
1f3023ca8a
Rollup merge of #98118 - steffahn:scoped-threads-nll-test, r=m-ou-se
Test NLL fix of bad lifetime inference for reference captured in closure.

This came up as a use-case for `thread::scope` API that only compiles successfully since `feature(nll)` got stabilized recently.

Closes #93203 which had been re-opened for tracking this very test case to be added.
2022-06-17 07:16:56 +09:00
Yuki Okushi
cf68fd7e8d
Rollup merge of #97675 - nvzqz:unsized-needs-drop, r=dtolnay
Make `std::mem::needs_drop` accept `?Sized`

This change attempts to make `needs_drop` work with types like `[u8]` and `str`.

This enables code in types like `Arc<T>` that was not possible before, such as https://github.com/rust-lang/rust/pull/97676.
2022-06-17 07:16:55 +09:00
Yuki Okushi
5cd8679dd2
Rollup merge of #97377 - ChayimFriedman2:issue-91800, r=estebank
Do not suggest adding semicolon/changing delimiters for macros in item position that originates in macros

Fixes #91800.
2022-06-17 07:16:54 +09:00
bors
cacc75c82e Auto merge of #97936 - nnethercote:compile-unicode_normalization-faster, r=oli-obk
Compile `unicode-normalization` faster

Various optimizations and cleanups aimed at improving compilation of `unicode-normalization`, which is notable for having several very large `match`es with many char ranges.

Best reviewed one commit at a time.

r? `@oli-obk`
2022-06-16 21:09:30 +00:00
Rémy Rakic
61dc080375 adjust const alloc interning partial hash comments 2022-06-16 23:07:43 +02:00
bors
3bebee7339 Auto merge of #98173 - flip1995:clippyup, r=Manishearth
Update Clippy

r? `@Manishearth`
2022-06-16 18:13:02 +00:00
Rémy Rakic
b1f31f853e ctfe: limit hashing of big const allocations when interning
Big const allocations hash a large amount of data for interning:
the whole bytes buffer, and the 1/8th sized initmask, with FxHash.
This hash function is made for shorter keys.

This only hashes the length, and head and tail of these buffers, to
limit possible collisions while avoiding most of the hashing work.
2022-06-16 19:36:51 +02:00
Maybe Waffle
c1a2db3372 Move/rename lazy::Sync{OnceCell,Lazy} to sync::{Once,Lazy}Lock 2022-06-16 19:54:42 +04:00
Maybe Waffle
7c360dc117 Move/rename lazy::{OnceCell, Lazy} to cell::{OnceCell, LazyCell} 2022-06-16 19:53:59 +04:00
flip1995
37cdd7e372
Update Cargo.lock 2022-06-16 17:39:29 +02:00
flip1995
7f605496e7
Merge commit 'd7b5cbf065b88830ca519adcb73fad4c0d24b1c7' into clippyup 2022-06-16 17:39:06 +02:00
pierwill
dd0f5d8be0 Keyword docs: Link to wikipedia article for dynamic dispatch 2022-06-16 09:58:57 -05:00
bors
d7b5cbf065 Auto merge of #9007 - flip1995:rustup, r=flip1995
Rustup

r? `@ghost`

changelog: none
2022-06-16 14:07:23 +00:00
flip1995
280797ecb0
Bump nightly version -> 2022-06-16 2022-06-16 16:04:12 +02:00
flip1995
c5c8f6122f
Merge remote-tracking branch 'upstream/master' into rustup 2022-06-16 16:04:06 +02:00
Maybe Waffle
e502b9a0ff bless clippy ui tests 2022-06-16 18:00:32 +04:00
Maybe Waffle
3c55672795 Add back MAX_SUGGESTION_HIGHLIGHT_LINES so clippy is happy & buildable 2022-06-16 17:08:26 +04:00
Maybe Waffle
cf6f821c33 Try to clean up code...
I'm not sure if I succeeded
2022-06-16 17:08:26 +04:00
Maybe Waffle
a607cffc8c --bless ui 2022-06-16 17:08:26 +04:00
Maybe Waffle
87fded1edd Improve suggestions when its parts are far from each other
Previously we only show at most 6 lines of suggestions and, if the
suggestions are more than 6 lines apart, we've just showed ... at the
end. This is probably fine, but quite confusing in my opinion.

This commit is an attempt to show ... in places where there is nothing
to suggest instead, for example:

Before:
```text
help: consider enclosing expression in a block
  |
3 ~     'l: { match () { () => break 'l,
4 |
5 |
6 |
7 |
8 |
...
```

After:
```text
help: consider enclosing expression in a block
  |
3 ~     'l: { match () { () => break 'l,
4 |
...
31|
32~ } };
  |
```
2022-06-16 17:08:26 +04:00
Maybe Waffle
260c5fd587 Fix a typo
!(a & b) = !a | !b
2022-06-16 17:08:26 +04:00
klensy
6fc412fb73 bless clippy tests 2022-06-16 15:51:12 +03:00
bors
9edd6412f1 Auto merge of #9005 - flip1995:book_ci_2, r=xFrednet
Build mdbook in remark workflow

r? `@xFrednet`

Supersedes #8959

changelog: none
2022-06-16 12:49:20 +00:00
Guillaume Gomez
d7513140ca Add rustdonc-json regression test for #98009 2022-06-16 14:13:57 +02:00
flip1995
980d88e25c
Build mdbook in remark workflow
This is just to ensure that the book builds all time to not get in trouble when syncing with rust-lang/rust
2022-06-16 14:10:35 +02:00
klensy
449ad044f2 bless rustdoc-ui tests 2022-06-16 14:40:30 +03:00
klensy
68ea8ff16f drive by fix needless allocation of const string number 2022-06-16 14:40:30 +03:00
klensy
989d1a732f fix one more case of trailing space 2022-06-16 14:40:29 +03:00
klensy
0ff8ae3111 diagnostics: fix trailing space 2022-06-16 14:40:28 +03: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
bors
d40f24e956 Auto merge of #98161 - matthiaskrgr:rollup-8csenk9, r=matthiaskrgr
Rollup of 4 pull requests

Successful merges:

 - #97757 (Support lint expectations for `--force-warn` lints (RFC 2383))
 - #98125 (Entry and_modify doc)
 - #98137 (debuginfo: Fix NatVis for Rc and Arc with unsized pointees.)
 - #98147 (Make #[cfg(bootstrap)] not error in proc macros on later stages )

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-06-16 07:45:03 +00:00