1*795d594fSAndroid Build Coastguard Worker /* 2*795d594fSAndroid Build Coastguard Worker * Copyright (C) 2020 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 package unresolved; 18*795d594fSAndroid Build Coastguard Worker 19*795d594fSAndroid Build Coastguard Worker import getters.GetUnresolvedPublicClass; 20*795d594fSAndroid Build Coastguard Worker import getters.GetUnresolvedPublicClassFromDifferentDexFile; 21*795d594fSAndroid Build Coastguard Worker import resolved.PackagePrivateSubclassOfUnresolvedClass; 22*795d594fSAndroid Build Coastguard Worker import resolved.PublicSubclassOfUnresolvedClass; 23*795d594fSAndroid Build Coastguard Worker import resolved.ResolvedPackagePrivateClass; 24*795d594fSAndroid Build Coastguard Worker import resolved.ResolvedPublicSubclassOfPackagePrivateClass; 25*795d594fSAndroid Build Coastguard Worker 26*795d594fSAndroid Build Coastguard Worker public class UnresolvedPublicClass implements BcpExMarker { $noinline$main()27*795d594fSAndroid Build Coastguard Worker public static void $noinline$main() { 28*795d594fSAndroid Build Coastguard Worker $noinline$testReferrersClass(); 29*795d594fSAndroid Build Coastguard Worker $noinline$testInlinedReferrersClass(); 30*795d594fSAndroid Build Coastguard Worker $noinline$testInlinedReferrersClassFromDifferentDexFile(); 31*795d594fSAndroid Build Coastguard Worker $noinline$testInlinedClassDescriptorCompare1(); 32*795d594fSAndroid Build Coastguard Worker $noinline$testInlinedClassDescriptorCompare2(); 33*795d594fSAndroid Build Coastguard Worker 34*795d594fSAndroid Build Coastguard Worker $noinline$testResolvedPublicClass(); 35*795d594fSAndroid Build Coastguard Worker $noinline$testResolvedPackagePrivateClass(); 36*795d594fSAndroid Build Coastguard Worker $noinline$testUnresolvedPublicClass(); 37*795d594fSAndroid Build Coastguard Worker $noinline$testUnresolvedPackagePrivateClass(); 38*795d594fSAndroid Build Coastguard Worker $noinline$testUnresolvedPublicClassInSamePackage(); 39*795d594fSAndroid Build Coastguard Worker $noinline$testUnresolvedPackagePrivateClassInSamePackage(); 40*795d594fSAndroid Build Coastguard Worker 41*795d594fSAndroid Build Coastguard Worker $noinline$testPublicFieldInResolvedPackagePrivateClass(); 42*795d594fSAndroid Build Coastguard Worker $noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass(); 43*795d594fSAndroid Build Coastguard Worker $noinline$testPrivateFieldInResolvedPackagePrivateClass(); 44*795d594fSAndroid Build Coastguard Worker $noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass(); 45*795d594fSAndroid Build Coastguard Worker $noinline$testPackagePrivateFieldInResolvedPackagePrivateClass(); 46*795d594fSAndroid Build Coastguard Worker $noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass(); 47*795d594fSAndroid Build Coastguard Worker 48*795d594fSAndroid Build Coastguard Worker $noinline$testPublicMethodInResolvedPackagePrivateClass(); 49*795d594fSAndroid Build Coastguard Worker $noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass(); 50*795d594fSAndroid Build Coastguard Worker $noinline$testPrivateMethodInResolvedPackagePrivateClass(); 51*795d594fSAndroid Build Coastguard Worker $noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass(); 52*795d594fSAndroid Build Coastguard Worker $noinline$testPackagePrivateMethodInResolvedPackagePrivateClass(); 53*795d594fSAndroid Build Coastguard Worker $noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass(); 54*795d594fSAndroid Build Coastguard Worker 55*795d594fSAndroid Build Coastguard Worker System.out.println("UnresolvedPublicClass passed"); 56*795d594fSAndroid Build Coastguard Worker } 57*795d594fSAndroid Build Coastguard Worker 58*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testReferrersClass() builder (after) 59*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:unresolved.UnresolvedPublicClass needs_access_check:false $noinline$testReferrersClass()60*795d594fSAndroid Build Coastguard Worker static void $noinline$testReferrersClass() { 61*795d594fSAndroid Build Coastguard Worker Class<?> c = UnresolvedPublicClass.class; 62*795d594fSAndroid Build Coastguard Worker } 63*795d594fSAndroid Build Coastguard Worker 64*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testInlinedReferrersClass() inliner (after) 65*795d594fSAndroid Build Coastguard Worker // CHECK: LoadClass class_name:unresolved.UnresolvedPublicClass needs_access_check:false $noinline$testInlinedReferrersClass()66*795d594fSAndroid Build Coastguard Worker static void $noinline$testInlinedReferrersClass() { 67*795d594fSAndroid Build Coastguard Worker // TODO: Make $inline$ and enable CHECK above when we relax the verifier. b/28313047 68*795d594fSAndroid Build Coastguard Worker Class<?> c = GetUnresolvedPublicClass.get(); 69*795d594fSAndroid Build Coastguard Worker } 70*795d594fSAndroid Build Coastguard Worker 71*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testInlinedReferrersClassFromDifferentDexFile() inliner (after) 72*795d594fSAndroid Build Coastguard Worker // CHECK: LoadClass class_name:unresolved.UnresolvedPublicClass needs_access_check:false $noinline$testInlinedReferrersClassFromDifferentDexFile()73*795d594fSAndroid Build Coastguard Worker static void $noinline$testInlinedReferrersClassFromDifferentDexFile() { 74*795d594fSAndroid Build Coastguard Worker // TODO: Make $inline$ and enable CHECK above when we relax the verifier. b/28313047 75*795d594fSAndroid Build Coastguard Worker Class<?> c = GetUnresolvedPublicClassFromDifferentDexFile.get(); 76*795d594fSAndroid Build Coastguard Worker } 77*795d594fSAndroid Build Coastguard Worker 78*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testInlinedClassDescriptorCompare1() inliner (after) 79*795d594fSAndroid Build Coastguard Worker // CHECK: LoadClass class_name:resolved.PublicSubclassOfUnresolvedClass needs_access_check:true $noinline$testInlinedClassDescriptorCompare1()80*795d594fSAndroid Build Coastguard Worker static void $noinline$testInlinedClassDescriptorCompare1() { 81*795d594fSAndroid Build Coastguard Worker // TODO: Make $inline$ and enable CHECK above when we relax the verifier. b/28313047 82*795d594fSAndroid Build Coastguard Worker Class<?> c = 83*795d594fSAndroid Build Coastguard Worker GetUnresolvedPublicClassFromDifferentDexFile.getOtherClass(); 84*795d594fSAndroid Build Coastguard Worker } 85*795d594fSAndroid Build Coastguard Worker 86*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testInlinedClassDescriptorCompare2() inliner (after) 87*795d594fSAndroid Build Coastguard Worker // CHECK: LoadClass class_name:unresolved.UnresolvedPublicClazz needs_access_check:true $noinline$testInlinedClassDescriptorCompare2()88*795d594fSAndroid Build Coastguard Worker static void $noinline$testInlinedClassDescriptorCompare2() { 89*795d594fSAndroid Build Coastguard Worker // This is useful for code coverage of descriptor comparison 90*795d594fSAndroid Build Coastguard Worker // implemented by first comparing the utf16 lengths and then 91*795d594fSAndroid Build Coastguard Worker // checking strcmp(). Using these classes we cover the path 92*795d594fSAndroid Build Coastguard Worker // where utf16 lengths match but string contents differ. 93*795d594fSAndroid Build Coastguard Worker // TODO: Make $inline$ and enable CHECK above when we relax the verifier. b/28313047 94*795d594fSAndroid Build Coastguard Worker Class<?> c = 95*795d594fSAndroid Build Coastguard Worker GetUnresolvedPublicClassFromDifferentDexFile.getOtherClassWithSameDescriptorLength(); 96*795d594fSAndroid Build Coastguard Worker } 97*795d594fSAndroid Build Coastguard Worker 98*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testResolvedPublicClass() builder (after) 99*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:resolved.ResolvedPublicSubclassOfPackagePrivateClass needs_access_check:false $noinline$testResolvedPublicClass()100*795d594fSAndroid Build Coastguard Worker static void $noinline$testResolvedPublicClass() { 101*795d594fSAndroid Build Coastguard Worker Class<?> c = ResolvedPublicSubclassOfPackagePrivateClass.class; 102*795d594fSAndroid Build Coastguard Worker } 103*795d594fSAndroid Build Coastguard Worker 104*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testResolvedPackagePrivateClass() builder (after) 105*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:resolved.ResolvedPackagePrivateClass needs_access_check:true $noinline$testResolvedPackagePrivateClass()106*795d594fSAndroid Build Coastguard Worker static void $noinline$testResolvedPackagePrivateClass() { 107*795d594fSAndroid Build Coastguard Worker try { 108*795d594fSAndroid Build Coastguard Worker Class<?> c = ResolvedPackagePrivateClass.class; 109*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 110*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 111*795d594fSAndroid Build Coastguard Worker } 112*795d594fSAndroid Build Coastguard Worker 113*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPublicClass() builder (after) 114*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:resolved.PublicSubclassOfUnresolvedClass needs_access_check:true 115*795d594fSAndroid Build Coastguard Worker 116*795d594fSAndroid Build Coastguard Worker /// CHECK-START-{ARM,ARM64,X86,X86_64}: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPublicClass() builder (after) 117*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass load_kind:BssEntryPublic class_name:resolved.PublicSubclassOfUnresolvedClass $noinline$testUnresolvedPublicClass()118*795d594fSAndroid Build Coastguard Worker static void $noinline$testUnresolvedPublicClass() { 119*795d594fSAndroid Build Coastguard Worker Class<?> c = PublicSubclassOfUnresolvedClass.class; 120*795d594fSAndroid Build Coastguard Worker } 121*795d594fSAndroid Build Coastguard Worker 122*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPackagePrivateClass() builder (after) 123*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:resolved.PackagePrivateSubclassOfUnresolvedClass needs_access_check:true 124*795d594fSAndroid Build Coastguard Worker 125*795d594fSAndroid Build Coastguard Worker /// CHECK-START-{ARM,ARM64,X86,X86_64}: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPackagePrivateClass() builder (after) 126*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass load_kind:BssEntryPublic class_name:resolved.PackagePrivateSubclassOfUnresolvedClass $noinline$testUnresolvedPackagePrivateClass()127*795d594fSAndroid Build Coastguard Worker static void $noinline$testUnresolvedPackagePrivateClass() { 128*795d594fSAndroid Build Coastguard Worker try { 129*795d594fSAndroid Build Coastguard Worker Class<?> c = PackagePrivateSubclassOfUnresolvedClass.class; 130*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 131*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 132*795d594fSAndroid Build Coastguard Worker } 133*795d594fSAndroid Build Coastguard Worker 134*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPublicClassInSamePackage() builder (after) 135*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:unresolved.UnresolvedPublicClazz needs_access_check:true 136*795d594fSAndroid Build Coastguard Worker 137*795d594fSAndroid Build Coastguard Worker /// CHECK-START-{ARM,ARM64,X86,X86_64}: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPublicClassInSamePackage() builder (after) 138*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass load_kind:BssEntryPackage class_name:unresolved.UnresolvedPublicClazz $noinline$testUnresolvedPublicClassInSamePackage()139*795d594fSAndroid Build Coastguard Worker static void $noinline$testUnresolvedPublicClassInSamePackage() { 140*795d594fSAndroid Build Coastguard Worker Class<?> c = UnresolvedPublicClazz.class; 141*795d594fSAndroid Build Coastguard Worker } 142*795d594fSAndroid Build Coastguard Worker 143*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPackagePrivateClassInSamePackage() builder (after) 144*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass class_name:unresolved.UnresolvedPackagePrivateClass needs_access_check:true 145*795d594fSAndroid Build Coastguard Worker 146*795d594fSAndroid Build Coastguard Worker /// CHECK-START-{ARM,ARM64,X86,X86_64}: void unresolved.UnresolvedPublicClass.$noinline$testUnresolvedPackagePrivateClassInSamePackage() builder (after) 147*795d594fSAndroid Build Coastguard Worker /// CHECK: LoadClass load_kind:BssEntryPackage class_name:unresolved.UnresolvedPackagePrivateClass $noinline$testUnresolvedPackagePrivateClassInSamePackage()148*795d594fSAndroid Build Coastguard Worker static void $noinline$testUnresolvedPackagePrivateClassInSamePackage() { 149*795d594fSAndroid Build Coastguard Worker Class<?> c = UnresolvedPackagePrivateClass.class; 150*795d594fSAndroid Build Coastguard Worker } 151*795d594fSAndroid Build Coastguard Worker 152*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after) 153*795d594fSAndroid Build Coastguard Worker /// CHECK: UnresolvedStaticFieldSet 154*795d594fSAndroid Build Coastguard Worker 155*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after) 156*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: StaticFieldSet $noinline$testPublicFieldInResolvedPackagePrivateClass()157*795d594fSAndroid Build Coastguard Worker static void $noinline$testPublicFieldInResolvedPackagePrivateClass() { 158*795d594fSAndroid Build Coastguard Worker try { 159*795d594fSAndroid Build Coastguard Worker ResolvedPackagePrivateClass.publicIntField = 42; 160*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 161*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 162*795d594fSAndroid Build Coastguard Worker } 163*795d594fSAndroid Build Coastguard Worker 164*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 165*795d594fSAndroid Build Coastguard Worker /// CHECK: StaticFieldSet 166*795d594fSAndroid Build Coastguard Worker 167*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 168*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: UnresolvedStaticFieldSet $noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass()169*795d594fSAndroid Build Coastguard Worker static void $noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass() { 170*795d594fSAndroid Build Coastguard Worker ResolvedPublicSubclassOfPackagePrivateClass.publicIntField = 42; 171*795d594fSAndroid Build Coastguard Worker } 172*795d594fSAndroid Build Coastguard Worker 173*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateFieldInResolvedPackagePrivateClass() builder (after) 174*795d594fSAndroid Build Coastguard Worker /// CHECK: UnresolvedStaticFieldSet 175*795d594fSAndroid Build Coastguard Worker 176*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateFieldInResolvedPackagePrivateClass() builder (after) 177*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: StaticFieldSet $noinline$testPrivateFieldInResolvedPackagePrivateClass()178*795d594fSAndroid Build Coastguard Worker static void $noinline$testPrivateFieldInResolvedPackagePrivateClass() { 179*795d594fSAndroid Build Coastguard Worker try { 180*795d594fSAndroid Build Coastguard Worker ResolvedPackagePrivateClass.privateIntField = 42; 181*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 182*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 183*795d594fSAndroid Build Coastguard Worker } 184*795d594fSAndroid Build Coastguard Worker 185*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 186*795d594fSAndroid Build Coastguard Worker /// CHECK: UnresolvedStaticFieldSet 187*795d594fSAndroid Build Coastguard Worker 188*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 189*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: StaticFieldSet $noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass()190*795d594fSAndroid Build Coastguard Worker static void $noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() { 191*795d594fSAndroid Build Coastguard Worker try { 192*795d594fSAndroid Build Coastguard Worker ResolvedPublicSubclassOfPackagePrivateClass.privateIntField = 42; 193*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 194*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 195*795d594fSAndroid Build Coastguard Worker } 196*795d594fSAndroid Build Coastguard Worker 197*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateFieldInResolvedPackagePrivateClass() builder (after) 198*795d594fSAndroid Build Coastguard Worker /// CHECK: UnresolvedStaticFieldSet 199*795d594fSAndroid Build Coastguard Worker 200*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateFieldInResolvedPackagePrivateClass() builder (after) 201*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: StaticFieldSet $noinline$testPackagePrivateFieldInResolvedPackagePrivateClass()202*795d594fSAndroid Build Coastguard Worker static void $noinline$testPackagePrivateFieldInResolvedPackagePrivateClass() { 203*795d594fSAndroid Build Coastguard Worker try { 204*795d594fSAndroid Build Coastguard Worker ResolvedPackagePrivateClass.intField = 42; 205*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 206*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 207*795d594fSAndroid Build Coastguard Worker } 208*795d594fSAndroid Build Coastguard Worker 209*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 210*795d594fSAndroid Build Coastguard Worker /// CHECK: UnresolvedStaticFieldSet 211*795d594fSAndroid Build Coastguard Worker 212*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 213*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: StaticFieldSet $noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass()214*795d594fSAndroid Build Coastguard Worker static void $noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() { 215*795d594fSAndroid Build Coastguard Worker try { 216*795d594fSAndroid Build Coastguard Worker ResolvedPublicSubclassOfPackagePrivateClass.intField = 42; 217*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 218*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 219*795d594fSAndroid Build Coastguard Worker } 220*795d594fSAndroid Build Coastguard Worker 221*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicMethodInResolvedPackagePrivateClass() builder (after) 222*795d594fSAndroid Build Coastguard Worker /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$publicStaticMethod 223*795d594fSAndroid Build Coastguard Worker 224*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicMethodInResolvedPackagePrivateClass() builder (after) 225*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$publicStaticMethod $noinline$testPublicMethodInResolvedPackagePrivateClass()226*795d594fSAndroid Build Coastguard Worker static void $noinline$testPublicMethodInResolvedPackagePrivateClass() { 227*795d594fSAndroid Build Coastguard Worker try { 228*795d594fSAndroid Build Coastguard Worker ResolvedPackagePrivateClass.$noinline$publicStaticMethod(); 229*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 230*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 231*795d594fSAndroid Build Coastguard Worker } 232*795d594fSAndroid Build Coastguard Worker 233*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 234*795d594fSAndroid Build Coastguard Worker /// CHECK: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$publicStaticMethod 235*795d594fSAndroid Build Coastguard Worker 236*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 237*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: InvokeUnresolved method_name:{{[^$]*}}$noinline$publicStaticMethod $noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass()238*795d594fSAndroid Build Coastguard Worker static void $noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass() { 239*795d594fSAndroid Build Coastguard Worker ResolvedPublicSubclassOfPackagePrivateClass.$noinline$publicStaticMethod(); 240*795d594fSAndroid Build Coastguard Worker } 241*795d594fSAndroid Build Coastguard Worker 242*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateMethodInResolvedPackagePrivateClass() builder (after) 243*795d594fSAndroid Build Coastguard Worker /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$privateStaticMethod 244*795d594fSAndroid Build Coastguard Worker 245*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateMethodInResolvedPackagePrivateClass() builder (after) 246*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$privateStaticMethod $noinline$testPrivateMethodInResolvedPackagePrivateClass()247*795d594fSAndroid Build Coastguard Worker static void $noinline$testPrivateMethodInResolvedPackagePrivateClass() { 248*795d594fSAndroid Build Coastguard Worker try { 249*795d594fSAndroid Build Coastguard Worker ResolvedPackagePrivateClass.$noinline$privateStaticMethod(); 250*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 251*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 252*795d594fSAndroid Build Coastguard Worker } 253*795d594fSAndroid Build Coastguard Worker 254*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 255*795d594fSAndroid Build Coastguard Worker /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$privateStaticMethod 256*795d594fSAndroid Build Coastguard Worker 257*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 258*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$privateStaticMethod $noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass()259*795d594fSAndroid Build Coastguard Worker static void $noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() { 260*795d594fSAndroid Build Coastguard Worker try { 261*795d594fSAndroid Build Coastguard Worker ResolvedPublicSubclassOfPackagePrivateClass.$noinline$privateStaticMethod(); 262*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 263*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 264*795d594fSAndroid Build Coastguard Worker } 265*795d594fSAndroid Build Coastguard Worker 266*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateMethodInResolvedPackagePrivateClass() builder (after) 267*795d594fSAndroid Build Coastguard Worker /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$staticMethod 268*795d594fSAndroid Build Coastguard Worker 269*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateMethodInResolvedPackagePrivateClass() builder (after) 270*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$staticMethod $noinline$testPackagePrivateMethodInResolvedPackagePrivateClass()271*795d594fSAndroid Build Coastguard Worker static void $noinline$testPackagePrivateMethodInResolvedPackagePrivateClass() { 272*795d594fSAndroid Build Coastguard Worker try { 273*795d594fSAndroid Build Coastguard Worker ResolvedPackagePrivateClass.$noinline$staticMethod(); 274*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 275*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 276*795d594fSAndroid Build Coastguard Worker } 277*795d594fSAndroid Build Coastguard Worker 278*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 279*795d594fSAndroid Build Coastguard Worker /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$staticMethod 280*795d594fSAndroid Build Coastguard Worker 281*795d594fSAndroid Build Coastguard Worker /// CHECK-START: void unresolved.UnresolvedPublicClass.$noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after) 282*795d594fSAndroid Build Coastguard Worker /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$staticMethod $noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass()283*795d594fSAndroid Build Coastguard Worker static void $noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() { 284*795d594fSAndroid Build Coastguard Worker try { 285*795d594fSAndroid Build Coastguard Worker ResolvedPublicSubclassOfPackagePrivateClass.$noinline$staticMethod(); 286*795d594fSAndroid Build Coastguard Worker throw new Error("Unreachable"); 287*795d594fSAndroid Build Coastguard Worker } catch (IllegalAccessError expected) {} 288*795d594fSAndroid Build Coastguard Worker } 289*795d594fSAndroid Build Coastguard Worker } 290