Commit Graph

211252 Commits

Author SHA1 Message Date
Oli Scherer
250dcf421a Check that type_implements_trait actually is passed the right amount of generic params 2022-11-21 20:30:45 +00:00
Oli Scherer
0c47deed9f Reduce the amount of passed-around arguments that will get merged into one later anyway 2022-11-21 20:28:48 +00:00
Philipp Krones
242280252d
Clippy: Don't import GenericParamDefKind 2022-11-21 21:05:06 +01:00
Philipp Krones
b4c90abb5f
Fix declare_clippy_lint crate 2022-11-21 20:52:12 +01:00
Philipp Krones
d407778c75
Update Cargo.lock 2022-11-21 20:52:06 +01:00
Philipp Krones
ddf055ad07
Merge commit 'f4850f7292efa33759b4f7f9b7621268979e9914' into clippyup 2022-11-21 20:51:52 +01:00
Vadim Petrochenkov
7a5376d23c Unreserve braced enum variants in value namespace 2022-11-21 22:40:06 +03:00
bors
f4850f7292 Auto merge of #9881 - flip1995:rustup, r=flip1995
Rustup

r? `@ghost`

It took >4 weeks, but I finally got to do the sync 🎉

changelog: none
2022-11-21 19:16:14 +00:00
Philipp Krones
05b914a92b
Fix custom ICE message test on windows 2022-11-21 20:15:50 +01:00
ozkanonur
5907e9155e
pass clippy sysroot env if given r=ozkanonur
Signed-off-by: ozkanonur <work@onurozkan.dev>
2022-11-21 20:02:20 +01:00
Philipp Krones
661f13ce3b
Bump nightly version -> 2022-11-21 2022-11-21 20:02:14 +01:00
Philipp Krones
25e98bf708
Bump Clippy version -> 0.1.67 2022-11-21 20:02:06 +01:00
Philipp Krones
fd5b85c957
Merge remote-tracking branch 'upstream/master' into rustup 2022-11-21 20:01:17 +01:00
bors
b7bc90fea3 Auto merge of #104120 - mejrs:diag, r=davidtwco
Match and enforce crate and slug names

Some of these were in the wrong place or had a name that didn't match.
2022-11-21 18:36:26 +00:00
Eric Holk
ff38c3528a Coercions work now 2022-11-21 10:20:12 -08:00
Eric Holk
1a913a6347 Add a test case for async dyn* traits 2022-11-21 10:13:57 -08:00
Oli Scherer
c16a90f5e3 Test generalization during coherence 2022-11-21 16:47:29 +00:00
Oli Scherer
11adf03790 Add some more assertions for type relations not used during coherence 2022-11-21 16:38:49 +00:00
Oli Scherer
7301cd7844 Type generalization should not look at opaque type in coherence 2022-11-21 16:38:23 +00:00
Oli Scherer
11ae334f07 Remove a function that doesn't actually do anything 2022-11-21 16:37:57 +00:00
Oli Scherer
f42e490d6f Register obligations from type relation 2022-11-21 16:37:53 +00:00
Oli Scherer
9a8e1eea7a Move a field around 2022-11-21 16:35:23 +00:00
Oli Scherer
9cd44f8142 nit treat different opaque types 2022-11-21 16:35:10 +00:00
Oli Scherer
ae80c764d4 Add an always-ambiguous predicate to make sure that we don't accidentlally allow trait resolution to prove false things during coherence 2022-11-21 16:35:04 +00:00
Michael Howell
709e9dea91 rustdoc: add test case for pointer cursor 2022-11-21 09:16:54 -07:00
Oli Scherer
94fe30ff2f Treat different opaque types of the same def id as equal during coherence 2022-11-21 16:06:07 +00:00
Oli Scherer
2752e328c9 Allow opaque types in trait impl headers and rely on coherence to reject unsound cases 2022-11-21 16:00:31 +00:00
bors
1cbc45942d Auto merge of #104673 - matthiaskrgr:rollup-85f65ov, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #104420 (Fix doc example for `wrapping_abs`)
 - #104499 (rustdoc JSON: Use `Function` everywhere and remove `Method`)
 - #104500 (`rustc_ast`: remove `ref` patterns)
 - #104511 (Mark functions created for `raw-dylib` on x86 with DllImport storage class)
 - #104595 (Add `PolyExistentialPredicate` type alias)
 - #104605 (deduplicate constant evaluation in cranelift backend)
 - #104628 (Revert "Update CI to use Android NDK r25b")
 - #104662 (Streamline deriving on packed structs.)
 - #104667 (Revert formatting changes of a test)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2022-11-21 15:22:54 +00:00
