blob: ecf00de1e1ac2bf52ec70601907696c831a2a268 [file] [log] [blame]
/*
* @test
* @summary Ensure that the Java Compiler API can be used multiple times
* to execute the Checker Framework.
*
* @compile Main.java
* @run main Main
*/
/*
* Test based on message by Daniil Ovchinnikov:
* https://groups.google.com/d/msg/checker-framework-dev/FvWmCxB8OpE/Cgp1DsPwnWwJ
*/
import java.io.File;
import java.util.Arrays;
import javax.tools.JavaCompiler;
import javax.tools.StandardJavaFileManager;
import javax.tools.ToolProvider;
import org.checkerframework.checker.regex.RegexChecker;
public class Main {
public static void main(String[] args) {
final JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
final StandardJavaFileManager fileManager = javac.getStandardFileManager(null, null, null);
if (!doStuff(javac, fileManager)) {
return;
}
if (!doStuff(javac, fileManager)) {
return;
}
if (!doStuff(javac, fileManager)) {
return;
}
}
public static boolean doStuff(JavaCompiler javac, StandardJavaFileManager fileManager) {
File testfile = new File(System.getProperty("test.src", "."), "Test.java");
JavaCompiler.CompilationTask task =
javac.getTask(
null,
null,
null,
Arrays.asList(
"-classpath",
"../../dist/checker.jar",
"-proc:only",
"-AprintAllQualifiers",
"-source",
"8",
"-target",
"8",
"-Xlint:-options"),
null,
fileManager.getJavaFileObjects(testfile));
task.setProcessors(Arrays.asList(new RegexChecker()));
return task.call();
}
}