aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/test/dotc/scala-collections.blacklist229
-rw-r--r--compiler/test/dotc/scala-collections.whitelist287
-rw-r--r--compiler/test/dotc/tests.scala50
3 files changed, 559 insertions, 7 deletions
diff --git a/compiler/test/dotc/scala-collections.blacklist b/compiler/test/dotc/scala-collections.blacklist
new file mode 100644
index 000000000..407cb0a4b
--- /dev/null
+++ b/compiler/test/dotc/scala-collections.blacklist
@@ -0,0 +1,229 @@
+../scala-scala/src/library/scala/annotation/unchecked/uncheckedVariance.scala
+
+../scala-scala/src/library/scala/AnyVal.scala
+# 55 |abstract class AnyVal extends Any {
+# |^
+# |illegal redefinition of standard class AnyVal
+
+
+../scala-scala/src/library/scala/collection/convert/Wrappers.scala
+# 34 | def remove() = throw new UnsupportedOperationException
+# | ^
+# | overriding method remove in trait Iterator of type ()Unit;
+# | method remove of type ()Unit needs `override' modifier
+
+../scala-scala/src/library/scala/collection/generic/ParSetFactory.scala
+
+../scala-scala/src/library/scala/collection/mutable/DefaultEntry.scala
+# 22 | "(kv: " + key + ", " + value + ")" + (if (next != null) " -> " + next.toString else "")
+# | ^^^^
+# | cyclic reference involving method toString
+
+../scala-scala/src/library/scala/collection/mutable/ImmutableMapAdaptor.scala
+# 78 | override def toString() = imap.toString()
+# | ^^^^^^^^^^^^^^^
+# | missing argument for parameter index of method apply: (index: Int)Char
+
+../scala-scala/src/library/scala/collection/mutable/LinkedHashMap.scala
+# 102 | protected class FilteredKeys(p: A => Boolean) extends super.FilteredKeys(p) {
+# | ^^^^^^^^^^^^^^^^^^^^
+# | cyclic inheritance: class FilteredKeys extends itself
+# ...
+
+../scala-scala/src/library/scala/collection/mutable/ObservableMap.scala
+# assertion failed
+
+../scala-scala/src/library/scala/collection/mutable/ObservableSet.scala
+# 35 | publish(new Include(elem) with Undoable { def undo = -=(elem) })
+# | ^
+# | overriding method undo in trait Undoable of type ()Unit;
+# | method undo of type => scala.collection.mutable.ObservableSet[A] has incompatible type
+
+../scala-scala/src/library/scala/collection/mutable/SynchronizedQueue.scala
+# 102 | override def toString() = synchronized { super.toString() }
+# | ^^^^^^^^^^^^^^^^
+# | missing argument for parameter index of method apply: (index: Int)Char
+
+../scala-scala/src/library/scala/collection/mutable/UnrolledBuffer.scala
+# 347 | override def toString = array.take(size).mkString("Unrolled[" + array.length + "](", ", ", ")") + " -> " + (if (next ne null) next.toString else "")
+# | ^^^^
+# | cyclic reference involving method toString
+
+../scala-scala/src/library/scala/collection/mutable/SynchronizedBuffer.scala
+# assertion failed
+
+../scala-scala/src/library/scala/collection/parallel/mutable/ParArray.scala
+# 648 | class Map[S](f: T => S, targetarr: Array[Any], offset: Int, howmany: Int) extends Task[Unit, Map[S]] {
+# | ^
+# | overriding class Map in trait ParIterableLike;
+# | class Map cannot be used here - class definitions cannot be overridden
+
+../scala-scala/src/library/scala/collection/parallel/mutable/ParMap.scala
+# 42 | override def updated [U >: V](key: K, value: U): ParMap[K, U] = this + ((key, value))
+# | ^^^^^^^^^^^^^^^^^^^^^
+# | found: scala.collection.parallel.ParMap[K, U]
+# | required: scala.collection.parallel.mutable.ParMap'[K, U]
+# |
+# | where: ParMap is a trait in package parallel
+# | ParMap' is a trait in package mutable
+
+
+../scala-scala/src/library/scala/collection/parallel/mutable/ResizableParArrayCombiner.scala
+# 91 | new { val chain = c } with ResizableParArrayCombiner[T] // was: with EnvironmentPassingCombiner[T, ParArray[T]]
+# | ^
+# | early definitions are not supported; use trait parameters instead
+
+../scala-scala/src/library/scala/collection/parallel/mutable/ParTrieMap.scala
+# 136 | it.iterated = this.iterated
+# | ^^^^^^^^^^^
+# | value `iterated` is not a member of scala.collection.concurrent.TrieMapIterator[K, V](it)
+
+../scala-scala/src/library/scala/collection/parallel/package.scala
+# 75 | implicit def factory2ops[From, Elem, To](bf: CanBuildFrom[From, Elem, To]) = new FactoryOps[From, Elem, To] {
+# | ^
+# | result type of implicit definition needs to be given explicitly
+
+../scala-scala/src/library/scala/collection/parallel/ParIterable.scala
+# 304 | protected implicit def task2ops[R, Tp](tsk: SSCTask[R, Tp]) = new TaskOps[R, Tp] {
+# | ^
+# | result type of implicit definition needs to be given explicitly
+
+../scala-scala/src/library/scala/collection/parallel/ParIterableLike.scala
+# 324 | protected implicit def delegatedSignalling2ops[PI <: DelegatedSignalling](it: PI) = new SignallingOps[PI] {
+# | ^
+# | result type of implicit definition needs to be given explicitly
+
+../scala-scala/src/library/scala/collection/parallel/ParMap.scala
+../scala-scala/src/library/scala/collection/parallel/ParMapLike.scala
+
+../scala-scala/src/library/scala/collection/parallel/ParSeqLike.scala
+# 334 | protected trait Accessor[R, Tp] extends super.Accessor[R, Tp] {
+# | ^^^^^^^^^^^^^^^^^^^^^
+# | cyclic inheritance: trait Accessor extends itself
+
+../scala-scala/src/library/scala/collection/parallel/RemainsIterator.scala
+# 617 | class Zipped[S](ti: SeqSplitter[S]) extends super.Zipped[S](ti) with SeqSplitter[(T, S)] {
+# | ^^^^^^^^^^^^^^^^^^
+# | cyclic inheritance: class Zipped extends itself
+
+../scala-scala/src/library/scala/collection/parallel/Tasks.scala
+# 429 | fjtask.body.result
+# | ^^^^^^^^^^^
+# | value `body` is not a member of ForkJoinTasks.this.WrappedTask[R, Tp](fjtask)
+
+../scala-scala/src/library/scala/concurrent/Future.scala
+# 188 | implicit val ec = internalExecutor
+# | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+# | type of implicit definition needs to be given explicitly
+
+../scala-scala/src/library/scala/concurrent/SyncChannel.scala
+# 45 | writeReq.get
+# | ^^^^^^^^^^^^
+# | none of the overloaded alternatives of method get in class SyncVar with types
+# | (timeout: Long)Option[Boolean]
+# | => Boolean
+# | match expected type Unit
+
+../scala-scala/src/library/scala/concurrent/impl/ExecutionContextImpl.scala
+# assertion failed
+
+../scala-scala/src/library/scala/concurrent/package.scala
+# assertion failed
+
+../scala-scala/src/library/scala/Function1.scala
+../scala-scala/src/library/scala/Function2.scala
+../scala-scala/src/library/scala/Function3.scala
+../scala-scala/src/library/scala/Function4.scala
+../scala-scala/src/library/scala/Function5.scala
+../scala-scala/src/library/scala/Function6.scala
+../scala-scala/src/library/scala/Function7.scala
+../scala-scala/src/library/scala/Function8.scala
+../scala-scala/src/library/scala/Function9.scala
+../scala-scala/src/library/scala/Function10.scala
+../scala-scala/src/library/scala/Function11.scala
+../scala-scala/src/library/scala/Function12.scala
+../scala-scala/src/library/scala/Function13.scala
+../scala-scala/src/library/scala/Function14.scala
+../scala-scala/src/library/scala/Function15.scala
+../scala-scala/src/library/scala/Function16.scala
+../scala-scala/src/library/scala/Function17.scala
+../scala-scala/src/library/scala/Function18.scala
+../scala-scala/src/library/scala/Function19.scala
+../scala-scala/src/library/scala/Function20.scala
+../scala-scala/src/library/scala/Function21.scala
+../scala-scala/src/library/scala/Function22.scala
+
+../scala-scala/src/library/scala/io/BufferedSource.scala
+# 38 | override lazy val iter = (
+# | ^
+# | overriding getter iter in class Source of type => collection.Iterator[Char];
+# | lazy value iter of type collection.Iterator[Char] may not override a non-lazy value
+
+../scala-scala/src/library/scala/io/Source.scala
+# 303 | report(pos, msg, out)
+# | ^^^
+# | not found: msg
+
+../scala-scala/src/library/scala/ref/WeakReference.scala
+# 33 | if (x != null) Some(x) else None
+# | ^^^^^^^^^^^
+# | Values of types wr.underlying.java$lang$ref$WeakReference$$T and Null cannot be compared with == or !=
+
+../scala-scala/src/library/scala/reflect/ClassManifestDeprecatedApis.scala
+# 51 | import Manifest._
+# | ^^^^^^^^
+# | not found: Manifest
+../scala-scala/src/library/scala/reflect/ClassTag.scala
+# 124 | val Short : ClassTag[scala.Short] = Manifest.Short
+# | ^^^^^^^^
+# | not found: Manifest
+../scala-scala/src/library/scala/reflect/Manifest.scala
+# 104 | private def readResolve(): Any = Manifest.Short
+# | ^^^^^^^^
+# | not found: Manifest
+../scala-scala/src/library/scala/reflect/NameTransformer.scala
+# 89 | if (buf eq null) name else buf.toString()
+# | ^^^^^^^^^^^^^^
+# | missing argument for parameter index of method apply: (index: Int)Char
+../scala-scala/src/library/scala/reflect/package.scala
+# 63 | private[scala] def materializeClassTag[T](): ClassTag[T] = macro ???
+# | ^^^^^
+# | not found: macro
+
+../scala-scala/src/library/scala/runtime/Tuple2Zipped.scala
+# 122 | val buf = bf(x._1)
+# | ^^^^
+# | found: T1
+# | required: CC1[_]
+
+../scala-scala/src/library/scala/runtime/Tuple3Zipped.scala
+# 131 | val buf = bf(x._1)
+# | ^^^^
+# | found: T1
+# | required: CC1[_]
+
+../scala-scala/src/library/scala/StringContext.scala
+# 168 | def f[A >: Any](args: A*): String = macro ???
+# | ^^^^^
+# | not found: macro
+
+../scala-scala/src/library/scala/text/Document.scala
+
+../scala-scala/src/library/scala/util/control/Exception.scala
+# scala.MatchError: PostfixOp(Select(Ident(pf),isDefinedAt),_) (of class dotty.tools.dotc.ast.untpd$PostfixOp)
+# at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1173)
+
+../scala-scala/src/library/scala/util/control/TailCalls.scala
+# assertion failed
+
+../scala-scala/src/library/scala/util/hashing/Hashing.scala
+# 35 | implicit def default[T] = new Default[T]
+# | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+# | result type of implicit definition needs to be given explicitly
+
+
+../scala-scala/src/library/scala/sys/SystemProperties.scala
+# crashes on dotty.tools.dottydoc.TestWhitelistedCollections.arrayHasDocumentation
+
+../scala-scala/src/library/scala/util/Sorting.scala
+# assertion failed: invalid prefix ImplicitMethodType(List(ord), List(RefinedType(TypeRef(ThisType(TypeRef(NoPrefix,math)),Ordering), scala$math$Ordering$$T, TypeAlias(TypeRef(NoPrefix,K), 0))), RefinedType(TypeRef(ThisType(TypeRef(NoPrefix,math)),Ordering), scala$math$Ordering$$T, TypeAlias(TypeRef(NoPrefix,K), 0)))
diff --git a/compiler/test/dotc/scala-collections.whitelist b/compiler/test/dotc/scala-collections.whitelist
index e984af6c6..c5d6cd2a1 100644
--- a/compiler/test/dotc/scala-collections.whitelist
+++ b/compiler/test/dotc/scala-collections.whitelist
@@ -86,6 +86,7 @@
../scala-scala/src/library/scala/collection/mutable/BufferLike.scala
../scala-scala/src/library/scala/collection/mutable/ArrayBuilder.scala
+../scala-scala/src/library/scala/collection/mutable/ObservableBuffer.scala
../scala-scala/src/library/scala/collection/immutable/Stack.scala
../scala-scala/src/library/scala/collection/immutable/StringLike.scala
@@ -281,4 +282,288 @@
../scala-scala/src/library/scala/collection/generic/TraversableFactory.scala
../scala-scala/src/library/scala/collection/generic/package.scala
-../scala-scala/src/library/scala/util/Try.scala \ No newline at end of file
+../scala-scala/src/library/scala/util/Try.scala
+
+../scala-scala/src/library/scala/util/control/Breaks.scala
+../scala-scala/src/library/scala/util/control/ControlThrowable.scala
+../scala-scala/src/library/scala/util/control/NonFatal.scala
+../scala-scala/src/library/scala/util/control/NoStackTrace.scala
+../scala-scala/src/library/scala/util/DynamicVariable.scala
+../scala-scala/src/library/scala/util/Either.scala
+../scala-scala/src/library/scala/util/hashing/ByteswapHashing.scala
+../scala-scala/src/library/scala/util/hashing/MurmurHash3.scala
+../scala-scala/src/library/scala/util/hashing/package.scala
+../scala-scala/src/library/scala/util/matching/Regex.scala
+../scala-scala/src/library/scala/util/MurmurHash.scala
+../scala-scala/src/library/scala/util/Properties.scala
+../scala-scala/src/library/scala/util/Random.scala
+
+../scala-scala/src/library/scala/collection/mutable/AnyRefMap.scala
+../scala-scala/src/library/scala/collection/mutable/ArrayBuffer.scala
+../scala-scala/src/library/scala/collection/mutable/ArrayLike.scala
+../scala-scala/src/library/scala/collection/mutable/ArrayOps.scala
+../scala-scala/src/library/scala/collection/mutable/ArraySeq.scala
+../scala-scala/src/library/scala/collection/mutable/ArrayStack.scala
+../scala-scala/src/library/scala/collection/mutable/AVLTree.scala
+../scala-scala/src/library/scala/collection/mutable/BitSet.scala
+../scala-scala/src/library/scala/collection/mutable/Buffer.scala
+../scala-scala/src/library/scala/collection/mutable/BufferProxy.scala
+../scala-scala/src/library/scala/collection/mutable/Cloneable.scala
+../scala-scala/src/library/scala/collection/mutable/DefaultMapModel.scala
+../scala-scala/src/library/scala/collection/mutable/DoubleLinkedList.scala
+../scala-scala/src/library/scala/collection/mutable/DoubleLinkedListLike.scala
+../scala-scala/src/library/scala/collection/mutable/FlatHashTable.scala
+../scala-scala/src/library/scala/collection/mutable/HashEntry.scala
+../scala-scala/src/library/scala/collection/mutable/HashMap.scala
+../scala-scala/src/library/scala/collection/mutable/HashSet.scala
+../scala-scala/src/library/scala/collection/mutable/HashTable.scala
+../scala-scala/src/library/scala/collection/mutable/History.scala
+../scala-scala/src/library/scala/collection/mutable/ImmutableSetAdaptor.scala
+../scala-scala/src/library/scala/collection/mutable/IndexedSeqLike.scala
+../scala-scala/src/library/scala/collection/mutable/IndexedSeqOptimized.scala
+../scala-scala/src/library/scala/collection/mutable/Iterable.scala
+../scala-scala/src/library/scala/collection/mutable/LazyBuilder.scala
+../scala-scala/src/library/scala/collection/mutable/LinearSeq.scala
+../scala-scala/src/library/scala/collection/mutable/LinkedEntry.scala
+../scala-scala/src/library/scala/collection/mutable/LinkedHashSet.scala
+../scala-scala/src/library/scala/collection/mutable/LinkedList.scala
+../scala-scala/src/library/scala/collection/mutable/LinkedListLike.scala
+../scala-scala/src/library/scala/collection/mutable/ListMap.scala
+../scala-scala/src/library/scala/collection/mutable/LongMap.scala
+../scala-scala/src/library/scala/collection/mutable/Map.scala
+../scala-scala/src/library/scala/collection/mutable/MapBuilder.scala
+../scala-scala/src/library/scala/collection/mutable/MapLike.scala
+../scala-scala/src/library/scala/collection/mutable/MapProxy.scala
+../scala-scala/src/library/scala/collection/mutable/MultiMap.scala
+../scala-scala/src/library/scala/collection/mutable/MutableList.scala
+../scala-scala/src/library/scala/collection/mutable/OpenHashMap.scala
+../scala-scala/src/library/scala/collection/mutable/PriorityQueue.scala
+../scala-scala/src/library/scala/collection/mutable/PriorityQueueProxy.scala
+../scala-scala/src/library/scala/collection/mutable/Publisher.scala
+../scala-scala/src/library/scala/collection/mutable/Queue.scala
+../scala-scala/src/library/scala/collection/mutable/QueueProxy.scala
+../scala-scala/src/library/scala/collection/mutable/ResizableArray.scala
+../scala-scala/src/library/scala/collection/mutable/RevertibleHistory.scala
+../scala-scala/src/library/scala/collection/mutable/Seq.scala
+../scala-scala/src/library/scala/collection/mutable/SeqLike.scala
+../scala-scala/src/library/scala/collection/mutable/Set.scala
+../scala-scala/src/library/scala/collection/mutable/SetBuilder.scala
+../scala-scala/src/library/scala/collection/mutable/SetLike.scala
+../scala-scala/src/library/scala/collection/mutable/SetProxy.scala
+../scala-scala/src/library/scala/collection/mutable/SortedSet.scala
+../scala-scala/src/library/scala/collection/mutable/Stack.scala
+../scala-scala/src/library/scala/collection/mutable/StackProxy.scala
+../scala-scala/src/library/scala/collection/mutable/StringBuilder.scala
+../scala-scala/src/library/scala/collection/mutable/Subscriber.scala
+../scala-scala/src/library/scala/collection/mutable/SynchronizedMap.scala
+../scala-scala/src/library/scala/collection/mutable/SynchronizedPriorityQueue.scala
+../scala-scala/src/library/scala/collection/mutable/SynchronizedSet.scala
+../scala-scala/src/library/scala/collection/mutable/SynchronizedStack.scala
+../scala-scala/src/library/scala/collection/mutable/Traversable.scala
+../scala-scala/src/library/scala/collection/mutable/TreeSet.scala
+../scala-scala/src/library/scala/collection/mutable/Undoable.scala
+../scala-scala/src/library/scala/collection/mutable/WeakHashMap.scala
+
+../scala-scala/src/library/scala/collection/convert/DecorateAsJava.scala
+../scala-scala/src/library/scala/collection/convert/DecorateAsScala.scala
+../scala-scala/src/library/scala/collection/convert/Decorators.scala
+../scala-scala/src/library/scala/collection/convert/package.scala
+../scala-scala/src/library/scala/collection/convert/WrapAsJava.scala
+../scala-scala/src/library/scala/collection/convert/WrapAsScala.scala
+
+../scala-scala/src/library/scala/collection/concurrent/Map.scala
+../scala-scala/src/library/scala/collection/concurrent/TrieMap.scala
+
+../scala-scala/src/library/scala/collection/parallel/immutable/package.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParHashMap.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParHashSet.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParIterable.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParMap.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParRange.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParSeq.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParSet.scala
+../scala-scala/src/library/scala/collection/parallel/immutable/ParVector.scala
+
+../scala-scala/src/library/scala/compat/Platform.scala
+
+../scala-scala/src/library/scala/sys/package.scala
+../scala-scala/src/library/scala/sys/Prop.scala
+../scala-scala/src/library/scala/sys/PropImpl.scala
+../scala-scala/src/library/scala/sys/BooleanProp.scala
+../scala-scala/src/library/scala/sys/ShutdownHookThread.scala
+../scala-scala/src/library/scala/sys/process/BasicIO.scala
+../scala-scala/src/library/scala/sys/process/package.scala
+../scala-scala/src/library/scala/sys/process/Process.scala
+../scala-scala/src/library/scala/sys/process/ProcessBuilder.scala
+../scala-scala/src/library/scala/sys/process/ProcessBuilderImpl.scala
+../scala-scala/src/library/scala/sys/process/ProcessImpl.scala
+../scala-scala/src/library/scala/sys/process/ProcessIO.scala
+../scala-scala/src/library/scala/sys/process/ProcessLogger.scala
+
+../scala-scala/src/library/scala/beans/BeanDescription.scala
+../scala-scala/src/library/scala/beans/BeanDisplayName.scala
+../scala-scala/src/library/scala/beans/BeanInfo.scala
+../scala-scala/src/library/scala/beans/BeanInfoSkip.scala
+../scala-scala/src/library/scala/beans/BeanProperty.scala
+../scala-scala/src/library/scala/beans/BooleanBeanProperty.scala
+../scala-scala/src/library/scala/beans/ScalaBeanInfo.scala
+
+../scala-scala/src/library/scala/io/AnsiColor.scala
+../scala-scala/src/library/scala/io/Codec.scala
+../scala-scala/src/library/scala/io/Position.scala
+../scala-scala/src/library/scala/io/StdIn.scala
+
+../scala-scala/src/library/scala/math/BigDecimal.scala
+../scala-scala/src/library/scala/math/BigInt.scala
+../scala-scala/src/library/scala/math/PartiallyOrdered.scala
+
+../scala-scala/src/library/scala/ref/PhantomReference.scala
+../scala-scala/src/library/scala/ref/Reference.scala
+../scala-scala/src/library/scala/ref/ReferenceQueue.scala
+../scala-scala/src/library/scala/ref/ReferenceWrapper.scala
+../scala-scala/src/library/scala/ref/SoftReference.scala
+
+../scala-scala/src/library/scala/reflect/macros/internal/macroImpl.scala
+../scala-scala/src/library/scala/reflect/NoManifest.scala
+../scala-scala/src/library/scala/reflect/OptManifest.scala
+
+../scala-scala/src/library/scala/Responder.scala
+
+../scala-scala/src/library/scala/collection/script/Location.scala
+../scala-scala/src/library/scala/collection/script/Message.scala
+../scala-scala/src/library/scala/collection/script/Scriptable.scala
+
+../scala-scala/src/library/scala/concurrent/Awaitable.scala
+../scala-scala/src/library/scala/concurrent/BatchingExecutor.scala
+../scala-scala/src/library/scala/concurrent/BlockContext.scala
+../scala-scala/src/library/scala/concurrent/Channel.scala
+../scala-scala/src/library/scala/concurrent/DelayedLazyVal.scala
+../scala-scala/src/library/scala/concurrent/duration/Deadline.scala
+../scala-scala/src/library/scala/concurrent/duration/Duration.scala
+../scala-scala/src/library/scala/concurrent/duration/DurationConversions.scala
+../scala-scala/src/library/scala/concurrent/duration/package.scala
+../scala-scala/src/library/scala/concurrent/ExecutionContext.scala
+../scala-scala/src/library/scala/concurrent/FutureTaskRunner.scala
+../scala-scala/src/library/scala/concurrent/impl/Future.scala
+../scala-scala/src/library/scala/concurrent/impl/Promise.scala
+../scala-scala/src/library/scala/concurrent/JavaConversions.scala
+../scala-scala/src/library/scala/concurrent/Lock.scala
+../scala-scala/src/library/scala/concurrent/ManagedBlocker.scala
+../scala-scala/src/library/scala/concurrent/Promise.scala
+../scala-scala/src/library/scala/concurrent/SyncVar.scala
+../scala-scala/src/library/scala/concurrent/TaskRunner.scala
+../scala-scala/src/library/scala/concurrent/ThreadPoolRunner.scala
+
+../scala-scala/src/library/scala/collection/parallel/Combiner.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/LazyCombiner.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/package.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParFlatHashTable.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParHashMap.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParHashSet.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParHashTable.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParIterable.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParMapLike.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParSeq.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParSet.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala
+../scala-scala/src/library/scala/collection/parallel/mutable/UnrolledParArrayCombiner.scala
+../scala-scala/src/library/scala/collection/parallel/ParSeq.scala
+../scala-scala/src/library/scala/collection/parallel/ParSet.scala
+../scala-scala/src/library/scala/collection/parallel/ParSetLike.scala
+../scala-scala/src/library/scala/collection/parallel/PreciseSplitter.scala
+../scala-scala/src/library/scala/collection/parallel/Splitter.scala
+../scala-scala/src/library/scala/collection/parallel/TaskSupport.scala
+
+../scala-scala/src/library/scala/Console.scala
+../scala-scala/src/library/scala/Enumeration.scala
+
+../scala-scala/src/library/scala/annotation/Annotation.scala
+../scala-scala/src/library/scala/annotation/bridge.scala
+../scala-scala/src/library/scala/annotation/ClassfileAnnotation.scala
+../scala-scala/src/library/scala/annotation/compileTimeOnly.scala
+../scala-scala/src/library/scala/annotation/elidable.scala
+../scala-scala/src/library/scala/annotation/implicitNotFound.scala
+../scala-scala/src/library/scala/annotation/meta/beanGetter.scala
+../scala-scala/src/library/scala/annotation/meta/beanSetter.scala
+../scala-scala/src/library/scala/annotation/meta/companionClass.scala
+../scala-scala/src/library/scala/annotation/meta/companionMethod.scala
+../scala-scala/src/library/scala/annotation/meta/companionObject.scala
+../scala-scala/src/library/scala/annotation/meta/field.scala
+../scala-scala/src/library/scala/annotation/meta/getter.scala
+../scala-scala/src/library/scala/annotation/meta/languageFeature.scala
+../scala-scala/src/library/scala/annotation/meta/package.scala
+../scala-scala/src/library/scala/annotation/meta/param.scala
+../scala-scala/src/library/scala/annotation/meta/setter.scala
+../scala-scala/src/library/scala/annotation/migration.scala
+../scala-scala/src/library/scala/annotation/StaticAnnotation.scala
+../scala-scala/src/library/scala/annotation/strictfp.scala
+../scala-scala/src/library/scala/annotation/switch.scala
+../scala-scala/src/library/scala/annotation/tailrec.scala
+../scala-scala/src/library/scala/annotation/TypeConstraint.scala
+../scala-scala/src/library/scala/annotation/unchecked/uncheckedStable.scala
+../scala-scala/src/library/scala/annotation/unspecialized.scala
+../scala-scala/src/library/scala/annotation/varargs.scala
+
+../scala-scala/src/library/scala/runtime/AbstractFunction0.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction1.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction10.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction11.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction12.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction13.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction14.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction15.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction16.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction17.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction18.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction19.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction2.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction20.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction21.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction22.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction3.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction4.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction5.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction6.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction7.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction8.scala
+../scala-scala/src/library/scala/runtime/AbstractFunction9.scala
+../scala-scala/src/library/scala/runtime/AbstractPartialFunction.scala
+../scala-scala/src/library/scala/runtime/Boxed.scala
+../scala-scala/src/library/scala/runtime/MethodCache.scala
+../scala-scala/src/library/scala/runtime/NonLocalReturnControl.scala
+../scala-scala/src/library/scala/runtime/Nothing$.scala
+../scala-scala/src/library/scala/runtime/Null$.scala
+../scala-scala/src/library/scala/runtime/package.scala
+../scala-scala/src/library/scala/runtime/ScalaNumberProxy.scala
+../scala-scala/src/library/scala/runtime/ScalaRunTime.scala
+../scala-scala/src/library/scala/runtime/SeqCharSequence.scala
+../scala-scala/src/library/scala/runtime/StringAdd.scala
+../scala-scala/src/library/scala/runtime/StringFormat.scala
+
+../scala-scala/src/library/scala/App.scala
+
+../scala-scala/src/library/scala/Function.scala
+../scala-scala/src/library/scala/Function0.scala
+
+../scala-scala/src/library/scala/Tuple1.scala
+../scala-scala/src/library/scala/Tuple2.scala
+../scala-scala/src/library/scala/Tuple3.scala
+../scala-scala/src/library/scala/Tuple4.scala
+../scala-scala/src/library/scala/Tuple5.scala
+../scala-scala/src/library/scala/Tuple6.scala
+../scala-scala/src/library/scala/Tuple7.scala
+../scala-scala/src/library/scala/Tuple8.scala
+../scala-scala/src/library/scala/Tuple9.scala
+../scala-scala/src/library/scala/Tuple10.scala
+../scala-scala/src/library/scala/Tuple11.scala
+../scala-scala/src/library/scala/Tuple12.scala
+../scala-scala/src/library/scala/Tuple13.scala
+../scala-scala/src/library/scala/Tuple14.scala
+../scala-scala/src/library/scala/Tuple15.scala
+../scala-scala/src/library/scala/Tuple16.scala
+../scala-scala/src/library/scala/Tuple17.scala
+../scala-scala/src/library/scala/Tuple18.scala
+../scala-scala/src/library/scala/Tuple19.scala
+../scala-scala/src/library/scala/Tuple20.scala
+../scala-scala/src/library/scala/Tuple21.scala
+../scala-scala/src/library/scala/Tuple22.scala
diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala
index f858926d5..84cf1a051 100644
--- a/compiler/test/dotc/tests.scala
+++ b/compiler/test/dotc/tests.scala
@@ -3,6 +3,7 @@ package dotc
import dotty.Jars
import dotty.tools.dotc.CompilerTest
import org.junit.{Before, Test}
+import org.junit.Assert._
import java.io.{ File => JFile }
import scala.reflect.io.Directory
@@ -197,12 +198,49 @@ class tests extends CompilerTest {
@Test def run_all = runFiles(runDir)
- val stdlibFiles = Source.fromFile("./test/dotc/scala-collections.whitelist", "UTF8").getLines()
- .map(_.trim) // allow identation
- .filter(!_.startsWith("#")) // allow comment lines prefixed by #
- .map(_.takeWhile(_ != '#').trim) // allow comments in the end of line
- .filter(_.nonEmpty)
- .toList
+ def loadList(path: String) = Source.fromFile(path, "UTF8").getLines()
+ .map(_.trim) // allow identation
+ .filter(!_.startsWith("#")) // allow comment lines prefixed by #
+ .map(_.takeWhile(_ != '#').trim) // allow comments in the end of line
+ .filter(_.nonEmpty)
+ .toList
+
+ private def stdlibWhitelistFile = "./test/dotc/scala-collections.whitelist"
+ private def stdlibBlackFile = "./test/dotc/scala-collections.blacklist"
+
+ private val stdlibFiles: List[String] = loadList(stdlibWhitelistFile)
+
+ @Test def checkWBLists = {
+ val stdlibFilesBlackListed = loadList(stdlibBlackFile)
+
+ def checkForRepeated(list: List[String], listFile: String) = {
+ val duplicates = list.groupBy(x => x).filter(_._2.size > 1).filter(_._2.size > 1)
+ val msg = duplicates.map(x => s"'${x._1}' appears ${x._2.size} times").mkString(s"Duplicate entries in $listFile:\n", "\n", "\n")
+ assertTrue(msg, duplicates.isEmpty)
+ }
+ checkForRepeated(stdlibFiles, stdlibWhitelistFile)
+ checkForRepeated(stdlibFilesBlackListed, stdlibBlackFile)
+
+ val whitelistSet = stdlibFiles.toSet
+ val blacklistSet = stdlibFilesBlackListed.toSet
+
+ val intersection = whitelistSet.intersect(blacklistSet)
+ val msgIntersection =
+ intersection.map(x => s"'$x'").mkString(s"Entries where found in both $stdlibWhitelistFile and $stdlibBlackFile:\n", "\n", "\n")
+ assertTrue(msgIntersection, intersection.isEmpty)
+
+ def collectAllFilesInDir(dir: JFile, acc: List[String]): List[String] = {
+ val files = dir.listFiles()
+ val acc2 = files.foldLeft(acc)((acc1, file) => if (file.isFile && file.getPath.endsWith(".scala")) file.getPath :: acc1 else acc1)
+ files.foldLeft(acc2)((acc3, file) => if (file.isDirectory) collectAllFilesInDir(file, acc3) else acc3)
+ }
+ val filesInStdLib = collectAllFilesInDir(new JFile("../scala-scala/src/library/"), Nil)
+ val missingFiles = filesInStdLib.toSet -- whitelistSet -- blacklistSet
+ val msgMissing =
+ missingFiles.map(x => s"'$x'").mkString(s"Entries are missing in $stdlibWhitelistFile or $stdlibBlackFile:\n", "\n", "\n")
+ assertTrue(msgMissing, missingFiles.isEmpty)
+ }
+
@Test def compileStdLib = compileList("compileStdLib", stdlibFiles, "-migration" :: "-Yno-inline" :: scala2mode)
@Test def compileMixed = compileLine(