# HG changeset patch # User jjh # Date 1329177703 28800 # Node ID 1fa9d18707da5bb32f2a83ff80fe5b5330b781e2 # Parent dc9c7a2df80e3b27f6354d33ecd57e0711f911d6 7142672: Problems with the value passed to the 'classes' param of JavaCompiler.CompilationTask.getTask(...) Reviewed-by: jjg diff -r dc9c7a2df80e -r 1fa9d18707da langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java --- a/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Sun Feb 12 16:44:13 2012 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/main/JavaCompiler.java Mon Feb 13 16:01:43 2012 -0800 @@ -1077,7 +1077,9 @@ boolean errors = false; for (String nameStr : classnames) { Symbol sym = resolveBinaryNameOrIdent(nameStr); - if (sym == null || (sym.kind == Kinds.PCK && !processPcks)) { + if (sym == null || + (sym.kind == Kinds.PCK && !processPcks) || + sym.kind == Kinds.ABSENT_TYP) { log.error("proc.cant.find.class", nameStr); errors = true; continue; diff -r dc9c7a2df80e -r 1fa9d18707da langtools/test/tools/javac/T7142672/AnnoProcessor.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T7142672/AnnoProcessor.java Mon Feb 13 16:01:43 2012 -0800 @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.util.Set; +import javax.annotation.processing.*; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.TypeElement; + +@SupportedAnnotationTypes("Anno") +public class AnnoProcessor extends AbstractProcessor { + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latest(); + } + + @Override + public boolean process(Set set, RoundEnvironment re) { + System.out.println("RUNNING..."); + if(set.isEmpty()) { + return false; + } + return false; + } +} diff -r dc9c7a2df80e -r 1fa9d18707da langtools/test/tools/javac/T7142672/Bug.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T7142672/Bug.java Mon Feb 13 16:01:43 2012 -0800 @@ -0,0 +1,85 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 7142672 + * @summary Problems with the value passed to the 'classes' param of JavaCompiler.CompilationTask.getTask(...) + * @author holmlund + * @compile AnnoProcessor.java Bug.java Test3.java + * @run main Bug Test2.java + * @run main Bug Test2.foo + * @run main Bug Test3.java + */ +import java.io.*; +import java.util.*; +import javax.tools.*; + +// Each run should output the 'could not find class file' message, and not throw an AssertError. +public class Bug { + public static void main(String... arg) throws Throwable { + String name = arg[0]; + final String expectedMsg = "error: Could not find class file for '" + name + "'."; + JavaCompiler javac = ToolProvider.getSystemJavaCompiler(); + JavaCompiler.CompilationTask task2; + StringWriter sw = new StringWriter(); + final PrintWriter pw = new PrintWriter(sw); + + + DiagnosticListener dl = + new DiagnosticListener() { + public void report(Diagnostic message) { + pw.print("Diagnostic:\n"+ message.toString()+"\n"); + if (!message.toString().equals(expectedMsg)){ + System.err.println("Diagnostic:\n"+ message.toString()+"\n"); + System.err.println("--Failed: Unexpected diagnostic"); + System.exit(1); + } + } + }; + + StandardJavaFileManager sjfm = javac.getStandardFileManager(dl,null,null); + + List opts = new ArrayList(); + opts.add("-proc:only"); + opts.add("-processor"); + opts.add("AnnoProcessor"); + + boolean xxx; + + System.err.println("\n-- " + name); + task2 = javac.getTask(pw, sjfm, dl, opts, Arrays.asList(name), null); + xxx = task2.call(); + + String out = sw.toString(); + System.err.println(out); + if (out.contains("Assert")) { + System.err.println("--Failed: Assertion failure"); + System.exit(1); + } + if (!out.contains(expectedMsg)) { + System.err.println("--Failed: Expected diagnostic not found"); + System.exit(1); + } + } +} diff -r dc9c7a2df80e -r 1fa9d18707da langtools/test/tools/javac/T7142672/Test2.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T7142672/Test2.java Mon Feb 13 16:01:43 2012 -0800 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +class Test2 { +} diff -r dc9c7a2df80e -r 1fa9d18707da langtools/test/tools/javac/T7142672/Test3.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T7142672/Test3.java Mon Feb 13 16:01:43 2012 -0800 @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +class Test3 { +}