Klasse ConditionalFlowInfo

java.lang.Object
org.aspectj.org.eclipse.jdt.internal.compiler.flow.FlowInfo
org.aspectj.org.eclipse.jdt.internal.compiler.flow.ConditionalFlowInfo

public class ConditionalFlowInfo extends FlowInfo
Record conditional initialization status during definite assignment analysis
  • Felddetails

    • initsWhenTrue

      public FlowInfo initsWhenTrue
    • initsWhenFalse

      public FlowInfo initsWhenFalse
  • Methodendetails

    • addInitializationsFrom

      public FlowInfo addInitializationsFrom(FlowInfo otherInits)
      Beschreibung aus Klasse kopiert: FlowInfo
      Add other inits to this flow info, then return this. The operation semantics are to match as closely as possible the application to this flow info of all the operations that resulted into otherInits.
      Angegeben von:
      addInitializationsFrom in Klasse FlowInfo
      Parameter:
      otherInits - other inits to add to this
      Gibt zurück:
      this, modified according to otherInits information
    • addNullInfoFrom

      public FlowInfo addNullInfoFrom(FlowInfo otherInits)
      Beschreibung aus Klasse kopiert: FlowInfo
      Add all null information from otherInits to this flow info and return this. The operation models the effect of an unconditional sequence of this flow info and otherInits.
      Angegeben von:
      addNullInfoFrom in Klasse FlowInfo
    • addPotentialInitializationsFrom

      public FlowInfo addPotentialInitializationsFrom(FlowInfo otherInits)
      Beschreibung aus Klasse kopiert: FlowInfo
      Compose other inits over this flow info, then return this. The operation semantics are to wave into this flow info the consequences of a possible path into the operations that resulted into otherInits. The fact that this path may be left unexecuted under peculiar conditions results into less specific results than addInitializationsFrom.
      Angegeben von:
      addPotentialInitializationsFrom in Klasse FlowInfo
      Parameter:
      otherInits - other inits to compose over this
      Gibt zurück:
      this, modified according to otherInits information
    • asNegatedCondition

      public FlowInfo asNegatedCondition()
      Setzt außer Kraft:
      asNegatedCondition in Klasse FlowInfo
    • copy

      public FlowInfo copy()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return a deep copy of the current instance.
      Angegeben von:
      copy in Klasse FlowInfo
      Gibt zurück:
      a deep copy of this flow info
    • initsWhenFalse

      public FlowInfo initsWhenFalse()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return the flow info that would result from the path associated to the value false for the condition expression that generated this flow info. May be this flow info if it is not an instance of ConditionalFlowInfo. May have a side effect on subparts of this flow info (subtrees get merged).
      Angegeben von:
      initsWhenFalse in Klasse FlowInfo
      Gibt zurück:
      the flow info associated to the false branch of the condition that generated this flow info
    • initsWhenTrue

      public FlowInfo initsWhenTrue()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return the flow info that would result from the path associated to the value true for the condition expression that generated this flow info. May be this flow info if it is not an instance of ConditionalFlowInfo. May have a side effect on subparts of this flow info (subtrees get merged).
      Angegeben von:
      initsWhenTrue in Klasse FlowInfo
      Gibt zurück:
      the flow info associated to the true branch of the condition that generated this flow info
    • isDefinitelyAssigned

      public boolean isDefinitelyAssigned(FieldBinding field)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of definite assignment for a field.
      Angegeben von:
      isDefinitelyAssigned in Klasse FlowInfo
    • isDefinitelyAssigned

      public boolean isDefinitelyAssigned(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of definite assignment for a local.
      Angegeben von:
      isDefinitelyAssigned in Klasse FlowInfo
    • isDefinitelyNonNull

      public boolean isDefinitelyNonNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of definite non-null value for a given local variable.
      Angegeben von:
      isDefinitelyNonNull in Klasse FlowInfo
      Parameter:
      local - the variable to ckeck
      Gibt zurück:
      true iff local is definitely non null for this flow info
    • isDefinitelyNull

      public boolean isDefinitelyNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of definite null value for a given local variable.
      Angegeben von:
      isDefinitelyNull in Klasse FlowInfo
      Parameter:
      local - the variable to ckeck
      Gibt zurück:
      true iff local is definitely null for this flow info
    • isDefinitelyUnknown

      public boolean isDefinitelyUnknown(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of definite unknown value for a given local variable.
      Angegeben von:
      isDefinitelyUnknown in Klasse FlowInfo
      Parameter:
      local - the variable to ckeck
      Gibt zurück:
      true iff local is definitely unknown for this flow info
    • hasNullInfoFor

      public boolean hasNullInfoFor(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check if any null info has been recorded for a given local variable. Here even recording of 'UNKNOWN' is considered as null info.
      Angegeben von:
      hasNullInfoFor in Klasse FlowInfo
    • isPotentiallyAssigned

      public boolean isPotentiallyAssigned(FieldBinding field)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of potential assignment for a field.
      Angegeben von:
      isPotentiallyAssigned in Klasse FlowInfo
    • isPotentiallyAssigned

      public boolean isPotentiallyAssigned(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of potential assignment for a local variable.
      Angegeben von:
      isPotentiallyAssigned in Klasse FlowInfo
    • isPotentiallyNonNull

      public boolean isPotentiallyNonNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of potential null assignment for a local. Return true if there is a reasonable expectation that the variable be non null at this point.
      Angegeben von:
      isPotentiallyNonNull in Klasse FlowInfo
      Parameter:
      local - LocalVariableBinding - the binding for the checked local
      Gibt zurück:
      true if there is a reasonable expectation that local be non null at this point
    • isPotentiallyNull

      public boolean isPotentiallyNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Check status of potential null assignment for a local. Return true if there is a reasonable expectation that the variable be null at this point. This includes the protected null case, so as to augment diagnostics, but does not really check that someone deliberately assigned to null on any specific path
      Angegeben von:
      isPotentiallyNull in Klasse FlowInfo
      Parameter:
      local - LocalVariableBinding - the binding for the checked local
      Gibt zurück:
      true if there is a reasonable expectation that local be null at this point
    • isPotentiallyUnknown

      public boolean isPotentiallyUnknown(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Return true if the given local may have been assigned to an unknown value.
      Angegeben von:
      isPotentiallyUnknown in Klasse FlowInfo
      Parameter:
      local - the local to check
      Gibt zurück:
      true if the given local may have been assigned to an unknown value
    • isProtectedNonNull

      public boolean isProtectedNonNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Return true if the given local is protected by a test against a non null value.
      Angegeben von:
      isProtectedNonNull in Klasse FlowInfo
      Parameter:
      local - the local to check
      Gibt zurück:
      true if the given local is protected by a test against a non null
    • isProtectedNull

      public boolean isProtectedNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Return true if the given local is protected by a test against null.
      Angegeben von:
      isProtectedNull in Klasse FlowInfo
      Parameter:
      local - the local to check
      Gibt zurück:
      true if the given local is protected by a test against null
    • markAsComparedEqualToNonNull

      public void markAsComparedEqualToNonNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record that a local variable got checked to be non null.
      Angegeben von:
      markAsComparedEqualToNonNull in Klasse FlowInfo
      Parameter:
      local - the checked local variable
    • markAsComparedEqualToNull

      public void markAsComparedEqualToNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record that a local variable got checked to be null.
      Angegeben von:
      markAsComparedEqualToNull in Klasse FlowInfo
      Parameter:
      local - the checked local variable
    • markAsDefinitelyAssigned

      public void markAsDefinitelyAssigned(FieldBinding field)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a field got definitely assigned.
      Angegeben von:
      markAsDefinitelyAssigned in Klasse FlowInfo
    • markAsDefinitelyAssigned

      public void markAsDefinitelyAssigned(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local got definitely assigned.
      Angegeben von:
      markAsDefinitelyAssigned in Klasse FlowInfo
    • markAsDefinitelyNonNull

      public void markAsDefinitelyNonNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local got definitely assigned to a non-null value.
      Angegeben von:
      markAsDefinitelyNonNull in Klasse FlowInfo
    • markAsDefinitelyNull

      public void markAsDefinitelyNull(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local got definitely assigned to null.
      Angegeben von:
      markAsDefinitelyNull in Klasse FlowInfo
    • resetNullInfo

      public void resetNullInfo(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Reset all null-information about a given local.
      Angegeben von:
      resetNullInfo in Klasse FlowInfo
    • markPotentiallyNullBit

      public void markPotentiallyNullBit(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local may have got assigned to null (set the bit on existing info).
      Angegeben von:
      markPotentiallyNullBit in Klasse FlowInfo
    • markPotentiallyNonNullBit

      public void markPotentiallyNonNullBit(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local may have got assigned to non-null (set the bit on existing info).
      Angegeben von:
      markPotentiallyNonNullBit in Klasse FlowInfo
    • markAsDefinitelyUnknown

      public void markAsDefinitelyUnknown(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local got definitely assigned to an unknown value.
      Angegeben von:
      markAsDefinitelyUnknown in Klasse FlowInfo
    • markPotentiallyUnknownBit

      public void markPotentiallyUnknownBit(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Record a local may have got assigned to unknown (set the bit on existing info).
      Angegeben von:
      markPotentiallyUnknownBit in Klasse FlowInfo
    • setReachMode

      public FlowInfo setReachMode(int reachMode)
      Beschreibung aus Klasse kopiert: FlowInfo
      Set this flow info reach mode and return this.
      Angegeben von:
      setReachMode in Klasse FlowInfo
      Parameter:
      reachMode - one of REACHABLE, UNREACHABLE_OR_DEAD, UNREACHABLE_BY_NULLANALYSIS or UNREACHABLE
      Gibt zurück:
      this, with the reach mode set to reachMode
    • mergedWith

      public UnconditionalFlowInfo mergedWith(UnconditionalFlowInfo otherInits)
      Beschreibung aus Klasse kopiert: FlowInfo
      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).
      Angegeben von:
      mergedWith in Klasse FlowInfo
      Parameter:
      otherInits - the flow info to merge with this
      Gibt zurück:
      the intersection of this and otherInits.
    • mergeDefiniteInitsWith

      public UnconditionalFlowInfo mergeDefiniteInitsWith(UnconditionalFlowInfo otherInits)
      Angegeben von:
      mergeDefiniteInitsWith in Klasse FlowInfo
    • nullInfoLessUnconditionalCopy

      public UnconditionalFlowInfo nullInfoLessUnconditionalCopy()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return a copy of this unconditional flow info, deprived from its null info. DEAD_END is returned unmodified.
      Angegeben von:
      nullInfoLessUnconditionalCopy in Klasse FlowInfo
      Gibt zurück:
      a copy of this unconditional flow info deprived from its null info
    • toString

      public String toString()
      Setzt außer Kraft:
      toString in Klasse FlowInfo
    • safeInitsWhenTrue

      public FlowInfo safeInitsWhenTrue()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return a flow info that carries the same information as the result of initsWhenTrue, but warrantied to be different from this.
      Caveat: side effects on the result may affect components of this.
      Angegeben von:
      safeInitsWhenTrue in Klasse FlowInfo
      Gibt zurück:
      the result of initsWhenTrue or a copy of it
    • unconditionalCopy

      public UnconditionalFlowInfo unconditionalCopy()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return 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.
      Angegeben von:
      unconditionalCopy in Klasse FlowInfo
      Gibt zurück:
      a new flow info carrying this unconditional flow info
    • unconditionalFieldLessCopy

      public UnconditionalFlowInfo unconditionalFieldLessCopy()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return a new flow info that holds the same information as this would after a call to unconditionalInits followed by the erasure of fields specific information, but leaving this flow info unaffected.
      Angegeben von:
      unconditionalFieldLessCopy in Klasse FlowInfo
      Gibt zurück:
      a new flow info carrying the unconditional flow info for local variables
    • unconditionalInits

      public UnconditionalFlowInfo unconditionalInits()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return 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.
      Angegeben von:
      unconditionalInits in Klasse FlowInfo
      Gibt zurück:
      a flow info that merges the possible paths of execution described by this
    • unconditionalInitsWithoutSideEffect

      public UnconditionalFlowInfo unconditionalInitsWithoutSideEffect()
      Beschreibung aus Klasse kopiert: FlowInfo
      Return a new flow info that holds the same information as this would after a call to unconditionalInits, but leaving this info unaffected. Side effects on the result might affect this though (consider it as read only).
      Angegeben von:
      unconditionalInitsWithoutSideEffect in Klasse FlowInfo
      Gibt zurück:
      a flow info carrying this unconditional flow info
    • resetAssignmentInfo

      public void resetAssignmentInfo(LocalVariableBinding local)
      Beschreibung aus Klasse kopiert: FlowInfo
      Resets the definite and potential initialization info for the given local variable
      Angegeben von:
      resetAssignmentInfo in Klasse FlowInfo
      Parameter:
      local -