Commit Graph

199239 Commits

Author SHA1 Message Date
Jakob Degen
d56751cc34 Simplify pass manager's run_passes logic 2022-08-30 01:40:16 -07:00
Jakob Degen
aad14c701e Refactor MIR phases 2022-08-30 01:40:14 -07:00
bors
0631ea5d73 Auto merge of #101183 - Dylan-DPC:rollup-6kewixv, r=Dylan-DPC
Rollup of 9 pull requests

Successful merges:

 - #95376 (Add `vec::Drain{,Filter}::keep_rest`)
 - #100092 (Fall back when relating two opaques by substs in MIR typeck)
 - #101019 (Suggest returning closure as `impl Fn`)
 - #101022 (Erase late bound regions before comparing types in `suggest_dereferences`)
 - #101101 (interpret: make read-pointer-as-bytes a CTFE-only error with extra information)
 - #101123 (Remove `register_attr` feature)
 - #101175 (Don't --bless in pre-push hook)
 - #101176 (rustdoc: remove unused CSS selectors for `.table-display`)
 - #101180 (Add another MaybeUninit array test with const)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-30 08:29:42 +00:00
Thom Chiovoloni
5c3490c901
Replace AlignedAs with a more specific Align8 type 2022-08-30 01:15:59 -07:00
Xiretza
1f69fbc345 Unify indentation in subdiagnostic-derive test 2022-08-30 09:48:03 +02:00
Xiretza
9dc0643744 SessionSubdiagnostic: make #[applicability] optional 2022-08-30 09:48:03 +02:00
Xiretza
6e8dad5c07 Use span_suggestion_with_style in SessionSubdiagnostic derive 2022-08-30 09:48:00 +02:00
Xiretza
8af7f4208a Code deduplication in tool_only_multipart_suggestion 2022-08-30 09:46:42 +02:00
Thom Chiovoloni
d9c760db43
Fix UWP and use AlignedReparseBuf in symlink_junction_inner 2022-08-30 00:16:53 -07:00
Michael Goulet
5a4f7d4ad3 Tweak WellFormedLocs a bit 2022-08-30 06:19:48 +00:00
Dylan DPC
ec95a92904
Rollup merge of #101180 - SUPERCILEX:const-maybeuninit, r=TaKO8Ki
Add another MaybeUninit array test with const

This is another possible syntax and I just want to be absolutely sure it behaves correctly.
2022-08-30 11:26:55 +05:30
Dylan DPC
c467370b9a
Rollup merge of #101176 - notriddle:notriddle/rustdoc-table-display, r=jsha
rustdoc: remove unused CSS selectors for `.table-display`

This class was added to support the function signature [src] lockup. That lockup was changed in 34bd2b845b to use flexbox instead, leaving these selectors unused.

Continuation of #101046
2022-08-30 11:26:54 +05:30
Dylan DPC
948aeff521
Rollup merge of #101175 - tmandry:curse-push-hook, r=jyn514
Don't --bless in pre-push hook

Running with --bless causes the push to succeed if there are fixable
formatting changes, but the changes don't make it into the push.

We should have the user rerun with --bless (or x.py fmt) and commit the
changes themselves (they might want to amend a particular commit, for
instance).
2022-08-30 11:26:53 +05:30
Dylan DPC
c18292f6a3
Rollup merge of #101123 - JohnTitor:rm-register-attr, r=TaKO8Ki
Remove `register_attr` feature

Closes #66080

Signed-off-by: Yuki Okushi <jtitor@2k36.org>
2022-08-30 11:26:52 +05:30
Dylan DPC
81f3841cfb
Rollup merge of #101101 - RalfJung:read-pointer-as-bytes, r=oli-obk
interpret: make read-pointer-as-bytes a CTFE-only error with extra information

Next step in the reaction to https://github.com/rust-lang/rust/issues/99923. Also teaches Miri to implicitly strip provenance in more situations when transmuting pointers to integers, which fixes https://github.com/rust-lang/miri/issues/2456.

Pointer-to-int transmutation during CTFE now produces a message like this:
```
   = help: this code performed an operation that depends on the underlying bytes representing a pointer
   = help: the absolute address of a pointer is not known at compile-time, so such operations are not supported
```

