parser: add Visitor::current_node and Visitor::enter_visit
[nit.git] / src / parser / xss / nodes.xss
index 22dda4e..60a1ec9 100644 (file)
@@ -105,10 +105,23 @@ end
 
 # Abstract standard visitor
 class Visitor
+       # What the visitor do when a node is visited
+        # Concrete visitors should redefine this method.
+        protected fun visit(e: nullable PNode) is abstract
+
         # Ask the visitor to visit a given node.
         # Usually automatically called by visit_all* methods.
-        # Concrete visitors should redefine this method.
-        fun visit(e: nullable PNode) is abstract
+       # This methos should not be redefined
+        fun enter_visit(e: nullable PNode)
+       do
+               var old = _current_node
+               _current_node = e
+               visit(e)
+               _current_node = old
+       end
+
+       # The current visited node
+       readable var _current_node: nullable PNode = null
 end
 
 $ end template