X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=compiler%2Frustc_typeck%2Fsrc%2Fcollect.rs;h=f5418c9e01e4928a0a6f1d86f398e4be369bfba3;hb=bfa1904765407e8064beb81c75b4bba039437043;hp=504b5a330f00c0b391f98f748c13360261ba70ad;hpb=012974da7ad3737b296af4a401dfed2e8dcc22df;p=rust.git diff --git a/compiler/rustc_typeck/src/collect.rs b/compiler/rustc_typeck/src/collect.rs index 504b5a330f0..f5418c9e01e 100644 --- a/compiler/rustc_typeck/src/collect.rs +++ b/compiler/rustc_typeck/src/collect.rs @@ -1693,25 +1693,27 @@ pub fn const_evaluatable_predicates_of<'tcx>( ) -> impl Iterator, Span)> { #[derive(Default)] struct ConstCollector<'tcx> { - ct: SmallVec<[(ty::WithOptConstParam, SubstsRef<'tcx>); 4]>, + ct: SmallVec<[(ty::WithOptConstParam, SubstsRef<'tcx>, Span); 4]>, + curr_span: Span, } impl<'tcx> TypeVisitor<'tcx> for ConstCollector<'tcx> { fn visit_const(&mut self, ct: &'tcx Const<'tcx>) -> bool { if let ty::ConstKind::Unevaluated(def, substs, None) = ct.val { - self.ct.push((def, substs)); + self.ct.push((def, substs, self.curr_span)); } false } } let mut collector = ConstCollector::default(); - for (pred, _span) in predicates.predicates.iter() { + for &(pred, span) in predicates.predicates.iter() { + collector.curr_span = span; pred.visit_with(&mut collector); } warn!("const_evaluatable_predicates_of({:?}) = {:?}", def_id, collector.ct); - collector.ct.into_iter().map(move |(def_id, subst)| { - (ty::PredicateAtom::ConstEvaluatable(def_id, subst).to_predicate(tcx), DUMMY_SP) + collector.ct.into_iter().map(move |(def_id, subst, span)| { + (ty::PredicateAtom::ConstEvaluatable(def_id, subst).to_predicate(tcx), span) }) }