backport stable
authorSylvain Thénault <sylvain.thenault@logilab.fr>
Thu, 09 Jun 2011 16:58:46 +0200
changeset 632 7108e8bc1696
parent 630 e54b9379fc7c (current diff)
parent 631 6b28ea39cf54 (diff)
child 633 c45e9d1c0db4
backport stable
nodes.py
--- a/nodes.py	Wed May 25 15:39:36 2011 +0200
+++ b/nodes.py	Thu Jun 09 16:58:46 2011 +0200
@@ -186,9 +186,10 @@
         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>'"""
-        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"""
@@ -475,7 +476,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