/*
* Copyright 2004-2007 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
* CA 95054 USA or visit www.sun.com if you need additional information or
* have any questions.
*/
/*
* @test
* @bug 5033381
* @summary Test the type creation methods in Types.
* @library ../../lib
* @run main/othervm TypeCreation
*/
import java.util.*;
import com.sun.mirror.declaration.*;
import com.sun.mirror.type.*;
import com.sun.mirror.util.*;
import static com.sun.mirror.type.PrimitiveType.Kind.*;
public class TypeCreation extends Tester {
public static void main(String[] args) {
(new TypeCreation()).run();
}
// Declarations used by tests
class A {
}
class O<T> {
class I<S> {
}
}
private Types types;
private TypeDeclaration A;
private TypeDeclaration O;
private TypeDeclaration I;
private DeclaredType AType;
protected void init() {
types = env.getTypeUtils();
A = env.getTypeDeclaration("TypeCreation.A");
O = env.getTypeDeclaration("TypeCreation.O");
I = env.getTypeDeclaration("TypeCreation.O.I");
AType = types.getDeclaredType(A);
}
@Test(result="boolean")
PrimitiveType getPrimitiveType() {
return types.getPrimitiveType(BOOLEAN);
}
@Test(result="void")
VoidType getVoidType() {
return types.getVoidType();
}
@Test(result="boolean[]")
ArrayType getArrayType1() {
return types.getArrayType(
types.getPrimitiveType(BOOLEAN));
}
@Test(result="TypeCreation.A[]")
ArrayType getArrayType2() {
return types.getArrayType(AType);
}
@Test(result="? extends TypeCreation.A")
WildcardType getWildcardType() {
Collection<ReferenceType> uppers = new ArrayList<ReferenceType>();
Collection<ReferenceType> downers = new ArrayList<ReferenceType>();
uppers.add(AType);
return types.getWildcardType(uppers, downers);
}
@Test(result="TypeCreation.O<java.lang.String>")
DeclaredType getDeclaredType1() {
TypeDeclaration stringDecl = env.getTypeDeclaration("java.lang.String");
DeclaredType stringType = types.getDeclaredType(stringDecl);
return types.getDeclaredType(O, stringType);
}
@Test(result="TypeCreation.O<java.lang.String>.I<java.lang.Number>")
DeclaredType getDeclaredType2() {
TypeDeclaration numDecl = env.getTypeDeclaration("java.lang.Number");
DeclaredType numType = types.getDeclaredType(numDecl);
DeclaredType OType = getDeclaredType1();
return types.getDeclaredType(OType, I, numType);
}
}