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);
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final Set<RubySymbol>The set of instance variables found during walking. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected VoiddefaultVisit(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.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, 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, visitEvStrNode, visitFalseNode, visitFCallNode, visitFirstChild, visitFixnumNode, visitFlipNode, visitFloatNode, visitForNode, visitGlobalAsgnNode, visitGlobalVarNode, visitHashNode, visitIfNode, 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, 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
-
Field Details
-
foundVariables
The set of instance variables found during walking.
-
-
Constructor Details
-
InstanceVariableFinder
public InstanceVariableFinder()
-
-
Method Details
-
defaultVisit
- Specified by:
defaultVisitin 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:
visitClassNodein interfaceNodeVisitor<Void>- Overrides:
visitClassNodein 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:
visitInstAsgnNodein interfaceNodeVisitor<Void>- Overrides:
visitInstAsgnNodein 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:
visitInstVarNodein interfaceNodeVisitor<Void>- Overrides:
visitInstVarNodein classAbstractNodeVisitor<Void>- Returns:
- null
-
visitModuleNode
ModuleNode creates a new scope and self, so do not search for ivars.- Specified by:
visitModuleNodein interfaceNodeVisitor<Void>- Overrides:
visitModuleNodein classAbstractNodeVisitor<Void>- Returns:
- null
-
visitPreExeNode
PreExeNode can't appear in methods, so do not search for ivars.- Specified by:
visitPreExeNodein interfaceNodeVisitor<Void>- Overrides:
visitPreExeNodein classAbstractNodeVisitor<Void>- Returns:
- null
-
visitPostExeNode
PostExeNode can't appear in methods, so do not search for ivars.- Specified by:
visitPostExeNodein interfaceNodeVisitor<Void>- Overrides:
visitPostExeNodein classAbstractNodeVisitor<Void>- Returns:
- null
-