Search in sources :

Example 91 with JavacTask

use of com.sun.source.util.JavacTask in project ceylon-compiler by ceylon.

the class UnusedResourcesTest method test.

static void test(XlintOption xlint, SuppressLevel suppressLevel, ResourceUsage usage1, ResourceUsage usage2, ResourceUsage usage3) throws Exception {
    final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
    JavaSource source = new JavaSource(suppressLevel, usage1, usage2, usage3);
    DiagnosticChecker dc = new DiagnosticChecker();
    JavacTask ct = (JavacTask) tool.getTask(null, fm, dc, Arrays.asList(xlint.getXlintOption()), null, Arrays.asList(source));
    ct.analyze();
    check(source, xlint, suppressLevel, usage1, usage2, usage3, dc);
}
Also used : JavaCompiler(javax.tools.JavaCompiler) JavacTask(com.sun.source.util.JavacTask)

Example 92 with JavacTask

use of com.sun.source.util.JavacTask in project ceylon-compiler by ceylon.

the class TestPos method main.

public static void main(String... args) throws IOException {
    final boolean[] sawError = { false };
    final StringBuilder log = new StringBuilder();
    class MyFileObject extends SimpleJavaFileObject {

        MyFileObject() {
            super(URI.create("myfo:///Test.java"), SOURCE);
        }

        @Override
        public String getCharContent(boolean ignoreEncodingErrors) {
            // 0123456789012345678901234567890123456789012345678901234
            return "class Test { { Object[] o = new <T,e,s,t>Object[0]; } }";
        }
    }
    class Scanner extends TreeScanner<Void, Trees> {

        CompilationUnitTree toplevel = null;

        @Override
        public Void visitCompilationUnit(CompilationUnitTree node, Trees trees) {
            toplevel = node;
            return super.visitCompilationUnit(node, trees);
        }

        @Override
        public Void visitErroneous(ErroneousTree node, Trees trees) {
            sawError[0] = true;
            long startPos = trees.getSourcePositions().getStartPosition(toplevel, node);
            long endPos = trees.getSourcePositions().getEndPosition(toplevel, node);
            log.append(String.format("begin=%s, end=%s : %s%n", startPos, endPos, node.getErrorTrees()));
            if (startPos != 28)
                error("Start pos for %s is incorrect (%s)!", node, startPos);
            if (endPos != 50)
                error("End pos for %s is incorrect (%s)!", node, endPos);
            return null;
        }
    }
    JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
    List<JavaFileObject> compilationUnits = Collections.<JavaFileObject>singletonList(new MyFileObject());
    DiagnosticListener<JavaFileObject> dl = new DiagnosticListener<JavaFileObject>() {

        public void report(Diagnostic<? extends JavaFileObject> diag) {
            log.append(String.format("%s @ %s%n", diag.getCode(), diag.getPosition()));
            if (!diag.getCode().equals(errCode))
                error("unexpected error");
            if (diag.getPosition() != 33)
                error("Error pos for %s is incorrect (%s)!", diag.getCode(), diag.getPosition());
            sawError[0] = true;
        }
    };
    JavacTask task = (JavacTask) javac.getTask(null, null, dl, null, null, compilationUnits);
    Trees trees = Trees.instance(task);
    Iterable<? extends Tree> toplevels = task.parse();
    if (!sawError[0])
        error("No parse error detected");
    sawError[0] = false;
    new Scanner().scan(toplevels, trees);
    if (!sawError[0])
        error("No error tree detected");
    if (!log.toString().equals(expected))
        error("Unexpected log message: %n%s%n", log);
    System.out.print(log);
    System.out.flush();
}
Also used : SimpleJavaFileObject(javax.tools.SimpleJavaFileObject) Trees(com.sun.source.util.Trees) TreeScanner(com.sun.source.util.TreeScanner) CompilationUnitTree(com.sun.source.tree.CompilationUnitTree) JavaCompiler(javax.tools.JavaCompiler) Diagnostic(javax.tools.Diagnostic) DiagnosticListener(javax.tools.DiagnosticListener) SimpleJavaFileObject(javax.tools.SimpleJavaFileObject) JavaFileObject(javax.tools.JavaFileObject) TreeScanner(com.sun.source.util.TreeScanner) ErroneousTree(com.sun.source.tree.ErroneousTree) JavacTask(com.sun.source.util.JavacTask)

Example 93 with JavacTask

use of com.sun.source.util.JavacTask in project ceylon-compiler by ceylon.

