From 439f3a228353700b60c7ce6629c535207bb87aed Mon Sep 17 00:00:00 2001 From: Richard Newman Date: Mon, 27 Mar 2017 20:53:08 -0700 Subject: [PATCH] Pre: add some 'am I a pattern?' helper predicates to clause types. --- query/src/lib.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) 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,