diff --git a/nodes.py b/nodes.py index 016e237462c1d0e39afdc1e1de0eb49a03265bfa_bm9kZXMucHk=..7d3056ce37d78decc40c1b236ed6d9708e320f4e_bm9kZXMucHk= 100644 --- a/nodes.py +++ b/nodes.py @@ -287,10 +287,10 @@ def __repr__(self): return '%s AND %s' % (repr(self.children[0]), repr(self.children[1])) - def ored_rel(self, _fromnode=None): - return self.parent.ored_rel(_fromnode or self) - def neged_rel(self, _fromnode=None): - return self.parent.neged_rel(_fromnode or self) + def ored(self, _fromnode=None): + return self.parent.ored(_fromnode or self) + def neged(self, _fromnode=None): + return self.parent.neged(_fromnode or self) class Or(BinaryNode): @@ -304,5 +304,5 @@ def __repr__(self): return '%s OR %s' % (repr(self.children[0]), repr(self.children[1])) - def ored_rel(self, _fromnode=None): + def ored(self, _fromnode=None): return self @@ -308,6 +308,6 @@ return self - def neged_rel(self, _fromnode=None): - return self.parent.neged_rel(_fromnode or self) + def neged(self, _fromnode=None): + return self.parent.neged(_fromnode or self) class Not(Node): @@ -322,9 +322,9 @@ def __repr__(self, encoding=None, kwargs=None): return 'NOT (%s)' % repr(self.children[0]) - def ored_rel(self, _fromnode=None): - return self.parent.ored_rel(_fromnode or self) - def neged_rel(self, _fromnode=None): + def ored(self, _fromnode=None): + return self.parent.ored(_fromnode or self) + def neged(self, _fromnode=None): return self @@ -371,6 +371,6 @@ def scope(self): return self - def ored_rel(self, _fromnode=None): - if _fromnode: # stop here + def ored(self, _fromnode=None): + if _fromnode is not None: # stop here return False @@ -376,5 +376,5 @@ return False - return self.parent.ored_rel(_fromnode or self) - def neged_rel(self, _fromnode=None): - if _fromnode: # stop here + return self.parent.ored(self) + def neged(self, _fromnode=None, strict=False): + if _fromnode is not None: # stop here return False @@ -380,5 +380,7 @@ return False - return self.parent.neged_rel(_fromnode or self) + if strict: + return isinstance(self.parent, Not) + return self.parent.neged(self) class Relation(Node): @@ -439,8 +441,8 @@ """return the parent relation where self occurs or None""" return self - def ored_rel(self, _fromnode=None): - return self.parent.ored_rel(_fromnode or self) - def neged_rel(self, _fromnode=None, strict=False): + def ored(self, _fromnode=None): + return self.parent.ored(_fromnode or self) + def neged(self, _fromnode=None, strict=False): if strict: return isinstance(self.parent, Not) @@ -445,6 +447,6 @@ if strict: return isinstance(self.parent, Not) - return self.parent.neged_rel(_fromnode or self) + return self.parent.neged(_fromnode or self) def is_types_restriction(self): if self.r_type != 'is': diff --git a/stcheck.py b/stcheck.py index 016e237462c1d0e39afdc1e1de0eb49a03265bfa_c3RjaGVjay5weQ==..7d3056ce37d78decc40c1b236ed6d9708e320f4e_c3RjaGVjay5weQ== 100644 --- a/stcheck.py +++ b/stcheck.py @@ -193,7 +193,7 @@ pass def visit_relation(self, relation, errors): - if relation.optional and relation.neged_rel(): + if relation.optional and relation.neged(): errors.append("can use optional relation under NOT (%s)" % relation.as_string()) # special case "X identity Y" diff --git a/stmts.py b/stmts.py index 016e237462c1d0e39afdc1e1de0eb49a03265bfa_c3RtdHMucHk=..7d3056ce37d78decc40c1b236ed6d9708e320f4e_c3RtdHMucHk= 100644 --- a/stmts.py +++ b/stmts.py @@ -131,5 +131,5 @@ def scope(self): return self - def ored_rel(self, _fromnode=None): + def ored(self, _fromnode=None): return None @@ -135,5 +135,5 @@ return None - def neged_rel(self, _fromnode=None): + def neged(self, _fromnode=None, strict=False): return None def check_references(self):