Commit graph

218420 commits

Author SHA1 Message Date
Matthias Krüger
dd08f35e87
Rollup merge of #107286 - compiler-errors:new-solver-deny-infers, r=lcnr
ICE in new solver if we see an inference variable

By construction, we do not expect to see any `ty::Infer(ty::TyVar(_))` inference types in the solver (we treat this as ambiguous, since we need to be able to structurally resolve the self type at least one layer to assemble candidates for it). Additionally, since we're doing no freshening, we also don't expect to see any fresh vars of any kind in the solver.

Let's make that an ICE so we can catch any mistakes.

When #107282 lands, we should also ICE there too if we see a non-int/float infer.

r? `@lcnr`
2023-01-26 06:15:29 +01:00
Matthias Krüger
5be2f51428
Rollup merge of #107285 - compiler-errors:new-solver-future-and-generator, r=lcnr
Implement `Generator` and `Future` in the new solver

r? `@lcnr`
2023-01-26 06:15:28 +01:00
Matthias Krüger
a84e060173
Rollup merge of #107272 - compiler-errors:new-solver-more-predicates, r=lcnr
Implement ObjectSafe and WF in the new solver

r? ``@lcnr``
2023-01-26 06:15:27 +01:00
Matthias Krüger
a8b5e5d9db
Rollup merge of #107248 - erikdesjardins:addrspace, r=oli-obk
abi: add AddressSpace field to Primitive::Pointer

...and remove it from `PointeeInfo`, which isn't meant for this.

There are still various places (marked with FIXMEs) that assume all pointers
have the same size and alignment. Fixing this requires parsing non-default
address spaces in the data layout string (and various other changes),
which will be done in a followup.
(That is, if it's actually worth it to support multiple different pointer sizes.
There is a lot of code that would be affected by that.)

Fixes #106367

r? ``@oli-obk``
cc ``@Patryk27``
2023-01-26 06:15:27 +01:00
Matthias Krüger
a8e8406e60
Rollup merge of #107204 - euclio:assoc-const-suggestion, r=petrochenkov
suggest qualifying bare associated constants

Fixes #107199.
2023-01-26 06:15:26 +01:00
Matthias Krüger
5bc49807dd
Rollup merge of #107175 - compiler-errors:bad-types-in-vec-push, r=estebank
Fix escaping inference var ICE in `point_at_expr_source_of_inferred_type`

Fixes #107158

`point_at_expr_source_of_inferred_type` uses `lookup_probe` to adjust the self type of a method receiver -- but that method returns inference variables from inside a probe. That means that the ty vars are no longer valid, so we can't use any infcx methods on them.

Also, pass some extra span info to hack a quick solution to bad labels, resulting in this diagnostic improvement:

```rust
fn example2() {
    let mut x = vec![1];
    x.push("");
}
```

```diff
  error[E0308]: mismatched types
   --> src/main.rs:5:12
    |
  5 |     x.push("");
    |       ---- ^^
    |       |    |
    |       |    expected integer, found `&str`
-   |       |    this is of type `&'static str`, which causes `x` to be inferred as `Vec<{integer}>`
    |       arguments to this method are incorrect
