blob: dea47aa85274d6fb1e4eb15e8fccc89dd227e80c [file] [log] [blame]
/*
* Copyright (c) 2015, 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 8049238
* @summary Checks Signature attribute for array return type of method.
* @library /tools/lib /tools/javac/lib ../lib
* @build TestBase TestResult InMemoryFileManager ToolBox
* @build ReturnTypeTest Driver ExpectedSignature ExpectedSignatureContainer
* @run main Driver ReturnTypeTest
*/
import java.awt.Frame;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
@ExpectedSignature(descriptor = "ReturnTypeTest",
signature = "<T:Ljava/awt/Frame;:Ljava/lang/Runnable;:Ljava/util/concurrent/Callable<[TT;>;>Ljava/lang/Object;")
public class ReturnTypeTest<T extends Frame & Runnable & Callable<T[]>> {
@ExpectedSignature(descriptor = "byteArrayReturnType(java.awt.Frame)",
signature = "(TT;)[B")
byte[] byteArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "shortArrayReturnType(java.awt.Frame)",
signature = "(TT;)[S")
short[] shortArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "charArrayReturnType(java.awt.Frame)",
signature = "(TT;)[C")
char[] charArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "intArrayReturnType(java.awt.Frame)",
signature = "(TT;)[I")
int[] intArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "longArrayReturnType(java.awt.Frame)",
signature = "(TT;)[J")
long[] longArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "booleanArrayReturnType(java.awt.Frame)",
signature = "(TT;)[Z")
boolean[] booleanArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "floatArrayReturnType(java.awt.Frame)",
signature = "(TT;)[F")
float[] floatArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "doubleArrayReturnType(java.awt.Frame)",
signature = "(TT;)[D")
double[] doubleArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "objectArrayReturnType(java.awt.Frame)",
signature = "(TT;)[Ljava/lang/Object;")
Object[] objectArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticByteArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[B")
static <T> byte[] staticByteArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticShortArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[S")
static <T> short[] staticShortArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticCharArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[C")
static <T> char[] staticCharArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticIntArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[I")
static <T> int[] staticIntArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticLongArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[J")
static <T> long[] staticLongArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticBooleanArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[Z")
static <T> boolean[] staticBooleanArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticFloatArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[F")
static <T> float[] staticFloatArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticDoubleArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[D")
static <T> double[] staticDoubleArrayReturnType(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticObjectArrayReturnType(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)[Ljava/lang/Object;")
static <T> Object[] staticObjectArrayReturnType(T a) {
return null;
}
byte[] byteArrayReturnTypeNoSignatureAttribute() {
return null;
}
short[] shortArrayReturnTypeNoSignatureAttribute() {
return null;
}
char[] charArrayReturnTypeNoSignatureAttribute() {
return null;
}
int[] intArrayReturnTypeNoSignatureAttribute() {
return null;
}
long[] longArrayReturnTypeNoSignatureAttribute() {
return null;
}
boolean[] booleanArrayReturnTypeNoSignatureAttribute() {
return null;
}
float[] floatArrayReturnTypeNoSignatureAttribute() {
return null;
}
double[] doubleArrayReturnTypeNoSignatureAttribute() {
return null;
}
Object[] objectArrayReturnTypeNoSignatureAttribute() {
return null;
}
static byte[] staticByteArrayReturnTypeNoSignatureAttribute() {
return null;
}
static short[] staticShortArrayReturnTypeNoSignatureAttribute() {
return null;
}
static char[] staticCharArrayReturnTypeNoSignatureAttribute() {
return null;
}
static int[] staticIntArrayReturnTypeNoSignatureAttribute() {
return null;
}
static long[] staticLongArrayReturnTypeNoSignatureAttribute() {
return null;
}
static boolean[] staticBooleanArrayReturnTypeNoSignatureAttribute() {
return null;
}
static float[] staticFloatArrayReturnTypeNoSignatureAttribute() {
return null;
}
static double[] staticDoubleArrayReturnTypeNoSignatureAttribute() {
return null;
}
static Object[] staticObjectArrayReturnTypeNoSignatureAttribute() {
return null;
}
@ExpectedSignature(descriptor = "typeReturnType()",
signature = "()TT;")
T typeReturnType() {
return null;
}
@ExpectedSignature(descriptor = "typeArrayReturnType()",
signature = "()[TT;")
T[] typeArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "extendsReturnType()",
signature = "<E:TT;>()TE;")
<E extends T> E extendsReturnType() {
return null;
}
@ExpectedSignature(descriptor = "extendsArrayReturnType()",
signature = "<E:TT;>()[TE;")
<E extends T> E[] extendsArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "genericListReturnType()",
signature = "()Ljava/util/List<TT;>;")
List<T> genericListReturnType() {
return null;
}
@ExpectedSignature(descriptor = "genericListArrayReturnType()",
signature = "()[Ljava/util/List<TT;>;")
List<T>[] genericListArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "extendsBoundReturnType()",
signature = "()Ljava/util/List<+TT;>;")
List<? extends T> extendsBoundReturnType() {
return null;
}
@ExpectedSignature(descriptor = "extendsBoundArrayReturnType()",
signature = "()[Ljava/util/List<+TT;>;")
List<? extends T>[] extendsBoundArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "superBoundReturnType()",
signature = "()Ljava/util/List<-TT;>;")
List<? super T> superBoundReturnType() {
return null;
}
@ExpectedSignature(descriptor = "superBoundArrayReturnType()",
signature = "()[Ljava/util/List<-TT;>;")
List<? super T>[] superBoundArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "wildcardReturnType()",
signature = "()Ljava/util/Map<**>;")
Map<?, ?> wildcardReturnType() {
return null;
}
@ExpectedSignature(descriptor = "wildcardArrayReturnType()",
signature = "()[Ljava/util/Map<**>;")
Map<?, ?>[] wildcardArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticTypeReturnType()",
signature = "<T:Ljava/lang/Object;>()TT;")
static <T> T staticTypeReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticTypeArrayReturnType()",
signature = "<T:Ljava/lang/Object;>()[TT;")
static <T> T[] staticTypeArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticExtendsReturnType()",
signature = "<T:Ljava/lang/Object;E:TT;>()TE;")
static <T, E extends T> E staticExtendsReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticExtendsArrayReturnType()",
signature = "<T:Ljava/lang/Object;E:TT;>()[TE;")
static <T, E extends T> E[] staticExtendsArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticGenericListReturnType()",
signature = "<T:Ljava/lang/Object;>()Ljava/util/List<TT;>;")
static <T> List<T> staticGenericListReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticGenericListArrayReturnType()",
signature = "<T:Ljava/lang/Object;>()[Ljava/util/List<TT;>;")
static <T> List<T>[] staticGenericListArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticExtendsBoundReturnType()",
signature = "<T:Ljava/lang/Object;>()Ljava/util/List<+TT;>;")
static <T> List<? extends T> staticExtendsBoundReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticExtendsBoundArrayReturnType()",
signature = "<T:Ljava/lang/Object;>()[Ljava/util/List<+TT;>;")
static <T> List<? extends T>[] staticExtendsBoundArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticSuperBoundReturnType()",
signature = "<T:Ljava/lang/Object;>()Ljava/util/List<-TT;>;")
static <T> List<? super T> staticSuperBoundReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticSuperBoundArrayReturnType()",
signature = "<T:Ljava/lang/Object;>()[Ljava/util/List<-TT;>;")
static <T> List<? super T>[] staticSuperBoundArrayReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticWildcardReturnType()",
signature = "()Ljava/util/Map<**>;")
static Map<?, ?> staticWildcardReturnType() {
return null;
}
@ExpectedSignature(descriptor = "staticWildcardArrayReturnType()",
signature = "()[Ljava/util/Map<**>;")
static Map<?, ?>[] staticWildcardArrayReturnType() {
return null;
}
List noSignature() {
return null;
}
static List staticNoSignatureAttribute() {
return null;
}
@ExpectedSignature(descriptor = "boundsBooleanArray()",
signature = "()Ljava/util/Map<+[Z-[Z>;")
Map<? extends boolean[], ? super boolean[]> boundsBooleanArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsByteArray()",
signature = "()Ljava/util/Map<+[B-[B>;")
Map<? extends byte[], ? super byte[]> boundsByteArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsShortArray()",
signature = "()Ljava/util/Map<+[S-[S>;")
Map<? extends short[], ? super short[]> boundsShortArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsIntArray()",
signature = "()Ljava/util/Map<+[I-[I>;")
Map<? extends int[], ? super int[]> boundsIntArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsLongArray()",
signature = "()Ljava/util/Map<+[J-[J>;")
Map<? extends long[], ? super long[]> boundsLongArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsCharArray()",
signature = "()Ljava/util/Map<+[C-[C>;")
Map<? extends char[], ? super char[]> boundsCharArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsFloatArray()",
signature = "()Ljava/util/Map<+[F-[F>;")
Map<? extends float[], ? super float[]> boundsFloatArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsDoubleArray()",
signature = "()Ljava/util/Map<+[D-[D>;")
Map<? extends double[], ? super double[]> boundsDoubleArray() {
return null;
}
@ExpectedSignature(descriptor = "boundsObjectArray()",
signature = "()Ljava/util/Map<+[Ljava/lang/Object;-[Ljava/lang/Object;>;")
Map<? extends Object[], ? super Object[]> boundsObjectArray() {
return null;
}
@ExpectedSignature(descriptor = "voidMethod(java.awt.Frame)", signature = "(TT;)V")
void voidMethod(T a) {
}
@ExpectedSignature(descriptor = "byteMethod(java.awt.Frame)", signature = "(TT;)B")
byte byteMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "shortMethod(java.awt.Frame)", signature = "(TT;)S")
short shortMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "charMethod(java.awt.Frame)", signature = "(TT;)C")
char charMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "intMethod(java.awt.Frame)", signature = "(TT;)I")
int intMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "longMethod(java.awt.Frame)", signature = "(TT;)J")
long longMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "booleanMethod(java.awt.Frame)", signature = "(TT;)Z")
boolean booleanMethod(T a) {
return false;
}
@ExpectedSignature(descriptor = "floatMethod(java.awt.Frame)", signature = "(TT;)F")
float floatMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "doubleMethod(java.awt.Frame)", signature = "(TT;)D")
double doubleMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "objectMethod(java.awt.Frame)", signature = "(TT;)Ljava/lang/Object;")
Object objectMethod(T a) {
return null;
}
@ExpectedSignature(descriptor = "staticVoidMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)V")
static <T> void staticVoidMethod(T a) {
}
@ExpectedSignature(descriptor = "staticByteMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)B")
static <T> byte staticByteMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticShortMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)S")
static <T> short staticShortMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticCharMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)C")
static <T> char staticCharMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticIntMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)I")
static <T> int staticIntMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticLongMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)J")
static <T> long staticLongMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticBooleanMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)Z")
static <T> boolean staticBooleanMethod(T a) {
return false;
}
@ExpectedSignature(descriptor = "staticFloatMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)F")
static <T> float staticFloatMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticDoubleMethod(java.lang.Object)", signature = "<T:Ljava/lang/Object;>(TT;)D")
static <T> double staticDoubleMethod(T a) {
return 0;
}
@ExpectedSignature(descriptor = "staticObjectMethod(java.lang.Object)",
signature = "<T:Ljava/lang/Object;>(TT;)Ljava/lang/Object;")
static <T> Object staticObjectMethod(T a) {
return null;
}
void voidReturnTypeNoSignatureAttribute() {
}
byte byteReturnTypeNoSignatureAttribute() {
return 0;
}
Object objectReturnNoSignatureAttribute() {
return null;
}
static void staticVoidReturnTypeNoSignatureAttribute() {
}
static byte staticByteReturnTypeNoSignatureAttribute() {
return 0;
}
static Object staticObjectReturnTypeNoSignatureAttribute() {
return null;
}
}