1111import src .api .check as chk
1212
1313from src import symbols
14- from src .ast import Ast
1514from src .ast import NodeVisitor
1615from src .api import errmsg
1716
@@ -65,7 +64,7 @@ def _visit(self, node: ToVisit):
6564 meth = getattr (self , f"visit_{ node .obj .token } " , self .generic_visit )
6665 return meth (node .obj )
6766
68- def generic_visit (self , node : Ast ):
67+ def generic_visit (self , node : symbols . SYMBOL ):
6968 for i , child in enumerate (node .children ):
7069 node .children [i ] = (yield self .visit (child ))
7170
@@ -86,6 +85,8 @@ def _visit(self, node: ToVisit):
8685
8786
8887class UnreachableCodeVisitor (UniqueVisitor ):
88+ """ Visitor to optimize unreachable code (and prune it).
89+ """
8990 def visit_FUNCTION (self , node ):
9091 if node .kind == KIND .function and node .body .token == 'BLOCK' and \
9192 (not node .body or node .body [- 1 ].token != 'RETURN' ):
@@ -203,7 +204,7 @@ def visit_ADDRESS(self, node):
203204 )
204205 yield node
205206
206- def visit_BINARY (self , node ):
207+ def visit_BINARY (self , node : symbols . BINARY ):
207208 node = (yield self .generic_visit (node )) # This might convert consts to numbers if possible
208209 # Retry folding
209210 yield symbols .BINARY .make_node (node .operator , node .left , node .right , node .lineno , node .func , node .type_ )
@@ -370,10 +371,10 @@ def _visit_LABEL(self, node):
370371 else :
371372 yield node
372373
373- @staticmethod
374- def generic_visit (node ):
374+ def generic_visit (self , node : symbols .SYMBOL ):
375375 for i in range (len (node .children )):
376376 node .children [i ] = (yield ToVisit (node .children [i ]))
377+
377378 yield node
378379
379380 def _check_if_any_arg_is_an_array_and_needs_lbound_or_ubound (self , params : symbols .PARAMLIST ,
@@ -417,12 +418,12 @@ class VariableVisitor(GenericVisitor):
417418 _parent_variable = None
418419 _visited : Set [symbols .SYMBOL ] = set ()
419420
420- @staticmethod
421- def generic_visit (node : symbols .SYMBOL ): # type: ignore
421+ def generic_visit (self , node : symbols .SYMBOL ):
422422 if node not in VariableVisitor ._visited :
423423 VariableVisitor ._visited .add (node )
424424 for i in range (len (node .children )):
425425 node .children [i ] = yield ToVisit (node .children [i ])
426+
426427 yield node
427428
428429 def has_circular_dependency (self , var_dependency : VarDependency ) -> bool :
0 commit comments