xref: /aosp_15_r20/external/ksp/test-utils/testData/api/parent.kt (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1*af87fb4bSXin Li /*
2*af87fb4bSXin Li  * Copyright 2022 Google LLC
3*af87fb4bSXin Li  * Copyright 2010-2022 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: ParentProcessor
19*af87fb4bSXin Li // EXPECTED:
20*af87fb4bSXin Li // parent of File: a.kt: null
21*af87fb4bSXin Li // parent of Any: Anno
22*af87fb4bSXin Li // parent of Anno: File: a.kt
23*af87fb4bSXin Li // parent of Anno: synthetic constructor for Anno
24*af87fb4bSXin Li // parent of synthetic constructor for Anno: Anno
25*af87fb4bSXin Li // parent of Int: Int
26*af87fb4bSXin Li // parent of Int: INVARIANT Int
27*af87fb4bSXin Li // parent of INVARIANT Int: Map
28*af87fb4bSXin Li // parent of T: T
29*af87fb4bSXin Li // parent of T: INVARIANT T
30*af87fb4bSXin Li // parent of INVARIANT T: Map
31*af87fb4bSXin Li // parent of Map: Map
32*af87fb4bSXin Li // parent of Map: Alias
33*af87fb4bSXin Li // parent of Any?: T
34*af87fb4bSXin Li // parent of T: Alias
35*af87fb4bSXin Li // parent of Alias: File: a.kt
36*af87fb4bSXin Li // parent of Int: Int
37*af87fb4bSXin Li // parent of Int: INVARIANT Int
38*af87fb4bSXin Li // parent of INVARIANT Int: List
39*af87fb4bSXin Li // parent of List: List
40*af87fb4bSXin Li // parent of List: topProp
41*af87fb4bSXin Li // parent of Int: Int
42*af87fb4bSXin Li // parent of Int: INVARIANT Int
43*af87fb4bSXin Li // parent of INVARIANT Int: List<Int>
44*af87fb4bSXin Li // parent of List<Int>: List<Int>
45*af87fb4bSXin Li // parent of List<Int>: topProp.getter()
46*af87fb4bSXin Li // parent of topProp.getter(): topProp
47*af87fb4bSXin Li // parent of Anno: Anno
48*af87fb4bSXin Li // parent of Anno: @Anno
49*af87fb4bSXin Li // parent of @Anno: topProp
50*af87fb4bSXin Li // parent of topProp: File: a.kt
51*af87fb4bSXin Li // parent of T: T
52*af87fb4bSXin Li // parent of T: topFun
53*af87fb4bSXin Li // parent of Any?: T
54*af87fb4bSXin Li // parent of T: topFun
55*af87fb4bSXin Li // parent of Anno: Anno
56*af87fb4bSXin Li // parent of Anno: @Anno
57*af87fb4bSXin Li // parent of @Anno: topFun
58*af87fb4bSXin Li // parent of topFun: File: a.kt
59*af87fb4bSXin Li // parent of Any: ITF
60*af87fb4bSXin Li // parent of ITF: File: a.kt
61*af87fb4bSXin Li // parent of ITF: ITF
62*af87fb4bSXin Li // parent of ITF: topClass
63*af87fb4bSXin Li // parent of Anno: Anno
64*af87fb4bSXin Li // parent of Anno: @Anno
65*af87fb4bSXin Li // parent of @Anno: topClass
66*af87fb4bSXin Li // parent of topClass: File: a.kt
67*af87fb4bSXin Li // parent of Int: Int
68*af87fb4bSXin Li // parent of Int: i
69*af87fb4bSXin Li // parent of i: memberFun
70*af87fb4bSXin Li // parent of Int: memberFun
71*af87fb4bSXin Li // parent of memberFun: topClass
72*af87fb4bSXin Li // parent of Any: InnerClass
73*af87fb4bSXin Li // parent of Any?: P
74*af87fb4bSXin Li // parent of P: InnerClass
75*af87fb4bSXin Li // parent of InnerClass: topClass
76*af87fb4bSXin Li // parent of P: P
77*af87fb4bSXin Li // parent of P: p
78*af87fb4bSXin Li // parent of p: innerFun
79*af87fb4bSXin Li // parent of Int: innerFun
80*af87fb4bSXin Li // parent of innerFun: InnerClass
81*af87fb4bSXin Li // parent of InnerClass<*>: synthetic constructor for InnerClass
82*af87fb4bSXin Li // parent of synthetic constructor for InnerClass: InnerClass
83*af87fb4bSXin Li // parent of Int: Int
84*af87fb4bSXin Li // parent of Int: a
85*af87fb4bSXin Li // parent of Int: Int
86*af87fb4bSXin Li // parent of Int: a.getter()
87*af87fb4bSXin Li // parent of a.getter(): a
88*af87fb4bSXin Li // parent of a: topClass
89*af87fb4bSXin Li // parent of String: String
90*af87fb4bSXin Li // parent of String: b
91*af87fb4bSXin Li // parent of b.getter(): b
92*af87fb4bSXin Li // parent of String: String
93*af87fb4bSXin Li // parent of String: <set-?>
94*af87fb4bSXin Li // parent of <set-?>: b.setter()
95*af87fb4bSXin Li // parent of b.setter(): b
96*af87fb4bSXin Li // parent of b: topClass
97*af87fb4bSXin Li // parent of topClass: synthetic constructor for topClass
98*af87fb4bSXin Li // parent of synthetic constructor for topClass: topClass
99*af87fb4bSXin Li // parent of Any: CMYK
100*af87fb4bSXin Li // parent of CMYK: File: a.kt
101*af87fb4bSXin Li // parent of Any: C
102*af87fb4bSXin Li // parent of C: CMYK
103*af87fb4bSXin Li // parent of C: synthetic constructor for C
104*af87fb4bSXin Li // parent of synthetic constructor for C: C
105*af87fb4bSXin Li // parent of Any: M
106*af87fb4bSXin Li // parent of M: CMYK
107*af87fb4bSXin Li // parent of M: synthetic constructor for M
108*af87fb4bSXin Li // parent of synthetic constructor for M: M
109*af87fb4bSXin Li // parent of Any: Y
110*af87fb4bSXin Li // parent of Y: CMYK
111*af87fb4bSXin Li // parent of Y: synthetic constructor for Y
112*af87fb4bSXin Li // parent of synthetic constructor for Y: Y
113*af87fb4bSXin Li // parent of Any: K
114*af87fb4bSXin Li // parent of K: CMYK
115*af87fb4bSXin Li // parent of K: synthetic constructor for K
116*af87fb4bSXin Li // parent of synthetic constructor for K: K
117*af87fb4bSXin Li // parent of CMYK: synthetic constructor for CMYK
118*af87fb4bSXin Li // parent of synthetic constructor for CMYK: CMYK
119*af87fb4bSXin Li // parent of File: Bnno.kt: null
120*af87fb4bSXin Li // parent of Any: Bnno
121*af87fb4bSXin Li // parent of Bnno: File: Bnno.kt
122*af87fb4bSXin Li // parent of Bnno: synthetic constructor for Bnno
123*af87fb4bSXin Li // parent of synthetic constructor for Bnno: Bnno
124*af87fb4bSXin Li // parent of File: B.java: null
125*af87fb4bSXin Li // parent of ITF: ITF
126*af87fb4bSXin Li // parent of ITF: B
127*af87fb4bSXin Li // parent of T: B
128*af87fb4bSXin Li // parent of Anno: Anno
129*af87fb4bSXin Li // parent of Anno: @Anno
130*af87fb4bSXin Li // parent of @Anno: B
131*af87fb4bSXin Li // parent of p: Bnno
132*af87fb4bSXin Li // parent of p.Bnno: Bnno
133*af87fb4bSXin Li // parent of Bnno: @Bnno
134*af87fb4bSXin Li // parent of @Bnno: B
135*af87fb4bSXin Li // parent of B: File: B.java
136*af87fb4bSXin Li // parent of T: T
137*af87fb4bSXin Li // parent of T: t
138*af87fb4bSXin Li // parent of t: B
139*af87fb4bSXin Li // parent of T: T
140*af87fb4bSXin Li // parent of T: t
141*af87fb4bSXin Li // parent of t: foo
142*af87fb4bSXin Li // parent of Int: Int
143*af87fb4bSXin Li // parent of Int: i
144*af87fb4bSXin Li // parent of i: foo
145*af87fb4bSXin Li // parent of Int: Int
146*af87fb4bSXin Li // parent of Int: foo
147*af87fb4bSXin Li // parent of foo: B
148*af87fb4bSXin Li // parent of B<*>: synthetic constructor for B
149*af87fb4bSXin Li // parent of synthetic constructor for B: B
150*af87fb4bSXin Li // parent of RGB: RGB
151*af87fb4bSXin Li // parent of RGB: INVARIANT RGB
152*af87fb4bSXin Li // parent of INVARIANT RGB: Enum<RGB>
153*af87fb4bSXin Li // parent of Enum<RGB>: Enum<RGB>
154*af87fb4bSXin Li // parent of Enum<RGB>: RGB
155*af87fb4bSXin Li // parent of RGB: File: B.java
156*af87fb4bSXin Li // parent of R: RGB
157*af87fb4bSXin Li // parent of G: RGB
158*af87fb4bSXin Li // parent of B: RGB
159*af87fb4bSXin Li // parent of RGB: RGB
160*af87fb4bSXin Li // parent of RGB: INVARIANT RGB
161*af87fb4bSXin Li // parent of INVARIANT RGB: Array<(RGB..RGB?)>
162*af87fb4bSXin Li // parent of Array<(RGB..RGB?)>: Array<(RGB..RGB?)>
163*af87fb4bSXin Li // parent of Array<(RGB..RGB?)>: values
164*af87fb4bSXin Li // parent of values: RGB
165*af87fb4bSXin Li // parent of java: String
166*af87fb4bSXin Li // parent of lang: String
167*af87fb4bSXin Li // parent of String: String
168*af87fb4bSXin Li // parent of String: name
169*af87fb4bSXin Li // parent of name: valueOf
170*af87fb4bSXin Li // parent of RGB: RGB
171*af87fb4bSXin Li // parent of RGB: valueOf
172*af87fb4bSXin Li // parent of valueOf: RGB
173*af87fb4bSXin Li // parent of RGB: synthetic constructor for RGB
174*af87fb4bSXin Li // parent of synthetic constructor for RGB: RGB
175*af87fb4bSXin Li // parent of YUV: YUV
176*af87fb4bSXin Li // parent of YUV: INVARIANT YUV
177*af87fb4bSXin Li // parent of INVARIANT YUV: Enum<YUV>
178*af87fb4bSXin Li // parent of Enum<YUV>: Enum<YUV>
179*af87fb4bSXin Li // parent of Enum<YUV>: YUV
180*af87fb4bSXin Li // parent of YUV: null
181*af87fb4bSXin Li // parent of YUV: YUV
182*af87fb4bSXin Li // parent of YUV: Y
183*af87fb4bSXin Li // parent of Y: YUV
184*af87fb4bSXin Li // parent of YUV: YUV
185*af87fb4bSXin Li // parent of YUV: U
186*af87fb4bSXin Li // parent of U: YUV
187*af87fb4bSXin Li // parent of YUV: YUV
188*af87fb4bSXin Li // parent of YUV: V
189*af87fb4bSXin Li // parent of V: YUV
190*af87fb4bSXin Li // parent of String: String
191*af87fb4bSXin Li // parent of String: value
192*af87fb4bSXin Li // parent of value: valueOf
193*af87fb4bSXin Li // parent of YUV: YUV
194*af87fb4bSXin Li // parent of YUV: valueOf
195*af87fb4bSXin Li // parent of valueOf: YUV
196*af87fb4bSXin Li // parent of YUV: YUV
197*af87fb4bSXin Li // parent of YUV: INVARIANT YUV
198*af87fb4bSXin Li // parent of INVARIANT YUV: Array<YUV>
199*af87fb4bSXin Li // parent of Array<YUV>: Array<YUV>
200*af87fb4bSXin Li // parent of Array<YUV>: values
201*af87fb4bSXin Li // parent of values: YUV
202*af87fb4bSXin Li // parent of YUV: YUV
203*af87fb4bSXin Li // parent of YUV: <init>
204*af87fb4bSXin Li // parent of <init>: YUV
205*af87fb4bSXin Li // parent of HSV: HSV
206*af87fb4bSXin Li // parent of HSV: INVARIANT HSV
207*af87fb4bSXin Li // parent of INVARIANT HSV: Enum<(HSV..HSV?)>
208*af87fb4bSXin Li // parent of Enum<(HSV..HSV?)>: Enum<(HSV..HSV?)>
209*af87fb4bSXin Li // parent of Enum<(HSV..HSV?)>: HSV
210*af87fb4bSXin Li // parent of HSV: null
211*af87fb4bSXin Li // parent of HSV: HSV
212*af87fb4bSXin Li // parent of HSV: H
213*af87fb4bSXin Li // parent of H: HSV
214*af87fb4bSXin Li // parent of HSV: HSV
215*af87fb4bSXin Li // parent of HSV: S
216*af87fb4bSXin Li // parent of S: HSV
217*af87fb4bSXin Li // parent of HSV: HSV
218*af87fb4bSXin Li // parent of HSV: V
219*af87fb4bSXin Li // parent of V: HSV
220*af87fb4bSXin Li // parent of String: String
221*af87fb4bSXin Li // parent of String: value
222*af87fb4bSXin Li // parent of value: valueOf
223*af87fb4bSXin Li // parent of HSV: HSV
224*af87fb4bSXin Li // parent of HSV: valueOf
225*af87fb4bSXin Li // parent of valueOf: HSV
226*af87fb4bSXin Li // parent of HSV: HSV
227*af87fb4bSXin Li // parent of HSV: INVARIANT HSV
228*af87fb4bSXin Li // parent of INVARIANT HSV: Array<HSV>
229*af87fb4bSXin Li // parent of Array<HSV>: Array<HSV>
230*af87fb4bSXin Li // parent of Array<HSV>: values
231*af87fb4bSXin Li // parent of values: HSV
232*af87fb4bSXin Li // parent of HSV: HSV
233*af87fb4bSXin Li // parent of HSV: <init>
234*af87fb4bSXin Li // parent of <init>: HSV
235*af87fb4bSXin Li // END
236*af87fb4bSXin Li 
237*af87fb4bSXin Li // MODULE: lib
238*af87fb4bSXin Li // FILE: YUV.kt
239*af87fb4bSXin Li enum class YUV {
240*af87fb4bSXin Li     Y, U, V
241*af87fb4bSXin Li }
242*af87fb4bSXin Li 
243*af87fb4bSXin Li // FILE: HSV.java
244*af87fb4bSXin Li enum HSV {
245*af87fb4bSXin Li     H, S, V
246*af87fb4bSXin Li }
247*af87fb4bSXin Li 
248*af87fb4bSXin Li // MODULE: main(lib)
249*af87fb4bSXin Li 
250*af87fb4bSXin Li // FILE: a.kt
251*af87fb4bSXin Li annotation class Anno
252*af87fb4bSXin Li 
253*af87fb4bSXin Li typealias Alias<T> = Map<Int, T>
254*af87fb4bSXin Li 
255*af87fb4bSXin Li @Anno
256*af87fb4bSXin Li val topProp : List<Int>? = null
257*af87fb4bSXin Li 
258*af87fb4bSXin Li @Anno
topFunnull259*af87fb4bSXin Li fun <T> topFun() : T? {
260*af87fb4bSXin Li     return null
261*af87fb4bSXin Li }
262*af87fb4bSXin Li 
263*af87fb4bSXin Li interface ITF
264*af87fb4bSXin Li 
265*af87fb4bSXin Li @Anno
266*af87fb4bSXin Li class topClass: ITF {
memberFunnull267*af87fb4bSXin Li     fun memberFun(i: Int) = 1
268*af87fb4bSXin Li     class InnerClass<P> {
269*af87fb4bSXin Li         fun innerFun(p: P) = 1
270*af87fb4bSXin Li     }
271*af87fb4bSXin Li 
272*af87fb4bSXin Li     val a: Int = 1
273*af87fb4bSXin Li     var b: String
274*af87fb4bSXin Li     get() = "1"
275*af87fb4bSXin Li }
276*af87fb4bSXin Li 
277*af87fb4bSXin Li enum class CMYK {
278*af87fb4bSXin Li     C, M, Y, K
279*af87fb4bSXin Li }
280*af87fb4bSXin Li 
281*af87fb4bSXin Li // FILE: Bnno.kt
282*af87fb4bSXin Li package p
283*af87fb4bSXin Li 
284*af87fb4bSXin Li annotation class Bnno
285*af87fb4bSXin Li 
286*af87fb4bSXin Li // FILE: B.java
287*af87fb4bSXin Li @Anno
288*af87fb4bSXin Li @p.Bnno
289*af87fb4bSXin Li public class B<T> implements ITF {
290*af87fb4bSXin Li     private T t;
291*af87fb4bSXin Li     public int foo(T t, int i) {
292*af87fb4bSXin Li         return 1;
293*af87fb4bSXin Li     }
294*af87fb4bSXin Li }
295*af87fb4bSXin Li 
296*af87fb4bSXin Li enum RGB {
297*af87fb4bSXin Li     R, G, B
298*af87fb4bSXin Li }
299