diff --git a/compiler/src/dotty/tools/dotc/core/Definitions.scala b/compiler/src/dotty/tools/dotc/core/Definitions.scala index 79fa0e94e06a..5102f7021825 100644 --- a/compiler/src/dotty/tools/dotc/core/Definitions.scala +++ b/compiler/src/dotty/tools/dotc/core/Definitions.scala @@ -1020,7 +1020,7 @@ class Definitions { @tu lazy val Caps_ContainsModule: Symbol = requiredModule("scala.caps.Contains") @tu lazy val Caps_containsImpl: TermSymbol = Caps_ContainsModule.requiredMethod("containsImpl") - @tu lazy val PureClass: ClassSymbol = requiredClass("scala.Pure") + @tu lazy val PureClass: ClassSymbol = requiredClass("scala.caps.Pure") // Annotation base classes @tu lazy val AnnotationClass: ClassSymbol = requiredClass("scala.annotation.Annotation") diff --git a/compiler/src/dotty/tools/dotc/core/TypeErasure.scala b/compiler/src/dotty/tools/dotc/core/TypeErasure.scala index 2e6fa7d94d43..75b49b6a7c63 100644 --- a/compiler/src/dotty/tools/dotc/core/TypeErasure.scala +++ b/compiler/src/dotty/tools/dotc/core/TypeErasure.scala @@ -109,9 +109,9 @@ object TypeErasure { case _ => -1 def normalizeClass(cls: ClassSymbol)(using Context): ClassSymbol = { + if (defn.specialErasure.contains(cls)) + return defn.specialErasure(cls).uncheckedNN if (cls.owner == defn.ScalaPackageClass) { - if (defn.specialErasure.contains(cls)) - return defn.specialErasure(cls).uncheckedNN if (cls == defn.UnitClass) return defn.BoxedUnitClass } diff --git a/compiler/src/dotty/tools/dotc/transform/Erasure.scala b/compiler/src/dotty/tools/dotc/transform/Erasure.scala index c743e757b8b4..c4a5b35da90c 100644 --- a/compiler/src/dotty/tools/dotc/transform/Erasure.scala +++ b/compiler/src/dotty/tools/dotc/transform/Erasure.scala @@ -191,7 +191,7 @@ class Erasure extends Phase with DenotTransformer { || isAllowed(defn.TupleClass, "Tuple.scala") || isAllowed(defn.NonEmptyTupleClass, "Tuple.scala") || isAllowed(defn.PairClass, "Tuple.scala") - || isAllowed(defn.PureClass, "Pure.scala"), + || isAllowed(defn.PureClass, /* caps/ */ "Pure.scala"), i"The type $tp - ${tp.toString} of class ${tp.getClass} of tree $tree : ${tree.tpe} / ${tree.getClass} is illegal after erasure, phase = ${ctx.phase.prev}") } } diff --git a/library/src/scala/Pure.scala b/library/src/scala/caps/Pure.scala similarity index 82% rename from library/src/scala/Pure.scala rename to library/src/scala/caps/Pure.scala index f3f624cd40d0..dfb8127bcc7f 100644 --- a/library/src/scala/Pure.scala +++ b/library/src/scala/caps/Pure.scala @@ -1,9 +1,9 @@ package scala -import annotation.experimental +package caps /** A marker trait that declares that all inheriting classes are "pure" in the * sense that their values retain no capabilities including capabilities needed * to perform effects. This has formal meaning only under capture checking. */ -@experimental trait Pure: +trait Pure: this: Pure => diff --git a/project/Build.scala b/project/Build.scala index df5d465a8f8f..0e5607d292c6 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1097,7 +1097,6 @@ object Build { file(s"${baseDirectory.value}/src/scala/CanEqual.scala"), file(s"${baseDirectory.value}/src/scala/Conversion.scala"), file(s"${baseDirectory.value}/src/scala/PolyFunction.scala"), - file(s"${baseDirectory.value}/src/scala/Pure.scala"), file(s"${baseDirectory.value}/src/scala/IArray.scala"), file(s"${baseDirectory.value}/src/scala/CanThrow.scala"), file(s"${baseDirectory.value}/src/scala/Tuple.scala"), @@ -1110,6 +1109,7 @@ object Build { file(s"${baseDirectory.value}/src/scala/util/NotGiven.scala"), file(s"${baseDirectory.value}/src/scala/util/boundary.scala"), file(s"${baseDirectory.value}/src/scala/caps/package.scala"), + file(s"${baseDirectory.value}/src/scala/caps/Pure.scala"), file(s"${baseDirectory.value}/src/scala/reflect/TypeTest.scala"), file(s"${baseDirectory.value}/src/scala/reflect/Selectable.scala"), file(s"${baseDirectory.value}/src/scala/reflect/Typeable.scala"), @@ -1235,7 +1235,6 @@ object Build { file(s"${baseDirectory.value}/src/scala/CanEqual.scala"), file(s"${baseDirectory.value}/src/scala/Conversion.scala"), file(s"${baseDirectory.value}/src/scala/PolyFunction.scala"), - file(s"${baseDirectory.value}/src/scala/Pure.scala"), file(s"${baseDirectory.value}/src/scala/IArray.scala"), file(s"${baseDirectory.value}/src/scala/CanThrow.scala"), file(s"${baseDirectory.value}/src/scala/Tuple.scala"), @@ -1248,6 +1247,7 @@ object Build { file(s"${baseDirectory.value}/src/scala/util/NotGiven.scala"), file(s"${baseDirectory.value}/src/scala/util/boundary.scala"), file(s"${baseDirectory.value}/src/scala/caps/package.scala"), + file(s"${baseDirectory.value}/src/scala/caps/Pure.scala"), file(s"${baseDirectory.value}/src/scala/reflect/TypeTest.scala"), file(s"${baseDirectory.value}/src/scala/reflect/Selectable.scala"), file(s"${baseDirectory.value}/src/scala/reflect/Typeable.scala"), diff --git a/scala2-library-cc/src/scala/collection/Factory.scala b/scala2-library-cc/src/scala/collection/Factory.scala index 96f39bafc905..5992a8b2c02f 100644 --- a/scala2-library-cc/src/scala/collection/Factory.scala +++ b/scala2-library-cc/src/scala/collection/Factory.scala @@ -31,7 +31,7 @@ import caps.unsafe.unsafeAssumePure * @tparam A Type of elements (e.g. `Int`, `Boolean`, etc.) * @tparam C Type of collection (e.g. `List[Int]`, `TreeMap[Int, String]`, etc.) */ -trait Factory[-A, +C] extends Pure { +trait Factory[-A, +C] extends caps.Pure { /** * @return A collection of type `C` containing the same elements @@ -82,7 +82,7 @@ object Factory { * @define coll collection * @define Coll `Iterable` */ -trait IterableFactory[+CC[_]] extends Serializable, Pure { +trait IterableFactory[+CC[_]] extends Serializable, caps.Pure { /** Creates a target $coll from an existing source collection * @@ -389,7 +389,7 @@ trait SpecificIterableFactory[-A, +C] extends Factory[A, C] { * @define coll collection * @define Coll `Iterable` */ -trait MapFactory[+CC[_, _]] extends Serializable, Pure { +trait MapFactory[+CC[_, _]] extends Serializable, caps.Pure { /** * An empty Map @@ -462,7 +462,7 @@ object MapFactory { * @define coll collection * @define Coll `Iterable` */ -trait EvidenceIterableFactory[+CC[_], Ev[_]] extends Serializable, Pure { +trait EvidenceIterableFactory[+CC[_], Ev[_]] extends Serializable, caps.Pure { def from[E : Ev](it: IterableOnce[E]^): CC[E] diff --git a/scala2-library-cc/src/scala/collection/Map.scala b/scala2-library-cc/src/scala/collection/Map.scala index 7ba393ecd242..5d3cfaf75a46 100644 --- a/scala2-library-cc/src/scala/collection/Map.scala +++ b/scala2-library-cc/src/scala/collection/Map.scala @@ -26,7 +26,7 @@ trait Map[K, +V] with MapOps[K, V, Map, Map[K, V]] with MapFactoryDefaults[K, V, Map, Iterable] with Equals - with Pure { + with caps.Pure { def mapFactory: scala.collection.MapFactory[Map] = Map diff --git a/scala2-library-cc/src/scala/collection/Set.scala b/scala2-library-cc/src/scala/collection/Set.scala index a9c279b82a49..f7822aceac15 100644 --- a/scala2-library-cc/src/scala/collection/Set.scala +++ b/scala2-library-cc/src/scala/collection/Set.scala @@ -26,7 +26,7 @@ trait Set[A] with SetOps[A, Set, Set[A]] with Equals with IterableFactoryDefaults[A, Set] - with Pure { + with caps.Pure { self: Set[A] => def canEqual(that: Any) = true diff --git a/scala2-library-cc/src/scala/collection/SortedMap.scala b/scala2-library-cc/src/scala/collection/SortedMap.scala index 876a83b2709c..43080a1bec2e 100644 --- a/scala2-library-cc/src/scala/collection/SortedMap.scala +++ b/scala2-library-cc/src/scala/collection/SortedMap.scala @@ -51,7 +51,7 @@ trait SortedMap[K, +V] trait SortedMapOps[K, +V, +CC[X, Y] <: Map[X, Y] with SortedMapOps[X, Y, CC, _], +C <: SortedMapOps[K, V, CC, C]] extends MapOps[K, V, Map, C] with SortedOps[K, C] - with Pure { + with caps.Pure { /** The companion object of this sorted map, providing various factory methods. * diff --git a/scala2-library-cc/src/scala/collection/StepperShape.scala b/scala2-library-cc/src/scala/collection/StepperShape.scala index c6b520400d89..7c0116d70e75 100644 --- a/scala2-library-cc/src/scala/collection/StepperShape.scala +++ b/scala2-library-cc/src/scala/collection/StepperShape.scala @@ -20,7 +20,7 @@ import scala.collection.Stepper.EfficientSplit /** An implicit StepperShape instance is used in the [[IterableOnce.stepper]] to return a possibly * specialized Stepper `S` according to the element type `T`. */ -sealed trait StepperShape[-T, S <: Stepper[_]^] extends Pure { +sealed trait StepperShape[-T, S <: Stepper[_]^] extends caps.Pure { /** Return the Int constant (as defined in the `StepperShape` companion object) for this `StepperShape`. */ def shape: StepperShape.Shape diff --git a/scala2-library-cc/src/scala/collection/StrictOptimizedMapOps.scala b/scala2-library-cc/src/scala/collection/StrictOptimizedMapOps.scala index a9c5e0af43b3..3512d7429ed4 100644 --- a/scala2-library-cc/src/scala/collection/StrictOptimizedMapOps.scala +++ b/scala2-library-cc/src/scala/collection/StrictOptimizedMapOps.scala @@ -24,7 +24,7 @@ import language.experimental.captureChecking trait StrictOptimizedMapOps[K, +V, +CC[_, _] <: IterableOps[_, AnyConstr, _], +C] extends MapOps[K, V, CC, C] with StrictOptimizedIterableOps[(K, V), Iterable, C] - with Pure { + with caps.Pure { override def map[K2, V2](f: ((K, V)) => (K2, V2)): CC[K2, V2] = strictOptimizedMap(mapFactory.newBuilder, f) diff --git a/scala2-library-cc/src/scala/collection/View.scala b/scala2-library-cc/src/scala/collection/View.scala index 72a073836e77..8002e7c2bb02 100644 --- a/scala2-library-cc/src/scala/collection/View.scala +++ b/scala2-library-cc/src/scala/collection/View.scala @@ -99,7 +99,7 @@ object View extends IterableFactory[View] { /** A view with given elements */ @SerialVersionUID(3L) - class Elems[A](xs: A*) extends AbstractView[A], Pure { + class Elems[A](xs: A*) extends AbstractView[A], caps.Pure { def iterator = xs.iterator override def knownSize = xs.knownSize override def isEmpty: Boolean = xs.isEmpty diff --git a/scala2-library-cc/src/scala/collection/immutable/ArraySeq.scala b/scala2-library-cc/src/scala/collection/immutable/ArraySeq.scala index e21490571d29..9ab0f02ab59c 100644 --- a/scala2-library-cc/src/scala/collection/immutable/ArraySeq.scala +++ b/scala2-library-cc/src/scala/collection/immutable/ArraySeq.scala @@ -40,7 +40,7 @@ sealed abstract class ArraySeq[+A] with StrictOptimizedSeqOps[A, ArraySeq, ArraySeq[A]] with EvidenceIterableFactoryDefaults[A, ArraySeq, ClassTag] with Serializable - with Pure { + with caps.Pure { /** The tag of the element type. This does not have to be equal to the element type of this ArraySeq. A primitive * ArraySeq can be backed by an array of boxed values and a reference ArraySeq can be backed by an array of a supertype diff --git a/scala2-library-cc/src/scala/collection/immutable/Map.scala b/scala2-library-cc/src/scala/collection/immutable/Map.scala index 1b74883bb612..2459ebcc0369 100644 --- a/scala2-library-cc/src/scala/collection/immutable/Map.scala +++ b/scala2-library-cc/src/scala/collection/immutable/Map.scala @@ -314,7 +314,7 @@ object Map extends MapFactory[Map] { override protected def nextResult(k: K, v: V): V = v } - private abstract class Map2Iterator[A] extends AbstractIterator[A], Pure { + private abstract class Map2Iterator[A] extends AbstractIterator[A], caps.Pure { private[this] var i = 0 override def hasNext: Boolean = i < 2 override def next(): A = { @@ -417,7 +417,7 @@ object Map extends MapFactory[Map] { override protected def nextResult(k: K, v: V): V = v } - private abstract class Map3Iterator[A] extends AbstractIterator[A], Pure { + private abstract class Map3Iterator[A] extends AbstractIterator[A], caps.Pure { private[this] var i = 0 override def hasNext: Boolean = i < 3 override def next(): A = { @@ -537,7 +537,7 @@ object Map extends MapFactory[Map] { override protected def nextResult(k: K, v: V): V = v } - private abstract class Map4Iterator[A] extends AbstractIterator[A], Pure { + private abstract class Map4Iterator[A] extends AbstractIterator[A], caps.Pure { private[this] var i = 0 override def hasNext: Boolean = i < 4 override def next(): A = { diff --git a/scala2-library-cc/src/scala/collection/immutable/Set.scala b/scala2-library-cc/src/scala/collection/immutable/Set.scala index 4632a35f8484..1be34088c601 100644 --- a/scala2-library-cc/src/scala/collection/immutable/Set.scala +++ b/scala2-library-cc/src/scala/collection/immutable/Set.scala @@ -129,7 +129,7 @@ object Set extends IterableFactory[Set] { private[collection] def emptyInstance: Set[Any] = EmptySet @SerialVersionUID(3L) - private abstract class SetNIterator[A](n: Int) extends AbstractIterator[A], Serializable, Pure { + private abstract class SetNIterator[A](n: Int) extends AbstractIterator[A], Serializable, caps.Pure { private[this] var current = 0 private[this] var remainder = n override def knownSize: Int = remainder diff --git a/scala2-library-cc/src/scala/collection/immutable/WrappedString.scala b/scala2-library-cc/src/scala/collection/immutable/WrappedString.scala index 446bdceb3ace..9aad5c92552d 100644 --- a/scala2-library-cc/src/scala/collection/immutable/WrappedString.scala +++ b/scala2-library-cc/src/scala/collection/immutable/WrappedString.scala @@ -36,7 +36,7 @@ import language.experimental.captureChecking final class WrappedString(private val self: String) extends AbstractSeq[Char] with IndexedSeq[Char] with IndexedSeqOps[Char, IndexedSeq, WrappedString] with Serializable - with Pure { + with caps.Pure { def apply(i: Int): Char = self.charAt(i) diff --git a/scala2-library-cc/src/scala/collection/mutable/ArrayBuffer.scala b/scala2-library-cc/src/scala/collection/mutable/ArrayBuffer.scala index b47b25f9529f..6ae7eae8d24c 100644 --- a/scala2-library-cc/src/scala/collection/mutable/ArrayBuffer.scala +++ b/scala2-library-cc/src/scala/collection/mutable/ArrayBuffer.scala @@ -359,7 +359,7 @@ object ArrayBuffer extends StrictOptimizedSeqFactory[ArrayBuffer] { // TODO: use `CheckedIndexedSeqView.Id` once we can change the return type of `ArrayBuffer#view` final class ArrayBufferView[A] private[mutable](underlying: ArrayBuffer[A], mutationCount: () -> Int) - extends AbstractIndexedSeqView[A], Pure { + extends AbstractIndexedSeqView[A], caps.Pure { /* Removed since it poses problems for capture checking @deprecated("never intended to be public; call ArrayBuffer#view instead", since = "2.13.7") def this(array: Array[AnyRef], length: Int) = { diff --git a/scala2-library-cc/src/scala/collection/mutable/ArraySeq.scala b/scala2-library-cc/src/scala/collection/mutable/ArraySeq.scala index d1c5b5c9ce72..61b2585c9cdc 100644 --- a/scala2-library-cc/src/scala/collection/mutable/ArraySeq.scala +++ b/scala2-library-cc/src/scala/collection/mutable/ArraySeq.scala @@ -41,7 +41,7 @@ sealed abstract class ArraySeq[T] with IndexedSeqOps[T, ArraySeq, ArraySeq[T]] with StrictOptimizedSeqOps[T, ArraySeq, ArraySeq[T]] with Serializable - with Pure { + with caps.Pure { override def iterableFactory: scala.collection.SeqFactory[ArraySeq] = ArraySeq.untagged diff --git a/scala2-library-cc/src/scala/collection/mutable/Map.scala b/scala2-library-cc/src/scala/collection/mutable/Map.scala index dab64ddb1f58..2ad1a72c129f 100644 --- a/scala2-library-cc/src/scala/collection/mutable/Map.scala +++ b/scala2-library-cc/src/scala/collection/mutable/Map.scala @@ -71,7 +71,7 @@ trait MapOps[K, V, +CC[X, Y] <: MapOps[X, Y, CC, _], +C <: MapOps[K, V, CC, C]] with Builder[(K, V), C] with Growable[(K, V)] with Shrinkable[K] - with Pure { + with caps.Pure { def result(): C = coll diff --git a/tests/neg-custom-args/captures/leaked-curried-shared.scala b/tests/neg-custom-args/captures/leaked-curried-shared.scala index 95d0666e18a1..fcf17306ccea 100644 --- a/tests/neg-custom-args/captures/leaked-curried-shared.scala +++ b/tests/neg-custom-args/captures/leaked-curried-shared.scala @@ -8,11 +8,11 @@ trait Box: def main(): Unit = val leaked = withCap: (io: Cap) => - class Fuzz extends Box, Pure: + class Fuzz extends Box, caps.Pure: self => val get: () ->{} () ->{io} Cap = () => () => io // error - class Foo extends Box, Pure: + class Foo extends Box, caps.Pure: val get: () ->{} () ->{io} Cap = () => () => io // error new Foo diff --git a/tests/neg-custom-args/captures/leaked-curried.scala b/tests/neg-custom-args/captures/leaked-curried.scala index 30e0456cb4ea..cdcd81b14e23 100644 --- a/tests/neg-custom-args/captures/leaked-curried.scala +++ b/tests/neg-custom-args/captures/leaked-curried.scala @@ -8,11 +8,11 @@ trait Box: def main(): Unit = val leaked = withCap: (io: Cap^) => - class Fuzz extends Box, Pure: + class Fuzz extends Box, caps.Pure: self => val get: () ->{} () ->{io} Cap^ = // error () => () => io // error - class Foo extends Box, Pure: + class Foo extends Box, caps.Pure: val get: () ->{} () ->{io} Cap^ = // error () => () => io // error new Foo diff --git a/tests/neg-custom-args/captures/selftype.scala b/tests/neg-custom-args/captures/selftype.scala index f5d24fd2381f..21148f625a7a 100644 --- a/tests/neg-custom-args/captures/selftype.scala +++ b/tests/neg-custom-args/captures/selftype.scala @@ -1,4 +1,4 @@ -@annotation.experimental class C(x: () => Unit) extends Pure // error +@annotation.experimental class C(x: () => Unit) extends caps.Pure // error -@annotation.experimental class D(@annotation.constructorOnly x: () => Unit) extends Pure // ok +@annotation.experimental class D(@annotation.constructorOnly x: () => Unit) extends caps.Pure // ok diff --git a/tests/pos-custom-args/captures/cc-experimental.scala b/tests/pos-custom-args/captures/cc-experimental.scala index 4027779a9036..a837fe686fa6 100644 --- a/tests/pos-custom-args/captures/cc-experimental.scala +++ b/tests/pos-custom-args/captures/cc-experimental.scala @@ -5,9 +5,9 @@ package scala.runtime import language.experimental.captureChecking object test: - type T = Pure + type T = caps.Pure -class Foo extends Object, Pure: - val x: Pure = ??? +class Foo extends Object, caps.Pure: + val x: caps.Pure = ??? def foo() = () diff --git a/tests/pos-custom-args/captures/dependent-pure.scala b/tests/pos-custom-args/captures/dependent-pure.scala index ad10d9590f25..c9faf523ed20 100644 --- a/tests/pos-custom-args/captures/dependent-pure.scala +++ b/tests/pos-custom-args/captures/dependent-pure.scala @@ -2,4 +2,4 @@ import language.experimental.captureChecking class ContextCls type Context = ContextCls^ -class Filtered(p: (c: Context) ?-> () ->{c} Boolean) extends Pure +class Filtered(p: (c: Context) ?-> () ->{c} Boolean) extends caps.Pure diff --git a/tests/pos-custom-args/captures/invariant-cc.scala b/tests/pos-custom-args/captures/invariant-cc.scala index 347b0d2fda64..cfea7c1cfbbb 100644 --- a/tests/pos-custom-args/captures/invariant-cc.scala +++ b/tests/pos-custom-args/captures/invariant-cc.scala @@ -1,7 +1,7 @@ import language.experimental.captureChecking import scala.annotation.unchecked.uncheckedVariance -trait IterableFactory[+CC[_]] extends Pure: +trait IterableFactory[+CC[_]] extends caps.Pure: def fill[A](n: Int)(elem: => A): CC[A]^{elem} = ??? def fill[A](n1: Int, n2: Int)(elem: => A): CC[(CC[A]^{elem}) @uncheckedVariance]^{elem} = diff --git a/tests/pos-custom-args/captures/steppers.scala b/tests/pos-custom-args/captures/steppers.scala index fa39f37f742f..0d99e305bb22 100644 --- a/tests/pos-custom-args/captures/steppers.scala +++ b/tests/pos-custom-args/captures/steppers.scala @@ -4,12 +4,12 @@ trait Stepper[+A] object Stepper: trait EfficientSplit -sealed trait StepperShape[-T, S <: Stepper[_]^] extends Pure +sealed trait StepperShape[-T, S <: Stepper[_]^] extends caps.Pure trait IterableOnce[+A] extends Any: def stepper[S <: Stepper[_]^{this}](implicit shape: StepperShape[A, S]): S = ??? -sealed abstract class ArraySeq[T] extends IterableOnce[T], Pure: +sealed abstract class ArraySeq[T] extends IterableOnce[T], caps.Pure: def array: Array[_] def sorted[B >: T](implicit ord: Ordering[B]): ArraySeq[T] = @@ -20,6 +20,6 @@ object ArraySeq: def make[T](x: Array[T]): ArraySeq[T] = ??? - final class ofRef[T <: AnyRef](val array: Array[T]) extends ArraySeq[T], Pure: + final class ofRef[T <: AnyRef](val array: Array[T]) extends ArraySeq[T], caps.Pure: override def stepper[S <: Stepper[_]](implicit shape: StepperShape[T, S]): S & Stepper.EfficientSplit = ??? diff --git a/tests/run-custom-args/captures/minicheck.scala b/tests/run-custom-args/captures/minicheck.scala index 2824f9ff6e24..5a16649b5fe5 100644 --- a/tests/run-custom-args/captures/minicheck.scala +++ b/tests/run-custom-args/captures/minicheck.scala @@ -3,7 +3,7 @@ import compiletime.uninitialized import annotation.{experimental, tailrec, constructorOnly} import collection.mutable -case class Symbol(name: String, initOwner: Symbol | Null) extends Pure: +case class Symbol(name: String, initOwner: Symbol | Null) extends caps.Pure: def owner = initOwner.nn private var myInfo: Type = uninitialized def infoOrCompleter: Type = myInfo @@ -27,7 +27,7 @@ object NoSymbol extends Symbol("", null): override def exists: Boolean = false override def orElse(alt: => Symbol): Symbol = alt -abstract class Type extends Pure: +abstract class Type extends caps.Pure: def exists = true def show: String case class IntType()(using @constructorOnly c: Context) extends Type: diff --git a/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala b/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala index 9effb37d5278..263e14ae154b 100644 --- a/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala +++ b/tests/run-tasty-inspector/stdlibExperimentalDefinitions.scala @@ -30,7 +30,6 @@ val experimentalDefinitionInLibrary = Set( "scala.annotation.retains", "scala.annotation.retainsByName", "scala.annotation.retainsCap", - "scala.Pure", "scala.caps.CapSet", "scala.caps.Contains", "scala.caps.Contains$",