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.
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionChainableReverseAbstractInterpreter(CodingConvention convention, 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 voiddeclareNameInScope(FlowScope scope, Node node, JSType type) Declares a refined type inscopefor the name represented bynode.protected FlowScopefirstPreciserScopeKnowingConditionOutcome(Node condition, FlowScope blindScope, boolean outcome) Calculates the preciser scope starting with the first link.getFirst()Gets the first link of this chain.protected final JSTypeReturns a version of type where null is not present.protected final JSTypeReturns a version of type where undefined is not present.protected 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, boolean 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
-
Field Details
-
convention
-
-
Constructor Details
-
ChainableReverseAbstractInterpreter
public ChainableReverseAbstractInterpreter(CodingConvention convention, JSTypeRegistry typeRegistry) 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, boolean outcome) Calculates the preciser scope starting with the first link. -
nextPreciserScopeKnowingConditionOutcome
protected FlowScope nextPreciserScopeKnowingConditionOutcome(Node condition, FlowScope blindScope, boolean 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). -
getRestrictedWithoutUndefined
Returns a version of type where undefined is not present. -
getRestrictedWithoutNull
Returns a version of type where null is not present.
-