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 resolved;
18*795d594fSAndroid Build Coastguard Worker 
19*795d594fSAndroid Build Coastguard Worker import getters.GetPublicSubclassOfUnresolvedClass2;
20*795d594fSAndroid Build Coastguard Worker import unresolved.UnresolvedPublicClass;
21*795d594fSAndroid Build Coastguard Worker 
22*795d594fSAndroid Build Coastguard Worker // This class is defined by the child class loader, so access to
23*795d594fSAndroid Build Coastguard Worker // package-private classes and members defined in the parent class
24*795d594fSAndroid Build Coastguard Worker // loader is illegal even though the package name is the same.
25*795d594fSAndroid Build Coastguard Worker public class PublicSubclassOfUnresolvedClass2 extends UnresolvedPublicClass {
$noinline$main()26*795d594fSAndroid Build Coastguard Worker   public static void $noinline$main() {
27*795d594fSAndroid Build Coastguard Worker     $noinline$testReferrersClass();
28*795d594fSAndroid Build Coastguard Worker     $noinline$testInlinedReferrersClass();
29*795d594fSAndroid Build Coastguard Worker     $noinline$testInlinedReferrersClassFromSamePackage();
30*795d594fSAndroid Build Coastguard Worker 
31*795d594fSAndroid Build Coastguard Worker     $noinline$testResolvedPublicClass();
32*795d594fSAndroid Build Coastguard Worker     $noinline$testResolvedPackagePrivateClass();
33*795d594fSAndroid Build Coastguard Worker 
34*795d594fSAndroid Build Coastguard Worker     $noinline$testPublicFieldInResolvedPackagePrivateClass();
35*795d594fSAndroid Build Coastguard Worker     $noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass();
36*795d594fSAndroid Build Coastguard Worker     $noinline$testPrivateFieldInResolvedPackagePrivateClass();
37*795d594fSAndroid Build Coastguard Worker     $noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass();
38*795d594fSAndroid Build Coastguard Worker     $noinline$testPackagePrivateFieldInResolvedPackagePrivateClass();
39*795d594fSAndroid Build Coastguard Worker     $noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass();
40*795d594fSAndroid Build Coastguard Worker 
41*795d594fSAndroid Build Coastguard Worker     $noinline$testPublicMethodInResolvedPackagePrivateClass();
42*795d594fSAndroid Build Coastguard Worker     $noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass();
43*795d594fSAndroid Build Coastguard Worker     $noinline$testPrivateMethodInResolvedPackagePrivateClass();
44*795d594fSAndroid Build Coastguard Worker     $noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass();
45*795d594fSAndroid Build Coastguard Worker     $noinline$testPackagePrivateMethodInResolvedPackagePrivateClass();
46*795d594fSAndroid Build Coastguard Worker     $noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass();
47*795d594fSAndroid Build Coastguard Worker 
48*795d594fSAndroid Build Coastguard Worker     System.out.println("PublicSubclassOfUnresolvedClass2 passed");
49*795d594fSAndroid Build Coastguard Worker   }
50*795d594fSAndroid Build Coastguard Worker 
51*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testReferrersClass() builder (after)
52*795d594fSAndroid Build Coastguard Worker   /// CHECK: LoadClass class_name:resolved.PublicSubclassOfUnresolvedClass2 needs_access_check:false
$noinline$testReferrersClass()53*795d594fSAndroid Build Coastguard Worker   static void $noinline$testReferrersClass() {
54*795d594fSAndroid Build Coastguard Worker     Class<?> c = PublicSubclassOfUnresolvedClass2.class;
55*795d594fSAndroid Build Coastguard Worker   }
56*795d594fSAndroid Build Coastguard Worker 
57*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testInlinedReferrersClass() inliner (after)
58*795d594fSAndroid Build Coastguard Worker   // CHECK: LoadClass class_name:resolved.PublicSubclassOfUnresolvedClass2 needs_access_check:false
$noinline$testInlinedReferrersClass()59*795d594fSAndroid Build Coastguard Worker   static void $noinline$testInlinedReferrersClass() {
60*795d594fSAndroid Build Coastguard Worker     // TODO: Make $inline$ and enable CHECK above when we relax the verifier. b/28313047
61*795d594fSAndroid Build Coastguard Worker     Class<?> c = GetPublicSubclassOfUnresolvedClass2.get();
62*795d594fSAndroid Build Coastguard Worker   }
63*795d594fSAndroid Build Coastguard Worker 
64*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testInlinedReferrersClassFromSamePackage() inliner (after)
65*795d594fSAndroid Build Coastguard Worker   // CHECK: LoadClass class_name:resolved.PublicSubclassOfUnresolvedClass2 needs_access_check:true
$noinline$testInlinedReferrersClassFromSamePackage()66*795d594fSAndroid Build Coastguard Worker   static void $noinline$testInlinedReferrersClassFromSamePackage() {
67*795d594fSAndroid Build Coastguard Worker     // Trying to resolve this class by name in parent class loader throws NoClassDefFoundError.
68*795d594fSAndroid Build Coastguard Worker     try{
69*795d594fSAndroid Build Coastguard Worker       // TODO: Make $inline$ and enable CHECK above when we relax the verifier. b/28313047
70*795d594fSAndroid Build Coastguard Worker       Class<?> c = GetPublicSubclassOfUnresolvedClass2FromSamePackage.get();
71*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
72*795d594fSAndroid Build Coastguard Worker     } catch (NoClassDefFoundError expected) {}
73*795d594fSAndroid Build Coastguard Worker   }
74*795d594fSAndroid Build Coastguard Worker 
75*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testResolvedPublicClass() builder (after)
76*795d594fSAndroid Build Coastguard Worker   /// CHECK: LoadClass class_name:resolved.ResolvedPublicSubclassOfPackagePrivateClass needs_access_check:false
$noinline$testResolvedPublicClass()77*795d594fSAndroid Build Coastguard Worker   static void $noinline$testResolvedPublicClass() {
78*795d594fSAndroid Build Coastguard Worker     Class<?> c = ResolvedPublicSubclassOfPackagePrivateClass.class;
79*795d594fSAndroid Build Coastguard Worker   }
80*795d594fSAndroid Build Coastguard Worker 
81*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testResolvedPackagePrivateClass() builder (after)
82*795d594fSAndroid Build Coastguard Worker   /// CHECK: LoadClass class_name:resolved.ResolvedPackagePrivateClass needs_access_check:true
$noinline$testResolvedPackagePrivateClass()83*795d594fSAndroid Build Coastguard Worker   static void $noinline$testResolvedPackagePrivateClass() {
84*795d594fSAndroid Build Coastguard Worker     try {
85*795d594fSAndroid Build Coastguard Worker       Class<?> c = ResolvedPackagePrivateClass.class;
86*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
87*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
88*795d594fSAndroid Build Coastguard Worker   }
89*795d594fSAndroid Build Coastguard Worker 
90*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after)
91*795d594fSAndroid Build Coastguard Worker   /// CHECK: UnresolvedStaticFieldSet
92*795d594fSAndroid Build Coastguard Worker 
93*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicFieldInResolvedPackagePrivateClass() builder (after)
94*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: StaticFieldSet
$noinline$testPublicFieldInResolvedPackagePrivateClass()95*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPublicFieldInResolvedPackagePrivateClass() {
96*795d594fSAndroid Build Coastguard Worker     try {
97*795d594fSAndroid Build Coastguard Worker       ResolvedPackagePrivateClass.publicIntField = 42;
98*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
99*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
100*795d594fSAndroid Build Coastguard Worker   }
101*795d594fSAndroid Build Coastguard Worker 
102*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
103*795d594fSAndroid Build Coastguard Worker   /// CHECK: StaticFieldSet
104*795d594fSAndroid Build Coastguard Worker 
105*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
106*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: UnresolvedStaticFieldSet
$noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass()107*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPublicFieldInPackagePrivateClassViaResolvedPublicSubclass() {
108*795d594fSAndroid Build Coastguard Worker     ResolvedPublicSubclassOfPackagePrivateClass.publicIntField = 42;
109*795d594fSAndroid Build Coastguard Worker   }
110*795d594fSAndroid Build Coastguard Worker 
111*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateFieldInResolvedPackagePrivateClass() builder (after)
112*795d594fSAndroid Build Coastguard Worker   /// CHECK: UnresolvedStaticFieldSet
113*795d594fSAndroid Build Coastguard Worker 
114*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateFieldInResolvedPackagePrivateClass() builder (after)
115*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: StaticFieldSet
$noinline$testPrivateFieldInResolvedPackagePrivateClass()116*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPrivateFieldInResolvedPackagePrivateClass() {
117*795d594fSAndroid Build Coastguard Worker     try {
118*795d594fSAndroid Build Coastguard Worker       ResolvedPackagePrivateClass.privateIntField = 42;
119*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
120*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
121*795d594fSAndroid Build Coastguard Worker   }
122*795d594fSAndroid Build Coastguard Worker 
123*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
124*795d594fSAndroid Build Coastguard Worker   /// CHECK: UnresolvedStaticFieldSet
125*795d594fSAndroid Build Coastguard Worker 
126*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
127*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: StaticFieldSet
$noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass()128*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() {
129*795d594fSAndroid Build Coastguard Worker     try {
130*795d594fSAndroid Build Coastguard Worker       ResolvedPublicSubclassOfPackagePrivateClass.privateIntField = 42;
131*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
132*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
133*795d594fSAndroid Build Coastguard Worker   }
134*795d594fSAndroid Build Coastguard Worker 
135*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateFieldInResolvedPackagePrivateClass() builder (after)
136*795d594fSAndroid Build Coastguard Worker   /// CHECK: UnresolvedStaticFieldSet
137*795d594fSAndroid Build Coastguard Worker 
138*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateFieldInResolvedPackagePrivateClass() builder (after)
139*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: StaticFieldSet
$noinline$testPackagePrivateFieldInResolvedPackagePrivateClass()140*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPackagePrivateFieldInResolvedPackagePrivateClass() {
141*795d594fSAndroid Build Coastguard Worker     try {
142*795d594fSAndroid Build Coastguard Worker       ResolvedPackagePrivateClass.intField = 42;
143*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
144*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
145*795d594fSAndroid Build Coastguard Worker   }
146*795d594fSAndroid Build Coastguard Worker 
147*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
148*795d594fSAndroid Build Coastguard Worker   /// CHECK: UnresolvedStaticFieldSet
149*795d594fSAndroid Build Coastguard Worker 
150*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
151*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: StaticFieldSet
$noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass()152*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPackagePrivateFieldInPackagePrivateClassViaResolvedPublicSubclass() {
153*795d594fSAndroid Build Coastguard Worker     try {
154*795d594fSAndroid Build Coastguard Worker       ResolvedPublicSubclassOfPackagePrivateClass.intField = 42;
155*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
156*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
157*795d594fSAndroid Build Coastguard Worker   }
158*795d594fSAndroid Build Coastguard Worker 
159*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicMethodInResolvedPackagePrivateClass() builder (after)
160*795d594fSAndroid Build Coastguard Worker   /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$publicStaticMethod
161*795d594fSAndroid Build Coastguard Worker 
162*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicMethodInResolvedPackagePrivateClass() builder (after)
163*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$publicStaticMethod
$noinline$testPublicMethodInResolvedPackagePrivateClass()164*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPublicMethodInResolvedPackagePrivateClass() {
165*795d594fSAndroid Build Coastguard Worker     try {
166*795d594fSAndroid Build Coastguard Worker       ResolvedPackagePrivateClass.$noinline$publicStaticMethod();
167*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
168*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
169*795d594fSAndroid Build Coastguard Worker   }
170*795d594fSAndroid Build Coastguard Worker 
171*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
172*795d594fSAndroid Build Coastguard Worker   /// CHECK: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$publicStaticMethod
173*795d594fSAndroid Build Coastguard Worker 
174*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
175*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: InvokeUnresolved method_name:{{[^$]*}}$noinline$publicStaticMethod
$noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass()176*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPublicMethodInPackagePrivateClassViaResolvedPublicSubclass() {
177*795d594fSAndroid Build Coastguard Worker     ResolvedPublicSubclassOfPackagePrivateClass.$noinline$publicStaticMethod();
178*795d594fSAndroid Build Coastguard Worker   }
179*795d594fSAndroid Build Coastguard Worker 
180*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateMethodInResolvedPackagePrivateClass() builder (after)
181*795d594fSAndroid Build Coastguard Worker   /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$privateStaticMethod
182*795d594fSAndroid Build Coastguard Worker 
183*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateMethodInResolvedPackagePrivateClass() builder (after)
184*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$privateStaticMethod
$noinline$testPrivateMethodInResolvedPackagePrivateClass()185*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPrivateMethodInResolvedPackagePrivateClass() {
186*795d594fSAndroid Build Coastguard Worker     try {
187*795d594fSAndroid Build Coastguard Worker       ResolvedPackagePrivateClass.$noinline$privateStaticMethod();
188*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
189*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
190*795d594fSAndroid Build Coastguard Worker   }
191*795d594fSAndroid Build Coastguard Worker 
192*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
193*795d594fSAndroid Build Coastguard Worker   /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$privateStaticMethod
194*795d594fSAndroid Build Coastguard Worker 
195*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
196*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$privateStaticMethod
$noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass()197*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() {
198*795d594fSAndroid Build Coastguard Worker     try {
199*795d594fSAndroid Build Coastguard Worker       ResolvedPublicSubclassOfPackagePrivateClass.$noinline$privateStaticMethod();
200*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
201*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
202*795d594fSAndroid Build Coastguard Worker   }
203*795d594fSAndroid Build Coastguard Worker 
204*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateMethodInResolvedPackagePrivateClass() builder (after)
205*795d594fSAndroid Build Coastguard Worker   /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$staticMethod
206*795d594fSAndroid Build Coastguard Worker 
207*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateMethodInResolvedPackagePrivateClass() builder (after)
208*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$staticMethod
$noinline$testPackagePrivateMethodInResolvedPackagePrivateClass()209*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPackagePrivateMethodInResolvedPackagePrivateClass() {
210*795d594fSAndroid Build Coastguard Worker     try {
211*795d594fSAndroid Build Coastguard Worker       ResolvedPackagePrivateClass.$noinline$staticMethod();
212*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
213*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
214*795d594fSAndroid Build Coastguard Worker   }
215*795d594fSAndroid Build Coastguard Worker 
216*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
217*795d594fSAndroid Build Coastguard Worker   /// CHECK: InvokeUnresolved method_name:{{[^$]*}}$noinline$staticMethod
218*795d594fSAndroid Build Coastguard Worker 
219*795d594fSAndroid Build Coastguard Worker   /// CHECK-START: void resolved.PublicSubclassOfUnresolvedClass2.$noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() builder (after)
220*795d594fSAndroid Build Coastguard Worker   /// CHECK-NOT: InvokeStaticOrDirect method_name:{{[^$]*}}$noinline$staticMethod
$noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass()221*795d594fSAndroid Build Coastguard Worker   static void $noinline$testPackagePrivateMethodInPackagePrivateClassViaResolvedPublicSubclass() {
222*795d594fSAndroid Build Coastguard Worker     try {
223*795d594fSAndroid Build Coastguard Worker       ResolvedPublicSubclassOfPackagePrivateClass.$noinline$staticMethod();
224*795d594fSAndroid Build Coastguard Worker       throw new Error("Unreachable");
225*795d594fSAndroid Build Coastguard Worker     } catch (IllegalAccessError expected) {}
226*795d594fSAndroid Build Coastguard Worker   }
227*795d594fSAndroid Build Coastguard Worker }
228