diff options
author | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-02-26 16:30:39 +0100 |
---|---|---|
committer | Sébastien Doeraene <sjrdoeraene@gmail.com> | 2016-03-01 15:47:56 +0100 |
commit | cd4004a82d9713bbb0b120aba83b3ed8fc9f1372 (patch) | |
tree | 309f090cb79fba02746b7b8a0109e171881d5d27 /src/dotty/tools/dotc/Compiler.scala | |
parent | 0ebf36b394b00f3f432d8fdedeaa15e7d4df2b06 (diff) | |
download | dotty-cd4004a82d9713bbb0b120aba83b3ed8fc9f1372.tar.gz dotty-cd4004a82d9713bbb0b120aba83b3ed8fc9f1372.tar.bz2 dotty-cd4004a82d9713bbb0b120aba83b3ed8fc9f1372.zip |
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.
Diffstat (limited to 'src/dotty/tools/dotc/Compiler.scala')
-rw-r--r-- | src/dotty/tools/dotc/Compiler.scala | 13 |
1 files changed, 12 insertions, 1 deletions
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)) |