1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2014 The Android Open Source Project 3*795d594fSAndroid Build Coastguard Worker * 4*795d594fSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*795d594fSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*795d594fSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*795d594fSAndroid Build Coastguard Worker * 8*795d594fSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*795d594fSAndroid Build Coastguard Worker * 10*795d594fSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*795d594fSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*795d594fSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*795d594fSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*795d594fSAndroid Build Coastguard Worker * limitations under the License. 15*795d594fSAndroid Build Coastguard Worker */ 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Worker import java.lang.ref.WeakReference; 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Worker /** 20*795d594fSAndroid Build Coastguard Worker * Test that null pointer exceptions are thrown by the VM. 21*795d594fSAndroid Build Coastguard Worker */ 22*795d594fSAndroid Build Coastguard Worker public class Main { 23*795d594fSAndroid Build Coastguard Worker private int f; main(String[] args)24*795d594fSAndroid Build Coastguard Worker public static void main(String[] args) { 25*795d594fSAndroid Build Coastguard Worker methodOne(); 26*795d594fSAndroid Build Coastguard Worker } 27*795d594fSAndroid Build Coastguard Worker methodOne()28*795d594fSAndroid Build Coastguard Worker static void methodOne() { 29*795d594fSAndroid Build Coastguard Worker methodTwo(); 30*795d594fSAndroid Build Coastguard Worker } 31*795d594fSAndroid Build Coastguard Worker callSpecial()32*795d594fSAndroid Build Coastguard Worker private int callSpecial() { 33*795d594fSAndroid Build Coastguard Worker return f; 34*795d594fSAndroid Build Coastguard Worker } 35*795d594fSAndroid Build Coastguard Worker callFinal()36*795d594fSAndroid Build Coastguard Worker final int callFinal() { 37*795d594fSAndroid Build Coastguard Worker return f; 38*795d594fSAndroid Build Coastguard Worker } 39*795d594fSAndroid Build Coastguard Worker methodTwo()40*795d594fSAndroid Build Coastguard Worker static void methodTwo() { 41*795d594fSAndroid Build Coastguard Worker NullPointerException npe = null; 42*795d594fSAndroid Build Coastguard Worker 43*795d594fSAndroid Build Coastguard Worker int thisLine = 43; 44*795d594fSAndroid Build Coastguard Worker 45*795d594fSAndroid Build Coastguard Worker new Object().getClass(); // Ensure compiled. 46*795d594fSAndroid Build Coastguard Worker try { 47*795d594fSAndroid Build Coastguard Worker ((Object) null).getClass(); 48*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 49*795d594fSAndroid Build Coastguard Worker npe = e; 50*795d594fSAndroid Build Coastguard Worker } 51*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 4); 52*795d594fSAndroid Build Coastguard Worker 53*795d594fSAndroid Build Coastguard Worker new Main().callSpecial(); // Ensure compiled. 54*795d594fSAndroid Build Coastguard Worker try { 55*795d594fSAndroid Build Coastguard Worker ((Main) null).callSpecial(); // Test invokespecial. 56*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 57*795d594fSAndroid Build Coastguard Worker npe = e; 58*795d594fSAndroid Build Coastguard Worker } 59*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 8); 60*795d594fSAndroid Build Coastguard Worker 61*795d594fSAndroid Build Coastguard Worker new Main().callFinal(); // Ensure compiled. 62*795d594fSAndroid Build Coastguard Worker try { 63*795d594fSAndroid Build Coastguard Worker ((Main) null).callFinal(); // Test invokevirtual on final. 64*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 65*795d594fSAndroid Build Coastguard Worker npe = e; 66*795d594fSAndroid Build Coastguard Worker } 67*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 8); 68*795d594fSAndroid Build Coastguard Worker 69*795d594fSAndroid Build Coastguard Worker try { 70*795d594fSAndroid Build Coastguard Worker ((Value) null).objectField.toString(); 71*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 72*795d594fSAndroid Build Coastguard Worker npe = e; 73*795d594fSAndroid Build Coastguard Worker } 74*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 75*795d594fSAndroid Build Coastguard Worker 76*795d594fSAndroid Build Coastguard Worker try { 77*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).intField); 78*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 79*795d594fSAndroid Build Coastguard Worker npe = e; 80*795d594fSAndroid Build Coastguard Worker } 81*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 82*795d594fSAndroid Build Coastguard Worker 83*795d594fSAndroid Build Coastguard Worker try { 84*795d594fSAndroid Build Coastguard Worker useFloat(((Value) null).floatField); 85*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 86*795d594fSAndroid Build Coastguard Worker npe = e; 87*795d594fSAndroid Build Coastguard Worker } 88*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 89*795d594fSAndroid Build Coastguard Worker 90*795d594fSAndroid Build Coastguard Worker try { 91*795d594fSAndroid Build Coastguard Worker useLong(((Value) null).longField); 92*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 93*795d594fSAndroid Build Coastguard Worker npe = e; 94*795d594fSAndroid Build Coastguard Worker } 95*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 96*795d594fSAndroid Build Coastguard Worker 97*795d594fSAndroid Build Coastguard Worker try { 98*795d594fSAndroid Build Coastguard Worker useDouble(((Value) null).doubleField); 99*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 100*795d594fSAndroid Build Coastguard Worker npe = e; 101*795d594fSAndroid Build Coastguard Worker } 102*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 103*795d594fSAndroid Build Coastguard Worker 104*795d594fSAndroid Build Coastguard Worker try { 105*795d594fSAndroid Build Coastguard Worker ((Value) null).objectField = "Fisk"; 106*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 107*795d594fSAndroid Build Coastguard Worker npe = e; 108*795d594fSAndroid Build Coastguard Worker } 109*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 110*795d594fSAndroid Build Coastguard Worker 111*795d594fSAndroid Build Coastguard Worker try { 112*795d594fSAndroid Build Coastguard Worker ((Value) null).intField = 42; 113*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 114*795d594fSAndroid Build Coastguard Worker npe = e; 115*795d594fSAndroid Build Coastguard Worker } 116*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 117*795d594fSAndroid Build Coastguard Worker 118*795d594fSAndroid Build Coastguard Worker try { 119*795d594fSAndroid Build Coastguard Worker ((Value) null).floatField = 42.0F; 120*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 121*795d594fSAndroid Build Coastguard Worker npe = e; 122*795d594fSAndroid Build Coastguard Worker } 123*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 124*795d594fSAndroid Build Coastguard Worker 125*795d594fSAndroid Build Coastguard Worker try { 126*795d594fSAndroid Build Coastguard Worker ((Value) null).longField = 42L; 127*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 128*795d594fSAndroid Build Coastguard Worker npe = e; 129*795d594fSAndroid Build Coastguard Worker } 130*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 131*795d594fSAndroid Build Coastguard Worker 132*795d594fSAndroid Build Coastguard Worker try { 133*795d594fSAndroid Build Coastguard Worker ((Value) null).doubleField = 42.0d; 134*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 135*795d594fSAndroid Build Coastguard Worker npe = e; 136*795d594fSAndroid Build Coastguard Worker } 137*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 138*795d594fSAndroid Build Coastguard Worker 139*795d594fSAndroid Build Coastguard Worker try { 140*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).byteField); 141*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 142*795d594fSAndroid Build Coastguard Worker npe = e; 143*795d594fSAndroid Build Coastguard Worker } 144*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 145*795d594fSAndroid Build Coastguard Worker 146*795d594fSAndroid Build Coastguard Worker try { 147*795d594fSAndroid Build Coastguard Worker if (((Value) null).booleanField) { } 148*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 149*795d594fSAndroid Build Coastguard Worker npe = e; 150*795d594fSAndroid Build Coastguard Worker } 151*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 152*795d594fSAndroid Build Coastguard Worker 153*795d594fSAndroid Build Coastguard Worker try { 154*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).charField); 155*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 156*795d594fSAndroid Build Coastguard Worker npe = e; 157*795d594fSAndroid Build Coastguard Worker } 158*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 159*795d594fSAndroid Build Coastguard Worker 160*795d594fSAndroid Build Coastguard Worker try { 161*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).shortField); 162*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 163*795d594fSAndroid Build Coastguard Worker npe = e; 164*795d594fSAndroid Build Coastguard Worker } 165*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 166*795d594fSAndroid Build Coastguard Worker 167*795d594fSAndroid Build Coastguard Worker try { 168*795d594fSAndroid Build Coastguard Worker ((Value) null).byteField = 42; 169*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 170*795d594fSAndroid Build Coastguard Worker npe = e; 171*795d594fSAndroid Build Coastguard Worker } 172*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 173*795d594fSAndroid Build Coastguard Worker 174*795d594fSAndroid Build Coastguard Worker try { 175*795d594fSAndroid Build Coastguard Worker ((Value) null).booleanField = true; 176*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 177*795d594fSAndroid Build Coastguard Worker npe = e; 178*795d594fSAndroid Build Coastguard Worker } 179*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 180*795d594fSAndroid Build Coastguard Worker 181*795d594fSAndroid Build Coastguard Worker try { 182*795d594fSAndroid Build Coastguard Worker ((Value) null).charField = '\u0042'; 183*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 184*795d594fSAndroid Build Coastguard Worker npe = e; 185*795d594fSAndroid Build Coastguard Worker } 186*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 187*795d594fSAndroid Build Coastguard Worker 188*795d594fSAndroid Build Coastguard Worker try { 189*795d594fSAndroid Build Coastguard Worker ((Value) null).shortField = 42; 190*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 191*795d594fSAndroid Build Coastguard Worker npe = e; 192*795d594fSAndroid Build Coastguard Worker } 193*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 194*795d594fSAndroid Build Coastguard Worker 195*795d594fSAndroid Build Coastguard Worker try { 196*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileObjectField.toString(); 197*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 198*795d594fSAndroid Build Coastguard Worker npe = e; 199*795d594fSAndroid Build Coastguard Worker } 200*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 201*795d594fSAndroid Build Coastguard Worker 202*795d594fSAndroid Build Coastguard Worker try { 203*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileObjectField = "Fisk"; 204*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 205*795d594fSAndroid Build Coastguard Worker npe = e; 206*795d594fSAndroid Build Coastguard Worker } 207*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 208*795d594fSAndroid Build Coastguard Worker 209*795d594fSAndroid Build Coastguard Worker try { 210*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).volatileIntField); 211*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 212*795d594fSAndroid Build Coastguard Worker npe = e; 213*795d594fSAndroid Build Coastguard Worker } 214*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 215*795d594fSAndroid Build Coastguard Worker 216*795d594fSAndroid Build Coastguard Worker try { 217*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileIntField = 42; 218*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 219*795d594fSAndroid Build Coastguard Worker npe = e; 220*795d594fSAndroid Build Coastguard Worker } 221*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 222*795d594fSAndroid Build Coastguard Worker 223*795d594fSAndroid Build Coastguard Worker try { 224*795d594fSAndroid Build Coastguard Worker useFloat(((Value) null).volatileFloatField); 225*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 226*795d594fSAndroid Build Coastguard Worker npe = e; 227*795d594fSAndroid Build Coastguard Worker } 228*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 229*795d594fSAndroid Build Coastguard Worker 230*795d594fSAndroid Build Coastguard Worker try { 231*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileFloatField = 42.0F; 232*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 233*795d594fSAndroid Build Coastguard Worker npe = e; 234*795d594fSAndroid Build Coastguard Worker } 235*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 236*795d594fSAndroid Build Coastguard Worker 237*795d594fSAndroid Build Coastguard Worker try { 238*795d594fSAndroid Build Coastguard Worker useLong(((Value) null).volatileLongField); 239*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 240*795d594fSAndroid Build Coastguard Worker npe = e; 241*795d594fSAndroid Build Coastguard Worker } 242*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 243*795d594fSAndroid Build Coastguard Worker 244*795d594fSAndroid Build Coastguard Worker try { 245*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileLongField = 42L; 246*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 247*795d594fSAndroid Build Coastguard Worker npe = e; 248*795d594fSAndroid Build Coastguard Worker } 249*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 250*795d594fSAndroid Build Coastguard Worker 251*795d594fSAndroid Build Coastguard Worker try { 252*795d594fSAndroid Build Coastguard Worker useDouble(((Value) null).volatileDoubleField); 253*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 254*795d594fSAndroid Build Coastguard Worker npe = e; 255*795d594fSAndroid Build Coastguard Worker } 256*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 257*795d594fSAndroid Build Coastguard Worker 258*795d594fSAndroid Build Coastguard Worker try { 259*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileDoubleField = 42.0d; 260*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 261*795d594fSAndroid Build Coastguard Worker npe = e; 262*795d594fSAndroid Build Coastguard Worker } 263*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 264*795d594fSAndroid Build Coastguard Worker 265*795d594fSAndroid Build Coastguard Worker try { 266*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).volatileByteField); 267*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 268*795d594fSAndroid Build Coastguard Worker npe = e; 269*795d594fSAndroid Build Coastguard Worker } 270*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 271*795d594fSAndroid Build Coastguard Worker 272*795d594fSAndroid Build Coastguard Worker try { 273*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileByteField = 42; 274*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 275*795d594fSAndroid Build Coastguard Worker npe = e; 276*795d594fSAndroid Build Coastguard Worker } 277*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 278*795d594fSAndroid Build Coastguard Worker 279*795d594fSAndroid Build Coastguard Worker try { 280*795d594fSAndroid Build Coastguard Worker if (((Value) null).volatileBooleanField) { } 281*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 282*795d594fSAndroid Build Coastguard Worker npe = e; 283*795d594fSAndroid Build Coastguard Worker } 284*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 285*795d594fSAndroid Build Coastguard Worker 286*795d594fSAndroid Build Coastguard Worker try { 287*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileBooleanField = true; 288*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 289*795d594fSAndroid Build Coastguard Worker npe = e; 290*795d594fSAndroid Build Coastguard Worker } 291*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 292*795d594fSAndroid Build Coastguard Worker 293*795d594fSAndroid Build Coastguard Worker try { 294*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).volatileCharField); 295*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 296*795d594fSAndroid Build Coastguard Worker npe = e; 297*795d594fSAndroid Build Coastguard Worker } 298*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 299*795d594fSAndroid Build Coastguard Worker 300*795d594fSAndroid Build Coastguard Worker try { 301*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileCharField = '\u0042'; 302*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 303*795d594fSAndroid Build Coastguard Worker npe = e; 304*795d594fSAndroid Build Coastguard Worker } 305*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 306*795d594fSAndroid Build Coastguard Worker 307*795d594fSAndroid Build Coastguard Worker try { 308*795d594fSAndroid Build Coastguard Worker useInt(((Value) null).volatileShortField); 309*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 310*795d594fSAndroid Build Coastguard Worker npe = e; 311*795d594fSAndroid Build Coastguard Worker } 312*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 313*795d594fSAndroid Build Coastguard Worker 314*795d594fSAndroid Build Coastguard Worker try { 315*795d594fSAndroid Build Coastguard Worker ((Value) null).volatileShortField = 42; 316*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 317*795d594fSAndroid Build Coastguard Worker npe = e; 318*795d594fSAndroid Build Coastguard Worker } 319*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 320*795d594fSAndroid Build Coastguard Worker 321*795d594fSAndroid Build Coastguard Worker try { 322*795d594fSAndroid Build Coastguard Worker ((Object[]) null)[0].toString(); 323*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 324*795d594fSAndroid Build Coastguard Worker npe = e; 325*795d594fSAndroid Build Coastguard Worker } 326*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 327*795d594fSAndroid Build Coastguard Worker 328*795d594fSAndroid Build Coastguard Worker try { 329*795d594fSAndroid Build Coastguard Worker useInt(((int[]) null)[0]); 330*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 331*795d594fSAndroid Build Coastguard Worker npe = e; 332*795d594fSAndroid Build Coastguard Worker } 333*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 334*795d594fSAndroid Build Coastguard Worker 335*795d594fSAndroid Build Coastguard Worker try { 336*795d594fSAndroid Build Coastguard Worker useFloat(((float[]) null)[0]); 337*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 338*795d594fSAndroid Build Coastguard Worker npe = e; 339*795d594fSAndroid Build Coastguard Worker } 340*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 341*795d594fSAndroid Build Coastguard Worker 342*795d594fSAndroid Build Coastguard Worker try { 343*795d594fSAndroid Build Coastguard Worker useLong(((long[]) null)[0]); 344*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 345*795d594fSAndroid Build Coastguard Worker npe = e; 346*795d594fSAndroid Build Coastguard Worker } 347*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 348*795d594fSAndroid Build Coastguard Worker 349*795d594fSAndroid Build Coastguard Worker try { 350*795d594fSAndroid Build Coastguard Worker useDouble(((double[]) null)[0]); 351*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 352*795d594fSAndroid Build Coastguard Worker npe = e; 353*795d594fSAndroid Build Coastguard Worker } 354*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 355*795d594fSAndroid Build Coastguard Worker 356*795d594fSAndroid Build Coastguard Worker try { 357*795d594fSAndroid Build Coastguard Worker ((Object[]) null)[0] = "Fisk"; 358*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 359*795d594fSAndroid Build Coastguard Worker npe = e; 360*795d594fSAndroid Build Coastguard Worker } 361*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 362*795d594fSAndroid Build Coastguard Worker 363*795d594fSAndroid Build Coastguard Worker try { 364*795d594fSAndroid Build Coastguard Worker ((int[]) null)[0] = 42; 365*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 366*795d594fSAndroid Build Coastguard Worker npe = e; 367*795d594fSAndroid Build Coastguard Worker } 368*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 369*795d594fSAndroid Build Coastguard Worker 370*795d594fSAndroid Build Coastguard Worker try { 371*795d594fSAndroid Build Coastguard Worker ((float[]) null)[0] = 42.0F; 372*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 373*795d594fSAndroid Build Coastguard Worker npe = e; 374*795d594fSAndroid Build Coastguard Worker } 375*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 376*795d594fSAndroid Build Coastguard Worker 377*795d594fSAndroid Build Coastguard Worker try { 378*795d594fSAndroid Build Coastguard Worker ((long[]) null)[0] = 42L; 379*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 380*795d594fSAndroid Build Coastguard Worker npe = e; 381*795d594fSAndroid Build Coastguard Worker } 382*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 383*795d594fSAndroid Build Coastguard Worker 384*795d594fSAndroid Build Coastguard Worker try { 385*795d594fSAndroid Build Coastguard Worker ((double[]) null)[0] = 42.0d; 386*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 387*795d594fSAndroid Build Coastguard Worker npe = e; 388*795d594fSAndroid Build Coastguard Worker } 389*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 390*795d594fSAndroid Build Coastguard Worker 391*795d594fSAndroid Build Coastguard Worker try { 392*795d594fSAndroid Build Coastguard Worker useInt(((byte[]) null)[0]); 393*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 394*795d594fSAndroid Build Coastguard Worker npe = e; 395*795d594fSAndroid Build Coastguard Worker } 396*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 397*795d594fSAndroid Build Coastguard Worker 398*795d594fSAndroid Build Coastguard Worker try { 399*795d594fSAndroid Build Coastguard Worker if (((boolean[]) null)[0]) { } 400*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 401*795d594fSAndroid Build Coastguard Worker npe = e; 402*795d594fSAndroid Build Coastguard Worker } 403*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 404*795d594fSAndroid Build Coastguard Worker 405*795d594fSAndroid Build Coastguard Worker try { 406*795d594fSAndroid Build Coastguard Worker useInt(((char[]) null)[0]); 407*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 408*795d594fSAndroid Build Coastguard Worker npe = e; 409*795d594fSAndroid Build Coastguard Worker } 410*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 411*795d594fSAndroid Build Coastguard Worker 412*795d594fSAndroid Build Coastguard Worker try { 413*795d594fSAndroid Build Coastguard Worker useInt(((short[]) null)[0]); 414*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 415*795d594fSAndroid Build Coastguard Worker npe = e; 416*795d594fSAndroid Build Coastguard Worker } 417*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 418*795d594fSAndroid Build Coastguard Worker 419*795d594fSAndroid Build Coastguard Worker try { 420*795d594fSAndroid Build Coastguard Worker ((byte[]) null)[0] = 42; 421*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 422*795d594fSAndroid Build Coastguard Worker npe = e; 423*795d594fSAndroid Build Coastguard Worker } 424*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 425*795d594fSAndroid Build Coastguard Worker 426*795d594fSAndroid Build Coastguard Worker try { 427*795d594fSAndroid Build Coastguard Worker ((boolean[]) null)[0] = true; 428*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 429*795d594fSAndroid Build Coastguard Worker npe = e; 430*795d594fSAndroid Build Coastguard Worker } 431*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 432*795d594fSAndroid Build Coastguard Worker 433*795d594fSAndroid Build Coastguard Worker try { 434*795d594fSAndroid Build Coastguard Worker ((char[]) null)[0] = '\u0042'; 435*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 436*795d594fSAndroid Build Coastguard Worker npe = e; 437*795d594fSAndroid Build Coastguard Worker } 438*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 439*795d594fSAndroid Build Coastguard Worker 440*795d594fSAndroid Build Coastguard Worker try { 441*795d594fSAndroid Build Coastguard Worker ((short[]) null)[0] = 42; 442*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 443*795d594fSAndroid Build Coastguard Worker npe = e; 444*795d594fSAndroid Build Coastguard Worker } 445*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 446*795d594fSAndroid Build Coastguard Worker 447*795d594fSAndroid Build Coastguard Worker try { 448*795d594fSAndroid Build Coastguard Worker useInt(((Object[]) null).length); 449*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 450*795d594fSAndroid Build Coastguard Worker npe = e; 451*795d594fSAndroid Build Coastguard Worker } 452*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 453*795d594fSAndroid Build Coastguard Worker 454*795d594fSAndroid Build Coastguard Worker try { 455*795d594fSAndroid Build Coastguard Worker useInt(((int[]) null).length); 456*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 457*795d594fSAndroid Build Coastguard Worker npe = e; 458*795d594fSAndroid Build Coastguard Worker } 459*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 460*795d594fSAndroid Build Coastguard Worker 461*795d594fSAndroid Build Coastguard Worker try { 462*795d594fSAndroid Build Coastguard Worker useInt(((float[]) null).length); 463*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 464*795d594fSAndroid Build Coastguard Worker npe = e; 465*795d594fSAndroid Build Coastguard Worker } 466*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 467*795d594fSAndroid Build Coastguard Worker 468*795d594fSAndroid Build Coastguard Worker try { 469*795d594fSAndroid Build Coastguard Worker useInt(((long[]) null).length); 470*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 471*795d594fSAndroid Build Coastguard Worker npe = e; 472*795d594fSAndroid Build Coastguard Worker } 473*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 474*795d594fSAndroid Build Coastguard Worker 475*795d594fSAndroid Build Coastguard Worker try { 476*795d594fSAndroid Build Coastguard Worker useInt(((double[]) null).length); 477*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 478*795d594fSAndroid Build Coastguard Worker npe = e; 479*795d594fSAndroid Build Coastguard Worker } 480*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 481*795d594fSAndroid Build Coastguard Worker 482*795d594fSAndroid Build Coastguard Worker try { 483*795d594fSAndroid Build Coastguard Worker useInt(((byte[]) null).length); 484*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 485*795d594fSAndroid Build Coastguard Worker npe = e; 486*795d594fSAndroid Build Coastguard Worker } 487*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 488*795d594fSAndroid Build Coastguard Worker 489*795d594fSAndroid Build Coastguard Worker try { 490*795d594fSAndroid Build Coastguard Worker useInt(((boolean[]) null).length); 491*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 492*795d594fSAndroid Build Coastguard Worker npe = e; 493*795d594fSAndroid Build Coastguard Worker } 494*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 495*795d594fSAndroid Build Coastguard Worker 496*795d594fSAndroid Build Coastguard Worker try { 497*795d594fSAndroid Build Coastguard Worker useInt(((char[]) null).length); 498*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 499*795d594fSAndroid Build Coastguard Worker npe = e; 500*795d594fSAndroid Build Coastguard Worker } 501*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 502*795d594fSAndroid Build Coastguard Worker 503*795d594fSAndroid Build Coastguard Worker try { 504*795d594fSAndroid Build Coastguard Worker useInt(((short[]) null).length); 505*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 506*795d594fSAndroid Build Coastguard Worker npe = e; 507*795d594fSAndroid Build Coastguard Worker } 508*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 7); 509*795d594fSAndroid Build Coastguard Worker 510*795d594fSAndroid Build Coastguard Worker try { 511*795d594fSAndroid Build Coastguard Worker Interface i = null; 512*795d594fSAndroid Build Coastguard Worker i.methodInterface(); // Test null on invokeinterface. 513*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 514*795d594fSAndroid Build Coastguard Worker npe = e; 515*795d594fSAndroid Build Coastguard Worker } 516*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 8); 517*795d594fSAndroid Build Coastguard Worker 518*795d594fSAndroid Build Coastguard Worker try { 519*795d594fSAndroid Build Coastguard Worker Object o = null; 520*795d594fSAndroid Build Coastguard Worker o.toString(); // Test null on invokevirtual. 521*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 522*795d594fSAndroid Build Coastguard Worker npe = e; 523*795d594fSAndroid Build Coastguard Worker } 524*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 8); 525*795d594fSAndroid Build Coastguard Worker 526*795d594fSAndroid Build Coastguard Worker npe = null; 527*795d594fSAndroid Build Coastguard Worker try { 528*795d594fSAndroid Build Coastguard Worker String s = null; 529*795d594fSAndroid Build Coastguard Worker try { 530*795d594fSAndroid Build Coastguard Worker throw new AssertionError(); 531*795d594fSAndroid Build Coastguard Worker } finally { 532*795d594fSAndroid Build Coastguard Worker // Cause an implicit NPE. 533*795d594fSAndroid Build Coastguard Worker s.getClass(); 534*795d594fSAndroid Build Coastguard Worker } 535*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 536*795d594fSAndroid Build Coastguard Worker npe = e; 537*795d594fSAndroid Build Coastguard Worker } 538*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 13); 539*795d594fSAndroid Build Coastguard Worker 540*795d594fSAndroid Build Coastguard Worker npe = null; 541*795d594fSAndroid Build Coastguard Worker try { 542*795d594fSAndroid Build Coastguard Worker String s = null; 543*795d594fSAndroid Build Coastguard Worker try { 544*795d594fSAndroid Build Coastguard Worker throw new AssertionError(); 545*795d594fSAndroid Build Coastguard Worker } catch (AssertionError ex) { 546*795d594fSAndroid Build Coastguard Worker } 547*795d594fSAndroid Build Coastguard Worker s.getClass(); 548*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 549*795d594fSAndroid Build Coastguard Worker npe = e; 550*795d594fSAndroid Build Coastguard Worker } 551*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 14); 552*795d594fSAndroid Build Coastguard Worker 553*795d594fSAndroid Build Coastguard Worker npe = null; 554*795d594fSAndroid Build Coastguard Worker try { 555*795d594fSAndroid Build Coastguard Worker useInt(((WeakReference<Object>) null).refersTo(null) ? 1 : 0); 556*795d594fSAndroid Build Coastguard Worker } catch (NullPointerException e) { 557*795d594fSAndroid Build Coastguard Worker npe = e; 558*795d594fSAndroid Build Coastguard Worker } 559*795d594fSAndroid Build Coastguard Worker check(npe, thisLine += 8); 560*795d594fSAndroid Build Coastguard Worker } 561*795d594fSAndroid Build Coastguard Worker check(NullPointerException npe, int firstLine)562*795d594fSAndroid Build Coastguard Worker static void check(NullPointerException npe, int firstLine) { 563*795d594fSAndroid Build Coastguard Worker final boolean debug = false; 564*795d594fSAndroid Build Coastguard Worker if (debug) { 565*795d594fSAndroid Build Coastguard Worker System.out.print("Got to line "); 566*795d594fSAndroid Build Coastguard Worker System.out.print(firstLine); 567*795d594fSAndroid Build Coastguard Worker System.out.println(); 568*795d594fSAndroid Build Coastguard Worker } 569*795d594fSAndroid Build Coastguard Worker StackTraceElement[] trace = npe.getStackTrace(); 570*795d594fSAndroid Build Coastguard Worker checkElement(trace[0], "Main", "methodTwo", "Main.java", firstLine); 571*795d594fSAndroid Build Coastguard Worker checkElement(trace[1], "Main", "methodOne", "Main.java", 29); 572*795d594fSAndroid Build Coastguard Worker checkElement(trace[2], "Main", "main", "Main.java", 25); 573*795d594fSAndroid Build Coastguard Worker } 574*795d594fSAndroid Build Coastguard Worker checkElement(StackTraceElement element, String declaringClass, String methodName, String fileName, int lineNumber)575*795d594fSAndroid Build Coastguard Worker static void checkElement(StackTraceElement element, 576*795d594fSAndroid Build Coastguard Worker String declaringClass, String methodName, 577*795d594fSAndroid Build Coastguard Worker String fileName, int lineNumber) { 578*795d594fSAndroid Build Coastguard Worker assertEquals(declaringClass, element.getClassName()); 579*795d594fSAndroid Build Coastguard Worker assertEquals(methodName, element.getMethodName()); 580*795d594fSAndroid Build Coastguard Worker assertEquals(fileName, element.getFileName()); 581*795d594fSAndroid Build Coastguard Worker assertEquals(lineNumber, element.getLineNumber()); 582*795d594fSAndroid Build Coastguard Worker } 583*795d594fSAndroid Build Coastguard Worker assertEquals(Object expected, Object actual)584*795d594fSAndroid Build Coastguard Worker static void assertEquals(Object expected, Object actual) { 585*795d594fSAndroid Build Coastguard Worker if (!expected.equals(actual)) { 586*795d594fSAndroid Build Coastguard Worker String msg = "Expected \"" + expected + "\" but got \"" + actual + "\""; 587*795d594fSAndroid Build Coastguard Worker throw new AssertionError(msg); 588*795d594fSAndroid Build Coastguard Worker } 589*795d594fSAndroid Build Coastguard Worker } 590*795d594fSAndroid Build Coastguard Worker assertEquals(int expected, int actual)591*795d594fSAndroid Build Coastguard Worker static void assertEquals(int expected, int actual) { 592*795d594fSAndroid Build Coastguard Worker if (expected != actual) { 593*795d594fSAndroid Build Coastguard Worker throw new AssertionError("Expected " + expected + " got " + actual); 594*795d594fSAndroid Build Coastguard Worker } 595*795d594fSAndroid Build Coastguard Worker } 596*795d594fSAndroid Build Coastguard Worker 597*795d594fSAndroid Build Coastguard Worker interface Interface { methodInterface()598*795d594fSAndroid Build Coastguard Worker void methodInterface(); 599*795d594fSAndroid Build Coastguard Worker } 600*795d594fSAndroid Build Coastguard Worker useInt(int i)601*795d594fSAndroid Build Coastguard Worker static void useInt(int i) { 602*795d594fSAndroid Build Coastguard Worker } 603*795d594fSAndroid Build Coastguard Worker useFloat(float f)604*795d594fSAndroid Build Coastguard Worker static void useFloat(float f) { 605*795d594fSAndroid Build Coastguard Worker } 606*795d594fSAndroid Build Coastguard Worker useDouble(double d)607*795d594fSAndroid Build Coastguard Worker static void useDouble(double d) { 608*795d594fSAndroid Build Coastguard Worker } 609*795d594fSAndroid Build Coastguard Worker useLong(long l)610*795d594fSAndroid Build Coastguard Worker static void useLong(long l) { 611*795d594fSAndroid Build Coastguard Worker } 612*795d594fSAndroid Build Coastguard Worker 613*795d594fSAndroid Build Coastguard Worker static class Value { 614*795d594fSAndroid Build Coastguard Worker Object objectField; 615*795d594fSAndroid Build Coastguard Worker int intField; 616*795d594fSAndroid Build Coastguard Worker float floatField; 617*795d594fSAndroid Build Coastguard Worker long longField; 618*795d594fSAndroid Build Coastguard Worker double doubleField; 619*795d594fSAndroid Build Coastguard Worker byte byteField; 620*795d594fSAndroid Build Coastguard Worker boolean booleanField; 621*795d594fSAndroid Build Coastguard Worker char charField; 622*795d594fSAndroid Build Coastguard Worker short shortField; 623*795d594fSAndroid Build Coastguard Worker 624*795d594fSAndroid Build Coastguard Worker volatile Object volatileObjectField; 625*795d594fSAndroid Build Coastguard Worker volatile int volatileIntField; 626*795d594fSAndroid Build Coastguard Worker volatile float volatileFloatField; 627*795d594fSAndroid Build Coastguard Worker volatile long volatileLongField; 628*795d594fSAndroid Build Coastguard Worker volatile double volatileDoubleField; 629*795d594fSAndroid Build Coastguard Worker volatile byte volatileByteField; 630*795d594fSAndroid Build Coastguard Worker volatile boolean volatileBooleanField; 631*795d594fSAndroid Build Coastguard Worker volatile char volatileCharField; 632*795d594fSAndroid Build Coastguard Worker volatile short volatileShortField; 633*795d594fSAndroid Build Coastguard Worker } 634*795d594fSAndroid Build Coastguard Worker } 635