Auto merge of #49368 - matthewjasper:feature-gate-where-clause, r=nikomatsakis
Feature gate where clauses on associated types Fixes #49365. Requires crater: these have been usable since 1.24.
This commit is contained in:
commit
0135bf647c
@ -1768,8 +1768,8 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
||||
}
|
||||
}
|
||||
ast::TraitItemKind::Type(_, ref default) => {
|
||||
// We use two if statements instead of something like match guards so that both
|
||||
// of these errors can be emitted if both cases apply.
|
||||
// We use three if statements instead of something like match guards so that all
|
||||
// of these errors can be emitted if all cases apply.
|
||||
if default.is_some() {
|
||||
gate_feature_post!(&self, associated_type_defaults, ti.span,
|
||||
"associated type defaults are unstable");
|
||||
@ -1778,6 +1778,10 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
||||
gate_feature_post!(&self, generic_associated_types, ti.span,
|
||||
"generic associated types are unstable");
|
||||
}
|
||||
if !ti.generics.where_clause.predicates.is_empty() {
|
||||
gate_feature_post!(&self, generic_associated_types, ti.span,
|
||||
"where clauses on associated types are unstable");
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ trait PointerFamily<U> {
|
||||
//~^ ERROR generic associated types are unstable
|
||||
type Pointer2<T>: Deref<Target = T> where T: Clone, U: Clone;
|
||||
//~^ ERROR generic associated types are unstable
|
||||
//~| ERROR where clauses on associated types are unstable
|
||||
}
|
||||
|
||||
struct Foo;
|
||||
@ -25,4 +26,10 @@ impl PointerFamily<u32> for Foo {
|
||||
//~^ ERROR generic associated types are unstable
|
||||
}
|
||||
|
||||
trait Bar {
|
||||
type Assoc where Self: Sized;
|
||||
//~^ ERROR where clauses on associated types are unstable
|
||||
}
|
||||
|
||||
|
||||
fn main() {}
|
||||
|
@ -14,8 +14,16 @@ LL | type Pointer2<T>: Deref<Target = T> where T: Clone, U: Clone;
|
||||
|
|
||||
= help: add #![feature(generic_associated_types)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: where clauses on associated types are unstable (see issue #44265)
|
||||
--> $DIR/feature-gate-generic_associated_types.rs:16:5
|
||||
|
|
||||
LL | type Pointer2<T>: Deref<Target = T> where T: Clone, U: Clone;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(generic_associated_types)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: generic associated types are unstable (see issue #44265)
|
||||
--> $DIR/feature-gate-generic_associated_types.rs:22:5
|
||||
--> $DIR/feature-gate-generic_associated_types.rs:23:5
|
||||
|
|
||||
LL | type Pointer<usize> = Box<usize>;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
@ -23,13 +31,21 @@ LL | type Pointer<usize> = Box<usize>;
|
||||
= help: add #![feature(generic_associated_types)] to the crate attributes to enable
|
||||
|
||||
error[E0658]: generic associated types are unstable (see issue #44265)
|
||||
--> $DIR/feature-gate-generic_associated_types.rs:24:5
|
||||
--> $DIR/feature-gate-generic_associated_types.rs:25:5
|
||||
|
|
||||
LL | type Pointer2<u32> = Box<u32>;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(generic_associated_types)] to the crate attributes to enable
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
error[E0658]: where clauses on associated types are unstable (see issue #44265)
|
||||
--> $DIR/feature-gate-generic_associated_types.rs:30:5
|
||||
|
|
||||
LL | type Assoc where Self: Sized;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: add #![feature(generic_associated_types)] to the crate attributes to enable
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
Loading…
x
Reference in New Issue
Block a user