Packages

c

org.opalj.ai

Computation

sealed abstract class Computation[+V, +E] extends AnyRef

Encapsulates the result of a computation in a domain. In general, the result is either some value V or some exception(s) E. In some cases, however, when the domain cannot precisely determine the result, it may be both: some exceptional value(s) and a value.

In the latter case the abstract interpreter will generally follow all possible paths. A computation that declares to return a result (i.e., the type V is not Nothing) must not return a result and/or throw an exception if the computation did not finish.

Querying Computations

Before accessing a computation's result (result or exceptions) it first has to be checked whether the computation returned normally (returnsNormally) or threw an exception (throwsException). Only if returnsNormally returns true the methods result and hasResult are defined.

V

The result of the computation. Typically a DomainValue; if the computation is executed for its side effect (e.g., as in case of a monitorenter or monitorexit instruction) the type of V maybe Nothing.

E

The exception(s) that maybe thrown by the computation. Typically, a DomainValue which represents a reference value with type java.lang.Throwable or a subtype thereof. If multiple exceptions may be thrown it may also be a set or Iterable of DomainValues (e.g., ExceptionValues).

Source
Computation.scala
Note

The precise requirements on the result of a computation are determined by the Domain object's methods that perform computations.

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Computation
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Abstract Value Members

  1. abstract def exceptions: E

    The exception or exceptions when the computation raised an exception; defined if and only if throwsException returns true.

    The exception or exceptions when the computation raised an exception; defined if and only if throwsException returns true.

    E.g., the invocation of a method may lead to several (checked/unchecked) exceptions.

    Annotations
    @throws(scala.this.throws.<init>$default$1[UnsupportedOperationException])
  2. abstract def hasResult: Boolean

    Returns true if this computation has a result value, false otherwise.

    Returns true if this computation has a result value, false otherwise.

    Note

    A method with return type void may return normally (returnsNormally), but will never have a result. I.e., for such method, hasResult will always be false.

  3. abstract def result: V

    The return value of the computation (if any); defined if and only if hasResult returns true.

    The return value of the computation (if any); defined if and only if hasResult returns true.

    Annotations
    @throws(scala.this.throws.<init>$default$1[UnsupportedOperationException])
  4. abstract def returnsNormally: Boolean

    Returns true if this computation may have returned normally without throwing an exception.

    Returns true if this computation may have returned normally without throwing an exception. Given that some computations are performed for their side effect only, the computation may not have a result.

  5. abstract def throwsException: Boolean

    Returns true if this computation may have raised an exception.

  6. abstract def updateExceptions[X](exceptions: X): Computation[V, X]

    Updates the exception associated with the represented computation.

    Updates the exception associated with the represented computation.

    This method is only supported if the computation had an associated exception!

    Annotations
    @throws(scala.this.throws.<init>$default$1[UnsupportedOperationException])
  7. abstract def updateResult[X](result: X): Computation[X, E]

    Updates the result associated with the represented computation.

    Updates the result associated with the represented computation.

    This method is only supported if the computation had a result!

    Annotations
    @throws(scala.this.throws.<init>$default$1[UnsupportedOperationException])

Concrete Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  5. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
  6. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  7. def equals(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef → Any
  8. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  9. def hashCode(): Int
    Definition Classes
    AnyRef → Any
    Annotations
    @native() @IntrinsicCandidate()
  10. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  11. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  12. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  13. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @IntrinsicCandidate()
  14. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  15. def toString(): String
    Definition Classes
    AnyRef → Any
  16. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  17. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  18. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

Inherited from AnyRef

Inherited from Any

Ungrouped