public interface FlowScope extends StaticTypedScope, LatticeElement
Each flow scope represents the types of all variables in the scope at a particular point in the flow analysis.
| Modifier and Type | Method and Description |
|---|---|
StaticTypedScope |
getDeclarationScope()
Returns the underlying TypedScope.
|
FlowScope |
inferQualifiedSlot(Node node,
java.lang.String symbol,
JSType bottomType,
JSType inferredType,
boolean declare)
Returns a flow scope with the type of the given
symbol updated to inferredType. |
FlowScope |
inferSlotType(java.lang.String symbol,
JSType type)
Returns a flow scope with the type of the given
symbol updated to type. |
FlowScope |
withSyntacticScope(StaticTypedScope scope)
Returns a flow scope with the given syntactic scope, which may be required to be a specific
subclass, such as TypedScope.
|
getOwnSlot, getParentScope, getSlot, getTypeOfThis, lookupQualifiedNamegetRootNode, getTopmostScopeOfEventualDeclarationFlowScope withSyntacticScope(StaticTypedScope scope)
@CheckReturnValue FlowScope inferSlotType(java.lang.String symbol, JSType type)
symbol updated to type.java.lang.IllegalArgumentException - If no slot for this symbol exists.@CheckReturnValue FlowScope inferQualifiedSlot(Node node, java.lang.String symbol, JSType bottomType, JSType inferredType, boolean declare)
symbol updated to inferredType.
Updates are not performed in-place.
When traversing the control flow of a function, simple names are declared at the bottom of the flow lattice. But there are far too many qualified names to be able to do this and be performant. So the bottoms of qualified names are declared lazily.
Therefore, when inferring a qualified slot, we need both the "bottom" type of the slot when we enter the scope, and the current type being inferred.
StaticTypedScope getDeclarationScope()
Copyright © 2009-2020 Google. All Rights Reserved.