Main.java revision 23a8e35481face09183a24b9d11e505597c75ebb
1/* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17public class Main extends UnresolvedSuperClass { 18 19 /// CHECK-START: void Main.callInvokeUnresolvedStatic() register (before) 20 /// CHECK: InvokeUnresolved invoke_type:static 21 static public void callInvokeUnresolvedStatic() { 22 UnresolvedClass.staticMethod(); 23 } 24 25 /// CHECK-START: void Main.callInvokeUnresolvedVirtual(UnresolvedClass) register (before) 26 /// CHECK: InvokeUnresolved invoke_type:virtual 27 static public void callInvokeUnresolvedVirtual(UnresolvedClass c) { 28 c.virtualMethod(); 29 } 30 31 /// CHECK-START: void Main.callInvokeUnresolvedInterface(UnresolvedInterface) register (before) 32 /// CHECK: InvokeUnresolved invoke_type:interface 33 static public void callInvokeUnresolvedInterface(UnresolvedInterface c) { 34 c.interfaceMethod(); 35 } 36 37 static public void callInvokeUnresolvedSuper(Main c) { 38 c.superMethod(); 39 } 40 41 /// CHECK-START: void Main.superMethod() register (before) 42 /// CHECK: InvokeUnresolved invoke_type:super 43 public void superMethod() { 44 super.superMethod(); 45 } 46 47 /// CHECK-START: void Main.callUnresolvedStaticFieldAccess() register (before) 48 /// CHECK: UnresolvedStaticFieldSet field_type:PrimByte 49 /// CHECK: UnresolvedStaticFieldSet field_type:PrimChar 50 /// CHECK: UnresolvedStaticFieldSet field_type:PrimInt 51 /// CHECK: UnresolvedStaticFieldSet field_type:PrimLong 52 /// CHECK: UnresolvedStaticFieldSet field_type:PrimFloat 53 /// CHECK: UnresolvedStaticFieldSet field_type:PrimDouble 54 /// CHECK: UnresolvedStaticFieldSet field_type:PrimNot 55 56 /// CHECK: UnresolvedStaticFieldGet field_type:PrimByte 57 /// CHECK: UnresolvedStaticFieldGet field_type:PrimChar 58 /// CHECK: UnresolvedStaticFieldGet field_type:PrimInt 59 /// CHECK: UnresolvedStaticFieldGet field_type:PrimLong 60 /// CHECK: UnresolvedStaticFieldGet field_type:PrimFloat 61 /// CHECK: UnresolvedStaticFieldGet field_type:PrimDouble 62 /// CHECK: UnresolvedStaticFieldGet field_type:PrimNot 63 static public void callUnresolvedStaticFieldAccess() { 64 Object o = new Object(); 65 UnresolvedClass.staticByte = (byte)1; 66 UnresolvedClass.staticChar = '1'; 67 UnresolvedClass.staticInt = 123456789; 68 UnresolvedClass.staticLong = 123456789123456789l; 69 UnresolvedClass.staticFloat = 123456789123456789f; 70 UnresolvedClass.staticDouble = 123456789123456789d; 71 UnresolvedClass.staticObject = o; 72 73 expectEquals((byte)1, UnresolvedClass.staticByte); 74 expectEquals('1', UnresolvedClass.staticChar); 75 expectEquals(123456789, UnresolvedClass.staticInt); 76 expectEquals(123456789123456789l, UnresolvedClass.staticLong); 77 expectEquals(123456789123456789f, UnresolvedClass.staticFloat); 78 expectEquals(123456789123456789d, UnresolvedClass.staticDouble); 79 expectEquals(o, UnresolvedClass.staticObject); 80 } 81 82 /// CHECK-START: void Main.callUnresolvedInstanceFieldAccess(UnresolvedClass) register (before) 83 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimByte 84 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimChar 85 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimInt 86 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimLong 87 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimFloat 88 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimDouble 89 /// CHECK: UnresolvedInstanceFieldSet field_type:PrimNot 90 91 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimByte 92 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimChar 93 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimInt 94 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimLong 95 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimFloat 96 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimDouble 97 /// CHECK: UnresolvedInstanceFieldGet field_type:PrimNot 98 static public void callUnresolvedInstanceFieldAccess(UnresolvedClass c) { 99 Object o = new Object(); 100 c.instanceByte = (byte)1; 101 c.instanceChar = '1'; 102 c.instanceInt = 123456789; 103 c.instanceLong = 123456789123456789l; 104 c.instanceFloat = 123456789123456789f; 105 c.instanceDouble = 123456789123456789d; 106 c.instanceObject = o; 107 108 expectEquals((byte)1, c.instanceByte); 109 expectEquals('1', c.instanceChar); 110 expectEquals(123456789, c.instanceInt); 111 expectEquals(123456789123456789l, c.instanceLong); 112 expectEquals(123456789123456789f, c.instanceFloat); 113 expectEquals(123456789123456789d, c.instanceDouble); 114 expectEquals(o, c.instanceObject); 115 } 116 117 /// CHECK-START: void Main.main(java.lang.String[]) register (before) 118 /// CHECK: InvokeUnresolved invoke_type:direct 119 static public void main(String[] args) { 120 UnresolvedClass c = new UnresolvedClass(); 121 callInvokeUnresolvedStatic(); 122 callInvokeUnresolvedVirtual(c); 123 callInvokeUnresolvedInterface(c); 124 callInvokeUnresolvedSuper(new Main()); 125 callUnresolvedStaticFieldAccess(); 126 callUnresolvedInstanceFieldAccess(c); 127 } 128 129 public static void expectEquals(byte expected, byte result) { 130 if (expected != result) { 131 throw new Error("Expected: " + expected + ", found: " + result); 132 } 133 } 134 135 public static void expectEquals(char expected, char result) { 136 if (expected != result) { 137 throw new Error("Expected: " + expected + ", found: " + result); 138 } 139 } 140 141 public static void expectEquals(int expected, int result) { 142 if (expected != result) { 143 throw new Error("Expected: " + expected + ", found: " + result); 144 } 145 } 146 147 public static void expectEquals(long expected, long result) { 148 if (expected != result) { 149 throw new Error("Expected: " + expected + ", found: " + result); 150 } 151 } 152 153 public static void expectEquals(float expected, float result) { 154 if (expected != result) { 155 throw new Error("Expected: " + expected + ", found: " + result); 156 } 157 } 158 159 public static void expectEquals(double expected, double result) { 160 if (expected != result) { 161 throw new Error("Expected: " + expected + ", found: " + result); 162 } 163 } 164 165 public static void expectEquals(Object expected, Object result) { 166 if (expected != result) { 167 throw new Error("Expected: " + expected + ", found: " + result); 168 } 169 } 170} 171