Skip to content

Commit

Permalink
Fix #49344
Browse files Browse the repository at this point in the history
  • Loading branch information
leoyvens committed Apr 5, 2018
1 parent 56714ac commit 933f9eb
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 3 deletions.
12 changes: 9 additions & 3 deletions src/librustc_typeck/check/wfcheck.rs
Expand Up @@ -423,12 +423,18 @@ fn check_where_clauses<'a, 'gcx, 'fcx, 'tcx>(tcx: TyCtxt<'a, 'gcx, 'gcx>,
_ => t.super_visit_with(self)
}
}

fn visit_region(&mut self, _: ty::Region<'tcx>) -> bool {
true
}
}
let mut param_count = CountParams { params: FxHashSet() };
pred.visit_with(&mut param_count);
let has_region = pred.visit_with(&mut param_count);
let substituted_pred = pred.subst(fcx.tcx, substs);
// Don't check non-defaulted params, dependent defaults or preds with multiple params.
if substituted_pred.references_error() || param_count.params.len() > 1 {
// Don't check non-defaulted params, dependent defaults (including lifetimes)
// or preds with multiple params.
if substituted_pred.references_error() || param_count.params.len() > 1
|| has_region {
continue;
}
// Avoid duplication of predicates that contain no parameters, for example.
Expand Down
4 changes: 4 additions & 0 deletions src/test/run-pass/defaults-well-formedness.rs
Expand Up @@ -27,4 +27,8 @@ trait SelfBound<T: Copy=Self> {}
// Not even for well-formedness.
struct WellFormedProjection<A, T=<A as Iterator>::Item>(A, T);

// Issue #49344, predicates with lifetimes should not be checked.
trait Scope<'a> {}
struct Request<'a, S: Scope<'a> = i32>(S, &'a ());

fn main() {}

0 comments on commit 933f9eb

Please sign in to comment.