test/tools/javac/annotations/repeatingAnnotations/NestedContainers.java

Thu, 21 Feb 2013 15:26:46 +0000

author
mcimadamore
date
Thu, 21 Feb 2013 15:26:46 +0000
changeset 1599
9f0ec00514b6
parent 1492
df694c775e8a
child 2525
2eb010b6cb22
permissions
-rw-r--r--

8007461: Regression: bad overload resolution when inner class and outer class have method with same name
Summary: Fix regression in varargs method resolution introduced by bad refactoring
Reviewed-by: jjg

jfranck@1313 1 /*
jjg@1492 2 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
jfranck@1313 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
jfranck@1313 4 *
jfranck@1313 5 * This code is free software; you can redistribute it and/or modify it
jfranck@1313 6 * under the terms of the GNU General Public License version 2 only, as
jfranck@1313 7 * published by the Free Software Foundation.
jfranck@1313 8 *
jfranck@1313 9 * This code is distributed in the hope that it will be useful, but WITHOUT
jfranck@1313 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
jfranck@1313 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
jfranck@1313 12 * version 2 for more details (a copy is included in the LICENSE file that
jfranck@1313 13 * accompanied this code).
jfranck@1313 14 *
jfranck@1313 15 * You should have received a copy of the GNU General Public License version
jfranck@1313 16 * 2 along with this work; if not, write to the Free Software Foundation,
jfranck@1313 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
jfranck@1313 18 *
jfranck@1313 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
jfranck@1313 20 * or visit www.oracle.com if you need additional information or have any
jfranck@1313 21 * questions.
jfranck@1313 22 */
jfranck@1313 23
jfranck@1313 24 /**
jfranck@1313 25 * @test
jfranck@1313 26 * @summary Smoke test for repeating annotations
jfranck@1313 27 * @bug 7151010
jfranck@1313 28 *
jfranck@1313 29 * @run clean NestedContainers BasicRepeatingAnnos BasicRepeatingAnnos2 Foo Foos FoosFoos
jfranck@1313 30 * @run compile NestedContainers.java
jfranck@1313 31 * @run main NestedContainers
jfranck@1313 32 */
jfranck@1313 33
jfranck@1313 34 import java.lang.annotation.*;
jfranck@1313 35
jfranck@1313 36 @Retention(RetentionPolicy.RUNTIME)
jjg@1492 37 @Repeatable(Foos.class)
jfranck@1313 38 @interface Foo {}
jfranck@1313 39
jfranck@1313 40 @Retention(RetentionPolicy.RUNTIME)
jjg@1492 41 @Repeatable(FoosFoos.class)
jfranck@1313 42 @interface Foos {
jfranck@1313 43 Foo[] value();
jfranck@1313 44 }
jfranck@1313 45
jfranck@1313 46 @Retention(RetentionPolicy.RUNTIME)
jfranck@1313 47 @interface FoosFoos {
jfranck@1313 48 Foos[] value();
jfranck@1313 49 }
jfranck@1313 50
jfranck@1313 51 @Foo
jfranck@1313 52 @Foo
jfranck@1313 53 class BasicRepeatingAnnos {}
jfranck@1313 54
jfranck@1313 55 @Foos({})
jfranck@1313 56 @Foos({})
jfranck@1313 57 class BasicRepeatingAnnos2 {}
jfranck@1313 58
jfranck@1313 59 public class NestedContainers {
jfranck@1313 60 public static void main(String[] args) throws Exception {
jfranck@1313 61 Annotation a = BasicRepeatingAnnos.class.getAnnotation(Foos.class);
jfranck@1313 62 if (a == null) {
jfranck@1313 63 throw new RuntimeException("Container annotation missing");
jfranck@1313 64 }
jfranck@1313 65
jfranck@1313 66 // Check 2:nd level container
jfranck@1313 67 a = BasicRepeatingAnnos2.class.getAnnotation(FoosFoos.class);
jfranck@1313 68 if (a == null) {
jfranck@1313 69 throw new RuntimeException("Container annotation missing");
jfranck@1313 70 }
jfranck@1313 71 }
jfranck@1313 72 }

mercurial