Commit graph

157690 commits

Author SHA1 Message Date
Matthias Krüger
730c6bf158
Rollup merge of #90613 - GuillaumeGomez:specific-rustdoc-js-test, r=Mark-Simulacrum
Allow to run a specific rustdoc-js* test

r? ``@Mark-Simulacrum``
2021-11-09 19:00:42 +01:00
Matthias Krüger
610b4e503c
Rollup merge of #90035 - SparrowLii:rfc2528, r=jackh726
implement rfc-2528 type_changing-struct-update

This PR implement rfc2528-type_changing-struct-update.
The main change process is as follows:
1. Move the processing part of `base_expr` into `check_expr_struct_fields` to avoid returning `remaining_fields` (a relatively complex hash table)
2. Before performing the type consistency check(`check_expr_has_type_or_error`), if the `type_changing_struct_update` feature is set, enter a different processing flow, otherwise keep the original flow
3. In the case of the same structure definition, check each field in `remaining_fields`. If the field in `base_expr` is not the suptype of the field in `adt_ty`, an error(`FeildMisMatch`) will be reported.

The MIR part does not need to be changed, because only the items contained in `remaining_fields` will be extracted from `base_expr` when MIR is generated. This means that fields with different types in `base_expr` will not be used
Updates #86618
cc `@nikomatsakis`
2021-11-09 19:00:41 +01:00
Matthias Krüger
fd74c93403
Rollup merge of #89561 - nbdd0121:const_typeck, r=nikomatsakis
Type inference for inline consts

Fixes #78132
Fixes #78174
Fixes #81857
Fixes #89964

Perform type checking/inference of inline consts in the same context as the outer def, similar to what is currently done to closure.

Doing so would require `closure_base_def_id` of the inline const to return the outer def, and since `closure_base_def_id` can be called on non-local crate (and thus have no HIR available), a new `DefKind` is created for inline consts.

The type of the generated anon const can capture lifetime of outer def, so we couldn't just use the typeck result as the type of the inline const's def. Closure has a similar issue, and it uses extra type params `CK, CS, U` to capture closure kind, input/output signature and upvars. I use a similar approach for inline consts, letting it have an extra type param `R`, and then `typeof(InlineConst<[paremt generics], R>)` would just be `R`. In borrowck region requirements are also propagated to the outer MIR body just like it's currently done for closure.

With this PR, inline consts in expression position are quitely usable now; however the usage in pattern position is still incomplete -- since those does not remain in the MIR borrowck couldn't verify the lifetime there. I have left an ignored test as a FIXME.

Some disucssions can be found on [this Zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/260443-project-const-generics/topic/inline.20consts.20typeck).
cc `````@spastorino````` `````@lcnr`````
r? `````@nikomatsakis`````

`````@rustbot````` label A-inference F-inline_const T-compiler
2021-11-09 19:00:40 +01:00
bors
d6082292a6 Auto merge of #86041 - bstrie:unmagic-array-copy, r=jackh726
Replace Copy/Clone compiler magic on arrays with library impls

With const generics the compiler no longer needs to fake these impls.
2021-11-09 17:13:44 +00:00
Guillaume Gomez
10d65a9636 Allow to run a specific rustdoc-js* test 2021-11-09 17:41:51 +01:00
bors
07acdb48a0 Auto merge of #90724 - JohnTitor:rollup-zg0kbm3, r=JohnTitor
Rollup of 6 pull requests

Successful merges:

 - #87530 (Add comments regarding superfluous `!Sync` impls)
 - #90591 (treat illumos like solaris in failing ui tests which need it)
 - #90678 (Add some GATs-related regression tests)
 - #90688 (enable `dotprod` target feature in arm)
 - #90708 (Add a note about feature(explicit_generic_args_with_impl_trait) to the relevant error message)
 - #90720 (Update cargo)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-11-09 14:12:54 +00:00
Yuki Okushi
a0d580c12a
Rollup merge of #90720 - ehuss:update-cargo, r=ehuss
Update cargo

