diff --git a/astnodes.py b/astnodes.py index 89d3a85449f86b3bd77986661e0a1a37e80b6712..df48c6d4a4e30266506d7f6936f460ce4b14f22f 100644 --- a/astnodes.py +++ b/astnodes.py @@ -268,8 +268,12 @@ class Block(Node): # move all assignment (definitions to the top) if isinstance(newNode, SympyAssignment) and newNode.isDeclaration: - while idx > 0 and not (isinstance(self._nodes[idx-1], SympyAssignment) and self._nodes[idx-1].isDeclaration): - idx -= 1 + while idx > 0: + pn = self._nodes[idx - 1] + if isinstance(pn, LoopOverCoordinate) or isinstance(pn, Conditional): + idx -= 1 + else: + break self._nodes.insert(idx, newNode) def append(self, node):