add eq constraints on associated constants
This commit is contained in:
parent
a34c079752
commit
0765999622
23 changed files with 195 additions and 113 deletions
|
@ -138,10 +138,11 @@ impl<'a> AstValidator<'a> {
|
|||
self.outer_impl_trait = old;
|
||||
}
|
||||
|
||||
fn visit_assoc_ty_constraint_from_generic_args(&mut self, constraint: &'a AssocTyConstraint) {
|
||||
fn visit_assoc_constraint_from_generic_args(&mut self, constraint: &'a AssocConstraint) {
|
||||
match constraint.kind {
|
||||
AssocTyConstraintKind::Equality { .. } => {}
|
||||
AssocTyConstraintKind::Bound { .. } => {
|
||||
AssocConstraintKind::Equality { .. } => {}
|
||||
AssocConstraintKind::ConstEquality { .. } => {}
|
||||
AssocConstraintKind::Bound { .. } => {
|
||||
if self.is_assoc_ty_bound_banned {
|
||||
self.err_handler().span_err(
|
||||
constraint.span,
|
||||
|
@ -150,7 +151,7 @@ impl<'a> AstValidator<'a> {
|
|||
}
|
||||
}
|
||||
}
|
||||
self.visit_assoc_ty_constraint(constraint);
|
||||
self.visit_assoc_constraint(constraint);
|
||||
}
|
||||
|
||||
// Mirrors `visit::walk_ty`, but tracks relevant state.
|
||||
|
@ -1277,7 +1278,7 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
|
|||
// are allowed to contain nested `impl Trait`.
|
||||
AngleBracketedArg::Constraint(constraint) => {
|
||||
self.with_impl_trait(None, |this| {
|
||||
this.visit_assoc_ty_constraint_from_generic_args(constraint);
|
||||
this.visit_assoc_constraint_from_generic_args(constraint);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -1586,11 +1587,11 @@ fn deny_equality_constraints(
|
|||
let len = assoc_path.segments.len() - 1;
|
||||
let gen_args = args.as_ref().map(|p| (**p).clone());
|
||||
// Build `<Bar = RhsTy>`.
|
||||
let arg = AngleBracketedArg::Constraint(AssocTyConstraint {
|
||||
let arg = AngleBracketedArg::Constraint(AssocConstraint {
|
||||
id: rustc_ast::node_id::DUMMY_NODE_ID,
|
||||
ident: *ident,
|
||||
gen_args,
|
||||
kind: AssocTyConstraintKind::Equality {
|
||||
kind: AssocConstraintKind::Equality {
|
||||
ty: predicate.rhs_ty.clone(),
|
||||
},
|
||||
span: ident.span,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue