-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add a dotty-interfaces
package
#1125
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package dotty.tools.dotc.interfaces; | ||
|
||
import java.io.File; | ||
import java.util.Optional; | ||
|
||
/** An abstract file may either be a file on disk or a virtual file. | ||
* | ||
* Do not rely on the identity of instances of this class. | ||
* | ||
* User code should not implement this interface, but it may have to | ||
* manipulate objects of this type. | ||
*/ | ||
public interface AbstractFile { | ||
/** The name of this file, note that two files may have the same name. */ | ||
String name(); | ||
|
||
/** The path of this file, this might be a virtual path of an unspecified format. */ | ||
String path(); | ||
|
||
/** If this is a real file on disk, a `java.io.File` that corresponds to this file. | ||
* Otherwise, an empty `Optional`. | ||
*/ | ||
Optional<File> jfile(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
package dotty.tools.dotc.interfaces; | ||
|
||
/** Set of callbacks called in response to events during the compilation process. | ||
* | ||
* You should implement this interface if you want to react to one or more of | ||
* these events. | ||
* | ||
* @see the method `process` of `dotty.tools.dotc.Driver` for more information. | ||
*/ | ||
public interface CompilerCallback { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Name suggestion: |
||
/** Called when a class has been generated. | ||
* | ||
* @param source The source file corresponding to this class. | ||
* Example: ./src/library/scala/collection/Seq.scala | ||
* @param generatedClass The generated classfile for this class. | ||
* Example: ./scala/collection/Seq$.class | ||
* @param className The name of this class. | ||
* Example: scala.collection.Seq$ | ||
*/ | ||
default void onClassGenerated(SourceFile source, AbstractFile generatedClass, String className) {}; | ||
|
||
/** Called when every class for this file has been generated. | ||
* | ||
* @param source The source file. | ||
* Example: ./src/library/scala/collection/Seq.scala | ||
*/ | ||
default void onSourceCompiled(SourceFile source) {}; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package dotty.tools.dotc.interfaces; | ||
|
||
/** Summary of the diagnostics emitted by a Reporter. | ||
* | ||
* User code should not implement this interface, but it may have to | ||
* manipulate objects of this type. | ||
*/ | ||
public interface ReporterResult { | ||
/** Have we emitted any error ? */ | ||
boolean hasErrors(); | ||
/** Number of errors that have been emitted */ | ||
int errorCount(); | ||
|
||
/** Have we emitted any warning ? */ | ||
boolean hasWarnings(); | ||
/** Number of warnings that have been emitted */ | ||
int warningCount(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package dotty.tools.dotc.interfaces; | ||
|
||
/** Report errors, warnings and info messages during the compilation process | ||
* | ||
* You should implement this interface if you want to handle the diagnostics | ||
* returned by the compiler yourself. | ||
* | ||
* @see the method `process` of `dotty.tools.dotc.Driver` for more information. | ||
*/ | ||
public interface SimpleReporter { | ||
/** Report a diagnostic. */ | ||
void report(Diagnostic diag); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package dotty.tools.dotc.interfaces; | ||
|
||
import java.io.File; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This import is unused. |
||
|
||
/** A source file. | ||
* | ||
* User code should not implement this interface, but it may have to | ||
* manipulate objects of this type. | ||
*/ | ||
public interface SourceFile extends AbstractFile { | ||
/** The content of this file as seen by the compiler. */ | ||
char[] content(); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package dotty.tools.dotc.interfaces; | ||
|
||
/** A position in a source file. | ||
* | ||
* A position is a range between a start offset and an end offset, as well as a | ||
* point inside this range. | ||
* | ||
* As a convenience, we also provide methods that return the line and the column | ||
* corresponding to each offset. | ||
* | ||
* User code should not implement this interface, but it may have to | ||
* manipulate objects of this type. | ||
*/ | ||
public interface SourcePosition { | ||
/** Content of the line which contains the point */ | ||
String lineContent(); | ||
|
||
/** Offset to the point */ | ||
int point(); | ||
/** Line number of the point, starting at 0 */ | ||
int line(); | ||
/** Column number of the point, starting at 0 */ | ||
int column(); | ||
|
||
/** Offset to the range start */ | ||
int start(); | ||
/** Line number of the range start, starting at 0 */ | ||
int startLine(); | ||
/** Column number of the range start, starting at 0 */ | ||
int startColumn(); | ||
|
||
/** Offset to the range end */ | ||
int end(); | ||
/** Line number of the range end, starting at 0 */ | ||
int endLine(); | ||
/** Column number of the range end, starting at 0 */ | ||
int endColumn(); | ||
|
||
/** The source file corresponding to this position. | ||
* The values returned by `point()`, `start()` and `end()` | ||
* are indices in the array returned by `source().content()`. | ||
*/ | ||
SourceFile source(); | ||
} |
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
JavaDoc style is different than Scaladoc. See http://www.oracle.com/technetwork/articles/java/index-137868.html#format
It should therefore be:
(same everywhere there are JavaDocs, obviously.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not against changing it, but isn't it nicer to keep the style consistent across Dotty?
javadoc
seems to interpret this style correctly so I don't see any downside.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have any strong feelings either way. We can keep it like this.