TestCaseSwitch.java revision 2772:3bdbc3b8aa14
1/* /nodynamiccopyright/ */
2
3public class TestCaseSwitch {
4
5    @AliveRange(varName="o", bytecodeStart=31, bytecodeLength=16)
6    @AliveRange(varName="o", bytecodeStart=50, bytecodeLength=15)
7    @AliveRange(varName="o", bytecodeStart=68, bytecodeLength=1)
8    @AliveRange(varName="oo", bytecodeStart=39, bytecodeLength=8)
9    @AliveRange(varName="uu", bytecodeStart=59, bytecodeLength=6)
10    void m1(String[] args) {
11        Object o;
12        switch (args.length) {
13            case 0:
14                    o = "0";
15                    o.hashCode();
16                    Object oo = "oo";
17                    oo.hashCode();
18                    break;
19            case 1:
20                    o = "1";
21                    o.hashCode();
22                    Object uu = "uu";
23                    uu.hashCode();
24                    break;
25        }
26        o = "return";
27    }
28
29    @AliveRange(varName="o", bytecodeStart=95, bytecodeLength=18)
30    @AliveRange(varName="o", bytecodeStart=116, bytecodeLength=15)
31    @AliveRange(varName="o", bytecodeStart=134, bytecodeLength=1)
32    @AliveRange(varName="oo", bytecodeStart=104, bytecodeLength=9)
33    @AliveRange(varName="uu", bytecodeStart=125, bytecodeLength=6)
34    void m2(String[] args) {
35        Object o;
36        switch (args[0]) {
37            case "string0":
38                    o = "0";
39                    o.hashCode();
40                    Object oo = "oo";
41                    oo.hashCode();
42                    break;
43            case "string1":
44                    o = "1";
45                    o.hashCode();
46                    Object uu = "uu";
47                    uu.hashCode();
48                    break;
49        }
50        o = "return";
51    }
52
53    @AliveRange(varName="o", bytecodeStart=35, bytecodeLength=8)
54    @AliveRange(varName="o", bytecodeStart=46, bytecodeLength=8)
55    @AliveRange(varName="o", bytecodeStart=78, bytecodeLength=5)
56    @AliveRange(varName="o", bytecodeStart=86, bytecodeLength=1)
57    @AliveRange(varName="oo", bytecodeStart=56, bytecodeLength=16)
58    void m3(int i) {
59        Object o;
60        switch (i) {
61            case 0:
62                    o = "0";
63                    o.hashCode();
64                    break;
65            case 1:
66                    o = "1";
67                    o.hashCode();
68                    break;
69            case 2:
70                int oo = i;
71                if (oo > 1) {
72                    System.out.println("greater");
73                }
74                break;
75            case 3:
76                int uu = i;
77            default:
78                    o = "default";
79                    o.hashCode();
80        }
81        o = "finish";
82    }
83
84    @AliveRange(varName="oCache", bytecodeStart=30, bytecodeLength=6)
85    @AliveRange(varName="cache", bytecodeStart=41, bytecodeLength=3)
86    @AliveRange(varName="cache", bytecodeStart=54, bytecodeLength=2)
87    @AliveRange(varName="service", bytecodeStart=39, bytecodeLength=5)
88    Object m4(int i) {
89        Object cache;
90        switch (i) {
91            case 0:
92                Object oCache = null;
93                if (oCache != null) {
94                    return oCache;
95                }
96            case 1:
97                Object service = null;
98                cache = null;
99                break;
100            default:
101                throw new AssertionError("");
102            }
103        return cache;
104    }
105
106}
107