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
This commit is contained in:
commit
07acdb48a0
18 changed files with 155 additions and 7 deletions
|
@ -888,9 +888,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curl"
|
name = "curl"
|
||||||
version = "0.4.39"
|
version = "0.4.40"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "aaa3b8db7f3341ddef15786d250106334d4a6c4b0ae4a46cd77082777d9849b9"
|
checksum = "877cc2f9b8367e32b6dabb9d581557e651cb3aa693a37f8679091bbf42687d5d"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"curl-sys",
|
"curl-sys",
|
||||||
"libc",
|
"libc",
|
||||||
|
@ -903,9 +903,9 @@ dependencies = [
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "curl-sys"
|
name = "curl-sys"
|
||||||
version = "0.4.49+curl-7.79.1"
|
version = "0.4.50+curl-7.79.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e0f44960aea24a786a46907b8824ebc0e66ca06bf4e4978408c7499620343483"
|
checksum = "4856b76919dd599f31236bb18db5f5bd36e2ce131e64f857ca5c259665b76171"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"libc",
|
"libc",
|
||||||
|
|
|
@ -20,6 +20,7 @@ const ARM_ALLOWED_FEATURES: &[(&str, Option<Symbol>)] = &[
|
||||||
("aes", Some(sym::arm_target_feature)),
|
("aes", Some(sym::arm_target_feature)),
|
||||||
("sha2", Some(sym::arm_target_feature)),
|
("sha2", Some(sym::arm_target_feature)),
|
||||||
("i8mm", Some(sym::arm_target_feature)),
|
("i8mm", Some(sym::arm_target_feature)),
|
||||||
|
("dotprod", Some(sym::arm_target_feature)),
|
||||||
("v5te", Some(sym::arm_target_feature)),
|
("v5te", Some(sym::arm_target_feature)),
|
||||||
("v6", Some(sym::arm_target_feature)),
|
("v6", Some(sym::arm_target_feature)),
|
||||||
("v6k", Some(sym::arm_target_feature)),
|
("v6k", Some(sym::arm_target_feature)),
|
||||||
|
|
|
@ -672,6 +672,17 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
||||||
err.span_label(span, "explicit generic argument not allowed");
|
err.span_label(span, "explicit generic argument not allowed");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
err.note(
|
||||||
|
"see issue #83701 <https://github.com/rust-lang/rust/issues/83701> \
|
||||||
|
for more information",
|
||||||
|
);
|
||||||
|
if tcx.sess.is_nightly_build() {
|
||||||
|
err.help(
|
||||||
|
"add `#![feature(explicit_generic_args_with_impl_trait)]` \
|
||||||
|
to the crate attributes to enable",
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
err.emit();
|
err.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -313,6 +313,12 @@ pub struct Rc<T: ?Sized> {
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<T: ?Sized> !marker::Send for Rc<T> {}
|
impl<T: ?Sized> !marker::Send for Rc<T> {}
|
||||||
|
|
||||||
|
// Note that this negative impl isn't strictly necessary for correctness,
|
||||||
|
// as `Rc` transitively contains a `Cell`, which is itself `!Sync`.
|
||||||
|
// However, given how important `Rc`'s `!Sync`-ness is,
|
||||||
|
// having an explicit negative impl is nice for documentation purposes
|
||||||
|
// and results in nicer error messages.
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<T: ?Sized> !marker::Sync for Rc<T> {}
|
impl<T: ?Sized> !marker::Sync for Rc<T> {}
|
||||||
|
|
||||||
|
|
|
@ -240,6 +240,11 @@ pub struct Cell<T: ?Sized> {
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
unsafe impl<T: ?Sized> Send for Cell<T> where T: Send {}
|
unsafe impl<T: ?Sized> Send for Cell<T> where T: Send {}
|
||||||
|
|
||||||
|
// Note that this negative impl isn't strictly necessary for correctness,
|
||||||
|
// as `Cell` wraps `UnsafeCell`, which is itself `!Sync`.
|
||||||
|
// However, given how important `Cell`'s `!Sync`-ness is,
|
||||||
|
// having an explicit negative impl is nice for documentation purposes
|
||||||
|
// and results in nicer error messages.
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<T: ?Sized> !Sync for Cell<T> {}
|
impl<T: ?Sized> !Sync for Cell<T> {}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,9 @@ error[E0632]: cannot provide explicit generic arguments when `impl Trait` is use
|
||||||
|
|
|
|
||||||
LL | assert_eq!(f::<4usize>(Usizable), 20usize);
|
LL | assert_eq!(f::<4usize>(Usizable), 20usize);
|
||||||
| ^^^^^^ explicit generic argument not allowed
|
| ^^^^^^ explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
24
src/test/ui/generic-associated-types/issue-88595.rs
Normal file
24
src/test/ui/generic-associated-types/issue-88595.rs
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
#![feature(generic_associated_types)]
|
||||||
|
#![feature(type_alias_impl_trait)]
|
||||||
|
|
||||||
|
fn main() {}
|
||||||
|
|
||||||
|
trait A<'a> {
|
||||||
|
type B<'b>: Clone
|
||||||
|
// FIXME(generic_associated_types): Remove one of the below bounds
|
||||||
|
// https://github.com/rust-lang/rust/pull/90678#discussion_r744976085
|
||||||
|
where
|
||||||
|
'a: 'b, Self: 'a, Self: 'b;
|
||||||
|
|
||||||
|
fn a(&'a self) -> Self::B<'a>;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct C;
|
||||||
|
|
||||||
|
impl<'a> A<'a> for C {
|
||||||
|
type B<'b> = impl Clone;
|
||||||
|
//~^ ERROR: lifetime bound not satisfied
|
||||||
|
//~| ERROR: could not find defining uses
|
||||||
|
|
||||||
|
fn a(&'a self) -> Self::B<'a> {} //~ ERROR: non-defining opaque type use in defining scope
|
||||||
|
}
|
40
src/test/ui/generic-associated-types/issue-88595.stderr
Normal file
40
src/test/ui/generic-associated-types/issue-88595.stderr
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
error[E0478]: lifetime bound not satisfied
|
||||||
|
--> $DIR/issue-88595.rs:19:5
|
||||||
|
|
|
||||||
|
LL | type B<'b> = impl Clone;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: lifetime parameter instantiated with the lifetime `'a` as defined here
|
||||||
|
--> $DIR/issue-88595.rs:18:6
|
||||||
|
|
|
||||||
|
LL | impl<'a> A<'a> for C {
|
||||||
|
| ^^
|
||||||
|
note: but lifetime parameter must outlive the lifetime `'b` as defined here
|
||||||
|
--> $DIR/issue-88595.rs:19:12
|
||||||
|
|
|
||||||
|
LL | type B<'b> = impl Clone;
|
||||||
|
| ^^
|
||||||
|
|
||||||
|
error: non-defining opaque type use in defining scope
|
||||||
|
--> $DIR/issue-88595.rs:23:23
|
||||||
|
|
|
||||||
|
LL | fn a(&'a self) -> Self::B<'a> {}
|
||||||
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: lifetime used multiple times
|
||||||
|
--> $DIR/issue-88595.rs:18:6
|
||||||
|
|
|
||||||
|
LL | impl<'a> A<'a> for C {
|
||||||
|
| ^^
|
||||||
|
LL | type B<'b> = impl Clone;
|
||||||
|
| ^^
|
||||||
|
|
||||||
|
error: could not find defining uses
|
||||||
|
--> $DIR/issue-88595.rs:19:18
|
||||||
|
|
|
||||||
|
LL | type B<'b> = impl Clone;
|
||||||
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0478`.
|
22
src/test/ui/generic-associated-types/issue-90014.rs
Normal file
22
src/test/ui/generic-associated-types/issue-90014.rs
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// edition:2018
|
||||||
|
|
||||||
|
#![feature(generic_associated_types)]
|
||||||
|
#![feature(type_alias_impl_trait)]
|
||||||
|
|
||||||
|
use std::future::Future;
|
||||||
|
|
||||||
|
trait MakeFut {
|
||||||
|
type Fut<'a> where Self: 'a;
|
||||||
|
fn make_fut<'a>(&'a self) -> Self::Fut<'a>;
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MakeFut for &'_ mut () {
|
||||||
|
type Fut<'a> = impl Future<Output = ()>;
|
||||||
|
//~^ ERROR: the type `&mut ()` does not fulfill the required lifetime
|
||||||
|
|
||||||
|
fn make_fut<'a>(&'a self) -> Self::Fut<'a> {
|
||||||
|
async { () }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
15
src/test/ui/generic-associated-types/issue-90014.stderr
Normal file
15
src/test/ui/generic-associated-types/issue-90014.stderr
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
error[E0477]: the type `&mut ()` does not fulfill the required lifetime
|
||||||
|
--> $DIR/issue-90014.rs:14:5
|
||||||
|
|
|
||||||
|
LL | type Fut<'a> = impl Future<Output = ()>;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: type must outlive the lifetime `'a` as defined here
|
||||||
|
--> $DIR/issue-90014.rs:14:14
|
||||||
|
|
|
||||||
|
LL | type Fut<'a> = impl Future<Output = ()>;
|
||||||
|
| ^^
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0477`.
|
|
@ -3,6 +3,9 @@ error[E0632]: cannot provide explicit generic arguments when `impl Trait` is use
|
||||||
|
|
|
|
||||||
LL | foo::<str>("".to_string());
|
LL | foo::<str>("".to_string());
|
||||||
| ^^^ explicit generic argument not allowed
|
| ^^^ explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,9 @@ error[E0632]: cannot provide explicit generic arguments when `impl Trait` is use
|
||||||
|
|
|
|
||||||
LL | foo::<String>('a');
|
LL | foo::<String>('a');
|
||||||
| ^^^^^^ explicit generic argument not allowed
|
| ^^^^^^ explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,9 @@ LL | evt.handle_event::<TestEvent, fn(TestEvent)>(|_evt| {
|
||||||
| ^^^^^^^^^ ^^^^^^^^^^^^^ explicit generic argument not allowed
|
| ^^^^^^^^^ ^^^^^^^^^^^^^ explicit generic argument not allowed
|
||||||
| |
|
| |
|
||||||
| explicit generic argument not allowed
|
| explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: aborting due to previous error
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ mod rusti {
|
||||||
target_os = "emscripten",
|
target_os = "emscripten",
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "fuchsia",
|
target_os = "fuchsia",
|
||||||
|
target_os = "illumos",
|
||||||
target_os = "linux",
|
target_os = "linux",
|
||||||
target_os = "macos",
|
target_os = "macos",
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
|
|
|
@ -36,6 +36,7 @@ struct Outer {
|
||||||
target_os = "emscripten",
|
target_os = "emscripten",
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "fuchsia",
|
target_os = "fuchsia",
|
||||||
|
target_os = "illumos",
|
||||||
target_os = "linux",
|
target_os = "linux",
|
||||||
target_os = "macos",
|
target_os = "macos",
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
|
|
|
@ -3,18 +3,27 @@ error[E0632]: cannot provide explicit generic arguments when `impl Trait` is use
|
||||||
|
|
|
|
||||||
LL | func::<u8>(42);
|
LL | func::<u8>(42);
|
||||||
| ^^ explicit generic argument not allowed
|
| ^^ explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
|
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
|
||||||
--> $DIR/synthetic-param.rs:23:17
|
--> $DIR/synthetic-param.rs:23:17
|
||||||
|
|
|
|
||||||
LL | Foo::func::<u8>(42);
|
LL | Foo::func::<u8>(42);
|
||||||
| ^^ explicit generic argument not allowed
|
| ^^ explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
|
error[E0632]: cannot provide explicit generic arguments when `impl Trait` is used in argument position
|
||||||
--> $DIR/synthetic-param.rs:26:23
|
--> $DIR/synthetic-param.rs:26:23
|
||||||
|
|
|
|
||||||
LL | Bar::<i8>::func::<u8>(42);
|
LL | Bar::<i8>::func::<u8>(42);
|
||||||
| ^^ explicit generic argument not allowed
|
| ^^ explicit generic argument not allowed
|
||||||
|
|
|
||||||
|
= note: see issue #83701 <https://github.com/rust-lang/rust/issues/83701> for more information
|
||||||
|
= help: add `#![feature(explicit_generic_args_with_impl_trait)]` to the crate attributes to enable
|
||||||
|
|
||||||
error: aborting due to 3 previous errors
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,11 @@ pub fn main() {
|
||||||
target_os = "emscripten",
|
target_os = "emscripten",
|
||||||
target_os = "freebsd",
|
target_os = "freebsd",
|
||||||
target_os = "fuchsia",
|
target_os = "fuchsia",
|
||||||
|
target_os = "illumos",
|
||||||
target_os = "linux",
|
target_os = "linux",
|
||||||
target_os = "macos",
|
target_os = "macos",
|
||||||
target_os = "netbsd",
|
target_os = "netbsd",
|
||||||
target_os = "openbsd",
|
target_os = "openbsd",
|
||||||
target_os = "vxworks",
|
target_os = "solaris",
|
||||||
target_os = "solaris"))]
|
target_os = "vxworks"))]
|
||||||
pub fn main() { }
|
pub fn main() { }
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 94ca096afbf25f670e76e07dca754fcfe27134be
|
Subproject commit 2e2a16e983f597da62bc132eb191bc3276d4b1bb
|
Loading…
Add table
Add a link
Reference in a new issue