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 amonitorenter
ormonitorexit
instruction) the type ofV
maybeNothing
.- E
The exception(s) that maybe thrown by the computation. Typically, a
DomainValue
which represents a reference value with typejava.lang.Throwable
or a subtype thereof. If multiple exceptions may be thrown it may also be a set orIterable
ofDomainValue
s (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.
- Alphabetic
- By Inheritance
- Computation
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Abstract Value Members
- abstract def exceptions: E
The exception or exceptions when the computation raised an exception; defined if and only if
throwsException
returnstrue
.The exception or exceptions when the computation raised an exception; defined if and only if
throwsException
returnstrue
.E.g., the invocation of a method may lead to several (checked/unchecked) exceptions.
- Annotations
- @throws(scala.this.throws.<init>$default$1[UnsupportedOperationException])
- 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.
- 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])
- 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. - abstract def throwsException: Boolean
Returns
true
if this computation may have raised an exception. - 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])
- 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
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native() @IntrinsicCandidate()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @IntrinsicCandidate()
- final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @IntrinsicCandidate()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
Deprecated Value Members
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable]) @Deprecated
- Deprecated