r? ``@oli-obk``
2022-08-30 11:26:51 +05:30
Dylan DPC
1ea84961e8
Rollup merge of #101022 - compiler-errors:issue-101020, r=jackh726
Erase late bound regions before comparing types in `suggest_dereferences`

Fixes #101020
2022-08-30 11:26:50 +05:30
Dylan DPC
aa9bfdee32
Rollup merge of #101019 - compiler-errors:return-closure-suggestion, r=cjgillot
Suggest returning closure as `impl Fn`

Fixes #100936
2022-08-30 11:26:49 +05:30
Dylan DPC
e63424db19
Rollup merge of #100092 - compiler-errors:issue-100075, r=oli-obk
Fall back when relating two opaques by substs in MIR typeck

This is certainly _one_ way to fix #100075. Not really confident it's the _best_ way to do it, though.

The root cause of this issue is that during MIR type-check, we end up trying to equate an opaque against the same opaque def-id but with different substs. Because of the way that we replace RPITs during (HIR) typeck with an inference variable, we don't end up emitting a type-checking error, so the delayed MIR bug causes an ICE.

See the `src/test/ui/impl-trait/issue-100075-2.rs` test below to make that clear -- in that example, we try to equate `{impl Sized} substs=[T]` and `{impl Sized} substs=[Option<T>]`, which causes an ICE. This new logic will instead cause us to infer `{impl Sized} substs=[Option<T>]` as the hidden type for `{impl Sized} substs=[T]`, which causes a proper error to be emitted later on when we check that an opaque isn't recursive.

I'm open to closing this in favor of something else. Ideally we'd fix this in typeck, but the thing we do to ensure backwards compatibility with weird RPIT cases makes that difficult. Also open to discussing this further.
2022-08-30 11:26:48 +05:30
Dylan DPC
c731157395
Rollup merge of #95376 - WaffleLapkin:drain_keep_rest, r=dtolnay
Add `vec::Drain{,Filter}::keep_rest`

This PR adds `keep_rest` methods to `vec::Drain` and `vec::DrainFilter` under `drain_keep_rest` feature gate:
```rust
// mod alloc::vec

impl<T, A: Allocator> Drain<'_, T, A> {
    pub fn keep_rest(self);
}

impl<T, F, A: Allocator> DrainFilter<'_, T, F, A>
where
    F: FnMut(&mut T) -> bool,
{
    pub fn keep_rest(self);
}
```

Both these methods cancel draining of elements that were not yet yielded from the iterators. While this needs more testing & documentation, I want at least start the discussion. This may be a potential way out of the "should `DrainFilter` exhaust itself on drop?" argument.
2022-08-30 11:26:47 +05:30
bors
a0d07093f8 Auto merge of #100812 - Nilstrieb:revert-let-chains-nightly, r=Mark-Simulacrum
Revert let_chains stabilization

This is the revert against master, the beta revert was already done in #100538.

Bumps the stage0 compiler which already has it reverted.
2022-08-30 05:48:22 +00:00
Jason Newcomb
19ef04ff5d Fix the order of trait_duplication_in_bounds
* Emit the lint in source order
* Make suggestions with multiple traits be in source order rather than alphabetical
2022-08-30 00:33:56 -04:00
Donough Liu
97b1a6146c Use more into_iter rather than drain(..) 2022-08-30 04:42:03 +01:00
Alex Saveau
eaa00250ba
Add another MaybeUninit array test with const
Signed-off-by: Alex Saveau <saveau.alexandre@gmail.com>
2022-08-29 23:17:24 -04:00
yukang
77eb1aef52 add UI test for unpretty 2022-08-30 09:31:52 +08:00
bors
4df6032100 Auto merge of #9394 - lukaslueg:issue9391, r=Jarcho
Fix missing parens in `suboptimal_flops` suggestion

Fixes #9391. The problem is simple enough, I didn't check if the same problem occurs elsewhere, though.

