diff --git a/.drone.yml b/.drone.yml index a287c4c1fafe..3ee1d1692643 100644 --- a/.drone.yml +++ b/.drone.yml @@ -11,7 +11,9 @@ 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 d7ada0d72bec..7855dd8e9b78 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,9 @@ 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 f5ea01ebbaab..37937bd8e575 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,11 +2,3 @@ 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 deleted file mode 160000 index 3dd7d3b36ecb..000000000000 --- a/collection-strawman +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 3dd7d3b36ecb30d35d9e2c4ccbd6b7a616d2666e diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala index b61747468d8c..17b386cbff7a 100644 --- a/compiler/test/dotc/tests.scala +++ b/compiler/test/dotc/tests.scala @@ -218,18 +218,18 @@ class tests extends CompilerTest { @Test def compileMixed = compileLine( """../tests/pos/B.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") + |../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") @Test def compileParSetSubset = compileLine( - """../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) + """../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) @Test def dottyBooted = { dottyBootedLib diff --git a/compiler/test/dotty/tools/StdLibSources.scala b/compiler/test/dotty/tools/StdLibSources.scala index 2b8a9574b758..0c11210586a3 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 = "../scala2-library/src/library/" + private final val stdLibPath = "../scala-scala/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 d3414cf92a6b..162b93d87067 100644 --- a/compiler/test/dotty/tools/dotc/CompilationTests.scala +++ b/compiler/test/dotty/tools/dotc/CompilationTests.scala @@ -29,7 +29,6 @@ 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) + @@ -50,24 +49,24 @@ class CompilationTests extends ParallelTesting { "compileMixed", List( "../tests/pos/B.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" + "../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" ), defaultOptions ) + compileFilesInDir("../tests/pos-special/spec-t5545", defaultOptions) + - compileFile("../scala2-library/src/library/scala/collection/immutable/IndexedSeq.scala", defaultOptions) + - compileFile("../scala2-library/src/library/scala/collection/parallel/mutable/ParSetLike.scala", defaultOptions) + + compileFile("../scala-scala/src/library/scala/collection/immutable/IndexedSeq.scala", defaultOptions) + + compileFile("../scala-scala/src/library/scala/collection/parallel/mutable/ParSetLike.scala", defaultOptions) + compileList( "parSetSubset", List( - "../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" + "../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" ), scala2Mode ) + diff --git a/compiler/test/dotty/tools/dotc/parsing/ScannerTest.scala b/compiler/test/dotty/tools/dotc/parsing/ScannerTest.scala index 48ac280d0578..b024a63dba2f 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("../scala2-library/src") + scanDir("../scala-scala/src") } } diff --git a/compiler/test/dotty/tools/dotc/parsing/desugarPackage.scala b/compiler/test/dotty/tools/dotc/parsing/desugarPackage.scala index 0ca15b9172c9..84bf7a2d174e 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("./scala2-library/src") + parseDir("./scala-scala/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 9e0e2829233e..df5368ffe337 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("./scala2-library/src") + parseDir("./scala-scala/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 f0f38d09f79d..4eb072b98ff8 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("../scala2-library/src/library/scala/collection/Iterator.scala" :: Nil) { _ => + checkFiles("../scala-scala/src/library/scala/collection/Iterator.scala" :: Nil) { _ => // success if typer throws no errors! :) } @Test def checkIterableLike = - checkFiles("../scala2-library/src/library/scala/collection/IterableLike.scala" :: Nil) { _ => + checkFiles("../scala-scala/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 86320426f972..a8001366ae41 100644 --- a/docs/docs/contributing/workflow.md +++ b/docs/docs/contributing/workflow.md @@ -11,6 +11,8 @@ 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 38ab9afb212b..9943f8395a84 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -24,6 +24,8 @@ 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" @@ -150,7 +152,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" / "bootstrap" / name.value, + target := baseDirectory.value / ".." / "out" / name.value, // The non-bootstrapped dotty-library is not necessary when bootstrapping dotty autoScalaLibrary := false, @@ -232,7 +234,7 @@ object Build { settings(commonNonBootstrappedSettings). settings( triggeredMessage in ThisBuild := Watched.clearWhenTriggered, - submoduleChecks, + addCommandAlias("run", "dotty-compiler/run") ++ addCommandAlias("legacyTests", "dotty-compiler/testOnly dotc.tests") ) @@ -1007,15 +1009,14 @@ object DottyInjectedPlugin extends AutoPlugin { )) } - 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 + 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} """.stripMargin) } - state } } diff --git a/project/scripts/updateScalaLibrary b/project/scripts/updateScalaLibrary new file mode 100755 index 000000000000..3aad6aa867ef --- /dev/null +++ b/project/scripts/updateScalaLibrary @@ -0,0 +1,23 @@ +#!/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 deleted file mode 160000 index c14809b706da..000000000000 --- a/scala2-library +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c14809b706da013349581c713a7fde04ed47d2d3