diff options
author | odersky <odersky@gmail.com> | 2017-01-12 16:18:20 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-12 16:18:20 +0700 |
commit | 36237cbc7449079574b4171a85bc7dccf19e371d (patch) | |
tree | 45bf3fd30f0ad343268f2dadba365cbb67f3c227 /compiler | |
parent | ba7e12999dc645dbcba04cf365dfd4d621ee4662 (diff) | |
parent | 783a80d0d8f726f7169022457152d4301779244f (diff) | |
download | dotty-36237cbc7449079574b4171a85bc7dccf19e371d.tar.gz dotty-36237cbc7449079574b4171a85bc7dccf19e371d.tar.bz2 dotty-36237cbc7449079574b4171a85bc7dccf19e371d.zip |
Merge pull request #1880 from dotty-staging/improve-whitelist-infrastructure
Improve whitelist infrastructure.
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/test/dotc/scala-collections.blacklist | 36 | ||||
-rw-r--r-- | compiler/test/dotc/scala-collections.whitelist | 628 | ||||
-rw-r--r-- | compiler/test/dotc/tests.scala | 49 | ||||
-rw-r--r-- | compiler/test/dotty/tools/StdLibSources.scala | 59 |
4 files changed, 87 insertions, 685 deletions
diff --git a/compiler/test/dotc/scala-collections.blacklist b/compiler/test/dotc/scala-collections.blacklist index 321814ab0..d6972a645 100644 --- a/compiler/test/dotc/scala-collections.blacklist +++ b/compiler/test/dotc/scala-collections.blacklist @@ -1,83 +1,83 @@ ## Errors having to do with bootstrap -../scala-scala/src/library/scala/Function1.scala -../scala-scala/src/library/scala/Function2.scala +scala/Function1.scala +scala/Function2.scala # Cyclic reference because of @specialized annotation ## Errors having to do with deep subtypes -../scala-scala/src/library/scala/collection/generic/ParSetFactory.scala +scala/collection/generic/ParSetFactory.scala # This gives a deep subtype violation when run with the rest of the whitelist. # Works without -Yno-deep-subtypes, though. -../scala-scala/src/library/scala/collection/parallel/mutable/ParMap.scala +scala/collection/parallel/mutable/ParMap.scala # -Yno-deep-subtypes fails -../scala-scala/src/library/scala/collection/parallel/ParMap.scala +scala/collection/parallel/ParMap.scala # -Yno-deep-subtypes fails -../scala-scala/src/library/scala/collection/parallel/ParMapLike.scala +scala/collection/parallel/ParMapLike.scala # -Yno-deep-subtypes fails ## Ycheck failures, presumably linked to TailCalls -../scala-scala/src/library/scala/collection/parallel/ParIterableLike.scala +scala/collection/parallel/ParIterableLike.scala # -Ycheck:classOf fails -../scala-scala/src/library/scala/collection/parallel/ParSeqLike.scala +scala/collection/parallel/ParSeqLike.scala # -Ycheck:classOf fails -../scala-scala/src/library/scala/util/control/TailCalls.scala +scala/util/control/TailCalls.scala # -Ycheck:classOf fails ## Errors having to do with unavailable APIs or language features: -../scala-scala/src/library/scala/reflect/ClassManifestDeprecatedApis.scala +scala/reflect/ClassManifestDeprecatedApis.scala # 51 | import Manifest._ # | ^^^^^^^^ # | not found: Manifest -../scala-scala/src/library/scala/reflect/ClassTag.scala +scala/reflect/ClassTag.scala # 124 | val Short : ClassTag[scala.Short] = Manifest.Short # | ^^^^^^^^ # | not found: Manifest -../scala-scala/src/library/scala/reflect/Manifest.scala +scala/reflect/Manifest.scala # 104 | private def readResolve(): Any = Manifest.Short # | ^^^^^^^^ # | not found: Manifest -../scala-scala/src/library/scala/text/Document.scala +scala/text/Document.scala # Lots of type errors for pattern matches, having to do with the fact # that Document contains a :: method without corresponding extractor, # but still wants to extract lists using ::. We won't support that. # Since Document should have been removed already, let's ignore it. -../scala-scala/src/library/scala/AnyVal.scala +scala/AnyVal.scala # 55 |abstract class AnyVal extends Any { # |^ # |illegal redefinition of standard class AnyVal # (This is intended) -../scala-scala/src/library/scala/collection/parallel/Tasks.scala +scala/collection/parallel/Tasks.scala # java.lang.StackOverflowError -../scala-scala/src/library/scala/reflect/package.scala +scala/reflect/package.scala # 63 | private[scala] def materializeClassTag[T](): ClassTag[T] = macro ??? # | ^^^^^ # | not found: macro -../scala-scala/src/library/scala/StringContext.scala +scala/StringContext.scala # 168 | def f[A >: Any](args: A*): String = macro ??? # | ^^^^^ # | not found: macro -../scala-scala/src/library/scala/util/control/Exception.scala +scala/util/control/Exception.scala # 51 | implicit def throwableSubtypeToCatcher[Ex <: Throwable: ClassTag, T](pf: PartialFunction[Ex, T]) = # | ^ # | cyclic reference involving method mkCatcher diff --git a/compiler/test/dotc/scala-collections.whitelist b/compiler/test/dotc/scala-collections.whitelist deleted file mode 100644 index 57c71d647..000000000 --- a/compiler/test/dotc/scala-collections.whitelist +++ /dev/null @@ -1,628 +0,0 @@ -../scala-scala/src/library/scala/runtime/RichBoolean.scala -../scala-scala/src/library/scala/runtime/RichByte.scala -../scala-scala/src/library/scala/runtime/RichChar.scala -../scala-scala/src/library/scala/runtime/RichDouble.scala -../scala-scala/src/library/scala/runtime/RichException.scala -../scala-scala/src/library/scala/runtime/RichFloat.scala -../scala-scala/src/library/scala/runtime/RichInt.scala -../scala-scala/src/library/scala/runtime/RichLong.scala -../scala-scala/src/library/scala/runtime/RichShort.scala -../scala-scala/src/library/scala/runtime/Tuple2Zipped.scala -../scala-scala/src/library/scala/runtime/Tuple3Zipped.scala -../scala-scala/src/library/scala/Array.scala -../scala-scala/src/library/scala/NotImplementedError.scala -../scala-scala/src/library/scala/AnyValCompanion.scala - -# AnyVal is a synthesized class in Dotty, cannot be compiled from source. -#../scala-scala/src/library/scala/AnyVal.scala - -../scala-scala/src/library/scala/Boolean.scala -../scala-scala/src/library/scala/Byte.scala -../scala-scala/src/library/scala/Char.scala -../scala-scala/src/library/scala/Double.scala -../scala-scala/src/library/scala/Float.scala -../scala-scala/src/library/scala/Int.scala -../scala-scala/src/library/scala/Long.scala -../scala-scala/src/library/scala/Short.scala -../scala-scala/src/library/scala/Unit.scala -../scala-scala/src/library/scala/Cloneable.scala -../scala-scala/src/library/scala/DelayedInit.scala -../scala-scala/src/library/scala/Dynamic.scala -../scala-scala/src/library/scala/Equals.scala -../scala-scala/src/library/scala/Immutable.scala -../scala-scala/src/library/scala/MatchError.scala -../scala-scala/src/library/scala/Mutable.scala -../scala-scala/src/library/scala/NotNull.scala -../scala-scala/src/library/scala/Option.scala -../scala-scala/src/library/scala/PartialFunction.scala -../scala-scala/src/library/scala/Predef.scala -../scala-scala/src/library/scala/Product.scala -../scala-scala/src/library/scala/Product1.scala -../scala-scala/src/library/scala/Product10.scala -../scala-scala/src/library/scala/Product11.scala -../scala-scala/src/library/scala/Product12.scala -../scala-scala/src/library/scala/Product13.scala -../scala-scala/src/library/scala/Product14.scala -../scala-scala/src/library/scala/Product15.scala -../scala-scala/src/library/scala/Product16.scala -../scala-scala/src/library/scala/Product17.scala -../scala-scala/src/library/scala/Product18.scala -../scala-scala/src/library/scala/Product19.scala -../scala-scala/src/library/scala/Product2.scala -../scala-scala/src/library/scala/Product20.scala -../scala-scala/src/library/scala/Product21.scala -../scala-scala/src/library/scala/Product22.scala -../scala-scala/src/library/scala/Product3.scala -../scala-scala/src/library/scala/Product4.scala -../scala-scala/src/library/scala/Product5.scala -../scala-scala/src/library/scala/Product6.scala -../scala-scala/src/library/scala/Product7.scala -../scala-scala/src/library/scala/Product8.scala -../scala-scala/src/library/scala/Product9.scala -../scala-scala/src/library/scala/Proxy.scala -../scala-scala/src/library/scala/SerialVersionUID.scala -../scala-scala/src/library/scala/Serializable.scala -../scala-scala/src/library/scala/Specializable.scala -../scala-scala/src/library/scala/Symbol.scala -#../scala-scala/src/library/scala/StringContext.scala -../scala-scala/src/library/scala/UninitializedError.scala -../scala-scala/src/library/scala/UninitializedFieldError.scala -../scala-scala/src/library/scala/collection/IndexedSeqOptimized.scala -../scala-scala/src/library/scala/collection/IterableLike.scala -../scala-scala/src/library/scala/collection/Iterator.scala -../scala-scala/src/library/scala/collection/LinearSeqOptimized.scala -../scala-scala/src/library/scala/collection/TraversableOnce.scala -../scala-scala/src/library/scala/collection/generic/Growable.scala -../scala-scala/src/library/scala/collection/generic/TraversableForwarder.scala -../scala-scala/src/library/scala/collection/immutable/BitSet.scala -../scala-scala/src/library/scala/collection/immutable/DefaultMap.scala -../scala-scala/src/library/scala/collection/immutable/IndexedSeq.scala -../scala-scala/src/library/scala/collection/immutable/Iterable.scala -../scala-scala/src/library/scala/collection/immutable/LinearSeq.scala -../scala-scala/src/library/scala/collection/immutable/List.scala -../scala-scala/src/library/scala/collection/immutable/MapProxy.scala -../scala-scala/src/library/scala/collection/immutable/PagedSeq.scala -../scala-scala/src/library/scala/collection/immutable/Queue.scala -../scala-scala/src/library/scala/collection/immutable/Seq.scala -../scala-scala/src/library/scala/collection/mutable/IndexedSeq.scala -../scala-scala/src/library/scala/collection/mutable/ListBuffer.scala -../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/mutable/DefaultEntry.scala -../scala-scala/src/library/scala/collection/mutable/LinkedHashMap.scala -../scala-scala/src/library/scala/collection/mutable/ObservableMap.scala -../scala-scala/src/library/scala/collection/mutable/ObservableSet.scala -../scala-scala/src/library/scala/collection/mutable/SynchronizedQueue.scala -../scala-scala/src/library/scala/collection/mutable/UnrolledBuffer.scala -../scala-scala/src/library/scala/collection/mutable/SynchronizedBuffer.scala - -../scala-scala/src/library/scala/collection/immutable/Stack.scala -../scala-scala/src/library/scala/collection/immutable/StringLike.scala -../scala-scala/src/library/scala/collection/immutable/StringOps.scala -../scala-scala/src/library/scala/collection/immutable/Traversable.scala -../scala-scala/src/library/scala/collection/immutable/Vector.scala -../scala-scala/src/library/scala/collection/immutable/WrappedString.scala -../scala-scala/src/library/scala/collection/mutable/Builder.scala -../scala-scala/src/library/scala/collection/mutable/GrowingBuilder.scala -../scala-scala/src/library/scala/collection/mutable/WrappedArray.scala -../scala-scala/src/library/scala/collection/mutable/WrappedArrayBuilder.scala -../scala-scala/src/library/scala/deprecated.scala -../scala-scala/src/library/scala/deprecatedInheritance.scala -../scala-scala/src/library/scala/deprecatedName.scala -../scala-scala/src/library/scala/deprecatedOverriding.scala -../scala-scala/src/library/scala/inline.scala -../scala-scala/src/library/scala/language.scala -../scala-scala/src/library/scala/languageFeature.scala -../scala-scala/src/library/scala/math/Equiv.scala -../scala-scala/src/library/scala/math/Fractional.scala -../scala-scala/src/library/scala/math/Integral.scala -../scala-scala/src/library/scala/math/Numeric.scala -../scala-scala/src/library/scala/math/Ordered.scala -../scala-scala/src/library/scala/math/Ordering.scala -../scala-scala/src/library/scala/math/PartialOrdering.scala -../scala-scala/src/library/scala/math/ScalaNumericConversions.scala -../scala-scala/src/library/scala/math/package.scala -../scala-scala/src/library/scala/native.scala -../scala-scala/src/library/scala/noinline.scala -../scala-scala/src/library/scala/package.scala -../scala-scala/src/library/scala/remote.scala -../scala-scala/src/library/scala/specialized.scala -../scala-scala/src/library/scala/throws.scala -../scala-scala/src/library/scala/transient.scala -../scala-scala/src/library/scala/unchecked.scala -../scala-scala/src/library/scala/volatile.scala -../scala-scala/src/library/scala/collection/BitSet.scala -../scala-scala/src/library/scala/collection/BitSetLike.scala -../scala-scala/src/library/scala/collection/BufferedIterator.scala -../scala-scala/src/library/scala/collection/CustomParallelizable.scala -../scala-scala/src/library/scala/collection/DefaultMap.scala -../scala-scala/src/library/scala/collection/GenIterable.scala -../scala-scala/src/library/scala/collection/GenIterableLike.scala -../scala-scala/src/library/scala/collection/GenMap.scala -../scala-scala/src/library/scala/collection/GenMapLike.scala -../scala-scala/src/library/scala/collection/GenSeq.scala -../scala-scala/src/library/scala/collection/GenSeqLike.scala -../scala-scala/src/library/scala/collection/GenSet.scala -../scala-scala/src/library/scala/collection/GenSetLike.scala -../scala-scala/src/library/scala/collection/GenTraversable.scala -../scala-scala/src/library/scala/collection/GenTraversableLike.scala - -../scala-scala/src/library/scala/collection/GenTraversableOnce.scala -../scala-scala/src/library/scala/collection/IndexedSeq.scala -../scala-scala/src/library/scala/collection/IndexedSeqLike.scala -../scala-scala/src/library/scala/collection/Iterable.scala -../scala-scala/src/library/scala/collection/IterableProxy.scala -../scala-scala/src/library/scala/collection/IterableProxyLike.scala -../scala-scala/src/library/scala/collection/JavaConversions.scala -../scala-scala/src/library/scala/collection/JavaConverters.scala -../scala-scala/src/library/scala/collection/LinearSeq.scala -../scala-scala/src/library/scala/collection/LinearSeqLike.scala -../scala-scala/src/library/scala/collection/Map.scala -../scala-scala/src/library/scala/collection/MapLike.scala -../scala-scala/src/library/scala/collection/MapProxy.scala -../scala-scala/src/library/scala/collection/MapProxyLike.scala -../scala-scala/src/library/scala/collection/Parallel.scala -../scala-scala/src/library/scala/collection/Parallelizable.scala -../scala-scala/src/library/scala/collection/Searching.scala -../scala-scala/src/library/scala/collection/Seq.scala -../scala-scala/src/library/scala/collection/SeqExtractors.scala -../scala-scala/src/library/scala/collection/SeqLike.scala -../scala-scala/src/library/scala/collection/SeqProxy.scala -../scala-scala/src/library/scala/collection/SeqProxyLike.scala -../scala-scala/src/library/scala/collection/Set.scala -../scala-scala/src/library/scala/collection/SetLike.scala -../scala-scala/src/library/scala/collection/SetProxy.scala -../scala-scala/src/library/scala/collection/SetProxyLike.scala -../scala-scala/src/library/scala/collection/SortedMap.scala -../scala-scala/src/library/scala/collection/SortedMapLike.scala -../scala-scala/src/library/scala/collection/SortedSet.scala -../scala-scala/src/library/scala/collection/SortedSetLike.scala -../scala-scala/src/library/scala/collection/Traversable.scala -../scala-scala/src/library/scala/collection/TraversableLike.scala - -../scala-scala/src/library/scala/collection/TraversableProxy.scala -../scala-scala/src/library/scala/collection/TraversableProxyLike.scala -../scala-scala/src/library/scala/collection/package.scala - -../scala-scala/src/library/scala/collection/IterableView.scala -../scala-scala/src/library/scala/collection/SeqView.scala -../scala-scala/src/library/scala/collection/TraversableView.scala - -## those classes use early initialisers. -../scala-scala/src/library/scala/collection/TraversableViewLike.scala -../scala-scala/src/library/scala/collection/IterableViewLike.scala -../scala-scala/src/library/scala/collection/SeqViewLike.scala -../scala-scala/src/library/scala/collection/mutable/IndexedSeqView.scala -../scala-scala/src/library/scala/collection/immutable/StreamViewLike.scala -../scala-scala/src/library/scala/collection/immutable/TrieIterator.scala - -../scala-scala/src/library/scala/collection/immutable/HashMap.scala -../scala-scala/src/library/scala/collection/immutable/HashSet.scala - - -../scala-scala/src/library/scala/collection/immutable/IntMap.scala -../scala-scala/src/library/scala/collection/immutable/ListMap.scala -../scala-scala/src/library/scala/collection/immutable/ListSet.scala -../scala-scala/src/library/scala/collection/immutable/LongMap.scala - -../scala-scala/src/library/scala/collection/immutable/Map.scala -../scala-scala/src/library/scala/collection/immutable/MapLike.scala -../scala-scala/src/library/scala/collection/immutable/NumericRange.scala -../scala-scala/src/library/scala/collection/immutable/Range.scala -../scala-scala/src/library/scala/collection/immutable/RedBlackTree.scala - -# had a variance error, now fixed. -../scala-scala/src/library/scala/collection/immutable/Set.scala - -../scala-scala/src/library/scala/collection/immutable/SetProxy.scala - -# https://github.com/lampepfl/dotty/issues/942 -../scala-scala/src/library/scala/collection/immutable/SortedMap.scala -../scala-scala/src/library/scala/collection/immutable/SortedSet.scala - -# https://github.com/lampepfl/dotty/issues/941 -../scala-scala/src/library/scala/collection/immutable/Stream.scala -../scala-scala/src/library/scala/collection/immutable/StreamView.scala - -../scala-scala/src/library/scala/collection/immutable/TreeMap.scala -../scala-scala/src/library/scala/collection/immutable/TreeSet.scala -../scala-scala/src/library/scala/collection/generic/BitOperations.scala -../scala-scala/src/library/scala/collection/generic/BitSetFactory.scala -../scala-scala/src/library/scala/collection/generic/CanBuildFrom.scala -../scala-scala/src/library/scala/collection/generic/CanCombineFrom.scala -../scala-scala/src/library/scala/collection/generic/ClassTagTraversableFactory.scala -../scala-scala/src/library/scala/collection/generic/Clearable.scala -../scala-scala/src/library/scala/collection/generic/FilterMonadic.scala -../scala-scala/src/library/scala/collection/generic/GenMapFactory.scala -../scala-scala/src/library/scala/collection/generic/GenSeqFactory.scala -../scala-scala/src/library/scala/collection/generic/GenSetFactory.scala -../scala-scala/src/library/scala/collection/generic/GenTraversableFactory.scala -../scala-scala/src/library/scala/collection/generic/GenericClassTagCompanion.scala -../scala-scala/src/library/scala/collection/generic/GenericClassTagTraversableTemplate.scala -../scala-scala/src/library/scala/collection/generic/GenericCompanion.scala -../scala-scala/src/library/scala/collection/generic/GenericOrderedCompanion.scala -../scala-scala/src/library/scala/collection/generic/GenericOrderedTraversableTemplate.scala -../scala-scala/src/library/scala/collection/generic/GenericParCompanion.scala -../scala-scala/src/library/scala/collection/generic/GenericParTemplate.scala -../scala-scala/src/library/scala/collection/generic/GenericSeqCompanion.scala -../scala-scala/src/library/scala/collection/generic/GenericSetTemplate.scala - -../scala-scala/src/library/scala/collection/generic/GenericTraversableTemplate.scala - -../scala-scala/src/library/scala/collection/generic/HasNewBuilder.scala -../scala-scala/src/library/scala/collection/generic/HasNewCombiner.scala - -../scala-scala/src/library/scala/collection/generic/ImmutableMapFactory.scala -../scala-scala/src/library/scala/collection/generic/ImmutableSetFactory.scala - -../scala-scala/src/library/scala/collection/generic/ImmutableSortedMapFactory.scala -../scala-scala/src/library/scala/collection/generic/ImmutableSortedSetFactory.scala -../scala-scala/src/library/scala/collection/generic/IndexedSeqFactory.scala -../scala-scala/src/library/scala/collection/generic/IsSeqLike.scala -../scala-scala/src/library/scala/collection/generic/IsTraversableLike.scala -../scala-scala/src/library/scala/collection/generic/IsTraversableOnce.scala -../scala-scala/src/library/scala/collection/generic/IterableForwarder.scala - -../scala-scala/src/library/scala/collection/generic/MapFactory.scala -../scala-scala/src/library/scala/collection/generic/MutableMapFactory.scala -../scala-scala/src/library/scala/collection/generic/MutableSetFactory.scala -../scala-scala/src/library/scala/collection/generic/ParMapFactory.scala -../scala-scala/src/library/scala/collection/generic/SeqFactory.scala -../scala-scala/src/library/scala/collection/generic/SortedMapFactory.scala -../scala-scala/src/library/scala/collection/generic/SortedSetFactory.scala -../scala-scala/src/library/scala/collection/generic/SetFactory.scala -../scala-scala/src/library/scala/collection/generic/ParFactory.scala - -../scala-scala/src/library/scala/collection/generic/MutableSortedSetFactory.scala - -# deep subtype -#../scala-scala/src/library/scala/collection/generic/ParSetFactory.scala - -../scala-scala/src/library/scala/collection/generic/OrderedTraversableFactory.scala -../scala-scala/src/library/scala/collection/generic/SeqForwarder.scala -../scala-scala/src/library/scala/collection/generic/Shrinkable.scala -../scala-scala/src/library/scala/collection/generic/Signalling.scala -../scala-scala/src/library/scala/collection/generic/Sizing.scala -../scala-scala/src/library/scala/collection/generic/SliceInterval.scala -../scala-scala/src/library/scala/collection/generic/Sorted.scala -../scala-scala/src/library/scala/collection/generic/Subtractable.scala -../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 - -#../scala-scala/src/library/scala/util/control/Exception.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/Hashing.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/util/Sorting.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/mutable/ImmutableMapAdaptor.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/convert/Wrappers.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/SystemProperties.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/io/BufferedSource.scala -../scala-scala/src/library/scala/io/Source.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/ref/WeakReference.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/reflect/NameTransformer.scala -#../scala-scala/src/library/scala/reflect/package.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/package.scala -../scala-scala/src/library/scala/concurrent/Future.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/concurrent/SyncChannel.scala -../scala-scala/src/library/scala/concurrent/impl/ExecutionContextImpl.scala - -../scala-scala/src/library/scala/collection/parallel/package.scala -../scala-scala/src/library/scala/collection/parallel/ParIterable.scala -#../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/ParIterableLike.scala -#../scala-scala/src/library/scala/collection/parallel/ParSeqLike.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/ResizableParArrayCombiner.scala -../scala-scala/src/library/scala/collection/parallel/RemainsIterator.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/ParTrieMap.scala -../scala-scala/src/library/scala/collection/parallel/mutable/UnrolledParArrayCombiner.scala -../scala-scala/src/library/scala/collection/parallel/mutable/ParArray.scala -#../scala-scala/src/library/scala/collection/parallel/mutable/ParMap.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/collection/parallel/Tasks.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/unchecked/uncheckedVariance.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/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/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 a7961d937..608132bca 100644 --- a/compiler/test/dotc/tests.scala +++ b/compiler/test/dotc/tests.scala @@ -2,6 +2,7 @@ package dotc import dotty.Jars import dotty.tools.dotc.CompilerTest +import dotty.tools.StdLibSources import org.junit.{Before, Test} import org.junit.Assert._ @@ -201,50 +202,20 @@ class tests extends CompilerTest { @Test def run_all = runFiles(runDir) - 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 val stdlibFiles: List[String] = StdLibSources.whitelisted - private def stdlibWhitelistFile = "./test/dotc/scala-collections.whitelist" - private def stdlibBlackFile = "./test/dotc/scala-collections.blacklist" + @Test def checkWBLists = { + val stdlibFilesBlackListed = StdLibSources.blacklisted - private val stdlibFiles: List[String] = loadList(stdlibWhitelistFile) + val duplicates = stdlibFilesBlackListed.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 ${StdLibSources.blacklistFile}:\n", "\n", "\n") + assertTrue(msg, duplicates.isEmpty) - @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) + val filesNotInStdLib = stdlibFilesBlackListed.toSet -- StdLibSources.all + val msg2 = filesNotInStdLib.map(x => s"'$x'").mkString(s"Entries in ${StdLibSources.blacklistFile} where not found:\n", "\n", "\n") + assertTrue(msg2, filesNotInStdLib.isEmpty) } - @Test def compileStdLib = compileList("compileStdLib", stdlibFiles, "-migration" :: "-Yno-inline" :: scala2mode) @Test def compileMixed = compileLine( """../tests/pos/B.scala diff --git a/compiler/test/dotty/tools/StdLibSources.scala b/compiler/test/dotty/tools/StdLibSources.scala new file mode 100644 index 000000000..78a132426 --- /dev/null +++ b/compiler/test/dotty/tools/StdLibSources.scala @@ -0,0 +1,59 @@ +package dotty.tools + +import java.io.File + +import scala.io.Source + +object StdLibSources { + + /* For debug only */ + private val useExplicitWhiteList = false + + private final val stdLibPath = "../scala-scala/src/library/" + + def blacklistFile: String = "./test/dotc/scala-collections.blacklist" + private def whitelistFile: String = "./test/dotc/scala-collections.whitelist" + + def whitelisted: List[String] = { + lazy val whitelistBasedOnBlacklist = all.diff(blacklisted) + if (!useExplicitWhiteList) { + whitelistBasedOnBlacklist + } else if (!new File(whitelistFile).exists()) { + genWhitelist(whitelistBasedOnBlacklist.map(_.replace(stdLibPath, ""))) + whitelistBasedOnBlacklist + } else { + loadList(whitelistFile) + } + } + + def blacklisted: List[String] = loadList(blacklistFile) + + def all: List[String] = { + def collectAllFilesInDir(dir: File, 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) + } + collectAllFilesInDir(new File(stdLibPath), Nil) + } + + private def genWhitelist(list: List[String]): Unit = { + println(s"Generating $whitelistFile based on $blacklistFile") + val whitelist = new File(whitelistFile) + val p = new java.io.PrintWriter(whitelist) + try { + list.foreach(p.println) + } finally { + p.close() + } + } + + private def loadList(path: String): List[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) + .map(stdLibPath + _) + .toList + +} |