Class ChainableReverseAbstractInterpreter
java.lang.Object
com.google.javascript.jscomp.type.ChainableReverseAbstractInterpreter
- All Implemented Interfaces:
ReverseAbstractInterpreter
- Direct Known Subclasses:
ClosureReverseAbstractInterpreter,SemanticReverseAbstractInterpreter
public abstract class ChainableReverseAbstractInterpreter
extends Object
implements ReverseAbstractInterpreter
Chainable reverse abstract interpreter providing basic functionality.
-
Constructor Summary
ConstructorsConstructorDescriptionChainableReverseAbstractInterpreter(JSTypeRegistry typeRegistry) Constructs an interpreter, which is the only link in a chain. -
Method Summary
Modifier and TypeMethodDescriptionappend(ChainableReverseAbstractInterpreter lastLink) Appends a link tothis, returning the updated last link.protected FlowScopedeclareNameInScope(FlowScope scope, Node node, JSType type) Declares a refined type inscopefor the name represented bynode.protected FlowScopefirstPreciserScopeKnowingConditionOutcome(Node condition, FlowScope blindScope, Outcome outcome) Calculates the preciser scope starting with the first link.getFirst()Gets the first link of this chain.protected @Nullable JSTypegetTypeIfRefinable(Node node, FlowScope scope) Returns the type of a node in the given scope if the node corresponds to a name whose type is capable of being refined.protected FlowScopenextPreciserScopeKnowingConditionOutcome(Node condition, FlowScope blindScope, Outcome outcome) Delegates the calculation of the preciser scope to the next link.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.google.javascript.jscomp.type.ReverseAbstractInterpreter
getPreciserScopeKnowingConditionOutcome
-
Constructor Details
-
ChainableReverseAbstractInterpreter
Constructs an interpreter, which is the only link in a chain. Interpreters can be appended usingappend(com.google.javascript.jscomp.type.ChainableReverseAbstractInterpreter).
-
-
Method Details
-
append
Appends a link tothis, returning the updated last link.The pattern
new X().append(new Y())...append(new Z())forms a chain starting with X, then Y, then ... Z.- Parameters:
lastLink- a chainable interpreter, with no next link- Returns:
- the updated last link
-
getFirst
Gets the first link of this chain. -
firstPreciserScopeKnowingConditionOutcome
protected FlowScope firstPreciserScopeKnowingConditionOutcome(Node condition, FlowScope blindScope, Outcome outcome) Calculates the preciser scope starting with the first link. -
nextPreciserScopeKnowingConditionOutcome
protected FlowScope nextPreciserScopeKnowingConditionOutcome(Node condition, FlowScope blindScope, Outcome outcome) Delegates the calculation of the preciser scope to the next link. If there is no next link, returns the blind scope. -
getTypeIfRefinable
Returns the type of a node in the given scope if the node corresponds to a name whose type is capable of being refined.- Returns:
- The current type of the node if it can be refined, null otherwise.
-
declareNameInScope
Declares a refined type inscopefor the name represented bynode. It must be possible to refine the type of the given node in the given scope, as determined bygetTypeIfRefinable(com.google.javascript.rhino.Node, com.google.javascript.jscomp.type.FlowScope). Returns an updated flow scope, which may be different from the passed-in scope if any changes occur.
-