TypesBadArg.java revision 1465:b52a38d4536c
1247835Skib/* 2247835Skib * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. 3247835Skib * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4247835Skib * 5247835Skib * This code is free software; you can redistribute it and/or modify it 6247835Skib * under the terms of the GNU General Public License version 2 only, as 7247835Skib * published by the Free Software Foundation. 8247835Skib * 9247835Skib * This code is distributed in the hope that it will be useful, but WITHOUT 10247835Skib * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11247835Skib * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12247835Skib * version 2 for more details (a copy is included in the LICENSE file that 13247835Skib * accompanied this code). 14247835Skib * 15247835Skib * You should have received a copy of the GNU General Public License version 16247835Skib * 2 along with this work; if not, write to the Free Software Foundation, 17247835Skib * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18247835Skib * 19247835Skib * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20247835Skib * or visit www.oracle.com if you need additional information or have any 21247835Skib * questions. 22247835Skib */ 23247835Skib 24247835Skib/* 25247835Skib * @test 26247835Skib * @bug 6345812 27247835Skib * @summary Validate argument kinds in Types utilities 28247835Skib * @author Scott Seligman 29247835Skib * @library /tools/javac/lib 30247835Skib * @build JavacTestingAbstractProcessor TypesBadArg 31247835Skib * @compile -processor TypesBadArg -proc:only TypesBadArg.java 32247835Skib */ 33247835Skib 34247835Skibimport java.util.Set; 35247835Skibimport javax.annotation.processing.*; 36247835Skibimport javax.lang.model.element.*; 37247835Skibimport javax.lang.model.type.*; 38247835Skibimport javax.lang.model.util.*; 39247835Skib 40247835Skibpublic class TypesBadArg extends JavacTestingAbstractProcessor { 41247835Skib boolean success = true; 42247835Skib 43247835Skib public boolean process(Set<? extends TypeElement> tes, 44247835Skib RoundEnvironment round) { 45247835Skib if (round.processingOver()) return true; 46247835Skib 47247835Skib final Elements elements = processingEnv.getElementUtils(); 48247835Skib final Types types = processingEnv.getTypeUtils(); 49247835Skib 50247835Skib final TypeMirror javaLang = 51247835Skib elements.getPackageElement("java.lang").asType(); 52247835Skib 53247835Skib makeBadCall(new Runnable() { 54247835Skib public void run() { 55247835Skib types.isSubtype(javaLang, javaLang); 56247835Skib } 57247835Skib }); 58247835Skib makeBadCall(new Runnable() { 59247835Skib public void run() { 60247835Skib types.isAssignable(javaLang, javaLang); 61247835Skib } 62247835Skib }); 63247835Skib makeBadCall(new Runnable() { 64247835Skib public void run() { 65247835Skib types.contains(javaLang, javaLang); 66247835Skib } 67247835Skib }); 68247835Skib makeBadCall(new Runnable() { 69247835Skib public void run() { 70247835Skib types.directSupertypes(javaLang); 71247835Skib } 72247835Skib }); 73247835Skib makeBadCall(new Runnable() { 74247835Skib public void run() { 75247835Skib types.erasure(javaLang); 76247835Skib } 77247835Skib }); 78247835Skib makeBadCall(new Runnable() { 79247835Skib public void run() { 80247835Skib types.capture(javaLang); 81247835Skib } 82247835Skib }); 83247835Skib makeBadCall(new Runnable() { 84247835Skib public void run() { 85247835Skib types.unboxedType(javaLang); 86247835Skib } 87247835Skib }); 88247835Skib makeBadCall(new Runnable() { 89247835Skib public void run() { 90247835Skib types.unboxedType(types.getNoType(TypeKind.VOID)); 91247835Skib } 92247835Skib }); 93247835Skib if (! success) 94247835Skib throw new AssertionError("Some test(s) failed."); 95247835Skib return true; 96247835Skib } 97247835Skib 98247835Skib private void makeBadCall(Runnable runnable) { 99247835Skib try { 100247835Skib runnable.run(); 101247835Skib System.out.println("Failure: IllegalArgumentException expected"); 102247835Skib success = false; 103247835Skib } catch (IllegalArgumentException e) { 104247835Skib System.out.println("IllegalArgumentException as expected"); 105247835Skib } 106247835Skib } 107247835Skib} 108247835Skib