mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 14:21:44 +00:00
Remove WhereClause::Error
Chalk doesn't have it, and judging from the removed code, it wasn't useful anyway.
This commit is contained in:
parent
7a5fb37cf1
commit
8e7e405f6a
7 changed files with 8 additions and 42 deletions
|
@ -731,16 +731,6 @@ fn write_bounds_like_dyn_trait(
|
||||||
}
|
}
|
||||||
ty.hir_fmt(f)?;
|
ty.hir_fmt(f)?;
|
||||||
}
|
}
|
||||||
WhereClause::Error => {
|
|
||||||
if angle_open {
|
|
||||||
// impl Trait<X, {error}>
|
|
||||||
write!(f, ", ")?;
|
|
||||||
} else if !first {
|
|
||||||
// impl Trait + {error}
|
|
||||||
write!(f, " + ")?;
|
|
||||||
}
|
|
||||||
p.hir_fmt(f)?;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
first = false;
|
first = false;
|
||||||
}
|
}
|
||||||
|
@ -796,7 +786,7 @@ impl HirDisplay for WhereClause {
|
||||||
)?;
|
)?;
|
||||||
ty.hir_fmt(f)?;
|
ty.hir_fmt(f)?;
|
||||||
}
|
}
|
||||||
WhereClause::AliasEq(_) | WhereClause::Error => write!(f, "{{error}}")?,
|
WhereClause::AliasEq(_) => write!(f, "{{error}}")?,
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
|
@ -569,16 +569,9 @@ pub enum WhereClause {
|
||||||
Implemented(TraitRef),
|
Implemented(TraitRef),
|
||||||
/// An associated type bindings like in `Iterator<Item = T>`.
|
/// An associated type bindings like in `Iterator<Item = T>`.
|
||||||
AliasEq(AliasEq),
|
AliasEq(AliasEq),
|
||||||
/// We couldn't resolve the trait reference. (If some type parameters can't
|
|
||||||
/// be resolved, they will just be Unknown).
|
|
||||||
Error,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WhereClause {
|
impl WhereClause {
|
||||||
pub fn is_error(&self) -> bool {
|
|
||||||
matches!(self, WhereClause::Error)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn is_implemented(&self) -> bool {
|
pub fn is_implemented(&self) -> bool {
|
||||||
matches!(self, WhereClause::Implemented(_))
|
matches!(self, WhereClause::Implemented(_))
|
||||||
}
|
}
|
||||||
|
@ -589,7 +582,7 @@ impl WhereClause {
|
||||||
WhereClause::AliasEq(AliasEq { alias: AliasTy::Projection(proj), .. }) => {
|
WhereClause::AliasEq(AliasEq { alias: AliasTy::Projection(proj), .. }) => {
|
||||||
Some(proj.trait_ref(db))
|
Some(proj.trait_ref(db))
|
||||||
}
|
}
|
||||||
WhereClause::AliasEq(_) | WhereClause::Error => None,
|
WhereClause::AliasEq(_) => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -599,7 +592,6 @@ impl TypeWalk for WhereClause {
|
||||||
match self {
|
match self {
|
||||||
WhereClause::Implemented(trait_ref) => trait_ref.walk(f),
|
WhereClause::Implemented(trait_ref) => trait_ref.walk(f),
|
||||||
WhereClause::AliasEq(alias_eq) => alias_eq.walk(f),
|
WhereClause::AliasEq(alias_eq) => alias_eq.walk(f),
|
||||||
WhereClause::Error => {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -611,7 +603,6 @@ impl TypeWalk for WhereClause {
|
||||||
match self {
|
match self {
|
||||||
WhereClause::Implemented(trait_ref) => trait_ref.walk_mut_binders(f, binders),
|
WhereClause::Implemented(trait_ref) => trait_ref.walk_mut_binders(f, binders),
|
||||||
WhereClause::AliasEq(alias_eq) => alias_eq.walk_mut_binders(f, binders),
|
WhereClause::AliasEq(alias_eq) => alias_eq.walk_mut_binders(f, binders),
|
||||||
WhereClause::Error => {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -703,10 +703,10 @@ impl<'a> TyLoweringContext<'a> {
|
||||||
let trait_ref = match bound {
|
let trait_ref = match bound {
|
||||||
TypeBound::Path(path) => {
|
TypeBound::Path(path) => {
|
||||||
bindings = self.lower_trait_ref_from_path(path, Some(self_ty));
|
bindings = self.lower_trait_ref_from_path(path, Some(self_ty));
|
||||||
Some(bindings.clone().map_or(WhereClause::Error, WhereClause::Implemented))
|
bindings.clone().map(WhereClause::Implemented)
|
||||||
}
|
}
|
||||||
TypeBound::Lifetime(_) => None,
|
TypeBound::Lifetime(_) => None,
|
||||||
TypeBound::Error => Some(WhereClause::Error),
|
TypeBound::Error => None,
|
||||||
};
|
};
|
||||||
trait_ref.into_iter().chain(
|
trait_ref.into_iter().chain(
|
||||||
bindings
|
bindings
|
||||||
|
@ -919,9 +919,6 @@ pub(crate) fn trait_environment_query(
|
||||||
let mut clauses = Vec::new();
|
let mut clauses = Vec::new();
|
||||||
for pred in resolver.where_predicates_in_scope() {
|
for pred in resolver.where_predicates_in_scope() {
|
||||||
for pred in ctx.lower_where_predicate(pred) {
|
for pred in ctx.lower_where_predicate(pred) {
|
||||||
if pred.is_error() {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if let WhereClause::Implemented(tr) = &pred {
|
if let WhereClause::Implemented(tr) = &pred {
|
||||||
traits_in_scope.push((tr.self_type_parameter().clone(), tr.hir_trait_id()));
|
traits_in_scope.push((tr.self_type_parameter().clone(), tr.hir_trait_id()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -1412,8 +1412,8 @@ fn weird_bounds() {
|
||||||
50..51 'b': impl
|
50..51 'b': impl
|
||||||
69..70 'c': impl Trait
|
69..70 'c': impl Trait
|
||||||
86..87 'd': impl
|
86..87 'd': impl
|
||||||
107..108 'e': impl {error}
|
107..108 'e': impl
|
||||||
123..124 'f': impl Trait + {error}
|
123..124 'f': impl Trait
|
||||||
147..149 '{}': ()
|
147..149 '{}': ()
|
||||||
"#]],
|
"#]],
|
||||||
);
|
);
|
||||||
|
|
|
@ -100,7 +100,6 @@ impl Obligation {
|
||||||
match predicate {
|
match predicate {
|
||||||
WhereClause::Implemented(trait_ref) => Some(Obligation::Trait(trait_ref)),
|
WhereClause::Implemented(trait_ref) => Some(Obligation::Trait(trait_ref)),
|
||||||
WhereClause::AliasEq(alias_eq) => Some(Obligation::AliasEq(alias_eq)),
|
WhereClause::AliasEq(alias_eq) => Some(Obligation::AliasEq(alias_eq)),
|
||||||
WhereClause::Error => None,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,13 +187,7 @@ impl<'a> chalk_solve::RustIrDatabase<Interner> for ChalkContext<'a> {
|
||||||
let data = &datas.value.impl_traits[idx as usize];
|
let data = &datas.value.impl_traits[idx as usize];
|
||||||
let bound = OpaqueTyDatumBound {
|
let bound = OpaqueTyDatumBound {
|
||||||
bounds: make_binders(
|
bounds: make_binders(
|
||||||
data.bounds
|
data.bounds.value.iter().cloned().map(|b| b.to_chalk(self.db)).collect(),
|
||||||
.value
|
|
||||||
.iter()
|
|
||||||
.cloned()
|
|
||||||
.filter(|b| !b.is_error())
|
|
||||||
.map(|b| b.to_chalk(self.db))
|
|
||||||
.collect(),
|
|
||||||
1,
|
1,
|
||||||
),
|
),
|
||||||
where_clauses: make_binders(vec![], 0),
|
where_clauses: make_binders(vec![], 0),
|
||||||
|
|
|
@ -98,7 +98,7 @@ impl ToChalk for Ty {
|
||||||
TyKind::Dyn(predicates) => {
|
TyKind::Dyn(predicates) => {
|
||||||
let where_clauses = chalk_ir::QuantifiedWhereClauses::from_iter(
|
let where_clauses = chalk_ir::QuantifiedWhereClauses::from_iter(
|
||||||
&Interner,
|
&Interner,
|
||||||
predicates.iter().filter(|p| !p.is_error()).cloned().map(|p| p.to_chalk(db)),
|
predicates.iter().cloned().map(|p| p.to_chalk(db)),
|
||||||
);
|
);
|
||||||
let bounded_ty = chalk_ir::DynTy {
|
let bounded_ty = chalk_ir::DynTy {
|
||||||
bounds: make_binders(where_clauses, 1),
|
bounds: make_binders(where_clauses, 1),
|
||||||
|
@ -318,7 +318,6 @@ impl ToChalk for WhereClause {
|
||||||
chalk_ir::WhereClause::AliasEq(alias_eq.to_chalk(db).shifted_in(&Interner)),
|
chalk_ir::WhereClause::AliasEq(alias_eq.to_chalk(db).shifted_in(&Interner)),
|
||||||
0,
|
0,
|
||||||
),
|
),
|
||||||
WhereClause::Error => panic!("tried passing GenericPredicate::Error to Chalk"),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -521,10 +520,6 @@ pub(super) fn convert_where_clauses(
|
||||||
let generic_predicates = db.generic_predicates(def);
|
let generic_predicates = db.generic_predicates(def);
|
||||||
let mut result = Vec::with_capacity(generic_predicates.len());
|
let mut result = Vec::with_capacity(generic_predicates.len());
|
||||||
for pred in generic_predicates.iter() {
|
for pred in generic_predicates.iter() {
|
||||||
if pred.value.is_error() {
|
|
||||||
// skip errored predicates completely
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
result.push(pred.clone().subst(substs).to_chalk(db));
|
result.push(pred.clone().subst(substs).to_chalk(db));
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue