diff --git a/.drone.yml b/.drone.yml index aa248459bcb1..8ef737a3da79 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,9 +11,7 @@ pipeline: image: lampepfl/dotty:24-04-2017 pull: true commands: - - ln -s /var/cache/drone/scala-scala scala-scala - ln -s /var/cache/drone/ivy2 "$HOME/.ivy2" - - ./project/scripts/updateScalaLibrary - sbt -J-Xmx4096m -J-XX:ReservedCodeCacheSize=512m -J-XX:MaxMetaspaceSize=1024m -Ddotty.drone.mem=4096m "${CI_TEST}" when: branch: diff --git a/.gitignore b/.gitignore index 7508b4932d95..3648eddf0044 100644 --- a/.gitignore +++ b/.gitignore @@ -37,9 +37,6 @@ tests/partest-generated/ tests/locks/ /test-classes/ -# Used in tests -scala-scala - # Ignore output files but keep the directory out/ build/ diff --git a/.gitmodules b/.gitmodules index 37937bd8e575..f5ea01ebbaab 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,3 +2,11 @@ path = scala-backend url = https://github.com/lampepfl/scala.git branch = sharing-backend +[submodule "scala2-library"] + path = scala2-library + url = https://github.com/lampepfl/scala.git + branch = dotty-library +[submodule "collection-strawman"] + path = collection-strawman + url = https://github.com/scala/collection-strawman.git + branch = master diff --git a/collection-strawman b/collection-strawman new file mode 160000 index 000000000000..3dd7d3b36ecb --- /dev/null +++ b/collection-strawman @@ -0,0 +1 @@ +Subproject commit 3dd7d3b36ecb30d35d9e2c4ccbd6b7a616d2666e diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala index 3c07df88a952..4af6277f05f4 100644 --- a/compiler/test/dotc/tests.scala +++ b/compiler/test/dotc/tests.scala @@ -215,18 +215,18 @@ class tests extends CompilerTest { @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") - @Test def compileParSetLike = compileLine("../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala") + |../scala2-library/src/library/scala/collection/immutable/Seq.scala + |../scala2-library/src/library/scala/collection/parallel/ParSeq.scala + |../scala2-library/src/library/scala/package.scala + |../scala2-library/src/library/scala/collection/GenSeqLike.scala + |../scala2-library/src/library/scala/collection/SeqLike.scala + |../scala2-library/src/library/scala/collection/generic/GenSeqFactory.scala""".stripMargin) + @Test def compileIndexedSeq = compileLine("../scala2-library/src/library/scala/collection/immutable/IndexedSeq.scala") + @Test def compileParSetLike = compileLine("../scala2-library/src/library/scala/collection/parallel/mutable/ParSetLike.scala") @Test def compileParSetSubset = compileLine( - """../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala - |../scala-scala/src/library/scala/collection/parallel/mutable/ParSet.scala - |../scala-scala/src/library/scala/collection/mutable/SetLike.scala""".stripMargin)(scala2mode ++ defaultOptions) + """../scala2-library/src/library/scala/collection/parallel/mutable/ParSetLike.scala + |../scala2-library/src/library/scala/collection/parallel/mutable/ParSet.scala + |../scala2-library/src/library/scala/collection/mutable/SetLike.scala""".stripMargin)(scala2mode ++ defaultOptions) @Test def dottyBooted = { dottyBootedLib diff --git a/compiler/test/dotty/tools/StdLibSources.scala b/compiler/test/dotty/tools/StdLibSources.scala index 0c11210586a3..2b8a9574b758 100644 --- a/compiler/test/dotty/tools/StdLibSources.scala +++ b/compiler/test/dotty/tools/StdLibSources.scala @@ -10,7 +10,7 @@ object StdLibSources { /* For debug only */ private val useExplicitWhiteList = false - private final val stdLibPath = "../scala-scala/src/library/" + private final val stdLibPath = "../scala2-library/src/library/" def blacklistFile: String = "../compiler/test/dotc/scala-collections.blacklist" private def whitelistFile: String = "../compiler/test/dotc/scala-collections.whitelist" diff --git a/compiler/test/dotty/tools/dotc/CompilationTests.scala b/compiler/test/dotty/tools/dotc/CompilationTests.scala index df7a1141cec9..8a2cc2130cb8 100644 --- a/compiler/test/dotty/tools/dotc/CompilationTests.scala +++ b/compiler/test/dotty/tools/dotc/CompilationTests.scala @@ -29,6 +29,7 @@ class CompilationTests extends ParallelTesting { @Test def compilePos: Unit = { compileList("compileStdLib", StdLibSources.whitelisted, scala2Mode.and("-migration", "-Yno-inline")) + + compileDir("../collection-strawman/src/main", defaultOptions) + compileDir("../compiler/src/dotty/tools/dotc/ast", defaultOptions) + compileDir("../compiler/src/dotty/tools/dotc/config", defaultOptions) + compileDir("../compiler/src/dotty/tools/dotc/core", allowDeepSubtypes) + @@ -49,24 +50,24 @@ class CompilationTests extends ParallelTesting { "compileMixed", List( "../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" + "../scala2-library/src/library/scala/collection/immutable/Seq.scala", + "../scala2-library/src/library/scala/collection/parallel/ParSeq.scala", + "../scala2-library/src/library/scala/package.scala", + "../scala2-library/src/library/scala/collection/GenSeqLike.scala", + "../scala2-library/src/library/scala/collection/SeqLike.scala", + "../scala2-library/src/library/scala/collection/generic/GenSeqFactory.scala" ), defaultOptions ) + compileFilesInDir("../tests/pos-special/spec-t5545", defaultOptions) + - compileFile("../scala-scala/src/library/scala/collection/immutable/IndexedSeq.scala", defaultOptions) + - compileFile("../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala", defaultOptions) + + compileFile("../scala2-library/src/library/scala/collection/immutable/IndexedSeq.scala", defaultOptions) + + compileFile("../scala2-library/src/library/scala/collection/parallel/mutable/ParSetLike.scala", defaultOptions) + compileList( "parSetSubset", List( - "../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala", - "../scala-scala/src/library/scala/collection/parallel/mutable/ParSet.scala", - "../scala-scala/src/library/scala/collection/mutable/SetLike.scala" + "../scala2-library/src/library/scala/collection/parallel/mutable/ParSetLike.scala", + "../scala2-library/src/library/scala/collection/parallel/mutable/ParSet.scala", + "../scala2-library/src/library/scala/collection/mutable/SetLike.scala" ), scala2Mode ) + diff --git a/compiler/test/dotty/tools/dotc/parsing/ScannerTest.scala b/compiler/test/dotty/tools/dotc/parsing/ScannerTest.scala index b024a63dba2f..48ac280d0578 100644 --- a/compiler/test/dotty/tools/dotc/parsing/ScannerTest.scala +++ b/compiler/test/dotty/tools/dotc/parsing/ScannerTest.scala @@ -60,6 +60,6 @@ class ScannerTest extends DottyTest { @Test def scanScala() = { - scanDir("../scala-scala/src") + scanDir("../scala2-library/src") } } diff --git a/compiler/test/dotty/tools/dotc/parsing/desugarPackage.scala b/compiler/test/dotty/tools/dotc/parsing/desugarPackage.scala index 84bf7a2d174e..0ca15b9172c9 100644 --- a/compiler/test/dotty/tools/dotc/parsing/desugarPackage.scala +++ b/compiler/test/dotty/tools/dotc/parsing/desugarPackage.scala @@ -12,7 +12,7 @@ object desugarPackage extends DeSugarTest { val start = System.nanoTime() val startNodes = Trees.ntrees parseDir("./src") - parseDir("./scala-scala/src") + parseDir("./scala2-library/src") val ms1 = (System.nanoTime() - start)/1000000 val nodes = Trees.ntrees val buf = parsedTrees map desugarTree diff --git a/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala b/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala index df5368ffe337..9e0e2829233e 100644 --- a/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala +++ b/compiler/test/dotty/tools/dotc/parsing/parsePackage.scala @@ -68,7 +68,7 @@ object parsePackage extends ParserTest { nodes = 0 val start = System.nanoTime() parseDir("./src") - parseDir("./scala-scala/src") + parseDir("./scala2-library/src") val ms1 = (System.nanoTime() - start)/1000000 val buf = parsedTrees map transformer.transform val ms2 = (System.nanoTime() - start)/1000000 diff --git a/doc-tool/test/UsecaseTest.scala b/doc-tool/test/UsecaseTest.scala index 4eb072b98ff8..f0f38d09f79d 100644 --- a/doc-tool/test/UsecaseTest.scala +++ b/doc-tool/test/UsecaseTest.scala @@ -223,12 +223,12 @@ class UsecaseTest extends DottyDocTest { } @Test def checkIterator = - checkFiles("../scala-scala/src/library/scala/collection/Iterator.scala" :: Nil) { _ => + checkFiles("../scala2-library/src/library/scala/collection/Iterator.scala" :: Nil) { _ => // success if typer throws no errors! :) } @Test def checkIterableLike = - checkFiles("../scala-scala/src/library/scala/collection/IterableLike.scala" :: Nil) { _ => + checkFiles("../scala2-library/src/library/scala/collection/IterableLike.scala" :: Nil) { _ => // success if typer throws no errors! :) } } diff --git a/docs/docs/contributing/workflow.md b/docs/docs/contributing/workflow.md index a8001366ae41..86320426f972 100644 --- a/docs/docs/contributing/workflow.md +++ b/docs/docs/contributing/workflow.md @@ -11,8 +11,6 @@ This document details common workflow patterns when working with Dotty. # Start by cloning the repository: git clone --recursive https://github.com/lampepfl/dotty.git cd dotty -# Clone dotty-compatible stdlib. Needed for running the test suite. -git clone -b dotty-library https://github.com/DarkDimius/scala.git scala-scala ``` ## Compiling files with dotc ## diff --git a/project/Build.scala b/project/Build.scala index 5da8d8549581..f5baa18b8c17 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -24,8 +24,6 @@ object ExposedValues extends AutoPlugin { object Build { - projectChecks() - val scalacVersion = "2.11.11" // Do not rename, this is grepped in bin/common. val dottyOrganization = "ch.epfl.lamp" @@ -152,7 +150,7 @@ object Build { scalacOptions ++= Seq("-bootclasspath", sys.props("sun.boot.class.path")), // sbt gets very unhappy if two projects use the same target - target := baseDirectory.value / ".." / "out" / name.value, + target := baseDirectory.value / ".." / "out" / "bootstrap" / name.value, // The non-bootstrapped dotty-library is not necessary when bootstrapping dotty autoScalaLibrary := false, @@ -234,7 +232,7 @@ object Build { settings(commonNonBootstrappedSettings). settings( triggeredMessage in ThisBuild := Watched.clearWhenTriggered, - + submoduleChecks, addCommandAlias("run", "dotty-compiler/run") ++ addCommandAlias("legacyTests", "dotty-compiler/testOnly dotc.tests") ) @@ -995,14 +993,15 @@ object DottyInjectedPlugin extends AutoPlugin { )) } - private def projectChecks(): Unit = { - val scalaScala = new File("scala-scala") - if (!scalaScala.exists()) { - println( - s"""[WARNING] Missing `dotty/scala-scala` library - |You can clone the library with: - | > git clone -b dotty-library https://github.com/DarkDimius/scala.git ${scalaScala.getAbsolutePath} + lazy val submoduleChecks = onLoad in Global := (onLoad in Global).value andThen { state => + val submodules = List(new File("scala-backend"), new File("scala2-library"), new File("collection-strawman")) + if (!submodules.forall(f => f.exists && f.listFiles().nonEmpty)) { + sLog.value.log(Level.Error, + s"""Missing some of the submodules + |You can initialize the modules with: + | > git submodule update --init """.stripMargin) } + state } } diff --git a/project/scripts/updateScalaLibrary b/project/scripts/updateScalaLibrary deleted file mode 100755 index 3aad6aa867ef..000000000000 --- a/project/scripts/updateScalaLibrary +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -update() { - [[ -d $baseDir ]] || mkdir -p $baseDir - cd $baseDir - - if [ ! -d $baseDir/$3 ]; then git clone "https://github.com/$1/$2.git" $3; fi - - cd $3 - - git fetch --tags "https://github.com/$1/$2.git" - (git fetch "https://github.com/$1/$2.git" $4 && git checkout -fq FETCH_HEAD) #|| git checkout -fq $4 # || fallback is for local testing on tag - git reset --hard - echo updated $1/$2:$4 under $3. Last commits: - git --no-pager log --pretty=format:"%h - %an, %aD : %s" -n 10 # show last commits - cd - -} - -export LC_ALL=en_US.UTF-8 - -baseDir=`pwd` - -update DarkDimius scala scala-scala dotty-library diff --git a/scala2-library b/scala2-library new file mode 160000 index 000000000000..c14809b706da --- /dev/null +++ b/scala2-library @@ -0,0 +1 @@ +Subproject commit c14809b706da013349581c713a7fde04ed47d2d3