Ralf Jung
1a6966602a dont attempt strict provenance in SGX 2022-11-21 16:10:56 +01:00
Santiago Pastorino
16c9e39021
negative_impl_exists should take an InferCtxt 2022-11-21 11:26:23 -03:00
mejrs
f47abd8987 Fix make test 2022-11-21 15:24:51 +01:00
mejrs
e8e47e0873 Improve slug name error 2022-11-21 15:24:51 +01:00
mejrs
d494502f64 Fix tests 2022-11-21 15:24:51 +01:00
mejrs
fe212eca76 Match crate and slug names 2022-11-21 15:24:50 +01:00
Santiago Pastorino
2faad3b699
negative_impl should take a TyCtxt 2022-11-21 11:09:53 -03:00
Matthias Krüger
9326261279
Rollup merge of #104667 - WaffleLapkin:unfmttest, r=Dylan-DPC
Revert formatting changes of a test

See https://github.com/rust-lang/rust/pull/99935/files#r1027259119
cc ``@CAD97``
2022-11-21 14:11:13 +01:00
Matthias Krüger
439a8e6cef
Rollup merge of #104662 - nnethercote:tweak-deriving-for-packed-non-copy, r=jackh726
Streamline deriving on packed structs.

The current approach to field accesses in derived code:
- Normal case: `&self.0`
- In a packed struct that derives `Copy`: `&{self.0}`
- In a packed struct that doesn't derive `Copy`: `let Self(ref x) = *self`

The `let` pattern used in the third case is equivalent to the simpler field access in the first case. This commit changes the third case to use a field access.

The commit also combines two boolean arguments (`is_packed` and `always_copy`) into a single field (`copy_fields`) earlier, to save passing both around.

r? ``@jackh726``
2022-11-21 14:11:13 +01:00
Matthias Krüger
5b9289215e
Rollup merge of #104628 - alex-pinkus:revert-android-ndk-upgrade, r=pietroalbini
Revert "Update CI to use Android NDK r25b"

This reverts commit bf7f1ca316 (pull request #102332).

The relevant discussion can be found in #103673, where it was agreed that more time is needed to warn the community of the upcoming breakage.

This PR is for the `master` branch, where a conflict was recently introduced due to 6d8160261f. The conflict is in `cc_detect.rs`, where the code that corrects the target triple was moved to a new function called `ndk_compiler()`. This puts the old logic in the `ndk_compiler` function, and assumes that it works properly in the other location where that code is being called. I would appreciate review from ``@pietroalbini`` to understand how we can test that the reverted logic is also suitable for the additional use case (seems to be related to setting `cc` and `cxx`). I've confirmed already that with these changes I can compile for `armv7-linux-androideabi`, `aarch64-linux-android`, `i686-linux-android`, and `x86_64-linux-android` using `x.py`.

A separate revert for the `beta` branch will be required, since the original change has already made it to beta. The beta revert is available at 3fa0d94674, but I'm not sure of the process for staging that PR.
2022-11-21 14:11:12 +01:00
Matthias Krüger
ed22bdc18f
Rollup merge of #104605 - RalfJung:clf_consts, r=bjorn3
deduplicate constant evaluation in cranelift backend

The cranelift backend had two matches on `ConstantKind`, which can be avoided, and used this `eval_for_mir` that nothing else uses... this makes things more consistent with the (better-tested) LLVM backend.

I noticed this because cranelift was the only user of `eval_for_mir`. However `try_eval_for_mir` still has one other user in `eval`... the odd thing is that the interpreter has its own `eval_mir_constant` which seems to duplicate the same functionality and does not use `try_eval_for_mir`. No idea what is happening here.

r? ``@bjorn3``
Cc ``@lcnr``
2022-11-21 14:11:12 +01:00
Matthias Krüger
844e3fb928
Rollup merge of #104595 - compiler-errors:poly-existential-predicate, r=lcnr
Add `PolyExistentialPredicate` type alias

Wrapping `ExistentialPredicate`s in a binder is very common, and this alias already exists for the `PolyExistential{TraitRef,Projection}` types.
2022-11-21 14:11:11 +01:00
Matthias Krüger
cc2397b2cd
Rollup merge of #104511 - dpaoliello:privateglobalworkaround, r=michaelwoerister
Mark functions created for `raw-dylib` on x86 with DllImport storage class

Fix for #104453

## Issue Details
On x86 Windows, LLVM uses 'L' as the prefix for any private global symbols (`PrivateGlobalPrefix`), so when the `raw-dylib` feature creates an undecorated function symbol that begins with an 'L' LLVM misinterprets that as a private global symbol that it created and so fails the compilation at a later stage since such a symbol must have a definition.

## Fix Details
Mark the function we are creating for `raw-dylib` with `DllImport` storage class (this was already being done for MSVC at a later point for `callee::get_fn` but not for GNU (due to "backwards compatibility")): this will cause LLVM to prefix the name with `__imp_` and so it won't mistake it for a private global symbol.
2022-11-21 14:11:10 +01:00
Matthias Krüger
b39e0c23bb
Rollup merge of #104500 - WaffleLapkin:deref-the-compiler, r=wesleywiser
`rustc_ast`: remove `ref` patterns

Or in other words use match ergonomics in `rustc_ast`. I do plan to do the same with other crates, but to keep the diff sane, let's do them one at a time.
2022-11-21 14:11:10 +01:00
Matthias Krüger
4300b9e5cf
Rollup merge of #104499 - Enselic:no-method-in-rustdoc-json, r=GuillaumeGomez
rustdoc JSON: Use `Function` everywhere and remove `Method`

Closes #100259
2022-11-21 14:11:09 +01:00
Matthias Krüger
369e44943f
Rollup merge of #104420 - TethysSvensson:master, r=JohnTitor
Fix doc example for `wrapping_abs`

The `max` variable is unused. This change introduces the `min_plus` variable, to make the example similar to the one from `saturating_abs`. An alternative would be to remove the unused variable.
2022-11-21 14:11:09 +01:00
bors
7fe6f36224 Auto merge of #103491 - cjgillot:self-rpit, r=oli-obk
Support using `Self` or projections inside an RPIT/async fn

I reuse the same idea as https://github.com/rust-lang/rust/pull/103449 to use variances to encode whether a lifetime parameter is captured by impl-trait.

The current implementation of async and RPIT replace all lifetimes from the parent generics by `'static`.  This PR changes the scheme
```rust
impl<'a> Foo<'a> {
    fn foo<'b, T>() -> impl Into<Self> + 'b { ... }
}

opaque Foo::<'_a>::foo::<'_b, T>::opaque<'b>: Into<Foo<'_a>> + 'b;
impl<'a> Foo<'a> {
    // OLD
    fn foo<'b, T>() -> Foo::<'static>::foo::<'static, T>::opaque::<'b> { ... }
                             ^^^^^^^ the `Self` becomes `Foo<'static>`

    // NEW
    fn foo<'b, T>() -> Foo::<'a>::foo::<'b, T>::opaque::<'b> { ... }
                             ^^ the `Self` stays `Foo<'a>`
}
```

There is the same issue with projections. In the example, substitute `Self` by `<T as Trait<'b>>::Assoc` in the sugared version, and `Foo<'_a>` by `<T as Trait<'_b>>::Assoc` in the desugared one.

