aboutsummaryrefslogtreecommitdiff
path: root/interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java
diff options
context:
space:
mode:
authorGuillaume Martres <smarter@ubuntu.com>2016-02-24 23:53:35 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-02-28 20:08:59 +0100
commit7e7ee820df7647680d9aaf1ca991fe9718159097 (patch)
tree26095cec3a83fc12984e745e459dcb3d0996d045 /interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java
parent94b41d5c491878543288af1bedb4daf57226ca07 (diff)
downloaddotty-7e7ee820df7647680d9aaf1ca991fe9718159097.tar.gz
dotty-7e7ee820df7647680d9aaf1ca991fe9718159097.tar.bz2
dotty-7e7ee820df7647680d9aaf1ca991fe9718159097.zip
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).
Diffstat (limited to 'interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java')
-rw-r--r--interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java b/interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java
new file mode 100644
index 000000000..436f9f8ea
--- /dev/null
+++ b/interfaces/src/main/java/dotty/tools/dotc/interfaces/Diagnostic.java
@@ -0,0 +1,26 @@
+package dotty.tools.dotc.interfaces;
+
+import java.util.Optional;
+
+/** A diagnostic is a message emitted during the compilation process.
+ *
+ * It can either be an error, a warning or an information.
+ *
+ * User code should not implement this interface, but it may have to
+ * manipulate objects of this type.
+ */
+public interface Diagnostic {
+ public static final int ERROR = 2;
+ public static final int WARNING = 1;
+ public static final int INFO = 0;
+
+ /** The message to report */
+ String message();
+
+ /** Level of the diagnostic, can be either ERROR, WARNING or INFO */
+ int level();
+
+ /** The position in a source file of the code that caused this diagnostic
+ * to be emitted. */
+ Optional<SourcePosition> position();
+}