# HG changeset patch
# User Sylvain Thenault <sylvain.thenault@logilab.fr>
# Date 1223482137 -7200
#      Wed Oct 08 18:08:57 2008 +0200
# Node ID 34c8e9feb357f80774590665e5059cc5f411d2e8
# Parent  53e9cd50975e3d705c9fe26e0666f8e90c8fc187
add traverse_scope argument to neged as well

diff --git a/nodes.py b/nodes.py
--- a/nodes.py
+++ b/nodes.py
@@ -215,8 +215,8 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return self.parent.ored(traverse_scope, _fromnode or self)
     
-    def neged(self, _fromnode=None):
-        return self.parent.neged(_fromnode or self)
+    def neged(self, traverse_scope=False, _fromnode=None):
+        return self.parent.neged(traverse_scope, _fromnode or self)
 
     
 class Or(BinaryNode):
@@ -233,8 +233,8 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return self
     
-    def neged(self, _fromnode=None):
-        return self.parent.neged(_fromnode or self)
+    def neged(self, traverse_scope=False, _fromnode=None):
+        return self.parent.neged(traverse_scope, _fromnode or self)
 
 
 class Not(Node):
@@ -257,7 +257,7 @@
         # XXX consider traverse_scope ?
         return self.parent.ored(traverse_scope, _fromnode or self)
     
-    def neged(self, _fromnode=None, strict=False):
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
         return self
 
 def parent_scope_property(attr):
@@ -320,12 +320,14 @@
             return self.parent.ored(traverse_scope, self)
         return self.parent.ored(traverse_scope, _fromnode)
     
-    def neged(self, _fromnode=None, strict=False):
-        if _fromnode is not None: # stop here
-            return False
-        if strict:
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
+        if not traverse_scope:
+            if _fromnode is not None: # stop here
+                return False
+            return self.parent.neged(self)
+        elif strict:
             return isinstance(self.parent, Not)
-        return self.parent.neged(self)
+        return self.parent.neged(traverse_scope, _fromnode)
 
     
 class Relation(Node):
@@ -389,10 +391,10 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return self.parent.ored(traverse_scope, _fromnode or self)
     
-    def neged(self, _fromnode=None, strict=False):
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
         if strict:
             return isinstance(self.parent, Not)
-        return self.parent.neged(_fromnode or self)
+        return self.parent.neged(traverse_scope, _fromnode or self)
 
     def is_types_restriction(self):
         if self.r_type not in ('is', 'is_instance_of'):
diff --git a/stmts.py b/stmts.py
--- a/stmts.py
+++ b/stmts.py
@@ -163,7 +163,7 @@
     def ored(self, traverse_scope=False, _fromnode=None):
         return None
     
-    def neged(self, _fromnode=None, strict=False):
+    def neged(self, traverse_scope=False, _fromnode=None, strict=False):
         return None