ConstraintCategory::OpaqueType => "opaque type ",
ConstraintCategory::ClosureUpvar(_) => "closure capture ",
ConstraintCategory::Usage => "this usage ",
- ConstraintCategory::Predicate(_, _)
+ ConstraintCategory::Predicate(_)
| ConstraintCategory::Boring
| ConstraintCategory::BoringNoLocation
| ConstraintCategory::Internal => "",
use rustc_data_structures::frozen::Frozen;
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use rustc_data_structures::graph::scc::Sccs;
-use rustc_hir::def_id::DefId;
+use rustc_hir::def_id::{DefId, CRATE_DEF_ID};
use rustc_hir::CRATE_HIR_ID;
use rustc_index::vec::IndexVec;
use rustc_infer::infer::canonical::QueryOutlivesConstraint;
let cause_code = path
.iter()
.find_map(|constraint| {
- if let ConstraintCategory::Predicate(def_id, predicate_span) = constraint.category {
- Some(ObligationCauseCode::BindingObligation(def_id, predicate_span))
+ if let ConstraintCategory::Predicate(predicate_span) = constraint.category {
+ // We currentl'y doesn't store the `DefId` in the `ConstraintCategory`
+ // for perforamnce reasons. The error reporting code used by NLL only
+ // uses the span, so this doesn't cause any problems at the moment.
+ Some(ObligationCauseCode::BindingObligation(
+ CRATE_DEF_ID.to_def_id(),
+ predicate_span,
+ ))
} else {
None
}
| ConstraintCategory::Boring
| ConstraintCategory::BoringNoLocation
| ConstraintCategory::Internal
- | ConstraintCategory::Predicate(_, _) => false,
+ | ConstraintCategory::Predicate(_) => false,
ConstraintCategory::TypeAnnotation
| ConstraintCategory::Return(_)
| ConstraintCategory::Yield => true,
| ConstraintCategory::Boring
| ConstraintCategory::BoringNoLocation
| ConstraintCategory::Internal
- | ConstraintCategory::Predicate(_, _) => false,
+ | ConstraintCategory::Predicate(_) => false,
_ => true,
}
}
pub(super) fn normalize_and_prove_instantiated_predicates(
&mut self,
- def_id: DefId,
+ // Keep this parameter for now, in case we start using
+ // it in `ConstraintCategory` at some point.
+ _def_id: DefId,
instantiated_predicates: ty::InstantiatedPredicates<'tcx>,
locations: Locations,
) {
.zip(instantiated_predicates.spans.into_iter())
{
let predicate = self.normalize(predicate, locations);
- self.prove_predicate(predicate, locations, ConstraintCategory::Predicate(def_id, span));
+ self.prove_predicate(predicate, locations, ConstraintCategory::Predicate(span));
}
}
pub category: ConstraintCategory,
}
+// Make sure this enum doesn't unintentionally grow
+rustc_data_structures::static_assert_size!(ConstraintCategory, 12);
+
/// Outlives-constraints can be categorized to determine whether and why they
/// are interesting (for error reporting). Order of variants indicates sort
/// order of the category, thereby influencing diagnostic output.
/// A constraint from a user-written predicate
/// with the provided span, written on the item
/// with the given `DefId`
- Predicate(DefId, Span),
+ Predicate(Span),
/// A "boring" constraint (caused by the given location) is one that
/// the user probably doesn't want to see described in diagnostics,