Package org.jruby.ast.visitor
Class InstanceVariableFinder
- All Implemented Interfaces:
NodeVisitor<Void>
Visitor to search AST nodes for instance variables. Certain nodes are
ignored during walking since they always create a new context with a new
self.
Example usage:
Node node = getNodeFromSomewhere();
InstanceVariableFinder finder = new InstanceVariableFinder();
node.accept(finder);
System.out.println("found: " + finder.getFoundVariables);
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected Void
defaultVisit
(Node iVisited) static Set
<RubySymbol> findVariables
(Node node) Walk a node and its children looking for instance variables using a new InstanceVariableFinder.Return the Set of all instance variables found during walking.visitClassNode
(ClassNode iVisited) ClassNode creates a new scope and self, so do not search for ivars.visitInstAsgnNode
(InstAsgnNode iVisited) Add the name of the instance variable being assigned to our set of instance variable names and continue to walk child nodes.visitInstVarNode
(InstVarNode iVisited) Add the name of the instance variable being retrieved to our set of instance variable names and continue to walk child nodes.visitModuleNode
(ModuleNode iVisited) ModuleNode creates a new scope and self, so do not search for ivars.visitNilRestArgNode
(NilRestArgNode iVisited) visitPostExeNode
(PostExeNode iVisited) PostExeNode can't appear in methods, so do not search for ivars.visitPreExeNode
(PreExeNode iVisited) PreExeNode can't appear in methods, so do not search for ivars.Methods inherited from class org.jruby.ast.visitor.AbstractNodeVisitor
visitAliasNode, visitAndNode, visitArgsCatNode, visitArgsNode, visitArgsPushNode, visitArgumentNode, visitArrayNode, visitArrayPatternNode, visitAttrAssignNode, visitBackRefNode, visitBeginNode, visitBignumNode, visitBlockArgNode, visitBlockNode, visitBlockPassNode, visitBreakNode, visitCallNode, visitCaseNode, visitChildren, visitClassVarAsgnNode, visitClassVarDeclNode, visitClassVarNode, visitColon2Node, visitColon3Node, visitComplexNode, visitConstDeclNode, visitConstNode, visitDAsgnNode, visitDefinedNode, visitDefnNode, visitDefsNode, visitDotNode, visitDRegxNode, visitDStrNode, visitDSymbolNode, visitDVarNode, visitDXStrNode, visitEncodingNode, visitEnsureNode, visitErrorNode, visitEvStrNode, visitFalseNode, visitFCallNode, visitFindPatternNode, visitFirstChild, visitFixnumNode, visitFlipNode, visitFloatNode, visitForNode, visitGlobalAsgnNode, visitGlobalVarNode, visitHashNode, visitHashPatternNode, visitIfNode, visitInNode, visitIterNode, visitKeywordArgNode, visitKeywordRestArgNode, visitLambdaNode, visitListNode, visitLiteralNode, visitLocalAsgnNode, visitLocalVarNode, visitMatch2Node, visitMatch3Node, visitMatchNode, visitMultipleAsgnNode, visitNewlineNode, visitNextNode, visitNilNode, visitNthRefNode, visitOpAsgnAndNode, visitOpAsgnConstDeclNode, visitOpAsgnNode, visitOpAsgnOrNode, visitOpElementAsgnNode, visitOperatorCallNode, visitOptArgNode, visitOrNode, visitOther, visitPatternCaseNode, visitRationalNode, visitRedoNode, visitRegexpNode, visitRequiredKeywordArgumentValueNode, visitRescueBodyNode, visitRescueNode, visitRestArgNode, visitRetryNode, visitReturnNode, visitRootNode, visitSClassNode, visitSelfNode, visitSplatNode, visitStarNode, visitStrNode, visitSuperNode, visitSValueNode, visitSymbolNode, visitTrueNode, visitUndefNode, visitUntilNode, visitVAliasNode, visitVCallNode, visitWhenNode, visitWhileNode, visitXStrNode, visitYieldNode, visitZArrayNode, visitZSuperNode
-
Constructor Details
-
InstanceVariableFinder
public InstanceVariableFinder()
-
-
Method Details
-
defaultVisit
- Specified by:
defaultVisit
in classAbstractNodeVisitor<Void>
-
findVariables
Walk a node and its children looking for instance variables using a new InstanceVariableFinder. Return an array of the variable names found.- Parameters:
node
- the node to walk- Returns:
- an array of instance variable names found
-
getFoundVariables
Return the Set of all instance variables found during walking.- Returns:
- a Set of all instance variable names found
-
visitClassNode
ClassNode creates a new scope and self, so do not search for ivars.- Specified by:
visitClassNode
in interfaceNodeVisitor<Void>
- Overrides:
visitClassNode
in classAbstractNodeVisitor<Void>
- Returns:
- null
-
visitInstAsgnNode
Add the name of the instance variable being assigned to our set of instance variable names and continue to walk child nodes.- Specified by:
visitInstAsgnNode
in interfaceNodeVisitor<Void>
- Overrides:
visitInstAsgnNode
in classAbstractNodeVisitor<Void>
- Returns:
- null
-
visitInstVarNode
Add the name of the instance variable being retrieved to our set of instance variable names and continue to walk child nodes.- Specified by:
visitInstVarNode
in interfaceNodeVisitor<Void>
- Overrides:
visitInstVarNode
in classAbstractNodeVisitor<Void>
- Returns:
- null
-
visitModuleNode
ModuleNode creates a new scope and self, so do not search for ivars.- Specified by:
visitModuleNode
in interfaceNodeVisitor<Void>
- Overrides:
visitModuleNode
in classAbstractNodeVisitor<Void>
- Returns:
- null
-
visitNilRestArgNode
- Specified by:
visitNilRestArgNode
in interfaceNodeVisitor<Void>
- Overrides:
visitNilRestArgNode
in classAbstractNodeVisitor<Void>
-
visitPreExeNode
PreExeNode can't appear in methods, so do not search for ivars.- Specified by:
visitPreExeNode
in interfaceNodeVisitor<Void>
- Overrides:
visitPreExeNode
in classAbstractNodeVisitor<Void>
- Returns:
- null
-
visitPostExeNode
PostExeNode can't appear in methods, so do not search for ivars.- Specified by:
visitPostExeNode
in interfaceNodeVisitor<Void>
- Overrides:
visitPostExeNode
in classAbstractNodeVisitor<Void>
- Returns:
- null
-