```
(since that "which causes `x` to be inferred as `Vec<{integer}>` part is wrong)

r? `@estebank`

(we really should make this code better in general, cc #106590, but that's a bit bigger issue that needs some more thinking about)
2023-01-26 06:15:26 +01:00
Matthias Krüger
4b51b20d87
Rollup merge of #107086 - clubby789:bootstrap-lock-pid-linux, r=albertlarsan68
Print PID holding bootstrap build lock on Linux

Partially address #107077

Parse `/proc/locks` to find the PID of the process which created the build directory lock
2023-01-26 06:15:25 +01:00
Matthias Krüger
f3644ca64d
Rollup merge of #107085 - tmiasko:custom-mir-operators, r=oli-obk
Custom MIR: Support binary and unary operations

Lower binary and unary operations directly to corresponding unchecked MIR
operations. Ultimately this might not be syntax we want, but it allows for
experimentation in the meantime.

r? ````@oli-obk```` ````@JakobDegen````
2023-01-26 06:15:24 +01:00
Matthias Krüger
ba928ba041
Rollup merge of #106960 - estebank:parse-anon-enums, r=cjgillot
Teach parser to understand fake anonymous enum syntax

Parse `Ty | OtherTy` in function argument and return types.
Parse type ascription in top level patterns.

Minimally address #100741.
2023-01-26 06:15:24 +01:00
Matthias Krüger
8ae5116fae
Rollup merge of #106407 - mejrs:attr_check, r=compiler-errors
Improve proc macro attribute diagnostics

Closes https://github.com/rust-lang/rust/issues/102923
2023-01-26 06:15:23 +01:00
Matthew J Perez
3016f55579 improve fn pointer notes
- add note and suggestion for casting both expected and found fn items
  to fn pointers
- add note for casting expected fn item to fn pointer
2023-01-26 05:07:34 +00:00
Michael Goulet
0f24e11ef5 ICE in new solver if we see an inference variable 2023-01-26 03:18:36 +00:00
Michael Goulet
d600b94ebb Implement Generator and Future 2023-01-26 03:15:36 +00:00
Michael Goulet
8434b43a7f Report the right fulfillment errors 2023-01-26 03:14:26 +00:00
bors
885bf62887 Auto merge of #105582 - saethlin:instcombine-assert-inhabited, r=cjgillot
InstCombine away intrinsic validity assertions

This optimization (currently) fires 246 times on the standard library. It seems to fire hardly at all on the big crates in the benchmark suite. Interesting.
2023-01-26 03:10:52 +00:00
bors
801b1a1919 Auto merge of #105582 - saethlin:instcombine-assert-inhabited, r=cjgillot
InstCombine away intrinsic validity assertions

This optimization (currently) fires 246 times on the standard library. It seems to fire hardly at all on the big crates in the benchmark suite. Interesting.
2023-01-26 03:10:52 +00:00
yukang
c4d00d710c add testcase for #104012 2023-01-26 10:52:57 +08:00
Caleb Cartwright
da538c1fa8 add style team triagebot config 2023-01-25 19:58:22 -06:00
bors
23ea47b7eb Auto merge of #10226 - not-my-profile:module_name_repetitions-span, r=giraffate
Improve span for module_name_repetitions

changelog: [`module_name_repetitions`]: Narrowed span to the identifier
2023-01-26 00:17:52 +00:00
bors
2a17174ee6 Auto merge of #107309 - matthiaskrgr:rollup-0wgq6be, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #105345 (Add hint for missing lifetime bound on trait object when type alias is used)
 - #106897 (Tweak E0597)
 - #106944 (Suggest using a lock for `*Cell: Sync` bounds)
 - #107239 (Bring tests back into rustc source tarball)
 - #107244 (rustdoc: rearrange HTML in primitive reference links)
 - #107255 (add test where we ignore hr implied bounds)
 - #107256 (Delete `SimplifyArmIdentity` and `SimplifyBranchSame` mir opts)
 - #107266 (rustdoc: prohibit scroll bar on source viewer in Safari)
 - #107282 (erica solver: implement builtin `Pointee` trait impl candidates)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2023-01-25 23:39:51 +00:00
Michael Goulet
02b80d2f9c Don't normalize obligations in WF goal for the new solver 2023-01-25 21:28:22 +00:00
Michael Goulet
b3f0085376 Implement ObjectSafe and WF in the new solver 2023-01-25 21:27:12 +00:00
Linus Färnstrand
50f29d48bd Stabilize the const_socketaddr feature 2023-01-25 22:23:34 +01:00
Matthias Krüger
a20b86f881
Rollup merge of #107282 - BoxyUwU:erica_builtin_pointee_impls, r=compiler-errors
erica solver: implement builtin `Pointee` trait impl candidates

r? ```@compiler-errors```
2023-01-25 22:19:56 +01:00
Matthias Krüger
f268c7b454
Rollup merge of #107266 - kadiwa4:source_viewer_scrollbar, r=notriddle
rustdoc: prohibit scroll bar on source viewer in Safari

Fixes #106455.
2023-01-25 22:19:55 +01:00
Matthias Krüger
c2f46df5a5
Rollup merge of #107256 - JakobDegen:delete-sai, r=cjgillot
Delete `SimplifyArmIdentity` and `SimplifyBranchSame` mir opts

I had attempted to fix the first of these opts in #94177 . However, despite that PR already being a full re-write, it still did not fix some of the core soundness issues. The optimizations that are attempted here are likely to be desirable, but I do not expect any of the currently written code to survive into a sound implementation. Deleting the code keeps us from having to maintain the passes in the meantime.

Closes #77359 , closes #72800 , closes #78628

r? ```@cjgillot```
2023-01-25 22:19:55 +01:00
Matthias Krüger
c20e0daf32
Rollup merge of #107255 - lcnr:implied-b-hr, r=oli-obk
add test where we ignore hr implied bounds

r? types
2023-01-25 22:19:54 +01:00
Matthias Krüger
2ed3639f83
Rollup merge of #107244 - notriddle:notriddle/primitive-reference-link, r=GuillaumeGomez
rustdoc: rearrange HTML in primitive reference links

This patch avoids hard-to-click single character links by making the generic part of the link:

Before: <a href="#">&</a>T

After: <a href="#">&T</a>
2023-01-25 22:19:53 +01:00
Matthias Krüger
b7baa9f217
Rollup merge of #107239 - tmiasko:tests, r=Mark-Simulacrum
Bring tests back into rustc source tarball

They were missing after recent move from src/test to tests.

cc ```@albertlarsan68```

Fixes #107081
2023-01-25 22:19:53 +01:00
Matthias Krüger
22e62a4fca
Rollup merge of #106944 - Nilstrieb:there-once-was-a-diagnostic, r=WaffleLapkin
Suggest using a lock for `*Cell: Sync` bounds

I mostly did this for `OnceCell<T>` at first because users will be confused to see that the `OnceCell<T>` in `std` isn't `Sync` but then extended it to `Cell<T>` and `RefCell<T>` as well.
2023-01-25 22:19:52 +01:00
Matthias Krüger
9e3f330656
Rollup merge of #106897 - estebank:issue-99430, r=davidtwco
Tweak E0597

CC #99430
2023-01-25 22:19:52 +01:00
Matthias Krüger
f21728fee4
Rollup merge of #105345 - yanchen4791:issue-103582-fix, r=jackh726
Add hint for missing lifetime bound on trait object when type alias is used

Fix issue #103582.

The problem: When a type alias is used to specify the return type of the method in a trait impl, the suggestion for fixing the problem of "missing lifetime bound on trait object" of the trait impl will not be created. The issue caused by the code which searches for the return trait objects when constructing the hint suggestion is not able to find the trait objects since they are specified in the type alias path instead of the return path of the trait impl.

The solution: Trace the trait objects in the type alias path and provide them along with the alias span to generate the suggestion in case the type alias is used in return type of the method in the trait impl.
2023-01-25 22:19:51 +01:00
bors
c18a5e8a5b Auto merge of #107142 - cuviper:relnotes-1.67, r=Mark-Simulacrum
Release notes for 1.67.0

r? `@Mark-Simulacrum`
cc `@rust-lang/release`
2023-01-25 20:59:10 +00:00
Lukas Wirth
4a677e91aa minor: Remove unnecessary arg in LowerCtx::ast_id 2023-01-25 21:52:28 +01:00
Nilstrieb
943000fdcf Use can_eq to compare types for default assoc type error
This works correctly with inference variables.
2023-01-25 21:25:42 +01:00
Nilstrieb
b222f2e266 Move note_and_explain_type_err from rustc_middle to rustc_infer
This way we can properly deal with the types.
2023-01-25 21:18:35 +01:00
Vadim Petrochenkov
398225842c rustdoc: Don't put non rustdoc-reachable impls into all_trait_impls 2023-01-25 23:39:29 +04:00
Michael Goulet
b83ab0ce96 Suggest mutable borrows correctly 2023-01-25 19:37:10 +00:00
Michael Goulet
800f1f3513 Liberate late-bound regions correctly 2023-01-25 19:26:53 +00:00
Vadim Petrochenkov
ca93310eb7 rustdoc: Use rustdoc-reachable set to prune extern impls 2023-01-25 23:22:00 +04:00
Vadim Petrochenkov
957bc606dd rustdoc: Collect rustdoc-reachable items during early doc link resolution 2023-01-25 23:14:09 +04:00
bors
3ed2c0aa31 Auto merge of #2765 - RalfJung:scfix, r=RalfJung
add scfix test

I'm not sure if we currently *guarantee* to pass this test, but at least I was unable to get it to fail.

Cc `@cbeuw`
2023-01-25 17:49:12 +00:00
Ralf Jung
ff5132e2fc add scfix test 2023-01-25 18:48:07 +01:00
bors
027c8507b4 Auto merge of #103902 - vincenzopalazzo:macros/obligation_rulesv2, r=oli-obk
use `LocalDefId` instead of `HirId` in trait resolution to simplify the obligation clause resolution

This commit introduces a refactoring suggested by `@lcnr` to simplify the obligation clause resolution.

This is just the first PR that introduces a type of refactoring, but others PRs will follow this to introduce name changing to change from the variable name from `body_id` to something else.

Fixes https://github.com/rust-lang/rust/issues/104827

Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>

`@rustbot` r? `@lcnr`
2023-01-25 16:39:29 +00:00
bors
dd673eea33 Auto merge of #14025 - Veykril:changekind-fix, r=jonas-schievink
fix: Fix process-changes not deduplicating changes correctly

probably fixes https://github.com/rust-lang/rust-analyzer/issues/12873 (will close it with this nevertheless as its not really reproducible)
2023-01-25 15:43:01 +00:00
bjorn3
ff56716d03 Fix CI 2023-01-25 16:27:28 +01:00
bjorn3
3808bc4639 Fix CI 2023-01-25 16:27:28 +01:00
bors
6fd5769996 Auto merge of #14011 - bvanjoi:fix-unwrap-block, r=jonas-schievink
fix(ide-assists): unwrap block when it parent is let stmt

fix #13990
2023-01-25 15:04:03 +00:00
bors
3e57a77cd1 Auto merge of #14026 - jonas-schievink:fix-libs-publish, r=jonas-schievink
internal: Try to fix auto-publishing of lib crates

https://github.com/rust-lang/rust-analyzer/issues/13912
2023-01-25 14:46:07 +00:00
Mark Rousskov
17887f7a72 Bump stage0.json to 1.68 beta 2023-01-25 09:45:50 -05:00