From cd4004a82d9713bbb0b120aba83b3ed8fc9f1372 Mon Sep 17 00:00:00 2001 From: Sébastien Doeraene Date: Fri, 26 Feb 2016 16:30:39 +0100 Subject: Initial infrastructure and hello world for the Scala.js back-end. The Scala.js back-end can be enabled with the `-scalajs` command-line option. Currently, it adds one phase to the pipeline, which emits .sjsir files from trees. A sandbox project `sjsSandbox`, in `sandbox/scalajs/`, can be used to easily test Scala.js compilation. One can run the `main()` method of the `hello.world` object with > sjsSandbox/run The back-end only contains the bare mimimum to compile the hello world application in the sandbox. Anything else will blow up (for example, primitive method calls). It is a work-in-progress. --- src/dotty/tools/dotc/Compiler.scala | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'src/dotty/tools/dotc/Compiler.scala') diff --git a/src/dotty/tools/dotc/Compiler.scala b/src/dotty/tools/dotc/Compiler.scala index d526903b8..2a3346486 100644 --- a/src/dotty/tools/dotc/Compiler.scala +++ b/src/dotty/tools/dotc/Compiler.scala @@ -16,6 +16,7 @@ import core.DenotTransformers.DenotTransformer import core.Denotations.SingleDenotation import dotty.tools.backend.jvm.{LabelDefs, GenBCode} +import dotty.tools.backend.sjs.GenSJSIR class Compiler { @@ -83,6 +84,7 @@ class Compiler { List(new ExpandPrivate, new CollectEntryPoints, new LabelDefs), + List(new GenSJSIR), List(new GenBCode) ) @@ -101,7 +103,16 @@ class Compiler { */ def rootContext(implicit ctx: Context): Context = { ctx.definitions.init(ctx) - ctx.setPhasePlan(phases) + val actualPhases = if (ctx.settings.scalajs.value) { + phases + } else { + // Remove Scala.js-related phases + phases.mapConserve(_.filter { + case _: GenSJSIR => false + case _ => true + }).filter(_.nonEmpty) + } + ctx.setPhasePlan(actualPhases) val rootScope = new MutableScope val bootstrap = ctx.fresh .setPeriod(Period(nextRunId, FirstPhaseId)) -- cgit v1.2.3