Top Description Fields Constructors Methods
org.jruby.ast.visitor

public Class InstanceVariableFinder

extends AbstractNodeVisitor<Void>
Class Inheritance
Imports
java.util.HashSet, .List, .Set, org.jruby.RubySymbol, org.jruby.ast.ClassNode, .InstAsgnNode, .InstVarNode, .ModuleNode, .NilRestArgNode, .Node, .PostExeNode, .PreExeNode

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

Modifier and TypeField and Description
private final Set<RubySymbol>
foundVariables

The set of instance variables found during walking.

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
protected Void
public static Set<RubySymbol>

Returns:

an array of instance variable names found
findVariables
(Node
the node to walk
node
)

Walk a node and its children looking for instance variables using a new InstanceVariableFinder.

public Set<RubySymbol>

Returns:

a Set of all instance variable names found
getFoundVariables
()

Return the Set of all instance variables found during walking.

public Void

Returns:

null
visitClassNode
(ClassNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitClassNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitClassNode.

ClassNode creates a new scope and self, so do not search for ivars.

public Void

Returns:

null
visitInstAsgnNode
(InstAsgnNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitInstAsgnNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitInstAsgnNode.

Add the name of the instance variable being assigned to our set of instance variable names and continue to walk child nodes.

public Void

Returns:

null
visitInstVarNode
(InstVarNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitInstVarNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitInstVarNode.

Add the name of the instance variable being retrieved to our set of instance variable names and continue to walk child nodes.

public Void

Returns:

null
visitModuleNode
(ModuleNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitModuleNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitModuleNode.

ModuleNode creates a new scope and self, so do not search for ivars.

public Void
public Void

Returns:

null
visitPostExeNode
(PostExeNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitPostExeNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitPostExeNode.

PostExeNode can't appear in methods, so do not search for ivars.

public Void

Returns:

null
visitPreExeNode
(PreExeNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitPreExeNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitPreExeNode.

PreExeNode can't appear in methods, so do not search for ivars.

Inherited from org.jruby.ast.visitor.AbstractNodeVisitor:
visitAliasNodevisitAndNodevisitArgsCatNodevisitArgsNodevisitArgsPushNodevisitArgumentNodevisitArrayNodevisitArrayPatternNodevisitAttrAssignNodevisitBackRefNodevisitBeginNodevisitBignumNodevisitBlockArgNodevisitBlockNodevisitBlockPassNodevisitBreakNodevisitCallNodevisitCaseNodevisitChildrenvisitClassVarAsgnNodevisitClassVarDeclNodevisitClassVarNodevisitColon2NodevisitColon3NodevisitComplexNodevisitConstDeclNodevisitConstNodevisitDAsgnNodevisitDefinedNodevisitDefnNodevisitDefsNodevisitDotNodevisitDRegxNodevisitDStrNodevisitDSymbolNodevisitDVarNodevisitDXStrNodevisitEncodingNodevisitEnsureNodevisitErrorNodevisitEvStrNodevisitFalseNodevisitFCallNodevisitFindPatternNodevisitFirstChildvisitFixnumNodevisitFlipNodevisitFloatNodevisitForNodevisitGlobalAsgnNodevisitGlobalVarNodevisitHashNodevisitHashPatternNodevisitIfNodevisitInNodevisitIterNodevisitKeywordArgNodevisitKeywordRestArgNodevisitLambdaNodevisitListNodevisitLiteralNodevisitLocalAsgnNodevisitLocalVarNodevisitMatch2NodevisitMatch3NodevisitMatchNodevisitMultipleAsgnNodevisitNewlineNodevisitNextNodevisitNilNodevisitNthRefNodevisitOpAsgnAndNodevisitOpAsgnConstDeclNodevisitOpAsgnNodevisitOpAsgnOrNodevisitOpElementAsgnNodevisitOperatorCallNodevisitOptArgNodevisitOrNodevisitOthervisitPatternCaseNodevisitRationalNodevisitRedoNodevisitRegexpNodevisitRequiredKeywordArgumentValueNodevisitRescueBodyNodevisitRescueNodevisitRestArgNodevisitRetryNodevisitReturnNodevisitRootNodevisitSClassNodevisitSelfNodevisitSplatNodevisitStarNodevisitStrNodevisitSuperNodevisitSValueNodevisitSymbolNodevisitTrueNodevisitUndefNodevisitUntilNodevisitVAliasNodevisitVCallNodevisitWhenNodevisitWhileNodevisitXStrNodevisitYieldNodevisitZArrayNodevisitZSuperNode

Field Detail

foundVariablesback to summary
private final Set<RubySymbol> foundVariables

The set of instance variables found during walking.

Constructor Detail

InstanceVariableFinderback to summary
public InstanceVariableFinder()

Method Detail

defaultVisitback to summary
protected Void defaultVisit(Node iVisited)

Implements abstract org.jruby.ast.visitor.AbstractNodeVisitor.defaultVisit.

Annotations
@Override
findVariablesback to summary
public static Set<RubySymbol> findVariables(Node node)

Walk a node and its children looking for instance variables using a new InstanceVariableFinder. Return an array of the variable names found.

Parameters
node:Node

the node to walk

Returns:Set<RubySymbol>

an array of instance variable names found

getFoundVariablesback to summary
public Set<RubySymbol> getFoundVariables()

Return the Set of all instance variables found during walking.

Returns:Set<RubySymbol>

a Set of all instance variable names found

visitClassNodeback to summary
public Void visitClassNode(ClassNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitClassNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitClassNode.

ClassNode creates a new scope and self, so do not search for ivars.

Returns:Void

null

Annotations
@Override
visitInstAsgnNodeback to summary
public Void visitInstAsgnNode(InstAsgnNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitInstAsgnNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitInstAsgnNode.

Add the name of the instance variable being assigned to our set of instance variable names and continue to walk child nodes.

Returns:Void

null

Annotations
@Override
visitInstVarNodeback to summary
public Void visitInstVarNode(InstVarNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitInstVarNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitInstVarNode.

Add the name of the instance variable being retrieved to our set of instance variable names and continue to walk child nodes.

Returns:Void

null

Annotations
@Override
visitModuleNodeback to summary
public Void visitModuleNode(ModuleNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitModuleNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitModuleNode.

ModuleNode creates a new scope and self, so do not search for ivars.

Returns:Void

null

Annotations
@Override
visitNilRestArgNodeback to summary
public Void visitNilRestArgNode(NilRestArgNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitNilRestArgNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitNilRestArgNode.

Annotations
@Override
visitPostExeNodeback to summary
public Void visitPostExeNode(PostExeNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitPostExeNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitPostExeNode.

PostExeNode can't appear in methods, so do not search for ivars.

Returns:Void

null

Annotations
@Override
visitPreExeNodeback to summary
public Void visitPreExeNode(PreExeNode iVisited)

Overrides org.jruby.ast.visitor.AbstractNodeVisitor.visitPreExeNode.

Implements org.jruby.ast.visitor.NodeVisitor.visitPreExeNode.

PreExeNode can't appear in methods, so do not search for ivars.

Returns:Void

null

Annotations
@Override