# HG changeset patch # User lana # Date 1375834362 25200 # Node ID e5a8cecf49bb6690a79695fb9903155bdaf0861c # Parent e8876bbc7936f13ddfd3acc97548eedd213da45f# Parent 46cb3cd6023b68facc76d0795f616ed6708531c5 Merge diff -r e8876bbc7936 -r e5a8cecf49bb langtools/src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java --- a/langtools/src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java Tue Aug 06 17:01:50 2013 -0700 +++ b/langtools/src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java Tue Aug 06 17:12:42 2013 -0700 @@ -172,8 +172,8 @@ } // So we have a containing type - String annoTypeName = annoType.getSimpleName(); - String containerTypeName = containerType.getSimpleName(); + String annoTypeName = annoType.getName(); + String containerTypeName = containerType.getName(); int directIndex = -1, containerIndex = -1; Attribute.Compound direct = null, container = null; // Find directly (explicit or implicit) present annotations @@ -303,8 +303,8 @@ } // So we have a containing type - String annoTypeName = annoType.getSimpleName(); - String containerTypeName = containerType.getSimpleName(); + String annoTypeName = annoType.getName(); + String containerTypeName = containerType.getName(); int directIndex = -1, containerIndex = -1; Attribute.Compound direct = null, container = null; // Find directly (explicit or implicit) present annotations diff -r e8876bbc7936 -r e5a8cecf49bb langtools/test/tools/javac/processing/model/element/8009367/TestQualifiedNameUsed.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/model/element/8009367/TestQualifiedNameUsed.java Tue Aug 06 17:12:42 2013 -0700 @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2013, 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 8009367 + * @summary Test that the correct kind of names (binary) are used when comparing + * Class and Symbol for repeatable Classes. + * @library /tools/javac/lib + * @build JavacTestingAbstractProcessor TestQualifiedNameUsed p.Q p.QQ p.R p.RR + * @run compile -processor TestQualifiedNameUsed -proc:only TestQualifiedNameUsed.java + */ + +import java.lang.annotation.Repeatable; +import java.util.Set; +import javax.annotation.processing.*; +import javax.lang.model.element.*; +import static javax.lang.model.util.ElementFilter.*; + +import com.sun.tools.javac.util.Assert; + +import java.util.Arrays; + +public class TestQualifiedNameUsed extends JavacTestingAbstractProcessor { + @Q + @p.Q + @p.R.Q + public boolean process(Set annotations, + RoundEnvironment roundEnv) { + if (!roundEnv.processingOver()) { + boolean hasRun = false; + for (Element element : roundEnv.getRootElements()) { + for (ExecutableElement e : methodsIn(element.getEnclosedElements())) { + if (e.getSimpleName().contentEquals("value")) + continue; // don't want to look Q.value() in this file + + hasRun = true; + Q[] qs = e.getAnnotationsByType(Q.class); + Assert.check(qs.length == 1); + Assert.check(qs[0] instanceof Q); + + p.Q[] ps = e.getAnnotationsByType(p.Q.class); + Assert.check(ps.length == 1); + Assert.check(ps[0] instanceof p.Q); + + p.R.Q[] rs = e.getAnnotationsByType(p.R.Q.class); + Assert.check(rs.length == 1); + Assert.check(rs[0] instanceof p.R.Q); + } + } + if (!hasRun) throw new RuntimeException("No methods!"); + } + return true; + } +} + +@Repeatable(QQ.class) +@interface Q {} + +@interface QQ { + Q[] value(); +} diff -r e8876bbc7936 -r e5a8cecf49bb langtools/test/tools/javac/processing/model/element/8009367/p/Q.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/model/element/8009367/p/Q.java Tue Aug 06 17:12:42 2013 -0700 @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2013, 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. + */ + +package p; + +import java.lang.annotation.Repeatable; + +@Repeatable(QQ.class) +public @interface Q {} diff -r e8876bbc7936 -r e5a8cecf49bb langtools/test/tools/javac/processing/model/element/8009367/p/QQ.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/model/element/8009367/p/QQ.java Tue Aug 06 17:12:42 2013 -0700 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2013, 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. + */ + +package p; + +public @interface QQ { + Q[] value(); +} diff -r e8876bbc7936 -r e5a8cecf49bb langtools/test/tools/javac/processing/model/element/8009367/p/R.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/model/element/8009367/p/R.java Tue Aug 06 17:12:42 2013 -0700 @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2013, 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. + */ + +package p; + +import java.lang.annotation.Repeatable; + +public class R { + + @Repeatable(RR.class) + public @interface Q {} +} diff -r e8876bbc7936 -r e5a8cecf49bb langtools/test/tools/javac/processing/model/element/8009367/p/RR.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/model/element/8009367/p/RR.java Tue Aug 06 17:12:42 2013 -0700 @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2013, 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. + */ + +package p; + +public @interface RR { + R.Q[] value(); +}