diff --git a/query/src/lib.rs b/query/src/lib.rs index dc3126d8..bc2735a7 100644 --- a/query/src/lib.rs +++ b/query/src/lib.rs @@ -504,12 +504,31 @@ pub enum UnifyVars { Explicit(Vec), } +impl WhereClause { + pub fn is_pattern(&self) -> bool { + match self { + &WhereClause::Pattern(_) => true, + _ => false, + } + } +} + #[derive(Clone, Debug, Eq, PartialEq)] pub enum OrWhereClause { Clause(WhereClause), And(Vec), } +impl OrWhereClause { + pub fn is_pattern_or_patterns(&self) -> bool { + match self { + &OrWhereClause::Clause(WhereClause::Pattern(_)) => true, + &OrWhereClause::And(ref clauses) => clauses.iter().all(|clause| clause.is_pattern()), + _ => false, + } + } +} + #[derive(Clone, Debug, Eq, PartialEq)] pub struct OrJoin { pub unify_vars: UnifyVars,