scala.caps

package scala.caps

Members list

Keywords
  • no keywords
  • final
  • sealed

Type members

Experimental classlikes

trait CapSet

Carrier trait for capture set type parameters

Carrier trait for capture set type parameters

Attributes

Experimental
true
Source
package.scala
Supertypes
class Any
trait Capability

Base trait for classes that represent capabilities in the object-capability model.

Base trait for classes that represent capabilities in the object-capability model.

A capability is a value representing a permission, access right, resource or effect. Capabilities are typically passed to code as parameters; they should not be global objects. Often, they come with access restrictions such as scoped lifetimes or limited sharing.

An example is the Label class in scala.util.boundary. It represents a capability in the sense that it gives permission to break to the enclosing boundary represented by the Label. It has a scoped lifetime, since breaking to a Label after the associated boundary was exited gives a runtime exception.

Capability has a formal meaning when Capture Checking is turned on. But even without capture checking, extending this trait can be useful for documenting the intended purpose of a class.

Attributes

Experimental
true
Source
package.scala
Supertypes
class Any
Known subtypes
trait Exists
trait Mutable
class CanThrow[E]
object cap
sealed trait Contains[+C >: CapSet <: CapSet, R <: Singleton]

A type constraint expressing that the capture set C needs to contain the capability R

A type constraint expressing that the capture set C needs to contain the capability R

Attributes

Companion
object
Experimental
true
Source
package.scala
Supertypes
class Object
trait Matchable
class Any
object Contains

Attributes

Companion
trait
Experimental
true
Source
package.scala
Supertypes
class Object
trait Matchable
class Any
Self type
Contains.type
sealed trait Exists extends Capability

A trait that used to allow expressing existential types. Replaced by root.Result instances.

A trait that used to allow expressing existential types. Replaced by root.Result instances.

Attributes

Deprecated
true
Experimental
true
Source
package.scala
Supertypes
trait Capability
class Object
trait Matchable
class Any
trait Mutable extends Capability

Marker trait for classes with methods that requires an exclusive reference.

Marker trait for classes with methods that requires an exclusive reference.

Attributes

Experimental
true
Source
package.scala
Supertypes
trait Capability
class Object
trait Matchable
class Any

Marker trait for capabilities that can be safely shared in a concurrent context. During separation checking, shared capabilities are not taken into account.

Marker trait for capabilities that can be safely shared in a concurrent context. During separation checking, shared capabilities are not taken into account.

Attributes

Experimental
true
Source
package.scala
Supertypes
trait Capability
class Object
trait Matchable
class Any
Known subtypes
class CanThrow[E]
object cap extends Capability

The universal capture reference.

The universal capture reference.

Attributes

Experimental
true
Source
package.scala
Supertypes
trait Capability
class Object
trait Matchable
class Any
Self type
cap.type
final class consume extends StaticAnnotation

An annotations on parameters and update methods. On a parameter it states that any capabilties passed in the argument are no longer available afterwards, unless they are of class SharableCapabilitty. On an update method, it states that the this of the enclosing class is consumed, which means that any capabilities of the method prefix are no longer available afterwards.

An annotations on parameters and update methods. On a parameter it states that any capabilties passed in the argument are no longer available afterwards, unless they are of class SharableCapabilitty. On an update method, it states that the this of the enclosing class is consumed, which means that any capabilities of the method prefix are no longer available afterwards.

Attributes

Experimental
true
Source
package.scala
Supertypes
class Annotation
class Object
trait Matchable
class Any
object internal

Attributes

Experimental
true
Source
package.scala
Supertypes
class Object
trait Matchable
class Any
Self type
internal.type
object unsafe

Attributes

Experimental
true
Source
package.scala
Supertypes
class Object
trait Matchable
class Any
Self type
unsafe.type
final class use extends StaticAnnotation

An annotation on parameters x stating that the method's body makes use of the reach capability x*. Consequently, when calling the method we need to charge the deep capture set of the actual argiment to the environment.

An annotation on parameters x stating that the method's body makes use of the reach capability x*. Consequently, when calling the method we need to charge the deep capture set of the actual argiment to the environment.

Note: This should go into annotations. For now it is here, so that we can experiment with it quickly between minor releases

Attributes

Experimental
true
Source
package.scala
Supertypes
class Annotation
class Object
trait Matchable
class Any