the class T6996914a method compileAndCheck.

static void compileAndCheck(PackageKind pk, ConstructorKind ck) throws Exception {
    FooClass foo = new FooClass(pk, ck);
    ClientClass client = new ClientClass(pk);
    final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
    ErrorListener el = new ErrorListener();
    JavacTask ct = (JavacTask) tool.getTask(null, null, el, null, null, Arrays.asList(foo, client));
    ct.analyze();
    if (el.errors > 0 == check(pk, ck)) {
        String msg = el.errors > 0 ? "Error compiling files" : "No error when compiling files";
        throw new AssertionError(msg + ": \n" + foo.source + "\n" + client.source);
    }
}
Also used : JavaCompiler(javax.tools.JavaCompiler) JavacTask(com.sun.source.util.JavacTask)

Example 94 with JavacTask

use of com.sun.source.util.JavacTask in project ceylon-compiler by ceylon.

the class OverrideBridge method compile.

static Map<ClassFile, List<Method>> compile(Implementation implB, Implementation implC, Implementation implD, String destPath) throws Exception {
    File destDir = new File(workDir, destPath);
    destDir.mkdir();
    final JavaCompiler tool = ToolProvider.getSystemJavaCompiler();
    JavaSource source = new JavaSource(implB, implC, implD);
    JavacTask ct = (JavacTask) tool.getTask(null, null, null, Arrays.asList("-d", destPath), null, Arrays.asList(source));
    ct.generate();
    Map<ClassFile, List<Method>> members = new HashMap<>();
    addMembers(destDir, members);
    return members;
}
Also used : ClassFile(com.sun.tools.classfile.ClassFile) HashMap(java.util.HashMap) JavaCompiler(javax.tools.JavaCompiler) ArrayList(java.util.ArrayList) List(java.util.List) JavacTask(com.sun.source.util.JavacTask) ClassFile(com.sun.tools.classfile.ClassFile)

Example 95 with JavacTask

use of com.sun.source.util.JavacTask in project ceylon-compiler by ceylon.

the class TreePosTest method read.

/**
 * Read a file.
 * @param file the file to be read
 * @return the tree for the content of the file
 * @throws IOException if any IO errors occur
 * @throws TreePosTest.ParseException if any errors occur while parsing the file
 */
JCCompilationUnit read(File file) throws IOException, ParseException {
    JavacTool tool = JavacTool.create();
    r.errors = 0;
    Iterable<? extends JavaFileObject> files = fm.getJavaFileObjects(file);
    JavacTask task = tool.getTask(pw, fm, r, Collections.<String>emptyList(), null, files);
    Iterable<? extends CompilationUnitTree> trees = task.parse();
    pw.flush();
    if (r.errors > 0)
        throw new ParseException(sw.toString());
    Iterator<? extends CompilationUnitTree> iter = trees.iterator();
    if (!iter.hasNext())
        throw new Error("no trees found");
    JCCompilationUnit t = (JCCompilationUnit) iter.next();
    if (iter.hasNext())
        throw new Error("too many trees found");
    return t;
}
Also used : JCCompilationUnit(com.sun.tools.javac.tree.JCTree.JCCompilationUnit) JavacTool(com.sun.tools.javac.api.JavacTool) JavacTask(com.sun.source.util.JavacTask)

Aggregations

JavacTask (com.sun.source.util.JavacTask)97 JavaCompiler (javax.tools.JavaCompiler)45 JavaFileObject (javax.tools.JavaFileObject)27 JavacTool (com.sun.tools.javac.api.JavacTool)24 CompilationUnitTree (com.sun.source.tree.CompilationUnitTree)23 StandardJavaFileManager (javax.tools.StandardJavaFileManager)17 SimpleJavaFileObject (javax.tools.SimpleJavaFileObject)16 IOException (java.io.IOException)14 DiagnosticCollector (javax.tools.DiagnosticCollector)13 File (java.io.File)12 StringWriter (java.io.StringWriter)12 Context (com.sun.tools.javac.util.Context)11 PrintWriter (java.io.PrintWriter)11 JavacFileManager (com.sun.tools.javac.file.JavacFileManager)9 Path (java.nio.file.Path)8 ArrayList (java.util.ArrayList)8 JCCompilationUnit (com.sun.tools.javac.tree.JCTree.JCCompilationUnit)7 Diagnostic (javax.tools.Diagnostic)7 ClassTree (com.sun.source.tree.ClassTree)6 Trees (com.sun.source.util.Trees)6