Class DualFlowInfo
java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo
org.aspectj.org.eclipse.jdt.internal.compiler.flow.ConditionalFlowInfo
org.aspectj.org.eclipse.jdt.internal.compiler.flow.DualFlowInfo
A wrapper for two flow infos being co-maintained side-by-side.
All inherited methods that dispatch to the individual flow infos
ConditionalFlowInfo.initsWhenTrue and ConditionalFlowInfo.initsWhenFalse
are re-used as-is. Any operations involving some kind of copying need to be overridden.-
Field Summary
Fields inherited from class ConditionalFlowInfo
initsWhenFalse, initsWhenTrueFields inherited from class FlowInfo
DEAD_END, FREE_TYPEVARIABLE, NON_NULL, NULL, NULL_FLAG_MASK, POTENTIALLY_NON_NULL, POTENTIALLY_NULL, POTENTIALLY_UNKNOWN, REACHABLE, tagBits, UNKNOWN, UNREACHABLE, UNREACHABLE_BY_NULLANALYSIS, UNREACHABLE_OR_DEAD, UNROOTED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncopy()Return a deep copy of the current instance.mergeDefiniteInitsWith(UnconditionalFlowInfo otherInits) mergedWith(UnconditionalFlowInfo otherInits) Return the intersection of this and otherInits, that is one of: the receiver updated in the following way: intersection of definitely assigned variables, union of potentially assigned variables, similar operations for null, or the receiver or otherInits if the other one is non reachable. otherInits is not affected, and is not returned either (no need to protect the result).toString()Return a new flow info that holds the same information as this would after a call to unconditionalInits, but leaving this info unaffected.Return a new flow info that holds the same information as this would after a call tounconditionalInitsfollowed by the erasure of fields specific information, but leaving this flow info unaffected.Return a flow info that merges the possible paths of execution described by this flow info.Return a new flow info that holds the same information as this would after a call tounconditionalInits, but leaving this info unaffected.Methods inherited from class ConditionalFlowInfo
addInitializationsFrom, addNullInfoFrom, addPotentialInitializationsFrom, hasInits, hasNullInfoFor, initsWhenFalse, initsWhenTrue, isDefinitelyAssigned, isDefinitelyAssigned, isDefinitelyNonNull, isDefinitelyNull, isDefinitelyUnknown, isPotentiallyAssigned, isPotentiallyAssigned, isPotentiallyNonNull, isPotentiallyNull, isPotentiallyUnknown, isProtectedNonNull, isProtectedNull, markAsComparedEqualToNonNull, markAsComparedEqualToNull, markAsDefinitelyAssigned, markAsDefinitelyAssigned, markAsDefinitelyNonNull, markAsDefinitelyNull, markAsDefinitelyUnknown, markPotentiallyNonNullBit, markPotentiallyNullBit, markPotentiallyUnknownBit, nullInfoLessUnconditionalCopy, resetAssignmentInfo, resetNullInfo, safeInitsWhenTrue, setReachModeMethods inherited from class FlowInfo
cannotBeDefinitelyNullOrNonNull, cannotBeNull, canOnlyBeNull, conditional, initial, markNullStatus, mergedOptimizedBranches, mergedOptimizedBranchesIfElse, mergeNullStatus, nullStatus, reachMode, tagBitsToNullStatus
-
Constructor Details
-
DualFlowInfo
-
-
Method Details
-
asNegatedCondition
- Overrides:
asNegatedConditionin classConditionalFlowInfo
-
copy
Description copied from class:FlowInfoReturn a deep copy of the current instance.- Overrides:
copyin classConditionalFlowInfo- Returns:
- a deep copy of this flow info
-
mergedWith
Description copied from class:FlowInfoReturn the intersection of this and otherInits, that is one of:- the receiver updated in the following way:
- intersection of definitely assigned variables,
- union of potentially assigned variables,
- similar operations for null,
- or the receiver or otherInits if the other one is non reachable.
- Overrides:
mergedWithin classConditionalFlowInfo- Parameters:
otherInits- the flow info to merge with this- Returns:
- the intersection of this and otherInits.
- the receiver updated in the following way:
-
mergeDefiniteInitsWith
- Overrides:
mergeDefiniteInitsWithin classConditionalFlowInfo
-
unconditionalCopy
Description copied from class:FlowInfoReturn a new flow info that holds the same information as this would after a call to unconditionalInits, but leaving this info unaffected. Moreover, the result can be modified without affecting this.- Overrides:
unconditionalCopyin classConditionalFlowInfo- Returns:
- a new flow info carrying this unconditional flow info
-
unconditionalFieldLessCopy
Description copied from class:FlowInfoReturn a new flow info that holds the same information as this would after a call tounconditionalInitsfollowed by the erasure of fields specific information, but leaving this flow info unaffected.- Overrides:
unconditionalFieldLessCopyin classConditionalFlowInfo- Returns:
- a new flow info carrying the unconditional flow info for local variables
-
unconditionalInits
Description copied from class:FlowInfoReturn a flow info that merges the possible paths of execution described by this flow info. In case of an unconditional flow info, return this. In case of a conditional flow info, merge branches recursively. Caveat: this may be affected, and modifying the result may affect this.- Overrides:
unconditionalInitsin classConditionalFlowInfo- Returns:
- a flow info that merges the possible paths of execution described by this
-
unconditionalInitsWithoutSideEffect
Description copied from class:FlowInfoReturn a new flow info that holds the same information as this would after a call tounconditionalInits, but leaving this info unaffected. Side effects on the result might affect this though (consider it as read only).- Overrides:
unconditionalInitsWithoutSideEffectin classConditionalFlowInfo- Returns:
- a flow info carrying this unconditional flow info
-
toString
- Overrides:
toStringin classConditionalFlowInfo
-