From 7e7ee820df7647680d9aaf1ca991fe9718159097 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Wed, 24 Feb 2016 23:53:35 +0100 Subject: Add a `dotty-interfaces` package We introduce a new entry point for the compiler in `dotty.tools.dotc.Driver`: ``` def process(args: Array[String], simple: interfaces.SimpleReporter, callback: interfaces.CompilerCallback): interfaces.ReporterResult ``` Except for `args` which is just an array, the argument types and return type of this method are Java interfaces defined in a new package called `dotty-interfaces` which has a stable ABI. This means that you can programmatically run a compiler with a custom reporter and callbacks without having to recompile it against every version of dotty: you only need to have `dotty-interfaces` present at compile-time and call the `process` method using Java reflection. See `test/test/InterfaceEntryPointTest.scala` for a concrete example. This design is based on discussions with the IntelliJ IDEA Scala plugin team. Thanks to Nikolay Tropin for the discussions and his PR proposal (see #1011). --- src/dotty/tools/dotc/core/Contexts.scala | 1 + 1 file changed, 1 insertion(+) (limited to 'src/dotty/tools/dotc/core/Contexts.scala') diff --git a/src/dotty/tools/dotc/core/Contexts.scala b/src/dotty/tools/dotc/core/Contexts.scala index c1132ce4b..f0537dffa 100644 --- a/src/dotty/tools/dotc/core/Contexts.scala +++ b/src/dotty/tools/dotc/core/Contexts.scala @@ -2,6 +2,7 @@ package dotty.tools package dotc package core +import interfaces.CompilerCallback import Decorators._ import Periods._ import Names._ -- cgit v1.2.3