xref: /aosp_15_r20/external/ksp/test-utils/testData/api/javaModifiers.kt (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1*af87fb4bSXin Li /*
2*af87fb4bSXin Li  * Copyright 2020 Google LLC
3*af87fb4bSXin Li  * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
4*af87fb4bSXin Li  *
5*af87fb4bSXin Li  * Licensed under the Apache License, Version 2.0 (the "License");
6*af87fb4bSXin Li  * you may not use this file except in compliance with the License.
7*af87fb4bSXin Li  * You may obtain a copy of the License at
8*af87fb4bSXin Li  *
9*af87fb4bSXin Li  * http://www.apache.org/licenses/LICENSE-2.0
10*af87fb4bSXin Li  *
11*af87fb4bSXin Li  * Unless required by applicable law or agreed to in writing, software
12*af87fb4bSXin Li  * distributed under the License is distributed on an "AS IS" BASIS,
13*af87fb4bSXin Li  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*af87fb4bSXin Li  * See the License for the specific language governing permissions and
15*af87fb4bSXin Li  * limitations under the License.
16*af87fb4bSXin Li  */
17*af87fb4bSXin Li 
18*af87fb4bSXin Li // TEST PROCESSOR: JavaModifierProcessor
19*af87fb4bSXin Li // EXPECTED:
20*af87fb4bSXin Li // C: ABSTRACT PUBLIC : ABSTRACT PUBLIC
21*af87fb4bSXin Li // C.staticStr: PRIVATE : PRIVATE
22*af87fb4bSXin Li // C.s1: FINAL JAVA_TRANSIENT : FINAL JAVA_TRANSIENT
23*af87fb4bSXin Li // C.i1: JAVA_STATIC JAVA_VOLATILE PROTECTED : JAVA_STATIC JAVA_VOLATILE PROTECTED
24*af87fb4bSXin Li // C.NestedC: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
25*af87fb4bSXin Li // NestedC.<init>: FINAL PUBLIC : FINAL PUBLIC
26*af87fb4bSXin Li // C.InnerC: PUBLIC : PUBLIC
27*af87fb4bSXin Li // InnerC.<init>: FINAL PUBLIC : FINAL PUBLIC
28*af87fb4bSXin Li // C.intFun: JAVA_DEFAULT JAVA_SYNCHRONIZED : JAVA_DEFAULT JAVA_SYNCHRONIZED
29*af87fb4bSXin Li // C.foo: ABSTRACT JAVA_STRICT : ABSTRACT JAVA_STRICT
30*af87fb4bSXin Li // C.<init>: FINAL PUBLIC : FINAL PUBLIC
31*af87fb4bSXin Li // OuterJavaClass: PUBLIC : PUBLIC
32*af87fb4bSXin Li // OuterJavaClass.staticPublicField: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
33*af87fb4bSXin Li // OuterJavaClass.staticPackageProtectedField: JAVA_STATIC : JAVA_STATIC
34*af87fb4bSXin Li // OuterJavaClass.staticProtectedField: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
35*af87fb4bSXin Li // OuterJavaClass.staticPrivateField: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
36*af87fb4bSXin Li // OuterJavaClass.InnerJavaClass: PUBLIC : PUBLIC
37*af87fb4bSXin Li // InnerJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
38*af87fb4bSXin Li // OuterJavaClass.NestedJavaClass: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
39*af87fb4bSXin Li // NestedJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
40*af87fb4bSXin Li // OuterJavaClass.staticPublicMethod: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
41*af87fb4bSXin Li // OuterJavaClass.staticPackageProtectedMethod: JAVA_STATIC : JAVA_STATIC
42*af87fb4bSXin Li // OuterJavaClass.staticProtectedMethod: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
43*af87fb4bSXin Li // OuterJavaClass.staticPrivateMethod: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
44*af87fb4bSXin Li // OuterJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
45*af87fb4bSXin Li // OuterKotlinClass: OPEN : PUBLIC
46*af87fb4bSXin Li // OuterKotlinClass.InnerKotlinClass: INNER : FINAL PUBLIC
47*af87fb4bSXin Li // InnerKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
48*af87fb4bSXin Li // OuterKotlinClass.NestedKotlinClass: OPEN : PUBLIC
49*af87fb4bSXin Li // NestedKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
50*af87fb4bSXin Li // OuterKotlinClass.Companion: : FINAL JAVA_STATIC PUBLIC
51*af87fb4bSXin Li // Companion.companionMethod: : FINAL PUBLIC
52*af87fb4bSXin Li // Companion.companionField: CONST : FINAL PUBLIC
53*af87fb4bSXin Li // Companion.privateCompanionMethod: PRIVATE : FINAL PRIVATE
54*af87fb4bSXin Li // Companion.privateCompanionField: PRIVATE : FINAL PRIVATE
55*af87fb4bSXin Li // Companion.jvmStaticCompanionMethod: : FINAL JAVA_STATIC PUBLIC
56*af87fb4bSXin Li // Companion.jvmStaticCompanionField: : FINAL JAVA_STATIC PUBLIC
57*af87fb4bSXin Li // Companion.customJvmStaticCompanionMethod: : FINAL PUBLIC
58*af87fb4bSXin Li // Companion.customJvmStaticCompanionField: : FINAL PUBLIC
59*af87fb4bSXin Li // Companion.<init>: FINAL PUBLIC : FINAL PUBLIC
60*af87fb4bSXin Li // OuterKotlinClass.transientProperty: : FINAL JAVA_TRANSIENT PUBLIC
61*af87fb4bSXin Li // OuterKotlinClass.volatileProperty: : FINAL JAVA_VOLATILE PUBLIC
62*af87fb4bSXin Li // OuterKotlinClass.strictfpFun: : FINAL JAVA_STRICT PUBLIC
63*af87fb4bSXin Li // OuterKotlinClass.synchronizedFun: : FINAL JAVA_SYNCHRONIZED PUBLIC
64*af87fb4bSXin Li // OuterKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
65*af87fb4bSXin Li // DependencyOuterJavaClass: OPEN PUBLIC : PUBLIC
66*af87fb4bSXin Li // DependencyOuterJavaClass.DependencyNestedJavaClass: OPEN PUBLIC : PUBLIC
67*af87fb4bSXin Li // DependencyNestedJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
68*af87fb4bSXin Li // DependencyOuterJavaClass.DependencyInnerJavaClass: INNER OPEN PUBLIC : PUBLIC
69*af87fb4bSXin Li // DependencyInnerJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
70*af87fb4bSXin Li // DependencyOuterJavaClass.synchronizedFun: JAVA_SYNCHRONIZED OPEN : JAVA_SYNCHRONIZED
71*af87fb4bSXin Li // DependencyOuterJavaClass.strictfpFun: JAVA_STRICT OPEN : JAVA_STRICT
72*af87fb4bSXin Li // DependencyOuterJavaClass.transientField: FINAL JAVA_TRANSIENT : FINAL JAVA_TRANSIENT
73*af87fb4bSXin Li // DependencyOuterJavaClass.volatileField: FINAL JAVA_VOLATILE : FINAL JAVA_VOLATILE
74*af87fb4bSXin Li // DependencyOuterJavaClass.staticPublicMethod: JAVA_STATIC PUBLIC : JAVA_STATIC PUBLIC
75*af87fb4bSXin Li // DependencyOuterJavaClass.staticPackageProtectedMethod: JAVA_STATIC : JAVA_STATIC
76*af87fb4bSXin Li // DependencyOuterJavaClass.staticProtectedMethod: JAVA_STATIC PROTECTED : JAVA_STATIC PROTECTED
77*af87fb4bSXin Li // DependencyOuterJavaClass.staticPrivateMethod: JAVA_STATIC PRIVATE : JAVA_STATIC PRIVATE
78*af87fb4bSXin Li // DependencyOuterJavaClass.staticPublicField: FINAL JAVA_STATIC PUBLIC : FINAL JAVA_STATIC PUBLIC
79*af87fb4bSXin Li // DependencyOuterJavaClass.staticPackageProtectedField: FINAL JAVA_STATIC : FINAL JAVA_STATIC
80*af87fb4bSXin Li // DependencyOuterJavaClass.staticProtectedField: FINAL JAVA_STATIC PROTECTED : FINAL JAVA_STATIC PROTECTED
81*af87fb4bSXin Li // DependencyOuterJavaClass.staticPrivateField: FINAL JAVA_STATIC PRIVATE : FINAL JAVA_STATIC PRIVATE
82*af87fb4bSXin Li // DependencyOuterJavaClass.<init>: FINAL PUBLIC : FINAL PUBLIC
83*af87fb4bSXin Li // DependencyOuterKotlinClass: OPEN PUBLIC : PUBLIC
84*af87fb4bSXin Li // DependencyOuterKotlinClass.transientProperty: FINAL PUBLIC : FINAL JAVA_TRANSIENT PUBLIC
85*af87fb4bSXin Li // DependencyOuterKotlinClass.volatileProperty: FINAL PUBLIC : FINAL JAVA_VOLATILE PUBLIC
86*af87fb4bSXin Li // DependencyOuterKotlinClass.strictfpFun: FINAL PUBLIC : FINAL JAVA_STRICT PUBLIC
87*af87fb4bSXin Li // DependencyOuterKotlinClass.synchronizedFun: FINAL PUBLIC : FINAL JAVA_SYNCHRONIZED PUBLIC
88*af87fb4bSXin Li // DependencyOuterKotlinClass.Companion: FINAL PUBLIC : FINAL PUBLIC
89*af87fb4bSXin Li // Companion.companionField: FINAL PUBLIC : FINAL PUBLIC
90*af87fb4bSXin Li // Companion.customJvmStaticCompanionField: FINAL PUBLIC : FINAL PUBLIC
91*af87fb4bSXin Li // Companion.jvmStaticCompanionField: FINAL PUBLIC : FINAL PUBLIC
92*af87fb4bSXin Li // Companion.privateCompanionField: FINAL PUBLIC : FINAL PUBLIC
93*af87fb4bSXin Li // Companion.companionMethod: FINAL PUBLIC : FINAL PUBLIC
94*af87fb4bSXin Li // Companion.customJvmStaticCompanionMethod: FINAL PUBLIC : FINAL PUBLIC
95*af87fb4bSXin Li // Companion.jvmStaticCompanionMethod: FINAL PUBLIC : FINAL PUBLIC
96*af87fb4bSXin Li // Companion.privateCompanionMethod: FINAL PRIVATE : FINAL PRIVATE
97*af87fb4bSXin Li // Companion.<init>: FINAL PRIVATE : FINAL PRIVATE
98*af87fb4bSXin Li // DependencyOuterKotlinClass.DependencyInnerKotlinClass: FINAL INNER PUBLIC : FINAL PUBLIC
99*af87fb4bSXin Li // DependencyInnerKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
100*af87fb4bSXin Li // DependencyOuterKotlinClass.DependencyNestedKotlinClass: OPEN PUBLIC : PUBLIC
101*af87fb4bSXin Li // DependencyNestedKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
102*af87fb4bSXin Li // DependencyOuterKotlinClass.<init>: FINAL PUBLIC : FINAL PUBLIC
103*af87fb4bSXin Li // END
104*af87fb4bSXin Li // MODULE: module1
105*af87fb4bSXin Li // FILE: DependencyOuterJavaClass.java
106*af87fb4bSXin Li public class DependencyOuterJavaClass {
107*af87fb4bSXin Li     public class DependencyInnerJavaClass {}
108*af87fb4bSXin Li     public static class DependencyNestedJavaClass {}
109*af87fb4bSXin Li     public static void staticPublicMethod() {}
110*af87fb4bSXin Li     public static String staticPublicField;
<lambda>null111*af87fb4bSXin Li     static void staticPackageProtectedMethod() {}
112*af87fb4bSXin Li     static String staticPackageProtectedField;
113*af87fb4bSXin Li     protected static void staticProtectedMethod() {}
114*af87fb4bSXin Li     protected static String staticProtectedField;
115*af87fb4bSXin Li     private static void staticPrivateMethod() {}
116*af87fb4bSXin Li     private static String staticPrivateField;
117*af87fb4bSXin Li     transient String transientField = "";
118*af87fb4bSXin Li     volatile String volatileField = "";
<lambda>null119*af87fb4bSXin Li     synchronized String synchronizedFun() { return ""; }
<lambda>null120*af87fb4bSXin Li     strictfp String strictfpFun() { return ""; }
121*af87fb4bSXin Li }
122*af87fb4bSXin Li // FILE: DependencyOuterKotlinClass.kt
123*af87fb4bSXin Li typealias DependencyCustomJvmStatic=JvmStatic
124*af87fb4bSXin Li open class DependencyOuterKotlinClass {
125*af87fb4bSXin Li     inner class DependencyInnerKotlinClass
126*af87fb4bSXin Li     open class DependencyNestedKotlinClass
127*af87fb4bSXin Li     companion object {
companionMethodnull128*af87fb4bSXin Li         fun companionMethod() {}
129*af87fb4bSXin Li         val companionField:String = ""
privateCompanionMethodnull130*af87fb4bSXin Li         private fun privateCompanionMethod() {}
131*af87fb4bSXin Li         val privateCompanionField:String = ""
132*af87fb4bSXin Li         @JvmStatic
jvmStaticCompanionMethodnull133*af87fb4bSXin Li         fun jvmStaticCompanionMethod() {}
134*af87fb4bSXin Li         @JvmStatic
135*af87fb4bSXin Li         val jvmStaticCompanionField:String = ""
136*af87fb4bSXin Li         @DependencyCustomJvmStatic
customJvmStaticCompanionMethodnull137*af87fb4bSXin Li         fun customJvmStaticCompanionMethod() {}
138*af87fb4bSXin Li         @DependencyCustomJvmStatic
139*af87fb4bSXin Li         val customJvmStaticCompanionField:String = ""
140*af87fb4bSXin Li     }
141*af87fb4bSXin Li 
142*af87fb4bSXin Li     @Transient
143*af87fb4bSXin Li     val transientProperty: String = ""
144*af87fb4bSXin Li 
145*af87fb4bSXin Li     @Volatile
146*af87fb4bSXin Li     var volatileProperty: String = ""
147*af87fb4bSXin Li 
148*af87fb4bSXin Li     @Strictfp
strictfpFunnull149*af87fb4bSXin Li     fun strictfpFun(): String = ""
150*af87fb4bSXin Li 
151*af87fb4bSXin Li     @Synchronized
152*af87fb4bSXin Li     fun synchronizedFun(): String = ""
153*af87fb4bSXin Li }
154*af87fb4bSXin Li // MODULE: main(module1)
155*af87fb4bSXin Li // FILE: a.kt
156*af87fb4bSXin Li annotation class Test
157*af87fb4bSXin Li 
158*af87fb4bSXin Li @Test
159*af87fb4bSXin Li class Foo : C() {
160*af87fb4bSXin Li 
161*af87fb4bSXin Li }
162*af87fb4bSXin Li 
163*af87fb4bSXin Li @Test
164*af87fb4bSXin Li class Bar : OuterJavaClass()
165*af87fb4bSXin Li 
166*af87fb4bSXin Li @Test
167*af87fb4bSXin Li class Baz : OuterKotlinClass()
168*af87fb4bSXin Li 
169*af87fb4bSXin Li @Test
170*af87fb4bSXin Li class JavaDependency : DependencyOuterJavaClass()
171*af87fb4bSXin Li 
172*af87fb4bSXin Li @Test
173*af87fb4bSXin Li class KotlinDependency : DependencyOuterKotlinClass()
174*af87fb4bSXin Li 
175*af87fb4bSXin Li // FILE: C.java
176*af87fb4bSXin Li 
177*af87fb4bSXin Li public abstract class C {
178*af87fb4bSXin Li 
179*af87fb4bSXin Li     private String staticStr = "str"
180*af87fb4bSXin Li 
181*af87fb4bSXin Li     final transient String s1;
182*af87fb4bSXin Li 
183*af87fb4bSXin Li     protected static volatile int i1;
184*af87fb4bSXin Li 
185*af87fb4bSXin Li     default synchronized int intFun() {
186*af87fb4bSXin Li         return 1;
187*af87fb4bSXin Li     }
188*af87fb4bSXin Li 
189*af87fb4bSXin Li     abstract strictfp void foo() {}
190*af87fb4bSXin Li 
191*af87fb4bSXin Li     public static class NestedC {
192*af87fb4bSXin Li 
193*af87fb4bSXin Li     }
194*af87fb4bSXin Li 
195*af87fb4bSXin Li     public class InnerC {
196*af87fb4bSXin Li 
197*af87fb4bSXin Li     }
198*af87fb4bSXin Li }
199*af87fb4bSXin Li 
200*af87fb4bSXin Li // FILE: OuterJavaClass.java
201*af87fb4bSXin Li public class OuterJavaClass {
202*af87fb4bSXin Li     public class InnerJavaClass {}
203*af87fb4bSXin Li     public static class NestedJavaClass {}
204*af87fb4bSXin Li     public static void staticPublicMethod() {}
205*af87fb4bSXin Li     public static String staticPublicField;
<lambda>null206*af87fb4bSXin Li     static void staticPackageProtectedMethod() {}
207*af87fb4bSXin Li     static String staticPackageProtectedField;
208*af87fb4bSXin Li     protected static void staticProtectedMethod() {}
209*af87fb4bSXin Li     protected static String staticProtectedField;
210*af87fb4bSXin Li     private static void staticPrivateMethod() {}
211*af87fb4bSXin Li     private static String staticPrivateField;
212*af87fb4bSXin Li }
213*af87fb4bSXin Li // FILE: OuterKotlinClass.kt
214*af87fb4bSXin Li typealias CustomJvmStatic=JvmStatic
215*af87fb4bSXin Li open class OuterKotlinClass {
216*af87fb4bSXin Li     inner class InnerKotlinClass
217*af87fb4bSXin Li     open class NestedKotlinClass
218*af87fb4bSXin Li     companion object {
companionMethodnull219*af87fb4bSXin Li         fun companionMethod() {}
220*af87fb4bSXin Li         const val companionField:String = ""
privateCompanionMethodnull221*af87fb4bSXin Li         private fun privateCompanionMethod() {}
222*af87fb4bSXin Li         private val privateCompanionField:String = ""
223*af87fb4bSXin Li         @JvmStatic
jvmStaticCompanionMethodnull224*af87fb4bSXin Li         fun jvmStaticCompanionMethod() {}
225*af87fb4bSXin Li         @JvmStatic
226*af87fb4bSXin Li         val jvmStaticCompanionField:String = ""
227*af87fb4bSXin Li         @CustomJvmStatic
customJvmStaticCompanionMethodnull228*af87fb4bSXin Li         fun customJvmStaticCompanionMethod() {}
229*af87fb4bSXin Li         @CustomJvmStatic
230*af87fb4bSXin Li         val customJvmStaticCompanionField:String = ""
231*af87fb4bSXin Li     }
232*af87fb4bSXin Li 
233*af87fb4bSXin Li     @Transient
234*af87fb4bSXin Li     val transientProperty: String = ""
235*af87fb4bSXin Li 
236*af87fb4bSXin Li     @Volatile
237*af87fb4bSXin Li     var volatileProperty: String = ""
238*af87fb4bSXin Li 
239*af87fb4bSXin Li     @Strictfp
strictfpFunnull240*af87fb4bSXin Li     fun strictfpFun(): String = ""
241*af87fb4bSXin Li 
242*af87fb4bSXin Li     @Synchronized
243*af87fb4bSXin Li     fun synchronizedFun(): String = ""
244*af87fb4bSXin Li }
245