test/tools/javap/typeAnnotations/ArrayClassLiterals.java

changeset 733
c491eec0acc7
parent 720
5bb96781fb58
parent 732
534afdc92cdc
child 734
814561077c44
child 762
4f086529d05c
     1.1 --- a/test/tools/javap/typeAnnotations/ArrayClassLiterals.java	Thu Nov 04 15:54:46 2010 -0700
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,183 +0,0 @@
     1.4 -/*
     1.5 - * Copyright (c) 2009, Oracle and/or its affiliates. All rights reserved.
     1.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.7 - *
     1.8 - * This code is free software; you can redistribute it and/or modify it
     1.9 - * under the terms of the GNU General Public License version 2 only, as
    1.10 - * published by the Free Software Foundation.
    1.11 - *
    1.12 - * This code is distributed in the hope that it will be useful, but WITHOUT
    1.13 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    1.14 - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    1.15 - * version 2 for more details (a copy is included in the LICENSE file that
    1.16 - * accompanied this code).
    1.17 - *
    1.18 - * You should have received a copy of the GNU General Public License version
    1.19 - * 2 along with this work; if not, write to the Free Software Foundation,
    1.20 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    1.21 - *
    1.22 - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    1.23 - * or visit www.oracle.com if you need additional information or have any
    1.24 - * questions.
    1.25 - */
    1.26 -
    1.27 -import java.io.*;
    1.28 -import com.sun.tools.classfile.*;
    1.29 -
    1.30 -/*
    1.31 - * @test ArrayClassLiterals
    1.32 - * @bug 6863814
    1.33 - * @summary test that class literals array doesn't crash javap
    1.34 - */
    1.35 -
    1.36 -public class ArrayClassLiterals {
    1.37 -    public static void main(String[] args) throws Exception {
    1.38 -        new ArrayClassLiterals().run();
    1.39 -    }
    1.40 -
    1.41 -    public void run() throws Exception {
    1.42 -        File javaFile = writeTestFile();
    1.43 -        File classFile = compileTestFile(javaFile);
    1.44 -
    1.45 -        ClassFile cf = ClassFile.read(classFile);
    1.46 -        test(cf);
    1.47 -        for (Field f : cf.fields) {
    1.48 -            test(cf, f);
    1.49 -        }
    1.50 -        for (Method m: cf.methods) {
    1.51 -            test(cf, m);
    1.52 -        }
    1.53 -
    1.54 -        countAnnotations();
    1.55 -
    1.56 -        if (errors > 0)
    1.57 -            throw new Exception(errors + " errors found");
    1.58 -        System.out.println("PASSED");
    1.59 -    }
    1.60 -
    1.61 -    void test(ClassFile cf) {
    1.62 -        test(cf, Attribute.RuntimeVisibleTypeAnnotations, true);
    1.63 -        test(cf, Attribute.RuntimeInvisibleTypeAnnotations, false);
    1.64 -    }
    1.65 -
    1.66 -    void test(ClassFile cf, Method m) {
    1.67 -        test(cf, m, Attribute.RuntimeVisibleTypeAnnotations, true);
    1.68 -        test(cf, m, Attribute.RuntimeInvisibleTypeAnnotations, false);
    1.69 -    }
    1.70 -
    1.71 -    void test(ClassFile cf, Field m) {
    1.72 -        test(cf, m, Attribute.RuntimeVisibleTypeAnnotations, true);
    1.73 -        test(cf, m, Attribute.RuntimeInvisibleTypeAnnotations, false);
    1.74 -    }
    1.75 -
    1.76 -    // test the result of Attributes.getIndex according to expectations
    1.77 -    // encoded in the method's name
    1.78 -    void test(ClassFile cf, String name, boolean visible) {
    1.79 -        int index = cf.attributes.getIndex(cf.constant_pool, name);
    1.80 -        if (index != -1) {
    1.81 -            Attribute attr = cf.attributes.get(index);
    1.82 -            assert attr instanceof RuntimeTypeAnnotations_attribute;
    1.83 -            RuntimeTypeAnnotations_attribute tAttr = (RuntimeTypeAnnotations_attribute)attr;
    1.84 -            all += tAttr.annotations.length;
    1.85 -            if (visible)
    1.86 -                visibles += tAttr.annotations.length;
    1.87 -            else
    1.88 -                invisibles += tAttr.annotations.length;
    1.89 -
    1.90 -            for (ExtendedAnnotation anno : tAttr.annotations)
    1.91 -                anno.position.toString();
    1.92 -        }
    1.93 -    }
    1.94 -
    1.95 -    // test the result of Attributes.getIndex according to expectations
    1.96 -    // encoded in the method's name
    1.97 -    void test(ClassFile cf, Method m, String name, boolean visible) {
    1.98 -        int index = m.attributes.getIndex(cf.constant_pool, name);
    1.99 -        if (index != -1) {
   1.100 -            Attribute attr = m.attributes.get(index);
   1.101 -            assert attr instanceof RuntimeTypeAnnotations_attribute;
   1.102 -            RuntimeTypeAnnotations_attribute tAttr = (RuntimeTypeAnnotations_attribute)attr;
   1.103 -            all += tAttr.annotations.length;
   1.104 -            if (visible)
   1.105 -                visibles += tAttr.annotations.length;
   1.106 -            else
   1.107 -                invisibles += tAttr.annotations.length;
   1.108 -
   1.109 -            for (ExtendedAnnotation anno : tAttr.annotations)
   1.110 -                anno.position.toString();
   1.111 -        }
   1.112 -    }
   1.113 -
   1.114 -    // test the result of Attributes.getIndex according to expectations
   1.115 -    // encoded in the method's name
   1.116 -    void test(ClassFile cf, Field m, String name, boolean visible) {
   1.117 -        int index = m.attributes.getIndex(cf.constant_pool, name);
   1.118 -        if (index != -1) {
   1.119 -            Attribute attr = m.attributes.get(index);
   1.120 -            assert attr instanceof RuntimeTypeAnnotations_attribute;
   1.121 -            RuntimeTypeAnnotations_attribute tAttr = (RuntimeTypeAnnotations_attribute)attr;
   1.122 -            all += tAttr.annotations.length;
   1.123 -            if (visible)
   1.124 -                visibles += tAttr.annotations.length;
   1.125 -            else
   1.126 -                invisibles += tAttr.annotations.length;
   1.127 -
   1.128 -            for (ExtendedAnnotation anno : tAttr.annotations)
   1.129 -                anno.position.toString();
   1.130 -        }
   1.131 -    }
   1.132 -
   1.133 -    File writeTestFile() throws IOException {
   1.134 -      File f = new File("Testa.java");
   1.135 -        PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f)));
   1.136 -        out.println("import java.util.*;");
   1.137 -        out.println("class Testa { ");
   1.138 -        out.println("  @interface A { }");
   1.139 -
   1.140 -        out.println(" void test() {");
   1.141 -        out.println("  Object a = @A String.class;");
   1.142 -        out.println("  Object b = @A String @A [] @A [].class;");
   1.143 -        out.println(" }");
   1.144 -        out.println("}");
   1.145 -
   1.146 -        out.close();
   1.147 -        return f;
   1.148 -    }
   1.149 -
   1.150 -    File compileTestFile(File f) {
   1.151 -      int rc = com.sun.tools.javac.Main.compile(new String[] { "-source", "1.7", "-g", f.getPath() });
   1.152 -        if (rc != 0)
   1.153 -            throw new Error("compilation failed. rc=" + rc);
   1.154 -        String path = f.getPath();
   1.155 -        return new File(path.substring(0, path.length() - 5) + ".class");
   1.156 -    }
   1.157 -
   1.158 -    void countAnnotations() {
   1.159 -        int expected_visibles = 0, expected_invisibles = 4;
   1.160 -        int expected_all = expected_visibles + expected_invisibles;
   1.161 -
   1.162 -        if (expected_all != all) {
   1.163 -            errors++;
   1.164 -            System.err.println("expected " + expected_all
   1.165 -                    + " annotations but found " + all);
   1.166 -        }
   1.167 -
   1.168 -        if (expected_visibles != visibles) {
   1.169 -            errors++;
   1.170 -            System.err.println("expected " + expected_visibles
   1.171 -                    + " visibles annotations but found " + visibles);
   1.172 -        }
   1.173 -
   1.174 -        if (expected_invisibles != invisibles) {
   1.175 -            errors++;
   1.176 -            System.err.println("expected " + expected_invisibles
   1.177 -                    + " invisibles annotations but found " + invisibles);
   1.178 -        }
   1.179 -
   1.180 -    }
   1.181 -
   1.182 -    int errors;
   1.183 -    int all;
   1.184 -    int visibles;
   1.185 -    int invisibles;
   1.186 -}

mercurial