• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2007 The Android Open Source Project
2 
3 import java.lang.reflect.Type;
4 
5 /**
6  * Throw a few things at the verifier, all of which are expected to pass.
7  */
8 public class Main {
main(String[] args)9     static public void main(String[] args) {
10         tryBlah(1);
11 
12         System.out.println("Zorch.");
13     }
14 
15     /*
16      * Make sure the verifier is handling type merge of arrays of
17      * references correctly.
18      */
arrayCheck1(int wanted)19     static Object[] arrayCheck1(int wanted) {
20         String[] arrayOne;
21         Integer[] arrayTwo;
22 
23         arrayOne = new String[1];
24         arrayTwo = new Integer[1];
25 
26         switch (wanted) {
27             case 0:     return arrayOne;
28             case 1:     return arrayTwo;
29             default:    return null;
30         }
31     }
32 
arrayCheck1b(int wanted)33     static Object arrayCheck1b(int wanted) {
34         String[] arrayOne;
35         Integer[] arrayTwo;
36         int[] arrayThree;
37 
38         arrayOne = new String[1];
39         arrayTwo = new Integer[1];
40         arrayThree = new int[1];
41 
42         switch (wanted) {
43             case 0:     return arrayOne;
44             case 1:     return arrayTwo;
45             case 2:     return arrayThree;
46             default:    return null;
47         }
48     }
49 
arrayCheck2(int wanted)50     static Object[] arrayCheck2(int wanted) {
51         String[][] arrayOne;
52         String[][] arrayTwo;
53         Integer[][] arrayThree;
54 
55         arrayOne = new String[1][];
56         arrayTwo = new String[1][];
57         arrayThree = new Integer[1][];
58 
59         switch (wanted) {
60             case 0:     return arrayOne;
61             case 1:     return arrayTwo;
62             case 2:     return arrayThree;
63             default:    return null;
64         }
65     }
66 
arrayCheck3(int wanted)67     static Object[] arrayCheck3(int wanted) {
68         String[][] arrayTwo;
69         String[][][][] arrayFour;
70 
71         arrayTwo = new String[1][];
72         arrayFour = new String[1][][][];
73 
74         switch (wanted) {
75             case 0:     return arrayTwo;
76             case 1:     return arrayFour;
77             default:    return null;
78         }
79     }
80 
81     /*
82      * Check return type merge.
83      */
typeTest()84     private Type[] typeTest() {
85         if(this == null) {
86             return (Class<?>[])null;
87         }
88         return (Type[])null;
89     }
90 
91 
92     /*
93      * Exercise the blahs.
94      */
tryBlah(int num)95     static void tryBlah(int num) {
96         BlahFeature feature = null;     // interface ref
97 
98         switch (num) {
99             case 1:
100                 feature = new BlahOne();
101                 break;
102             default:
103                 feature = new BlahTwo();
104                 break;
105         }
106 
107         feature.doStuff();
108     }
109 }
110