From 8a61ff432543a29234193cd1f7c14abd3f3d31a0 Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Wed, 2 Nov 2016 11:08:28 +0100 Subject: Move compiler and compiler tests to compiler dir --- compiler/test/dotc/build.scala | 40 +++ compiler/test/dotc/comptest.scala | 24 ++ compiler/test/dotc/scala-collections.whitelist | 282 +++++++++++++++++++ compiler/test/dotc/tests.scala | 359 +++++++++++++++++++++++++ 4 files changed, 705 insertions(+) create mode 100644 compiler/test/dotc/build.scala create mode 100644 compiler/test/dotc/comptest.scala create mode 100644 compiler/test/dotc/scala-collections.whitelist create mode 100644 compiler/test/dotc/tests.scala (limited to 'compiler/test/dotc') diff --git a/compiler/test/dotc/build.scala b/compiler/test/dotc/build.scala new file mode 100644 index 000000000..b1c8db7c7 --- /dev/null +++ b/compiler/test/dotc/build.scala @@ -0,0 +1,40 @@ +package dotc + +import java.io.File + +object build extends tests { + + private def deleteFilesInFolder(folder: File, deleteFolder: Boolean = false): Unit = { + val files = folder.listFiles() + if(files != null) { //some JVMs return null for empty dirs + for(f <- files) { + if(f.isDirectory) { + deleteFilesInFolder(f, deleteFolder = true) + } else { + f.delete() + } + } + } + if(deleteFolder) folder.delete() + } + + def clearOutput() = { + deleteFilesInFolder(new File(defaultOutputDir)) // clear previous output + val keepFile = new File(defaultOutputDir + ".keep") + keepFile.createNewFile() + } + + def main(args: Array[String]): Unit = { + println("---------- Building bootstrapped dotty-lib ----------------------------------------------") + clearOutput() + dottyBootedLib + val p1 = Runtime.getRuntime.exec(Array("jar", "cf", "dotty-lib.jar", "-C", "out", ".")) + p1.waitFor() + + println("---------- Building bootstrapped dotty depending on dotty-lib compiled by dotty ----------") + clearOutput() + dottyDependsOnBootedLib + val p2 = Runtime.getRuntime.exec(Array("jar", "cf", "dotty.jar", "-C", "out", ".")) + p2.waitFor() + } +} diff --git a/compiler/test/dotc/comptest.scala b/compiler/test/dotc/comptest.scala new file mode 100644 index 000000000..5ae1823e8 --- /dev/null +++ b/compiler/test/dotc/comptest.scala @@ -0,0 +1,24 @@ +package dotc + +import dotty.tools.dotc.CompilerTest + +object comptest extends CompilerTest { + + override val generatePartestFiles = false + val defaultOutputDir: String = "" + + val posDir = "./tests/pos/" + val negDir = "./tests/neg/" + val dotcDir = "./src/dotty/" + + def main(args: Array[String]) = + compileList("comptest", List( + dotcDir + "tools/dotc/CompilationUnit.scala", + dotcDir + "tools/dotc/core/Types.scala", + dotcDir + "tools/dotc/ast/Trees.scala"), List( + "#runs", "2", + "-Ylog:frontend", + "-Xprompt"))(Nil) + +// compileDir(dotcDir + "tools/dotc/", "printing", List("-Xprompt", "-Ylog:frontend", "#runs", "2", "-uniqid")) +} diff --git a/compiler/test/dotc/scala-collections.whitelist b/compiler/test/dotc/scala-collections.whitelist new file mode 100644 index 000000000..29db48cf2 --- /dev/null +++ b/compiler/test/dotc/scala-collections.whitelist @@ -0,0 +1,282 @@ +./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/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/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/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 + +# https://github.com/lampepfl/dotty/issues/974 -> @smarter +./scala-scala/src/library/scala/collection/generic/MutableSortedSetFactory.scala + +# cyclic reference, maybe related to #974 -> @smarter +#./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 diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala new file mode 100644 index 000000000..bb3b1e5e0 --- /dev/null +++ b/compiler/test/dotc/tests.scala @@ -0,0 +1,359 @@ +package dotc + +import dotty.tools.dotc.CompilerTest +import org.junit.{Before, Test} + +import java.io.{ File => JFile } +import scala.reflect.io.Directory +import scala.io.Source + +// tests that match regex '(pos|dotc|run|java|compileStdLib)\.*' would be executed as benchmarks. +class tests extends CompilerTest { + + def isRunByJenkins: Boolean = sys.props.isDefinedAt("dotty.jenkins.build") + + val defaultOutputDir = "../out/" + + val noCheckOptions = List( +// "-verbose", +// "-Ylog:frontend", +// "-Xprompt", +// "-explaintypes", +// "-Yshow-suppressed-errors", + "-pagewidth", "120", + "-d", defaultOutputDir + ) + + val checkOptions = List( + "-Yno-deep-subtypes", + "-Yno-double-bindings", + "-Yforce-sbt-phases", + "-color:never" + ) + + val classPath = { + val paths = List( + "../library/target/scala-2.11/dotty-library_2.11-0.1-SNAPSHOT.jar", + "./target/scala-2.11/dotty-compiler_2.11-0.1-SNAPSHOT.jar", + "../interfaces/target/dotty-interfaces-0.1-SNAPSHOT.jar" + ).map { p => + val file = new JFile(p) + assert( + file.exists, + s"""File "$p" couldn't be found. Run `packageAll` from build tool before testing""" + ) + file.getAbsolutePath + }.mkString(":") + + List("-classpath", paths) + } + + implicit val defaultOptions = noCheckOptions ++ { + if (isRunByJenkins) List("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef") // should be Ycheck:all, but #725 + else List("-Ycheck:tailrec,resolveSuper,mixin,restoreScopes,labelDef") + } ++ checkOptions ++ classPath + + val testPickling = List("-Xprint-types", "-Ytest-pickler", "-Ystop-after:pickler", "-Yprintpos") + + val twice = List("#runs", "2") + val staleSymbolError: List[String] = List() + + val allowDeepSubtypes = defaultOptions diff List("-Yno-deep-subtypes") + val allowDoubleBindings = defaultOptions diff List("-Yno-double-bindings") + val scala2mode = List("-language:Scala2") + + val explicitUTF8 = List("-encoding", "UTF8") + val explicitUTF16 = List("-encoding", "UTF16") + + val testsDir = "../tests/" + val posDir = testsDir + "pos/" + val posSpecialDir = testsDir + "pos-special/" + val posScala2Dir = testsDir + "pos-scala2/" + val negDir = testsDir + "neg/" + val runDir = testsDir + "run/" + val newDir = testsDir + "new/" + val replDir = testsDir + "repl/" + + val sourceDir = "./src/" + val dottyDir = sourceDir + "dotty/" + val toolsDir = dottyDir + "tools/" + val backendDir = toolsDir + "backend/" + val dotcDir = toolsDir + "dotc/" + val coreDir = dotcDir + "core/" + val parsingDir = dotcDir + "parsing/" + val dottyReplDir = dotcDir + "repl/" + val typerDir = dotcDir + "typer/" + val libDir = "../library/src/" + + @Before def cleanup(): Unit = { + // remove class files from stdlib and tests compilation + Directory(defaultOutputDir + "scala").deleteRecursively() + Directory(defaultOutputDir + "java").deleteRecursively() + } + + @Test def pickle_pickleOK = compileDir(testsDir, "pickling", testPickling) +// This directory doesn't exist anymore +// @Test def pickle_pickling = compileDir(coreDir, "pickling", testPickling) + @Test def pickle_ast = compileDir(dotcDir, "ast", testPickling) + @Test def pickle_inf = compileFile(posDir, "pickleinf", testPickling) + + //@Test def pickle_core = compileDir(dotcDir, "core", testPickling, xerrors = 2) // two spurious comparison errors in Types and TypeOps + + @Test def pos_arraycopy = + compileFile(runDir, "arraycopy", List("-Ylog-classpath")) + @Test def pos_t2168_pat = compileFile(posDir, "t2168", twice) + @Test def pos_erasure = compileFile(posDir, "erasure", twice) + @Test def pos_Coder() = compileFile(posDir, "Coder", twice) + @Test def pos_blockescapes() = compileFile(posDir, "blockescapes", twice) + @Test def pos_collections() = compileFile(posDir, "collections", twice) + @Test def pos_functions1() = compileFile(posDir, "functions1", twice) + @Test def pos_implicits1() = compileFile(posDir, "implicits1", twice) + @Test def pos_inferred() = compileFile(posDir, "inferred", twice) + @Test def pos_Patterns() = compileFile(posDir, "Patterns", twice) + @Test def pos_selftypes() = compileFile(posDir, "selftypes", twice) + @Test def pos_varargs() = compileFile(posDir, "varargs", twice) + @Test def pos_vararg_patterns() = compileFile(posDir, "vararg-pattern", twice) + @Test def pos_opassign() = compileFile(posDir, "opassign", twice) + @Test def pos_typedapply() = compileFile(posDir, "typedapply", twice) + @Test def pos_nameddefaults() = compileFile(posDir, "nameddefaults", twice) + @Test def pos_desugar() = compileFile(posDir, "desugar", twice) + @Test def pos_sigs() = compileFile(posDir, "sigs", twice) + @Test def pos_typers() = compileFile(posDir, "typers", twice) + @Test def pos_typedIdents() = compileDir(posDir, "typedIdents", twice) + @Test def pos_assignments() = compileFile(posDir, "assignments", twice) + @Test def pos_packageobject() = compileFile(posDir, "packageobject", twice) + @Test def pos_overloaded() = compileFile(posDir, "overloaded", twice) + @Test def pos_overrides() = compileFile(posDir, "overrides", twice) + @Test def pos_javaOverride() = compileDir(posDir, "java-override", twice) + @Test def pos_templateParents() = compileFile(posDir, "templateParents", twice) + @Test def pos_overloadedAccess = compileFile(posDir, "overloadedAccess", twice) + @Test def pos_approximateUnion = compileFile(posDir, "approximateUnion", twice) + @Test def pos_tailcall = compileDir(posDir, "tailcall", twice) + @Test def pos_valueclasses = compileFiles(posDir + "pos_valueclasses/", twice) + @Test def pos_nullarify = compileFile(posDir, "nullarify", args = "-Ycheck:nullarify" :: Nil) + @Test def pos_subtyping = compileFile(posDir, "subtyping", twice) + @Test def pos_packageObj = compileFile(posDir, "i0239", twice) + @Test def pos_anonClassSubtyping = compileFile(posDir, "anonClassSubtyping", twice) + @Test def pos_extmethods = compileFile(posDir, "extmethods", twice) + @Test def pos_companions = compileFile(posDir, "companions", twice) + + @Test def pos_all = compileFiles(posDir) // twice omitted to make tests run faster + + @Test def pos_scala2_all = compileFiles(posScala2Dir, scala2mode) + + @Test def rewrites = compileFile(posScala2Dir, "rewrites", "-rewrite" :: scala2mode) + + @Test def pos_859 = compileFile(posSpecialDir, "i859", scala2mode)(allowDeepSubtypes) + @Test def pos_t8146a = compileFile(posSpecialDir, "t8146a")(allowDeepSubtypes) + + @Test def pos_t5545 = { + // compile by hand in two batches, since junit lacks the infrastructure to + // compile files in multiple batches according to _1, _2, ... suffixes. + compileFile(posSpecialDir, "spec-t5545/S_1") + compileFile(posSpecialDir, "spec-t5545/S_2") + } + @Test def pos_utf8 = compileFile(posSpecialDir, "utf8encoded", explicitUTF8) + @Test def pos_utf16 = compileFile(posSpecialDir, "utf16encoded", explicitUTF16) + + @Test def new_all = compileFiles(newDir, twice) + @Test def repl_all = replFiles(replDir) + + @Test def neg_all = compileFiles(negDir, verbose = true, compileSubDirs = false) + @Test def neg_typedIdents() = compileDir(negDir, "typedIdents") + + val negCustomArgs = negDir + "customArgs/" + + @Test def neg_cli_error = compileFile(negCustomArgs, "cliError", List("-thisOptionDoesNotExist")) + + @Test def neg_typers() = compileFile(negCustomArgs, "typers")(allowDoubleBindings) + @Test def neg_overrideClass = compileFile(negCustomArgs, "overrideClass", scala2mode) + @Test def neg_autoTupling = compileFile(negCustomArgs, "autoTuplingTest", args = "-language:noAutoTupling" :: Nil) + @Test def neg_i1050 = compileFile(negCustomArgs, "i1050", List("-strict")) + @Test def neg_i1240 = compileFile(negCustomArgs, "i1240")(allowDoubleBindings) + + val negTailcallDir = negDir + "tailcall/" + @Test def neg_tailcall_t1672b = compileFile(negTailcallDir, "t1672b") + @Test def neg_tailcall_t3275 = compileFile(negTailcallDir, "t3275") + @Test def neg_tailcall_t6574 = compileFile(negTailcallDir, "t6574") + @Test def neg_tailcall = compileFile(negTailcallDir, "tailrec") + @Test def neg_tailcall2 = compileFile(negTailcallDir, "tailrec-2") + @Test def neg_tailcall3 = compileFile(negTailcallDir, "tailrec-3") + + @Test def neg_nopredef = compileFile(negCustomArgs, "nopredef", List("-Yno-predef")) + @Test def neg_noimports = compileFile(negCustomArgs, "noimports", List("-Yno-imports")) + @Test def neg_noimpots2 = compileFile(negCustomArgs, "noimports2", List("-Yno-imports")) + + @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) + .map("." + _) // files are contained one dir up + .toList + + @Test def compileStdLib = compileList("compileStdLib", stdlibFiles, "-migration" :: "-Yno-inline" :: scala2mode) + @Test def compileMixed = compileLine( + """../tests/pos/B.scala + |../scala-scala/src/library/scala/collection/immutable/Seq.scala + |../scala-scala/src/library/scala/collection/parallel/ParSeq.scala + |../scala-scala/src/library/scala/package.scala + |../scala-scala/src/library/scala/collection/GenSeqLike.scala + |../scala-scala/src/library/scala/collection/SeqLike.scala + |../scala-scala/src/library/scala/collection/generic/GenSeqFactory.scala""".stripMargin) + @Test def compileIndexedSeq = compileLine("../scala-scala/src/library/scala/collection/immutable/IndexedSeq.scala") + + // Not a junit test anymore since it is order dependent + def dottyBootedLib = compileDir(libDir, ".")(allowDeepSubtypes) // note the -deep argument + + // Not a junit test anymore since it is order dependent + def dottyDependsOnBootedLib = compileDir(dottyDir, ".")(allowDeepSubtypes) // note the -deep argument + + @Test def dotc_ast = compileDir(dotcDir, "ast") + @Test def dotc_config = compileDir(dotcDir, "config") + @Test def dotc_core = compileDir(dotcDir, "core")(allowDeepSubtypes)// twice omitted to make tests run faster + @Test def dotc_core_nocheck = compileDir(dotcDir, "core")(noCheckOptions ++ classPath) + +// This directory doesn't exist anymore +// @Test def dotc_core_pickling = compileDir(coreDir, "pickling")(allowDeepSubtypes)// twice omitted to make tests run faster + + @Test def dotc_transform = compileDir(dotcDir, "transform")(allowDeepSubtypes)// twice omitted to make tests run faster + + @Test def dotc_parsing = compileDir(dotcDir, "parsing") // twice omitted to make tests run faster + + @Test def dotc_printing = compileDir(dotcDir, "printing") // twice omitted to make tests run faster + + @Test def dotc_reporting = compileDir(dotcDir, "reporting") // twice omitted to make tests run faster + + @Test def dotc_typer = compileDir(dotcDir, "typer")// twice omitted to make tests run faster + // error: error while loading Checking$$anon$2$, + // class file 'target/scala-2.11/dotty_2.11-0.1-SNAPSHOT.jar(dotty/tools/dotc/typer/Checking$$anon$2.class)' + // has location not matching its contents: contains class $anon + + @Test def dotc_util = compileDir(dotcDir, "util") // twice omitted to make tests run faster + + @Test def tools_io = compileDir(toolsDir, "io") // inner class has symbol + + @Test def helloWorld = compileFile(posDir, "HelloWorld") + @Test def labels = compileFile(posDir, "Labels", twice) + //@Test def tools = compileDir(dottyDir, "tools", "-deep" :: Nil)(allowDeepSubtypes) + + @Test def testNonCyclic = compileList("testNonCyclic", List( + dotcDir + "CompilationUnit.scala", + coreDir + "Types.scala", + dotcDir + "ast/Trees.scala" + ), List("-Xprompt") ++ staleSymbolError ++ twice) + + @Test def testIssue_34 = compileList("testIssue_34", List( + dotcDir + "config/Properties.scala", + dotcDir + "config/PathResolver.scala" + ), List(/* "-Ylog:frontend", */ "-Xprompt") ++ staleSymbolError ++ twice) + + val javaDir = "./tests/pos-java-interop/" + @Test def java_all = compileFiles(javaDir, twice) + //@Test def dotc_compilercommand = compileFile(dotcDir + "config/", "CompilerCommand") + + //TASTY tests + @Test def tasty_new_all = compileFiles(newDir, testPickling) + + @Test def tasty_dotty = compileDir(sourceDir, "dotty", testPickling) + + // Disabled because we get stale symbol errors on the SourceFile annotation, which is normal. + // @Test def tasty_annotation_internal = compileDir(s"${dottyDir}annotation/", "internal", testPickling) + + @Test def tasty_runtime = compileDir(s"${libDir}dotty/", "runtime", testPickling) + @Test def tasty_runtime_vc = compileDir(s"${libDir}dotty/runtime/", "vc", testPickling) + + @Test def tasty_tools = compileDir(dottyDir, "tools", testPickling) + + //TODO: issue with ./src/dotty/tools/backend/jvm/DottyBackendInterface.scala + @Test def tasty_backend_jvm = compileList("tasty_backend_jvm", List( + "CollectEntryPoints.scala", "GenBCode.scala", "LabelDefs.scala", + "scalaPrimitives.scala" + ) map (s"${backendDir}jvm/" + _), testPickling) + + //@Test def tasty_backend_sjs = compileDir(s"${backendDir}", "sjs", testPickling) + + @Test def tasty_dotc = compileDir(toolsDir, "dotc", testPickling) + @Test def tasty_dotc_ast = compileDir(dotcDir, "ast", testPickling) + @Test def tasty_dotc_config = compileDir(dotcDir, "config", testPickling) + + //TODO: issue with ./src/dotty/tools/dotc/core/Types.scala + @Test def tasty_core = compileList("tasty_core", List( + "Annotations.scala", "Constants.scala", "Constraint.scala", "ConstraintHandling.scala", + "ConstraintRunInfo.scala", "Contexts.scala", "Decorators.scala", "Definitions.scala", + "DenotTransformers.scala", "Denotations.scala", "Flags.scala", "Hashable.scala", + "NameOps.scala", "Names.scala", "OrderingConstraint.scala", "Periods.scala", + "Phases.scala", "Scopes.scala", "Signature.scala", "StdNames.scala", + "Substituters.scala", "SymDenotations.scala", "SymbolLoaders.scala", "Symbols.scala", + "TypeApplications.scala", "TypeComparer.scala", "TypeErasure.scala", "TypeOps.scala", + "TyperState.scala", "Uniques.scala" + ) map (coreDir + _), testPickling) + + @Test def tasty_classfile = compileDir(coreDir, "classfile", testPickling) + @Test def tasty_tasty = compileDir(coreDir, "tasty", testPickling) + @Test def tasty_unpickleScala2 = compileDir(coreDir, "unpickleScala2", testPickling) + + //TODO: issue with ./src/dotty/tools/dotc/parsing/Parsers.scala + @Test def tasty_dotc_parsing = compileList("tasty_dotc_parsing", List( + "CharArrayReader.scala", "JavaParsers.scala", "JavaScanners.scala", "JavaTokens.scala", + "MarkupParserCommon.scala", "MarkupParsers.scala", "package.scala" ,"Scanners.scala", + "ScriptParsers.scala", "SymbolicXMLBuilder.scala", "Tokens.scala", "Utility.scala" + ) map (parsingDir + _), testPickling) + + @Test def tasty_dotc_printing = compileDir(dotcDir, "printing", testPickling) + + @Test def tasty_dotc_repl = compileDir(dotcDir, "repl", testPickling) + + //@Test def tasty_dotc_reporting = compileDir(dotcDir, "reporting", testPickling) + @Test def tasty_dotc_rewrite = compileDir(dotcDir, "rewrite", testPickling) + + //TODO: issues with LazyVals.scala, PatternMatcher.scala + @Test def tasty_dotc_transform = compileList("tasty_dotc_transform", List( + "AugmentScala2Traits.scala", "CapturedVars.scala", "CheckReentrant.scala", "CheckStatic.scala", + "ClassOf.scala", "CollectEntryPoints.scala", "Constructors.scala", "CrossCastAnd.scala", + "CtxLazy.scala", "ElimByName.scala", "ElimErasedValueType.scala", "ElimRepeated.scala", + "ElimStaticThis.scala", "Erasure.scala", "ExpandPrivate.scala", "ExpandSAMs.scala", + "ExplicitOuter.scala", "ExtensionMethods.scala", "FirstTransform.scala", + "Flatten.scala", "FullParameterization.scala", "FunctionalInterfaces.scala", "GetClass.scala", + "Getters.scala", "InterceptedMethods.scala", "LambdaLift.scala", "LiftTry.scala", "LinkScala2ImplClasses.scala", + "MacroTransform.scala", "Memoize.scala", "Mixin.scala", "MixinOps.scala", "NonLocalReturns.scala", + "NormalizeFlags.scala", "OverridingPairs.scala", "ParamForwarding.scala", "Pickler.scala", "PostTyper.scala", + "ResolveSuper.scala", "RestoreScopes.scala", "SeqLiterals.scala", "Splitter.scala", "SuperAccessors.scala", + "SymUtils.scala", "SyntheticMethods.scala", "TailRec.scala", "TreeChecker.scala", "TreeExtractors.scala", + "TreeGen.scala", "TreeTransform.scala", "TypeTestsCasts.scala", "TypeUtils.scala", "ValueClasses.scala", + "VCElideAllocations.scala", "VCInlineMethods.scala" + ) map (s"${dotcDir}transform/" + _), testPickling) + + //TODO: issue with ./src/dotty/tools/dotc/typer/Namer.scala + @Test def tasty_typer = compileList("tasty_typer", List( + "Applications.scala", "Checking.scala", "ConstFold.scala", "ErrorReporting.scala", + "EtaExpansion.scala", "FrontEnd.scala", "Implicits.scala", "ImportInfo.scala", + "Inferencing.scala", "ProtoTypes.scala", "ReTyper.scala", "RefChecks.scala", + "TypeAssigner.scala", "Typer.scala", "VarianceChecker.scala", "Variances.scala" + ) map (typerDir + _), testPickling) + + @Test def tasty_dotc_util = compileDir(dotcDir, "util", testPickling) + @Test def tasty_tools_io = compileDir(toolsDir, "io", testPickling) + @Test def tasty_tests = compileDir(testsDir, "tasty", testPickling) + + @Test def tasty_bootstrap = { + val opt = List("-priorityclasspath", defaultOutputDir, "-Ylog-classpath") + // first compile dotty + compileDir(dottyDir, ".", List("-deep", "-Ycheck-reentrant", "-strict"))(allowDeepSubtypes) + + compileDir(dottyDir, "tools", opt) + compileDir(toolsDir, "dotc", opt) + compileDir(dotcDir, "ast", opt) + compileDir(dotcDir, "config", opt) + compileDir(dotcDir, "parsing", opt) + compileDir(dotcDir, "printing", opt) + compileDir(dotcDir, "repl", opt) + compileDir(dotcDir, "reporting", opt) + compileDir(dotcDir, "rewrite", opt) + compileDir(dotcDir, "transform", opt) + compileDir(dotcDir, "typer", opt) + compileDir(dotcDir, "util", opt) + } +} -- cgit v1.2.3