diff --git a/nodes.py b/nodes.py index 7d368dd9793037689a40195525c766c7316e3cab_bm9kZXMucHk=..6b28ea39cf54e312ddf5213b5db3a52ba61d899f_bm9kZXMucHk= 100644 --- a/nodes.py +++ b/nodes.py @@ -184,5 +184,5 @@ return self.add_restriction(make_relation(lhsvar, rtype, (rhsvar,), VariableRef)) - def add_eid_restriction(self, var, eid): + def add_eid_restriction(self, var, eid, c_type='Int'): """builds a restriction node to express '<var> eid <eid>'""" @@ -188,5 +188,6 @@ """builds a restriction node to express '<var> eid <eid>'""" - return self.add_constant_restriction(var, 'eid', eid, 'Int') + assert c_type in ('Int', 'Substitute'), "Error got c_type=%r in eid restriction" % c_type + return self.add_constant_restriction(var, 'eid', eid, c_type) def add_type_restriction(self, var, etype): """builds a restriction node to express : variable is etype""" @@ -478,7 +479,7 @@ def change_optional(self, value): root = self.root - if root.should_register_op and value != self.optional: + if root is not None and root.should_register_op and value != self.optional: from rql.undo import SetOptionalOperation root.undo_manager.add_operation(SetOptionalOperation(self, self.optional)) self.optional= value