jjg@1521: /* darcy@1534: * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved. jjg@1521: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. jjg@1521: * jjg@1521: * This code is free software; you can redistribute it and/or modify it jjg@1521: * under the terms of the GNU General Public License version 2 only, as jjg@1521: * published by the Free Software Foundation. jjg@1521: * jjg@1521: * This code is distributed in the hope that it will be useful, but WITHOUT jjg@1521: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or jjg@1521: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License jjg@1521: * version 2 for more details (a copy is included in the LICENSE file that jjg@1521: * accompanied this code). jjg@1521: * jjg@1521: * You should have received a copy of the GNU General Public License version jjg@1521: * 2 along with this work; if not, write to the Free Software Foundation, jjg@1521: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. jjg@1521: * jjg@1521: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA jjg@1521: * or visit www.oracle.com if you need additional information or have any jjg@1521: * questions. jjg@1521: */ jjg@1521: import java.lang.annotation.*; jjg@1521: import static java.lang.annotation.ElementType.*; jjg@1521: import static java.lang.annotation.RetentionPolicy.*; jjg@1521: jjg@1521: import java.util.*; jjg@1521: import java.io.*; jjg@1521: jjg@1521: /* jjg@1521: * @test jjg@1521: * @summary compiler accepts all values jjg@1521: * @author Mahmood Ali jjg@1521: * @author Yuri Gaevsky jjg@1521: * @compile TargetTypes.java jjg@1521: */ jjg@1521: jjg@1521: @Target({TYPE_USE, TYPE_PARAMETER, TYPE}) jjg@1521: @Retention(RetentionPolicy.RUNTIME) jjg@1521: @interface A {} jjg@1521: jjg@1521: /** wildcard bound */ jjg@1521: class T0x1C { jjg@1521: void m0x1C(List lst) {} jjg@1521: } jjg@1521: jjg@1521: /** wildcard bound generic/array */ jjg@1521: class T0x1D { jjg@1521: void m0x1D(List> lst) {} jjg@1521: } jjg@1521: jjg@1521: /** typecast */ jjg@1521: class T0x00 { jjg@1521: void m0x00(Long l1) { jjg@1521: Object l2 = (@A Long) l1; jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** typecast generic/array */ jjg@1521: class T0x01 { jjg@1521: void m0x01(List list) { jjg@1521: List l = (List<@A T>) list; jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** instanceof */ jjg@1521: class T0x02 { jjg@1521: boolean m0x02(String s) { jjg@1521: return (s instanceof @A String); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** object creation (new) */ jjg@1521: class T0x04 { jjg@1521: void m0x04() { jjg@1521: new @A ArrayList(); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** local variable */ jjg@1521: class T0x08 { jjg@1521: void m0x08() { jjg@1521: @A String s = null; jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** method parameter generic/array */ jjg@1521: class T0x0D { jjg@1521: void m0x0D(HashMap<@A Object, List<@A List<@A Class>>> s1) {} jjg@1521: } jjg@1521: jjg@1521: /** method receiver */ jjg@1521: class T0x06 { jjg@1521: void m0x06(@A T0x06 this) {} jjg@1521: } jjg@1521: jjg@1521: /** method return type generic/array */ jjg@1521: class T0x0B { jjg@1521: Class<@A Object> m0x0B() { return null; } jjg@1521: } jjg@1521: jjg@1521: /** field generic/array */ jjg@1521: class T0x0F { jjg@1521: HashMap<@A Object, @A Object> c1; jjg@1521: } jjg@1521: jjg@1521: /** method type parameter */ jjg@1521: class T0x20 { jjg@1521: <@A T, @A U> void m0x20() {} jjg@1521: } jjg@1521: jjg@1521: /** class type parameter */ jjg@1521: class T0x22<@A T, @A U> { jjg@1521: } jjg@1521: jjg@1521: /** class type parameter bound */ jjg@1521: class T0x10 { jjg@1521: } jjg@1521: jjg@1521: /** method type parameter bound */ jjg@1521: class T0x12 { jjg@1521: void m0x12() {} jjg@1521: } jjg@1521: jjg@1521: /** class type parameter bound generic/array */ jjg@1521: class T0x11> { jjg@1521: } jjg@1521: jjg@1521: jjg@1521: /** method type parameter bound generic/array */ jjg@1521: class T0x13 { jjg@1521: static > T m0x13() { jjg@1521: return null; jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** class extends/implements generic/array */ jjg@1521: class T0x15 extends ArrayList<@A T> { jjg@1521: } jjg@1521: jjg@1521: /** type test (instanceof) generic/array */ jjg@1521: class T0x03 { jjg@1521: void m0x03(T typeObj, Object obj) { jjg@1521: boolean ok = obj instanceof String @A []; jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** object creation (new) generic/array */ jjg@1521: class T0x05 { jjg@1521: void m0x05() { jjg@1521: new ArrayList<@A T>(); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** local variable generic/array */ jjg@1521: class T0x09 { jjg@1521: void g() { jjg@1521: List<@A String> l = null; jjg@1521: } jjg@1521: jjg@1521: void a() { jjg@1521: String @A [] as = null; jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** type argument in constructor call generic/array */ jjg@1521: class T0x19 { jjg@1521: T0x19() {} jjg@1521: jjg@1521: void g() { jjg@1521: new > T0x19(); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** type argument in method call generic/array */ jjg@1521: class T0x1B { jjg@1521: void m0x1B() { jjg@1521: Collections.emptyList(); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** type argument in constructor call */ jjg@1521: class T0x18 { jjg@1521: T0x18() {} jjg@1521: jjg@1521: void m() { jjg@1521: new <@A Integer> T0x18(); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** type argument in method call */ jjg@1521: class T0x1A { jjg@1521: public static T m() { return null; } jjg@1521: static void m0x1A() { jjg@1521: T0x1A.<@A Integer, @A Short>m(); jjg@1521: } jjg@1521: } jjg@1521: jjg@1521: /** class extends/implements */ jjg@1521: class T0x14 extends @A Object implements @A Serializable, @A Cloneable { jjg@1521: } jjg@1521: jjg@1521: /** exception type in throws */ jjg@1521: class T0x16 { jjg@1521: void m0x16() throws @A Exception {} jjg@1521: }