diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index 8cc5aac942a6..26cafdedbfaa 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -2109,10 +2109,9 @@ class Definitions { */ @tu lazy val ccExperimental: Set[Symbol] = Set( CapsModule, CapsModule.moduleClass, PureClass, - Caps_Capability, // TODO: Remove when Capability is stabilized RequiresCapabilityAnnot, captureRoot, Caps_CapSet, Caps_ContainsTrait, Caps_ContainsModule, Caps_ContainsModule.moduleClass, UseAnnot, - Caps_Mutable, Caps_Sharable, Caps_Control, Caps_Classifier, ConsumeAnnot, + Caps_Mutable/* , Caps_Sharable, Caps_Control, Caps_Classifier -- already stable*/, ConsumeAnnot, CapsUnsafeModule, CapsUnsafeModule.moduleClass, CapsInternalModule, CapsInternalModule.moduleClass, RetainsAnnot, RetainsCapAnnot, RetainsByNameAnnot) diff --git a/library/src/scala/caps/package.scala b/library/src/scala/caps/package.scala index 2f466af166e3..7ea54b46e4fb 100644 --- a/library/src/scala/caps/package.scala +++ b/library/src/scala/caps/package.scala @@ -22,14 +22,12 @@ import annotation.{experimental, compileTimeOnly, retainsCap} * But even without capture checking, extending this trait can be useful for documenting the intended purpose * of a class. */ -@experimental trait Capability extends Any /** A marker trait for classifier capabilities that can appear in `.only` * qualifiers. Capability classes directly extending `Classifier` are treated * as classifier capbilities */ -@experimental trait Classifier /** The universal capture reference. */ @@ -43,13 +41,11 @@ trait Mutable extends Capability, Classifier /** Marker trait for capabilities that can be safely shared in a concurrent context. * During separation checking, shared capabilities are not taken into account. */ -@experimental trait Sharable extends Capability, Classifier /** Base trait for capabilities that capture some continuation or return point in * the stack. Examples are exceptions, labels, Async, CanThrow. */ -@experimental trait Control extends Sharable, Classifier /** Carrier trait for capture set type parameters */ diff --git a/project/MiMaFilters.scala b/project/MiMaFilters.scala index 5a4be70987a5..3e6bdc660944 100644 --- a/project/MiMaFilters.scala +++ b/project/MiMaFilters.scala @@ -24,6 +24,12 @@ object MiMaFilters { ProblemFilters.exclude[MissingClassProblem]("scala.Conversion$"), ProblemFilters.exclude[MissingClassProblem]("scala.annotation.stableNull"), + + // Change `caps.Capability` to non-experimental + ProblemFilters.exclude[MissingClassProblem]("scala.caps.Capability"), + ProblemFilters.exclude[MissingClassProblem]("scala.caps.Classifier"), + ProblemFilters.exclude[MissingClassProblem]("scala.caps.Shared"), + ProblemFilters.exclude[MissingClassProblem]("scala.caps.Control"), ), // Additions since last LTS diff --git a/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala b/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala index f95c25635d9f..a279b572a13a 100644 --- a/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala +++ b/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala @@ -32,15 +32,11 @@ val experimentalDefinitionInLibrary = Set( "scala.annotation.retainsCap", "scala.Pure", "scala.caps.CapSet", - "scala.caps.Capability", - "scala.caps.Classifier", "scala.caps.Contains", "scala.caps.Contains$", "scala.caps.Contains$.containsImpl", "scala.caps.Exists", "scala.caps.Mutable", - "scala.caps.Sharable", - "scala.caps.Control", "scala.caps.consume", "scala.caps.internal", "scala.caps.internal$",