@@ -407,8 +407,9 @@ def visit_IF(self, node):
407407 yield node
408408
409409 def visit_WHILE (self , node ):
410- expr_ = yield node .children [0 ]
411- body_ = yield node .children [1 ]
410+ node = yield self .generic_visit (node )
411+ expr_ = node .children [0 ]
412+ body_ = node .children [1 ]
412413
413414 if self .O_LEVEL >= 1 :
414415 if chk .is_number (expr_ ) and not expr_ .value and not chk .is_block_accessed (body_ ):
@@ -420,10 +421,12 @@ def visit_WHILE(self, node):
420421 yield node
421422
422423 def visit_FOR (self , node ):
423- from_ = yield node .children [1 ]
424- to_ = yield node .children [2 ]
425- step_ = yield node .children [3 ]
426- body_ = yield node .children [4 ]
424+ node = yield self .generic_visit (node )
425+
426+ from_ = node .children [1 ]
427+ to_ = node .children [2 ]
428+ step_ = node .children [3 ]
429+ body_ = node .children [4 ]
427430
428431 if self .O_LEVEL > 0 and chk .is_number (from_ , to_ , step_ ) and not chk .is_block_accessed (body_ ):
429432 if from_ > to_ and step_ > 0 :
@@ -433,8 +436,6 @@ def visit_FOR(self, node):
433436 yield self .NOP
434437 return
435438
436- for i , child in enumerate ((from_ , to_ , step_ , body_ ), start = 1 ):
437- node .children [i ] = child
438439 yield node
439440
440441 # TODO: ignore unused labels
@@ -445,8 +446,8 @@ def _visit_LABEL(self, node):
445446 yield node
446447
447448 def generic_visit (self , node : symbols .SYMBOL ):
448- for i in range ( len ( node .children ) ):
449- node .children [i ] = yield ToVisit (node . children [ i ] )
449+ for i , child in enumerate ( node .children ):
450+ node .children [i ] = yield ToVisit (child )
450451
451452 yield node
452453
0 commit comments