4 commits in 94ca096afbf25f670e76e07dca754fcfe27134be..2e2a16e983f597da62bc132eb191bc3276d4b1bb
2021-10-29 14:45:06 +0000 to 2021-11-08 15:13:38 +0000
- Fix debug panic on download with redirect body. (rust-lang/cargo#10048)
- no need to clone (rust-lang/cargo#10051)
- Update curl. (rust-lang/cargo#10040)
- Fix --scrape-examples-target-crate using package name (with dashes) instead of crate name (with underscores) (rust-lang/cargo#10037)
2021-11-09 22:02:26 +09:00
Yuki Okushi
f1fef6be7f
Rollup merge of #90708 - NieDzejkob:feature-note, r=jackh726
Add a note about feature(explicit_generic_args_with_impl_trait) to the relevant error message

Fixes #90615
2021-11-09 22:02:25 +09:00
Yuki Okushi
753936f769
Rollup merge of #90688 - SparrowLii:dotprod, r=Amanieu
enable `dotprod` target feature in arm

To implement `vdot` neon insturction in stdarch, we need to enable `dotprod` target feature in arm in rustc.
r? `@Amanieu`
2021-11-09 22:02:24 +09:00
Yuki Okushi
c2f095a37b
Rollup merge of #90678 - JohnTitor:add-some-gats-tests, r=jackh726
Add some GATs-related regression tests

Closes #88595, closes #90014
r? `@jackh726`
2021-11-09 22:02:23 +09:00
Yuki Okushi
6e39d27a82
Rollup merge of #90591 - richlowe:illumos-ui-target, r=Mark-Simulacrum
treat illumos like solaris in failing ui tests which need it

Just adding the right cfg target for tests which fail because they don't know illumos is a thing.

(cc `````@jclulow)`````
2021-11-09 22:02:22 +09:00
Yuki Okushi
d638c1d13c
Rollup merge of #87530 - bstrie:commentsync, r=bstrie
Add comments regarding superfluous `!Sync` impls
2021-11-09 22:02:21 +09:00
asquared31415
db4e60b29f document Box and box_free connection 2021-11-09 07:13:53 -05:00
bors
eee8b9c7ba Auto merge of #90700 - fee1-dead:select-returns-vec, r=davidtwco
Make `select_*` methods return `Vec` for `TraitEngine`

This reduces some complexity as an empty vec means no errors and non-empty vec means errors occurred.
2021-11-09 11:16:38 +00:00
Eric Huss
05db283453 Update cargo 2021-11-09 00:22:06 -08:00
bors
214cd1f228 Auto merge of #87337 - jyn514:lint-error, r=oli-obk,flip1995
Don't abort compilation after giving a lint error

The only reason to use `abort_if_errors` is when the program is so broken that either:
1. later passes get confused and ICE
2. any diagnostics from later passes would be noise

This is never the case for lints, because the compiler has to be able to deal with `allow`-ed lints.
So it can continue to lint and compile even if there are lint errors.

Closes https://github.com/rust-lang/rust/issues/82761. This is a WIP because I have a feeling it will exit with 0 even if there were lint errors; I don't have a computer that can build rustc locally at the moment.
2021-11-09 08:21:10 +00:00
bors
60952bc3da Auto merge of #90485 - camsteffen:fmt-args-less-bind, r=m-ou-se
Don't destructure args tuple in format_args!

This allows Clippy to parse the HIR more simply since `arg0` is changed to `_args.0`. (cc rust-lang/rust-clippy#7843). From rustc's perspective, I think this is something between a lateral move and a tiny improvement since there are fewer bindings.

r? `@m-ou-se`
2021-11-09 05:33:16 +00:00
Nicholas Nethercote
580d357b5a Change the assert in is_useful to a debug_assert.
It's hot in the `match-stress-enum` benchmark.
2021-11-09 16:13:44 +11:00
bors
c57704f3eb Auto merge of #90695 - GuillaumeGomez:rollup-kxvvw4o, r=GuillaumeGomez
Rollup of 4 pull requests

Successful merges:

 - #90494 (ARMv6K Horizon OS panic change)
 - #90652 (use filter(|x| matches!(..)) instead of filter_map(|x| match x ... => Some(xy)))
 - #90657 (Fix bug with `#[doc]` string single-character last lines)
 - #90689 (⬆️ rust-analyzer)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-11-09 01:30:23 +00:00
Yuki Okushi
ebd401bc36
Add some GATs-related regression tests 2021-11-09 08:04:39 +09:00
bors
515472757d Auto merge of #90443 - camelid:rustdoc-subst, r=GuillaumeGomez
Merge `DocContext.{ty,lt,ct}_substs` into one map

It should be impossible to have more than one entry with a particular
key across the three maps, so they should be one map. In addition to
making it impossible for multiple entries to exist, this should improve
memory usage since now only one map is allocated on the stack and heap.

r? `@GuillaumeGomez`
2021-11-08 21:37:59 +00:00
bstrie
61b1394ac7 Attempt to address perf regressions with #[inline] 2021-11-08 15:51:56 -05:00
Jakub Kądziołka
048e1c942d
Add a note about feature(explicit_generic_args_with_impl_trait) to the relevant error message 2021-11-08 19:49:41 +01:00
bstrie
3024efff59 Update Copy/Clone documentation WRT arrays 2021-11-08 13:11:59 -05:00
bstrie
ce1143e94d impl Copy/Clone for arrays in std, not in compiler 2021-11-08 13:11:58 -05:00
bstrie
86c0ef8adc Add comments regarding superfluous !Sync impls 2021-11-08 13:07:20 -05:00
Michael Woerister
fefe1e9192 Record more artifact sizes during self-profiling. 2021-11-08 17:02:40 +01:00
Deadbeef
d863021521
fmt 2021-11-08 23:55:51 +08:00
Deadbeef
f1126f1272
Make select_* methods return Vec for TraitEngine 2021-11-08 23:35:23 +08:00
Guillaume Gomez
27095246fb
Rollup merge of #90689 - lnicola:rust-analyzer-2021-11-08, r=lnicola
⬆️ rust-analyzer

r? ``@ghost``
2021-11-08 15:15:25 +01:00
Guillaume Gomez
d9fc7d1041
Rollup merge of #90657 - GuillaumeGomez:one-char-last-line-removed, r=jyn514
Fix bug with `#[doc]` string single-character last lines

Fixes #90618.

This is because `.iter().all(|c| c == '*')` returns `true` if there is no character checked. And in case the last line has only one character, it simply returns `true`, making the last line behind removed.
2021-11-08 15:15:24 +01:00
Guillaume Gomez
931881070a
Rollup merge of #90652 - matthiaskrgr:unnnec_filter_map, r=jyn514
use filter(|x| matches!(..)) instead of filter_map(|x| match x ... => Some(xy))
2021-11-08 15:15:23 +01:00
Guillaume Gomez
f07f800364
Rollup merge of #90494 - Meziu:armv6k-3ds-target, r=sanxiyn
ARMv6K Horizon OS panic change

After a small change to `backtrace-rs` ([#448](https://github.com/rust-lang/backtrace-rs/pull/448)), `PanicStrategy::Unwind` is now fully supported.
2021-11-08 15:15:22 +01:00
bors
495322d776 Auto merge of #90361 - Mark-Simulacrum:always-verify, r=michaelwoerister
Enable verification for 1/32th of queries loaded from disk

This is a limited enabling of incremental verification for query results loaded from disk, which previously did not run without -Zincremental-verify-ich. If enabled for all queries, we see a probably unacceptable hit of ~50% in the worst case, so this pairs back the verification to a more limited set based on the hash key.

Per collected [perf results](https://github.com/rust-lang/rust/pull/84227#issuecomment-953350582), this is a regression of at most 7% on coercions opt incr-unchanged, and typically less than 0.5% on other benchmarks (largely limited to incr-unchanged). I believe this is acceptable performance to land, and we can either ratchet it up or down fairly easily.

We have no real sense of whether this will lead to a large amount of assertions in the wild, but since those assertions may lead to miscompilations today, it seems potentially warranted. We have a good bit of lead time until the next stable release, though the holiday season will also start soon; we may wish to discuss the timing of enabling this and weigh the desire to prevent (possible) miscompilations against assertions.

cc `@rust-lang/wg-incr-comp`
2021-11-08 13:38:08 +00:00
Tomoaki Kawada
f17077002b kmc-solid: Avoid the use of asm_const 2021-11-08 19:13:31 +09:00
Laurențiu Nicola
1e56dd4aef ⬆️ rust-analyzer 2021-11-08 12:07:03 +02:00
SparrowLii
03f4fe6a66 enable dotprod target feature in arm 2021-11-08 16:24:50 +08:00
bors
3e3890c9d4 Auto merge of #90675 - camelid:cleanup-impl, r=jyn514
rustdoc: Cleanup `clean::Impl` and other parts of `clean`

This PR cleans up and reduces the size of `clean::Impl`, makes some other small performance improvements, and removes some Clean impls that are either unnecessary or potentially confusing.

r? `@jyn514`
2021-11-08 08:21:51 +00:00
bors
b3074819f6 Auto merge of #90680 - calebcartwright:rustfmt-sync, r=calebcartwright
sync rustfmt subtree
2021-11-08 05:13:41 +00:00
Joshua Nelson
6192246e39 x.py: remove fixme by deleting code
As far as I can tell, this parameter was never used, so just delete it
as unnecessary.
2021-11-08 04:45:15 +00:00
Joshua Nelson
5bf3a5dfc7 Make compiler-docs only control the default instead of being a hard off-switch
This also fixes `x doc src/tools/clippy` when compiler-docs is disabled.
2021-11-08 04:28:25 +00:00
Caleb Cartwright
30fb1246b4 Merge commit 'ea199bacef07213dbe008841b89c450e3bf0c638' into rustfmt-sync 2021-11-07 20:37:34 -06:00
Joshua Nelson
51345a83aa Go back to loading all external crates unconditionally
This *continues* to cause regressions. This code will be unnecessary
once access to the resolver happens fully before creating the tyctxt
(#83761), so load all crates unconditionally for now.
2021-11-08 02:27:21 +00:00
Joshua Nelson
cdafe99539 Add more missing methods to IntraLinkCrateLoader
This helps with (but does not fix)
https://github.com/rust-lang/rust/issues/84738. I tested on
edcee7b812
and still hit ICEs.
2021-11-08 02:27:21 +00:00
Noah Lev
b5817fada2 rustdoc: Remove top-level wrappers for ImplKind methods
The `ImplKind` methods can just be used directly instead.
2021-11-07 18:26:37 -08:00
bors
43192ca3d7 Auto merge of #89488 - c410-f3r:testsssssss, r=petrochenkov
Move some tests to more reasonable directories - 8

cc #73494
r? `@petrochenkov`
2021-11-08 02:04:31 +00:00
Caleb Cartwright
ea199bacef
Merge pull request #5070 from calebcartwright/rustup-2021-11-s1
subtree sync
2021-11-07 19:40:15 -06:00
Joshua Nelson
ebf8966156 Use has_errors_or_lint_errors in rustdoc instead of abort_if_errors()
Rustdoc is special as usual and doesn't go through RunCompiler, so it
needs its own explicit checks. The rest of the tools go through
RunCompiler, so they should be fine.
2021-11-08 01:22:28 +00:00
Joshua Nelson
c008bb0012 Don't proceed to codegen if there are lint errors 2021-11-08 01:22:28 +00:00
Joshua Nelson
0ac13bd430 Don't abort compilation after giving a lint error
The only reason to use `abort_if_errors` is when the program is so broken that either:
1. later passes get confused and ICE
2. any diagnostics from later passes would be noise

This is never the case for lints, because the compiler has to be able to deal with `allow`-ed lints.
So it can continue to lint and compile even if there are lint errors.
2021-11-08 01:22:28 +00:00