diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2017-04-13 21:14:28 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-13 21:14:28 +0200 |
commit | 9e45ad16d012e6a2ff3be411c2fe101b1c74b831 (patch) | |
tree | 3f8af20f82bbee9ace7f5a39f97f9b64778b38b4 /compiler | |
parent | 975f7efab69e8e5a23db665f33dceecb0bf6ceaa (diff) | |
parent | 476778612e71379cf648693f7d02039301fb5607 (diff) | |
download | dotty-9e45ad16d012e6a2ff3be411c2fe101b1c74b831.tar.gz dotty-9e45ad16d012e6a2ff3be411c2fe101b1c74b831.tar.bz2 dotty-9e45ad16d012e6a2ff3be411c2fe101b1c74b831.zip |
Merge pull request #2260 from dotty-staging/backend-submodule
Fix #2184: Hyper Bootstrap! Integrate the backend as a git submodule
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/src/dotty/tools/backend/jvm/GenBCode.scala | 6 | ||||
-rw-r--r-- | compiler/src/dotty/tools/backend/jvm/scalaPrimitives.scala | 2 | ||||
-rw-r--r-- | compiler/src/scala/tools/nsc/io/package.scala | 27 | ||||
-rw-r--r-- | compiler/test/dotc/tests.scala | 3 | ||||
-rw-r--r-- | compiler/test/dotty/tools/TypeStealer.scala | 21 | ||||
-rw-r--r-- | compiler/test/dotty/tools/backend/jvm/DottyBytecodeTest.scala | 2 | ||||
-rw-r--r-- | compiler/test/dotty/tools/dotc/CompilationTests.scala | 42 |
7 files changed, 71 insertions, 32 deletions
diff --git a/compiler/src/dotty/tools/backend/jvm/GenBCode.scala b/compiler/src/dotty/tools/backend/jvm/GenBCode.scala index 8fd6d1bc0..25a8061ac 100644 --- a/compiler/src/dotty/tools/backend/jvm/GenBCode.scala +++ b/compiler/src/dotty/tools/backend/jvm/GenBCode.scala @@ -8,7 +8,6 @@ import dotty.tools.dotc.core.Names.TypeName import scala.collection.mutable import scala.tools.asm.{ClassVisitor, CustomAttr, FieldVisitor, MethodVisitor} -import scala.tools.nsc.Settings import scala.tools.nsc.backend.jvm._ import dotty.tools.dotc import dotty.tools.dotc.backend.jvm.DottyPrimitives @@ -35,7 +34,6 @@ import tpd._ import StdNames._ import scala.reflect.io.{AbstractFile, Directory, PlainDirectory} -import scala.tools.nsc.backend.jvm.opt.LocalOpt class GenBCode extends Phase { def phaseName: String = "genBCode" @@ -246,10 +244,10 @@ class GenBCodePipeline(val entryPoints: List[Symbol], val int: DottyBackendInter * - converting the plain ClassNode to byte array and placing it on queue-3 */ class Worker2 { - lazy val localOpt = new LocalOpt(new Settings()) + // lazy val localOpt = new LocalOpt(new Settings()) def localOptimizations(classNode: ClassNode): Unit = { - /*BackendStats.timed(BackendStats.methodOptTimer)*/(localOpt.methodOptimizations(classNode)) + // BackendStats.timed(BackendStats.methodOptTimer)(localOpt.methodOptimizations(classNode)) } def run(): Unit = { diff --git a/compiler/src/dotty/tools/backend/jvm/scalaPrimitives.scala b/compiler/src/dotty/tools/backend/jvm/scalaPrimitives.scala index 7beae90c4..851cacaa2 100644 --- a/compiler/src/dotty/tools/backend/jvm/scalaPrimitives.scala +++ b/compiler/src/dotty/tools/backend/jvm/scalaPrimitives.scala @@ -37,7 +37,7 @@ import core.Symbols.{Symbol, NoSymbol} * Inspired from the `scalac` compiler. */ class DottyPrimitives(ctx: Context) { - import scala.tools.nsc.backend.ScalaPrimitives._ + import scala.tools.nsc.backend.ScalaPrimitivesOps._ private lazy val primitives: immutable.Map[Symbol, Int] = init diff --git a/compiler/src/scala/tools/nsc/io/package.scala b/compiler/src/scala/tools/nsc/io/package.scala new file mode 100644 index 000000000..6b30e5441 --- /dev/null +++ b/compiler/src/scala/tools/nsc/io/package.scala @@ -0,0 +1,27 @@ +package scala.tools.nsc + +/** + * Compatibility layer needed for the backend. + * + * Our backend is based on the Scala 2.11 GenBCode backend and modified so that + * it compiles both with dotty and scalac, since the backend uses + * scala.tools.nsc.io.*, we need to also provide it. + * + * See http://dotty.epfl.ch/docs/contributing/backend.html for more information. + */ +package object io { + type AbstractFile = scala.reflect.io.AbstractFile + val AbstractFile = scala.reflect.io.AbstractFile + + type Directory = scala.reflect.io.Directory + val Directory = scala.reflect.io.Directory + + type Path = scala.reflect.io.Path + val Path = scala.reflect.io.Path + + type File = scala.reflect.io.File + val File = scala.reflect.io.File + + type Jar = dotty.tools.io.Jar + val Jar = dotty.tools.io.Jar +} diff --git a/compiler/test/dotc/tests.scala b/compiler/test/dotc/tests.scala index efecc1df3..0f1732e2a 100644 --- a/compiler/test/dotc/tests.scala +++ b/compiler/test/dotc/tests.scala @@ -358,7 +358,8 @@ class tests extends CompilerTest { @Test def tasty_dotc_util = compileDir(dotcDir, "util", testPickling) @Test def tasty_tools_io = compileDir(toolsDir, "io", testPickling) - @Test def tasty_bootstrap = { + // Disabled, not worth porting since we're getting rid of the old JUnit tests soon. + /*@Test*/ def tasty_bootstrap = { val logging = if (false) List("-Ylog-classpath", "-verbose") else Nil val opt = List("-priorityclasspath", defaultOutputDir) ++ logging // first compile dotty diff --git a/compiler/test/dotty/tools/TypeStealer.scala b/compiler/test/dotty/tools/TypeStealer.scala deleted file mode 100644 index ccaf2d41e..000000000 --- a/compiler/test/dotty/tools/TypeStealer.scala +++ /dev/null @@ -1,21 +0,0 @@ -package dotty.tools - -import scala.tools.nsc.interpreter._ -import scala.tools.nsc.Settings - -object TypeStealer { - def main(args: Array[String]): Unit = { - def repl = new ILoop {} - - val settings = new Settings - settings.Yreplsync.value = true - - //use when launching normally outside SBT - settings.usejavacp.value = true - - //an alternative to 'usejavacp' setting, when launching from within SBT - //settings.embeddedDefaults[Repl.type] - - repl.process(settings) - } -} diff --git a/compiler/test/dotty/tools/backend/jvm/DottyBytecodeTest.scala b/compiler/test/dotty/tools/backend/jvm/DottyBytecodeTest.scala index fc9853691..c423089d0 100644 --- a/compiler/test/dotty/tools/backend/jvm/DottyBytecodeTest.scala +++ b/compiler/test/dotty/tools/backend/jvm/DottyBytecodeTest.scala @@ -11,7 +11,7 @@ import asm._ import asm.tree._ import scala.collection.JavaConverters._ -import scala.tools.nsc.util.JavaClassPath +import io.JavaClassPath import scala.collection.JavaConverters._ import scala.tools.asm.{ClassWriter, ClassReader} import scala.tools.asm.tree._ diff --git a/compiler/test/dotty/tools/dotc/CompilationTests.scala b/compiler/test/dotty/tools/dotc/CompilationTests.scala index a5914bf4d..334d347fc 100644 --- a/compiler/test/dotty/tools/dotc/CompilationTests.scala +++ b/compiler/test/dotty/tools/dotc/CompilationTests.scala @@ -4,11 +4,15 @@ package dotc import org.junit.{ Test, BeforeClass, AfterClass } +import java.nio.file._ +import java.util.stream.{ Stream => JStream } +import scala.collection.JavaConverters._ import scala.util.matching.Regex import scala.concurrent.duration._ import vulpix.{ ParallelTesting, SummaryReport, SummaryReporting, TestConfiguration } + class CompilationTests extends ParallelTesting { import TestConfiguration._ import CompilationTests._ @@ -219,7 +223,7 @@ class CompilationTests extends ParallelTesting { // compile with bootstrapped library on cp: defaultOutputDir + "lib/src/:" + // as well as bootstrapped compiler: - defaultOutputDir + "dotty1/dotty/:" + + defaultOutputDir + "dotty1/dotty1/:" + Jars.dottyInterfaces ) @@ -227,8 +231,36 @@ class CompilationTests extends ParallelTesting { compileDir("../library/src", allowDeepSubtypes.and("-Ycheck-reentrant", "-strict", "-priorityclasspath", defaultOutputDir)) - def dotty1 = - compileDir("../compiler/src/dotty", opt) + def sources(paths: JStream[Path], excludedFiles: List[String] = Nil): List[String] = + paths.iterator().asScala + .filter(path => + (path.toString.endsWith(".scala") || path.toString.endsWith(".java")) + && !excludedFiles.contains(path.getFileName.toString)) + .map(_.toString).toList + + val compilerDir = Paths.get("../compiler/src") + val compilerSources = sources(Files.walk(compilerDir)) + + val backendDir = Paths.get("../scala-backend/src/compiler/scala/tools/nsc/backend") + val backendJvmDir = Paths.get("../scala-backend/src/compiler/scala/tools/nsc/backend/jvm") + + // NOTE: Keep these exclusions synchronized with the ones in the sbt build (Build.scala) + val backendExcluded = + List("JavaPlatform.scala", "Platform.scala", "ScalaPrimitives.scala") + val backendJvmExcluded = + List("BCodeICodeCommon.scala", "GenASM.scala", "GenBCode.scala", "ScalacBackendInterface.scala") + + val backendSources = + sources(Files.list(backendDir), excludedFiles = backendExcluded) + val backendJvmSources = + sources(Files.list(backendJvmDir), excludedFiles = backendJvmExcluded) + + def dotty1 = { + compileList( + "dotty1", + compilerSources ++ backendSources ++ backendJvmSources, + opt) + } def dotty2 = compileShallowFilesInDir("../compiler/src/dotty", opt) @@ -247,7 +279,9 @@ class CompilationTests extends ParallelTesting { compileShallowFilesInDir("../compiler/src/dotty/tools/dotc/rewrite", opt) + compileShallowFilesInDir("../compiler/src/dotty/tools/dotc/transform", opt) + compileShallowFilesInDir("../compiler/src/dotty/tools/dotc/typer", opt) + - compileShallowFilesInDir("../compiler/src/dotty/tools/dotc/util", opt) + compileShallowFilesInDir("../compiler/src/dotty/tools/dotc/util", opt) + + compileList("shallow-backend", backendSources, opt) + + compileList("shallow-backend-jvm", backendJvmSources, opt) } :: Nil }.map(_.checkCompile()).foreach(_.delete()) } |