This allows to support `Self` in impl-trait, since we do not replace lifetimes by `'static` any more.  The same trick allows to use projections like `T::Assoc` where `Self` is allowed.  The feature is gated behind a `impl_trait_projections` feature gate.

The implementation relies on 2 tweaking rules for opaques in 2 places:
- we only relate substs that correspond to captured lifetimes during TypeRelation;
- we only list captured lifetimes in choice region computation.

For simplicity, I encoded the "capturedness" of lifetimes as a variance, `Bivariant` vs `Invariant` for unused vs captured lifetimes. The `variances_of` query used to ICE for opaques.

Impl-trait that do not reference `Self` or projections will have their variances as:
- `o` (invariant) for each parent type or const;
- `*` (bivariant) for each parent lifetime --> will not participate in borrowck;
- `o` (invariant) for each own lifetime.

Impl-trait that does reference `Self` and/or projections will have some parent lifetimes marked as `o` (as the example above), and participate in type relation and borrowck.  In the example above, `variances_of(opaque) = ['_a: o, '_b: *, T: o, 'b: o]`.

r? types
cc `@compiler-errors` , as you asked about the issue with `Self` and projections.
2022-11-21 12:17:03 +00:00
hi-rustin
fec6ffc816 Add delay span bug
Signed-off-by: hi-rustin <rustin.liu@gmail.com>
2022-11-21 20:03:28 +08:00
Léo Lanteri Thauvin
baa59d1a77 Only declare bindings for if-let guards once per arm 2022-11-21 12:45:29 +01:00
bors
51ec465cc3 Auto merge of #9873 - smoelius:move-line-span, r=flip1995
Move `line_span` to source.rs

`line_span` is a non-public function used only in source.rs. It seems like it ought to go in source.rs.

changelog: none
2022-11-21 11:07:32 +00:00
Maybe Waffle
d9f2c0b33d Revert formatting changes of a test 2022-11-21 10:23:53 +00:00
Guillaume Gomez
90d7beb624 Extend GUI test for alias search result 2022-11-21 11:15:54 +01:00