xref: /aosp_15_r20/external/ksp/test-utils/testData/api/backingFields.kt (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1*af87fb4bSXin Li /*
2*af87fb4bSXin Li  * Copyright 2021 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 // WITH_RUNTIME
19*af87fb4bSXin Li // TEST PROCESSOR: BackingFieldProcessor
20*af87fb4bSXin Li // EXPECTED:
21*af87fb4bSXin Li // lib.BaseClass.abstractProp_willBeBacked: false
22*af87fb4bSXin Li // lib.BaseClass.abstractProp_wontBeBacked: false
23*af87fb4bSXin Li // lib.BaseClass.lateinit_var_1: true
24*af87fb4bSXin Li // lib.BaseClass.lateinit_var_2: true
25*af87fb4bSXin Li // lib.BaseClass.notOverriddenAbstractProp: true
26*af87fb4bSXin Li // lib.BaseClass.overriddenBaseProp_willBeBacked: true
27*af87fb4bSXin Li // lib.BaseClass.overriddenBaseProp_wontBeBacked: true
28*af87fb4bSXin Li // lib.ChildClass.abstractProp_willBeBacked: true
29*af87fb4bSXin Li // lib.ChildClass.abstractProp_wontBeBacked: false
30*af87fb4bSXin Li // lib.ChildClass.interfaceProp_willBeBacked: true
31*af87fb4bSXin Li // lib.ChildClass.interfaceProp_wontBeBacked: false
32*af87fb4bSXin Li // lib.ChildClass.lateinit_var_1: false
33*af87fb4bSXin Li // lib.ChildClass.lateinit_var_2: true
34*af87fb4bSXin Li // lib.ChildClass.lateinit_var_3: true
35*af87fb4bSXin Li // lib.ChildClass.overriddenBaseProp_willBeBacked: true
36*af87fb4bSXin Li // lib.ChildClass.overriddenBaseProp_wontBeBacked: false
37*af87fb4bSXin Li // lib.ConstructorSetProp.propSetInConstructor: true
38*af87fb4bSXin Li // lib.DataClass.value_Param: true
39*af87fb4bSXin Li // lib.DataClass.variable_Param: true
40*af87fb4bSXin Li // lib.JavaClass.javaField: true
41*af87fb4bSXin Li // lib.JavaClass.javaFieldWithAccessors: true
42*af87fb4bSXin Li // lib.MyInterface.interfaceProp_willBeBacked: false
43*af87fb4bSXin Li // lib.MyInterface.interfaceProp_wontBeBacked: false
44*af87fb4bSXin Li // lib.MyInterface.lateinit_var_3: false
45*af87fb4bSXin Li // lib.NormalClass.Companion.companionVar: true
46*af87fb4bSXin Li // lib.NormalClass.Companion.companion_noBackingVal: false
47*af87fb4bSXin Li // lib.NormalClass.Companion.companion_noBackingVar: false
48*af87fb4bSXin Li // lib.NormalClass.Companion.companion_withBackingAndGetter: true
49*af87fb4bSXin Li // lib.NormalClass.Companion.staticVar: true
50*af87fb4bSXin Li // lib.NormalClass.Companion.static_noBackingVal: false
51*af87fb4bSXin Li // lib.NormalClass.Companion.static_noBackingVar: false
52*af87fb4bSXin Li // lib.NormalClass.Companion.static_withBackingAndGetter: true
53*af87fb4bSXin Li // lib.NormalClass.jvmField_withBacking: true
54*af87fb4bSXin Li // lib.NormalClass.lateinit_var: true
55*af87fb4bSXin Li // lib.NormalClass.value: true
56*af87fb4bSXin Li // lib.NormalClass.value_Param: true
57*af87fb4bSXin Li // lib.NormalClass.value_noBacking: false
58*af87fb4bSXin Li // lib.NormalClass.value_withBacking: true
59*af87fb4bSXin Li // lib.NormalClass.variable: true
60*af87fb4bSXin Li // lib.NormalClass.variable_Param: true
61*af87fb4bSXin Li // lib.NormalClass.variable_noBacking: false
62*af87fb4bSXin Li // lib.NormalClass.variable_withBacking: true
63*af87fb4bSXin Li // lib.lateinit_var: true
64*af87fb4bSXin Li // lib.value: true
65*af87fb4bSXin Li // lib.value_noBacking: false
66*af87fb4bSXin Li // lib.value_withBacking: true
67*af87fb4bSXin Li // lib.variable: true
68*af87fb4bSXin Li // lib.variable_noBacking: false
69*af87fb4bSXin Li // lib.variable_withBacking: true
70*af87fb4bSXin Li // main.BaseClass.abstractProp_willBeBacked: false
71*af87fb4bSXin Li // main.BaseClass.abstractProp_wontBeBacked: false
72*af87fb4bSXin Li // main.BaseClass.lateinit_var_1: true
73*af87fb4bSXin Li // main.BaseClass.lateinit_var_2: true
74*af87fb4bSXin Li // main.BaseClass.notOverriddenAbstractProp: true
75*af87fb4bSXin Li // main.BaseClass.overriddenBaseProp_willBeBacked: true
76*af87fb4bSXin Li // main.BaseClass.overriddenBaseProp_wontBeBacked: true
77*af87fb4bSXin Li // main.ChildClass.abstractProp_willBeBacked: true
78*af87fb4bSXin Li // main.ChildClass.abstractProp_wontBeBacked: false
79*af87fb4bSXin Li // main.ChildClass.interfaceProp_willBeBacked: true
80*af87fb4bSXin Li // main.ChildClass.interfaceProp_wontBeBacked: false
81*af87fb4bSXin Li // main.ChildClass.lateinit_var_1: false
82*af87fb4bSXin Li // main.ChildClass.lateinit_var_2: true
83*af87fb4bSXin Li // main.ChildClass.lateinit_var_3: true
84*af87fb4bSXin Li // main.ChildClass.overriddenBaseProp_willBeBacked: true
85*af87fb4bSXin Li // main.ChildClass.overriddenBaseProp_wontBeBacked: false
86*af87fb4bSXin Li // main.ConstructorSetProp.propSetInConstructor: true
87*af87fb4bSXin Li // main.DataClass.value_Param: true
88*af87fb4bSXin Li // main.DataClass.variable_Param: true
89*af87fb4bSXin Li // main.JavaClass.javaField: true
90*af87fb4bSXin Li // main.JavaClass.javaFieldWithAccessors: true
91*af87fb4bSXin Li // main.MyInterface.interfaceProp_willBeBacked: false
92*af87fb4bSXin Li // main.MyInterface.interfaceProp_wontBeBacked: false
93*af87fb4bSXin Li // main.MyInterface.lateinit_var_3: false
94*af87fb4bSXin Li // main.NormalClass.Companion.companionVar: true
95*af87fb4bSXin Li // main.NormalClass.Companion.companion_noBackingVal: false
96*af87fb4bSXin Li // main.NormalClass.Companion.companion_noBackingVar: false
97*af87fb4bSXin Li // main.NormalClass.Companion.companion_withBackingAndGetter: true
98*af87fb4bSXin Li // main.NormalClass.Companion.staticVar: true
99*af87fb4bSXin Li // main.NormalClass.Companion.static_noBackingVal: false
100*af87fb4bSXin Li // main.NormalClass.Companion.static_noBackingVar: false
101*af87fb4bSXin Li // main.NormalClass.Companion.static_withBackingAndGetter: true
102*af87fb4bSXin Li // main.NormalClass.lateinit_var: true
103*af87fb4bSXin Li // main.NormalClass.value: true
104*af87fb4bSXin Li // main.NormalClass.value_Param: true
105*af87fb4bSXin Li // main.NormalClass.value_noBacking: false
106*af87fb4bSXin Li // main.NormalClass.value_withBacking: true
107*af87fb4bSXin Li // main.NormalClass.variable: true
108*af87fb4bSXin Li // main.NormalClass.variable_Param: true
109*af87fb4bSXin Li // main.NormalClass.variable_noBacking: false
110*af87fb4bSXin Li // main.NormalClass.variable_withBacking: true
111*af87fb4bSXin Li // main.lateinit_var: true
112*af87fb4bSXin Li // main.value: true
113*af87fb4bSXin Li // main.value_noBacking: false
114*af87fb4bSXin Li // main.value_withBacking: true
115*af87fb4bSXin Li // main.variable: true
116*af87fb4bSXin Li // main.variable_noBacking: false
117*af87fb4bSXin Li // main.variable_withBacking: true
118*af87fb4bSXin Li // END
119*af87fb4bSXin Li 
120*af87fb4bSXin Li // MODULE: lib
121*af87fb4bSXin Li // FILE: lib.kt
122*af87fb4bSXin Li package lib
123*af87fb4bSXin Li 
124*af87fb4bSXin Li val value: String = ""
125*af87fb4bSXin Li var variable: String = ""
126*af87fb4bSXin Li val value_noBacking: String
127*af87fb4bSXin Li     get() = "aa"
128*af87fb4bSXin Li var variable_noBacking: String
129*af87fb4bSXin Li     get() = "aa"
130*af87fb4bSXin Li     set(value) {}
131*af87fb4bSXin Li val value_withBacking: String = ""
132*af87fb4bSXin Li     get() = field
133*af87fb4bSXin Li var variable_withBacking: String? = null
134*af87fb4bSXin Li     get() = field
135*af87fb4bSXin Li lateinit var lateinit_var: String
136*af87fb4bSXin Li 
137*af87fb4bSXin Li data class DataClass(
138*af87fb4bSXin Li     val value_Param: String,
139*af87fb4bSXin Li     var variable_Param: String
140*af87fb4bSXin Li )
141*af87fb4bSXin Li 
142*af87fb4bSXin Li class NormalClass(
143*af87fb4bSXin Li     val value_Param: String,
144*af87fb4bSXin Li     var variable_Param: String,
145*af87fb4bSXin Li     normalParam: String
146*af87fb4bSXin Li ) {
147*af87fb4bSXin Li     val value: String = ""
148*af87fb4bSXin Li     var variable: String = ""
149*af87fb4bSXin Li     val value_noBacking: String
150*af87fb4bSXin Li         get() = "aa"
151*af87fb4bSXin Li     var variable_noBacking: String
152*af87fb4bSXin Li         get() = "aa"
153*af87fb4bSXin Li         set(value) {}
154*af87fb4bSXin Li     val value_withBacking: String = ""
155*af87fb4bSXin Li         get() = field
156*af87fb4bSXin Li     var variable_withBacking: String? = null
157*af87fb4bSXin Li         get() = field
158*af87fb4bSXin Li     val jvmField_withBacking: String = ""
159*af87fb4bSXin Li     lateinit var lateinit_var: String
160*af87fb4bSXin Li 
161*af87fb4bSXin Li     companion object {
162*af87fb4bSXin Li         @JvmStatic
163*af87fb4bSXin Li         var staticVar: String = ""
164*af87fb4bSXin Li         @JvmStatic
165*af87fb4bSXin Li         val static_withBackingAndGetter: String = ""
166*af87fb4bSXin Li             get() = field
167*af87fb4bSXin Li         @JvmStatic
168*af87fb4bSXin Li         val static_noBackingVal: String
169*af87fb4bSXin Li             get() = ""
170*af87fb4bSXin Li         @JvmStatic
171*af87fb4bSXin Li         var static_noBackingVar: String
172*af87fb4bSXin Li             get() = ""
173*af87fb4bSXin Li             set(value) {}
174*af87fb4bSXin Li         var companionVar: String = ""
175*af87fb4bSXin Li         val companion_withBackingAndGetter: String = ""
176*af87fb4bSXin Li             get() = field
177*af87fb4bSXin Li         @JvmStatic
178*af87fb4bSXin Li         val companion_noBackingVal: String
179*af87fb4bSXin Li             get() = ""
180*af87fb4bSXin Li         @JvmStatic
181*af87fb4bSXin Li         var companion_noBackingVar: String
182*af87fb4bSXin Li             get() = ""
183*af87fb4bSXin Li             set(value) {}
184*af87fb4bSXin Li     }
185*af87fb4bSXin Li }
186*af87fb4bSXin Li 
187*af87fb4bSXin Li abstract class BaseClass {
188*af87fb4bSXin Li     open val overriddenBaseProp_willBeBacked: String = ""
189*af87fb4bSXin Li     open val overriddenBaseProp_wontBeBacked: String = ""
190*af87fb4bSXin Li     open val notOverriddenAbstractProp: String = ""
191*af87fb4bSXin Li     abstract val abstractProp_willBeBacked: String
192*af87fb4bSXin Li     abstract val abstractProp_wontBeBacked: String
193*af87fb4bSXin Li     open lateinit var lateinit_var_1: String
194*af87fb4bSXin Li     open lateinit var lateinit_var_2: String
195*af87fb4bSXin Li }
196*af87fb4bSXin Li 
197*af87fb4bSXin Li interface MyInterface {
198*af87fb4bSXin Li     val interfaceProp_willBeBacked: String
199*af87fb4bSXin Li     val interfaceProp_wontBeBacked: String
200*af87fb4bSXin Li     var lateinit_var_3: String
201*af87fb4bSXin Li }
202*af87fb4bSXin Li 
203*af87fb4bSXin Li class ChildClass: BaseClass(), MyInterface {
204*af87fb4bSXin Li     override val overriddenBaseProp_willBeBacked: String = ""
205*af87fb4bSXin Li     override val overriddenBaseProp_wontBeBacked: String
206*af87fb4bSXin Li         get() = ""
207*af87fb4bSXin Li     override val abstractProp_willBeBacked: String = ""
208*af87fb4bSXin Li     override val abstractProp_wontBeBacked: String
209*af87fb4bSXin Li         get() = ""
210*af87fb4bSXin Li     override val interfaceProp_willBeBacked: String = ""
211*af87fb4bSXin Li     override val interfaceProp_wontBeBacked: String
212*af87fb4bSXin Li         get() = ""
213*af87fb4bSXin Li     override var lateinit_var_1: String
214*af87fb4bSXin Li         get() = ""
215*af87fb4bSXin Li         set(v: String) = Unit
216*af87fb4bSXin Li     override var lateinit_var_2: String = ""
217*af87fb4bSXin Li     override lateinit var lateinit_var_3: String
218*af87fb4bSXin Li }
219*af87fb4bSXin Li 
220*af87fb4bSXin Li class ConstructorSetProp {
221*af87fb4bSXin Li     private val propSetInConstructor: Boolean
222*af87fb4bSXin Li     constructor(propSetInConstructor: Boolean) {
223*af87fb4bSXin Li         this.propSetInConstructor = propSetInConstructor
224*af87fb4bSXin Li     }
225*af87fb4bSXin Li }
226*af87fb4bSXin Li 
227*af87fb4bSXin Li // FILE: lib/JavaClass.java
228*af87fb4bSXin Li package lib;
229*af87fb4bSXin Li public class JavaClass {
230*af87fb4bSXin Li     private String javaField;
231*af87fb4bSXin Li     private String javaFieldWithAccessors;
232*af87fb4bSXin Li 
233*af87fb4bSXin Li     public String getJavaFieldWithAccessors()
<lambda>null234*af87fb4bSXin Li     { return ""; }
235*af87fb4bSXin Li     public void setJavaFieldWithAccessors(String value )
<lambda>null236*af87fb4bSXin Li     {}
237*af87fb4bSXin Li 
238*af87fb4bSXin Li     public String getJavaAccessorWithoutField()
<lambda>null239*af87fb4bSXin Li     { return ""; }
240*af87fb4bSXin Li     public void setJavaAccessorWithoutField(String value )
<lambda>null241*af87fb4bSXin Li     {}
242*af87fb4bSXin Li }
243*af87fb4bSXin Li 
244*af87fb4bSXin Li // MODULE: main(lib)
245*af87fb4bSXin Li // FILE: main.kt
246*af87fb4bSXin Li package main
247*af87fb4bSXin Li val value: String = ""
248*af87fb4bSXin Li var variable: String = ""
249*af87fb4bSXin Li val value_noBacking: String
250*af87fb4bSXin Li     get() = "aa"
251*af87fb4bSXin Li var variable_noBacking: String
252*af87fb4bSXin Li     get() = "aa"
253*af87fb4bSXin Li     set(value) {}
254*af87fb4bSXin Li val value_withBacking: String = ""
255*af87fb4bSXin Li     get() = field
256*af87fb4bSXin Li var variable_withBacking: String? = null
257*af87fb4bSXin Li     get() = field
258*af87fb4bSXin Li lateinit var lateinit_var: String
259*af87fb4bSXin Li 
260*af87fb4bSXin Li data class DataClass(
261*af87fb4bSXin Li     val value_Param: String,
262*af87fb4bSXin Li     var variable_Param: String
263*af87fb4bSXin Li )
264*af87fb4bSXin Li 
265*af87fb4bSXin Li class NormalClass(
266*af87fb4bSXin Li     val value_Param: String,
267*af87fb4bSXin Li     var variable_Param: String,
268*af87fb4bSXin Li     normalParam: String
269*af87fb4bSXin Li ) {
270*af87fb4bSXin Li     val value: String = ""
271*af87fb4bSXin Li     var variable: String = ""
272*af87fb4bSXin Li     val value_noBacking: String
273*af87fb4bSXin Li         get() = "aa"
274*af87fb4bSXin Li     var variable_noBacking: String
275*af87fb4bSXin Li         get() = "aa"
276*af87fb4bSXin Li         set(value) {}
277*af87fb4bSXin Li     val value_withBacking: String = ""
278*af87fb4bSXin Li         get() = field
279*af87fb4bSXin Li     var variable_withBacking: String? = null
280*af87fb4bSXin Li         get() = field
281*af87fb4bSXin Li     lateinit var lateinit_var: String
282*af87fb4bSXin Li 
283*af87fb4bSXin Li     companion object {
284*af87fb4bSXin Li         @JvmStatic
285*af87fb4bSXin Li         var staticVar: String = ""
286*af87fb4bSXin Li         @JvmStatic
287*af87fb4bSXin Li         val static_withBackingAndGetter: String = ""
288*af87fb4bSXin Li             get() = field
289*af87fb4bSXin Li         @JvmStatic
290*af87fb4bSXin Li         val static_noBackingVal: String
291*af87fb4bSXin Li             get() = ""
292*af87fb4bSXin Li         @JvmStatic
293*af87fb4bSXin Li         var static_noBackingVar: String
294*af87fb4bSXin Li             get() = ""
295*af87fb4bSXin Li             set(value) {}
296*af87fb4bSXin Li         var companionVar: String = ""
297*af87fb4bSXin Li         val companion_withBackingAndGetter: String = ""
298*af87fb4bSXin Li             get() = field
299*af87fb4bSXin Li         @JvmStatic
300*af87fb4bSXin Li         val companion_noBackingVal: String
301*af87fb4bSXin Li             get() = ""
302*af87fb4bSXin Li         @JvmStatic
303*af87fb4bSXin Li         var companion_noBackingVar: String
304*af87fb4bSXin Li             get() = ""
305*af87fb4bSXin Li             set(value) {}
306*af87fb4bSXin Li     }
307*af87fb4bSXin Li }
308*af87fb4bSXin Li 
309*af87fb4bSXin Li abstract class BaseClass {
310*af87fb4bSXin Li     open val overriddenBaseProp_willBeBacked: String = ""
311*af87fb4bSXin Li     open val overriddenBaseProp_wontBeBacked: String = ""
312*af87fb4bSXin Li     open val notOverriddenAbstractProp: String = ""
313*af87fb4bSXin Li     abstract val abstractProp_willBeBacked: String
314*af87fb4bSXin Li     abstract val abstractProp_wontBeBacked: String
315*af87fb4bSXin Li     open lateinit var lateinit_var_1: String
316*af87fb4bSXin Li     open lateinit var lateinit_var_2: String
317*af87fb4bSXin Li }
318*af87fb4bSXin Li 
319*af87fb4bSXin Li interface MyInterface {
320*af87fb4bSXin Li     val interfaceProp_willBeBacked: String
321*af87fb4bSXin Li     val interfaceProp_wontBeBacked: String
322*af87fb4bSXin Li     var lateinit_var_3: String
323*af87fb4bSXin Li }
324*af87fb4bSXin Li 
325*af87fb4bSXin Li class ChildClass: BaseClass(), MyInterface {
326*af87fb4bSXin Li     override val overriddenBaseProp_willBeBacked: String = ""
327*af87fb4bSXin Li     override val overriddenBaseProp_wontBeBacked: String
328*af87fb4bSXin Li         get() = ""
329*af87fb4bSXin Li     override val abstractProp_willBeBacked: String = ""
330*af87fb4bSXin Li     override val abstractProp_wontBeBacked: String
331*af87fb4bSXin Li         get() = ""
332*af87fb4bSXin Li     override val interfaceProp_willBeBacked: String = ""
333*af87fb4bSXin Li     override val interfaceProp_wontBeBacked: String
334*af87fb4bSXin Li         get() = ""
335*af87fb4bSXin Li     override var lateinit_var_1: String
336*af87fb4bSXin Li         get() = ""
337*af87fb4bSXin Li         set(v: String) = Unit
338*af87fb4bSXin Li     override var lateinit_var_2: String = ""
339*af87fb4bSXin Li     override lateinit var lateinit_var_3: String
340*af87fb4bSXin Li }
341*af87fb4bSXin Li 
342*af87fb4bSXin Li class ConstructorSetProp {
343*af87fb4bSXin Li     private val propSetInConstructor: Boolean
344*af87fb4bSXin Li     constructor(propSetInConstructor: Boolean) {
345*af87fb4bSXin Li         this.propSetInConstructor = propSetInConstructor
346*af87fb4bSXin Li     }
347*af87fb4bSXin Li }
348*af87fb4bSXin Li 
349*af87fb4bSXin Li // FILE: main/JavaClass.java
350*af87fb4bSXin Li package main;
351*af87fb4bSXin Li public class JavaClass {
352*af87fb4bSXin Li     private String javaField;
353*af87fb4bSXin Li     private String javaFieldWithAccessors;
354*af87fb4bSXin Li 
355*af87fb4bSXin Li     public String getJavaFieldWithAccessors()
<lambda>null356*af87fb4bSXin Li     { return ""; }
357*af87fb4bSXin Li     public void setJavaFieldWithAccessors(String value )
<lambda>null358*af87fb4bSXin Li     {}
359*af87fb4bSXin Li 
360*af87fb4bSXin Li     public String getJavaAccessorWithoutField()
<lambda>null361*af87fb4bSXin Li     { return ""; }
362*af87fb4bSXin Li     public void setJavaAccessorWithoutField(String value )
<lambda>null363*af87fb4bSXin Li     {}
364*af87fb4bSXin Li }
365