# HG changeset patch # User jjh # Date 1327541195 28800 # Node ID 83d5084beaa109a3cc9ade57659c7af66a681280 # Parent bf0e932fe9b4c0c97c627b750362c0cc45c7bb66 7129225: javac fails to run annotation processors when star import of package of gensrc Reviewed-by: jjg diff -r bf0e932fe9b4 -r 83d5084beaa1 src/share/classes/com/sun/tools/javac/comp/MemberEnter.java --- a/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Wed Jan 25 16:31:47 2012 -0800 +++ b/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Wed Jan 25 17:26:35 2012 -0800 @@ -42,6 +42,7 @@ import static com.sun.tools.javac.code.Flags.*; import static com.sun.tools.javac.code.Kinds.*; import static com.sun.tools.javac.code.TypeTags.*; +import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; /** This is the second phase of Enter, in which classes are completed @@ -140,7 +141,7 @@ JCDiagnostic msg = diags.fragment("fatal.err.no.java.lang"); throw new FatalError(msg); } else { - log.error(pos, "doesnt.exist", tsym); + log.error(DiagnosticFlag.RESOLVE_ERROR, pos, "doesnt.exist", tsym); } } env.toplevel.starImportScope.importAll(tsym.members()); diff -r bf0e932fe9b4 -r 83d5084beaa1 test/tools/javac/7129225/Anno.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/7129225/Anno.java Wed Jan 25 17:26:35 2012 -0800 @@ -0,0 +1,31 @@ +/* + * 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. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * 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.lang.annotation.ElementType; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +public @interface Anno { +} diff -r bf0e932fe9b4 -r 83d5084beaa1 test/tools/javac/7129225/AnnoProcessor.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/7129225/AnnoProcessor.java Wed Jan 25 17:26:35 2012 -0800 @@ -0,0 +1,45 @@ +/* + * 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. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * 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; +import javax.tools.Diagnostic.Kind; + +@SupportedAnnotationTypes("Anno") +public class AnnoProcessor extends JavacTestingAbstractProcessor { + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latest(); + } + + @Override + public boolean process(Set set, RoundEnvironment re) { + messager.printMessage(Kind.NOTE, "RUNNING - lastRound = " + re.processingOver()); + return true; + } +} + diff -r bf0e932fe9b4 -r 83d5084beaa1 test/tools/javac/7129225/NegTest.ref --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/7129225/NegTest.ref Wed Jan 25 17:26:35 2012 -0800 @@ -0,0 +1,2 @@ +TestImportStar.java:39:1: compiler.err.doesnt.exist: xxx +1 error diff -r bf0e932fe9b4 -r 83d5084beaa1 test/tools/javac/7129225/TestImportStar.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/7129225/TestImportStar.java Wed Jan 25 17:26:35 2012 -0800 @@ -0,0 +1,43 @@ +/* + * 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. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * 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 7129225 + * @summary import xxx.* isn't handled correctly by annotation processing + * @library ../lib + * @build JavacTestingAbstractProcessor + * @compile/fail/ref=NegTest.ref -XDrawDiagnostics TestImportStar.java + * @compile Anno.java AnnoProcessor.java + * @compile/ref=TestImportStar.ref -XDrawDiagnostics -processor AnnoProcessor -proc:only TestImportStar.java + */ + + //The @compile/fail... verifies that the fix doesn't break the normal compilation of import xxx.* + //The @comple/ref... verifies the fix fixes the bug + +import xxx.*; + +@Anno +public class TestImportStar { +} diff -r bf0e932fe9b4 -r 83d5084beaa1 test/tools/javac/7129225/TestImportStar.ref --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/tools/javac/7129225/TestImportStar.ref Wed Jan 25 17:26:35 2012 -0800 @@ -0,0 +1,3 @@ +- compiler.note.proc.messager: RUNNING - lastRound = false +TestImportStar.java:39:1: compiler.err.doesnt.exist: xxx +- compiler.note.proc.messager: RUNNING - lastRound = true