Refactor where
predicates, and reserve for attributes support
This commit is contained in:
parent
67a8c64259
commit
161221da9e
44 changed files with 394 additions and 408 deletions
|
@ -428,7 +428,15 @@ impl Default for WhereClause {
|
|||
|
||||
/// A single predicate in a where-clause.
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
pub enum WherePredicate {
|
||||
pub struct WherePredicate {
|
||||
pub kind: WherePredicateKind,
|
||||
pub id: NodeId,
|
||||
pub span: Span,
|
||||
}
|
||||
|
||||
/// Predicate kind in where-clause.
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
pub enum WherePredicateKind {
|
||||
/// A type bound (e.g., `for<'c> Foo: Send + Clone + 'c`).
|
||||
BoundPredicate(WhereBoundPredicate),
|
||||
/// A lifetime predicate (e.g., `'a: 'b + 'c`).
|
||||
|
@ -437,22 +445,11 @@ pub enum WherePredicate {
|
|||
EqPredicate(WhereEqPredicate),
|
||||
}
|
||||
|
||||
impl WherePredicate {
|
||||
pub fn span(&self) -> Span {
|
||||
match self {
|
||||
WherePredicate::BoundPredicate(p) => p.span,
|
||||
WherePredicate::RegionPredicate(p) => p.span,
|
||||
WherePredicate::EqPredicate(p) => p.span,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// A type bound.
|
||||
///
|
||||
/// E.g., `for<'c> Foo: Send + Clone + 'c`.
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
pub struct WhereBoundPredicate {
|
||||
pub span: Span,
|
||||
/// Any generics from a `for` binding.
|
||||
pub bound_generic_params: ThinVec<GenericParam>,
|
||||
/// The type being bounded.
|
||||
|
@ -466,7 +463,6 @@ pub struct WhereBoundPredicate {
|
|||
/// E.g., `'a: 'b + 'c`.
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
pub struct WhereRegionPredicate {
|
||||
pub span: Span,
|
||||
pub lifetime: Lifetime,
|
||||
pub bounds: GenericBounds,
|
||||
}
|
||||
|
@ -476,7 +472,6 @@ pub struct WhereRegionPredicate {
|
|||
/// E.g., `T = int`.
|
||||
#[derive(Clone, Encodable, Decodable, Debug)]
|
||||
pub struct WhereEqPredicate {
|
||||
pub span: Span,
|
||||
pub lhs_ty: P<Ty>,
|
||||
pub rhs_ty: P<Ty>,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue