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
-
Constructor Summary
ConstructorDescriptionChainableReverseAbstractInterpreter
(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 void
declareNameInScope
(FlowScope scope, Node node, JSType type) Declares a refined type inscope
for the name represented bynode
.protected FlowScope
firstPreciserScopeKnowingConditionOutcome
(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 JSType
Returns a version of type where null is not present.protected final JSType
Returns a version of type where undefined is not present.protected JSType
getTypeIfRefinable
(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 FlowScope
nextPreciserScopeKnowingConditionOutcome
(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, wait
Methods 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 inscope
for 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.
-