changelog: fix missing parenthesis in `suboptimal_flops` suggestion
2022-08-30 00:37:45 +00:00
Michael Howell
f72697b4d3 rustdoc: remove unused CSS selectors for .table-display
This class was added to support the function signature [src] lockup. That
lockup was changed in 34bd2b845b to use flexbox
instead, leaving these selectors unused.
2022-08-29 17:25:43 -07:00
Tyler Mandry
8873e33806 Don't --bless in pre-push hook
Running with --bless causes the push to succeed if there are fixable
formatting changes, but the changes don't make it into the push.

We should have the user rerun with --bless (or x.py fmt) and commit the
changes themselves (they might want to amend a particular commit, for
instance).
2022-08-29 16:46:51 -07:00
Tyler Mandry
73958fdf14 Ignore cargo target folder in src/bootstrap
Needed after changes in #97513.
2022-08-29 16:23:19 -07:00
Tyler Mandry
e136e02fd9 bootstrap: Add llvm-has-rust-patches target option
This is so you can check out an upstream commit in src/llvm-project and
have everything just work.
2022-08-29 16:23:19 -07:00
Thom Chiovoloni
1b8025a24c
Fix some possible UB in std::sys::windows 2022-08-29 15:59:34 -07:00
bors
9f4d5d2a28 Auto merge of #101167 - matthiaskrgr:rollup-yt3jdmp, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #100898 (Do not report too many expr field candidates)
 - #101056 (Add the syntax of references to their documentation summary.)
 - #101106 (Rustdoc-Json: Retain Stripped Modules when they are imported, not when they have items)
 - #101131 (CTFE: exposing pointers and calling extern fn is just impossible)
 - #101141 (Simplify `get_trait_ref` fn used for `virtual_function_elimination`)
 - #101146 (Various changes to logging of borrowck-related code)
 - #101156 (Remove `Sync` requirement from lint pass objects)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-29 22:49:04 +00:00
Lukas Lueg
9ffc5a5c8d Fix more parens for suboptimal_flops suggs 2022-08-29 22:36:11 +02:00
5225225
be324607ea Fix tests due to stricter invalid_value 2022-08-29 21:28:35 +01:00
bors
e1ecdb621c Auto merge of #9395 - Alexendoo:suspicious-to-owned-test, r=Manishearth
Fix `suspicious_to_owned` test when `c_char` is `u8`

e.g. on aarch64 linux

changelog: none
2022-08-29 19:26:22 +00:00
Matthias Krüger
bf42ba41a4
Rollup merge of #101156 - Jarcho:remove_sync_lint_pass, r=compiler-errors
Remove `Sync` requirement from lint pass objects

