1/* 2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24/** 25 * @test 26 * @bug 8029017 27 * @summary sanity testing of ElementType validation for repeating annotations 28 * @compile TypeUseTarget.java 29 */ 30 31import java.lang.annotation.*; 32 33public class TypeUseTarget {} 34 35 36// Case 1: 37@Target({ 38 ElementType.TYPE_USE, 39}) 40@Repeatable(Case1Container.class) 41@interface Case1 {} 42 43@Target({ 44 ElementType.ANNOTATION_TYPE, 45 ElementType.TYPE, 46 ElementType.TYPE_USE, 47 ElementType.TYPE_PARAMETER, 48}) 49@interface Case1Container { 50 Case1[] value(); 51} 52 53 54// Case 2: 55@Target({ 56 ElementType.TYPE_USE, 57}) 58@Repeatable(Case2Container.class) 59@interface Case2 {} 60 61@Target({ 62 ElementType.ANNOTATION_TYPE, 63 ElementType.TYPE, 64 ElementType.TYPE_USE, 65}) 66@interface Case2Container { 67 Case2[] value(); 68} 69 70 71// Case 3: 72@Target({ 73 ElementType.TYPE_USE, 74}) 75@Repeatable(Case3Container.class) 76@interface Case3 {} 77 78@Target({ 79 ElementType.ANNOTATION_TYPE, 80 ElementType.TYPE, 81}) 82@interface Case3Container { 83 Case3[] value(); 84} 85 86 87// Case 4: 88@Target({ 89 ElementType.TYPE_USE, 90}) 91@Repeatable(Case4Container.class) 92@interface Case4 {} 93 94@Target({ 95 ElementType.ANNOTATION_TYPE, 96}) 97@interface Case4Container { 98 Case4[] value(); 99} 100 101 102// Case 5: 103@Target({ 104 ElementType.TYPE_USE, 105}) 106@Repeatable(Case5Container.class) 107@interface Case5 {} 108 109@Target({ 110 ElementType.TYPE, 111}) 112@interface Case5Container { 113 Case5[] value(); 114} 115 116 117// Case 6: 118@Target({ 119 ElementType.TYPE_USE, 120}) 121@Repeatable(Case6Container.class) 122@interface Case6 {} 123 124@Target({ 125 ElementType.TYPE_PARAMETER, 126}) 127@interface Case6Container { 128 Case6[] value(); 129} 130