diff options
Diffstat (limited to 'src/engine/SCons/Node')
| -rw-r--r-- | src/engine/SCons/Node/NodeTests.py | 5 | ||||
| -rw-r--r-- | src/engine/SCons/Node/__init__.py | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/engine/SCons/Node/NodeTests.py b/src/engine/SCons/Node/NodeTests.py index 50de2b0..ad9eb66 100644 --- a/src/engine/SCons/Node/NodeTests.py +++ b/src/engine/SCons/Node/NodeTests.py @@ -1314,8 +1314,11 @@ class NodeTestCase(unittest.TestCase): n1 = SCons.Node.Node() n2 = SCons.Node.Node() assert n1.waiting_parents == {}, n1.waiting_parents - n1.add_to_waiting_parents(n2) + r = n1.add_to_waiting_parents(n2) + assert r == 1, r assert n1.waiting_parents == {n2:1}, n1.waiting_parents + r = n1.add_to_waiting_parents(n2) + assert r == 0, r def test_call_for_all_waiting_parents(self): """Test the call_for_all_waiting_parents() method""" diff --git a/src/engine/SCons/Node/__init__.py b/src/engine/SCons/Node/__init__.py index fa682a2..6644d7a 100644 --- a/src/engine/SCons/Node/__init__.py +++ b/src/engine/SCons/Node/__init__.py @@ -336,7 +336,20 @@ class Node: self.waiting_s_e[node] = 1 def add_to_waiting_parents(self, node): - self.waiting_parents[node] = 1 + """ + Returns the number of nodes added to our waiting parents list: + 1 if we add a unique waiting parent, 0 if not. (Note that the + returned values are intended to be used to increment a reference + count, so don't think you can "clean up" this function by using + True and False instead...) + """ + wp = self.waiting_parents + if wp.has_key(node): + result = 0 + else: + result = 1 + wp[node] = 1 + return result def call_for_all_waiting_parents(self, func): func(self) |