This is blocking the clippy sync (#101140). One of the lint passes contains a `Cell` in order to make lifetimes work. It could be worked around, but this is the easier change to make if there are no objections.

Rational for removing the requirement
* All lint pass methods take `&mut self` arguments.
* Many passes depend on running is visitor order.
* Lint passes are created on demand so they're only ever stored in a local.
* `Send` is enough to lint different passes in parallel.

`LintStore` remains `Sync` with this. The constructor functions it contains still maintain their `Sync` requirement.

r? rust-lang/compiler
2022-08-29 21:13:00 +02:00
Matthias Krüger
7b84298f1b
Rollup merge of #101146 - jackh726:borrowck-logging, r=compiler-errors
Various changes to logging of borrowck-related code

Cleanups found when doing other changes

r? `@compiler-errors`
2022-08-29 21:12:59 +02:00
Matthias Krüger
3094cc1db0
Rollup merge of #101141 - compiler-errors:get-trait-ref-is-a-misleading-name, r=oli-obk
Simplify `get_trait_ref` fn used for `virtual_function_elimination`

1. The name `get_trait_ref` is misleading, so I renamed it to something more like `expect_...` because it ICEs if used incorrectly.
2. No need to manually go through the existential trait refs, we already have `.principal()` for that.
2022-08-29 21:12:58 +02:00
Matthias Krüger
cd53b4dba5
Rollup merge of #101131 - RalfJung:ctfe-no-needs-rfc, r=oli-obk
CTFE: exposing pointers and calling extern fn is just impossible

The remaining "needs RFC" errors are just needlessly confusing, I think -- time to get rid of that error variant. They are anyway only reachable with miri-unleashed (if at all).

r? `@oli-obk`
2022-08-29 21:12:57 +02:00
Matthias Krüger
ecd908ac5e
Rollup merge of #101106 - aDotInTheVoid:rdj-stripped-mod, r=GuillaumeGomez
Rustdoc-Json: Retain Stripped Modules when they are imported, not when they have items

Fixes #101103
Fixes #100973

r? `@GuillaumeGomez`
2022-08-29 21:12:56 +02:00
Matthias Krüger
3bff15b7e3
Rollup merge of #101056 - kpreid:prim-doc, r=JohnTitor
Add the syntax of references to their documentation summary.

Without this change, in <https://doc.rust-lang.org/1.63.0/std/#primitives>, `reference` is the only entry in that list which does not contain the syntax by which the type is named in source code. With this change, it contains them, in roughly the same way as the `pointer` entry does.
2022-08-29 21:12:55 +02:00
Matthias Krüger
091017c244
Rollup merge of #100898 - compiler-errors:too-many-expr-fields, r=spastorino
Do not report too many expr field candidates

When considering "this expressions' field has a {field/method}" suggestions:
1. Don't report methods that are out of scope
2. Use `span_suggestions` instead of reporting each field candidate, which caps the number of suggestions to 4
4. Blacklist some common traits like `Clone` and `Deref`

Fixes #100894
2022-08-29 21:12:54 +02:00
Yiming Lei
39ffabbb40 Point at the string inside literal and mention if we need string interpolation
modified:   compiler/rustc_passes/src/liveness.rs

	new file:   src/test/ui/type/issue-100584.rs
	new file:   src/test/ui/type/issue-100584.stderr
2022-08-29 11:58:20 -07:00
bors
bc4b39c271 Auto merge of #101152 - Dylan-DPC:rollup-v4iw8ux, r=Dylan-DPC
Rollup of 8 pull requests

Successful merges:

 - #98304 (Add MaybeUninit memset test)
 - #98801 (Add a `File::create_new` constructor)
 - #99821 (Remove separate indexing of early-bound regions)
 - #100239 (remove an ineffective check in const_prop)
 - #100337 (Stabilize `std::io::read_to_string`)
 - #100819 (Make use of `[wrapping_]byte_{add,sub}`)
 - #100934 (Remove a panicking branch from `fmt::builders::PadAdapter`)
 - #101000 (Separate CountIsStar from CountIsParam in rustc_parse_format.)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-08-29 18:56:59 +00:00
Martin Nordholts
6eae169ca2 unix_sigpipe: Skip some tests on android; libc has no signal function
If we don't skip these tests, they will fail in CI when `python3 ../x.py
--stage 2 test --host= --target arm-linux-androideabi` runs. The failure
is:

    auxiliary/libsigpipe_utils.so: error: undefined reference to 'signal'
2022-08-29 20:49:45 +02:00
nils
5021dcd799 Display raw pointer as *{mut,const} T instead of *-ptr in errors
The `*-ptr` is rather confusing, and we have the full information for
properly displaying the information.
2022-08-29 20:40:25 +02:00
Trevor Spiteri
4d95035083 add tracking issue number to const_slice_split_at_not_mut 2022-08-29 20:14:06 +02:00
bors
e9f7ce1f91 Auto merge of #9247 - clubby789:raw_slice_pointer_cast, r=Alexendoo
New lint: Raw slice pointer cast

Adds a lint to check for a raw slice being created and cast back to a pointer, suggesting `ptr::slice_from_raw_parts`, to identify UB such as https://github.com/SimonSapin/rust-typed-arena/pull/54.
```
changelog: [`cast_slice_from_raw_parts`]: Add lint to check for `slice::from_raw_parts(.., ..) as *const _`
```
2022-08-29 18:07:50 +00:00
Nilstrieb
01acfef1a4 Migrate stable let_chains error to session diagnostics 2022-08-29 19:49:30 +02:00
Nilstrieb
d1ef8180f9 Revert let_chains stabilization
This reverts commit 3266460749.

This is the revert against master, the beta revert was already done in #100538.
2022-08-29 19:34:11 +02:00
Nilstrieb
76eb4f3bfd Bump stage0
This is needed for the revert of let_chains.
2022-08-29 19:30:11 +02:00