xref: /aosp_15_r20/external/ksp/test-utils/testData/api/constructorDeclarations.kt (revision af87fb4bb8e3042070d2a054e912924f599b22b7)
1 /*
2  * Copyright 2020 Google LLC
3  * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 // WITH_RUNTIME
19 // TEST PROCESSOR: ConstructorDeclarationsProcessor
20 // EXPECTED:
21 // class: AbstractJavaClassWithExplicitConstructor
22 // <init>(kotlin.Int): AbstractJavaClassWithExplicitConstructor
23 // class: lib.AbstractJavaClassWithExplicitConstructor
24 // <init>(kotlin.Int): lib.AbstractJavaClassWithExplicitConstructor
25 // class: AbstractJavaClassWithExplicitEmptyConstructor
26 // <init>(): AbstractJavaClassWithExplicitEmptyConstructor
27 // class: lib.AbstractJavaClassWithExplicitEmptyConstructor
28 // <init>(): lib.AbstractJavaClassWithExplicitEmptyConstructor
29 // class: AbstractJavaClassWithMultipleConstructors1
30 // <init>(): AbstractJavaClassWithMultipleConstructors1
31 // <init>(kotlin.Int): AbstractJavaClassWithMultipleConstructors1
32 // <init>(kotlin.String): AbstractJavaClassWithMultipleConstructors1
33 // class: lib.AbstractJavaClassWithMultipleConstructors1
34 // <init>(): lib.AbstractJavaClassWithMultipleConstructors1
35 // <init>(kotlin.Int): lib.AbstractJavaClassWithMultipleConstructors1
36 // <init>(kotlin.String): lib.AbstractJavaClassWithMultipleConstructors1
37 // class: AbstractJavaClassWithoutExplicitConstructor
38 // <init>(): AbstractJavaClassWithoutExplicitConstructor
39 // class: lib.AbstractJavaClassWithoutExplicitConstructor
40 // <init>(): lib.AbstractJavaClassWithoutExplicitConstructor
41 // class: AbstractKotlinClassWithExplicitConstructor
42 // <init>(kotlin.Int): AbstractKotlinClassWithExplicitConstructor
43 // class: lib.AbstractKotlinClassWithExplicitConstructor
44 // <init>(kotlin.Int): lib.AbstractKotlinClassWithExplicitConstructor
45 // class: AbstractKotlinClassWithExplicitEmptyConstructor
46 // <init>(): AbstractKotlinClassWithExplicitEmptyConstructor
47 // class: lib.AbstractKotlinClassWithExplicitEmptyConstructor
48 // <init>(): lib.AbstractKotlinClassWithExplicitEmptyConstructor
49 // class: AbstractKotlinClassWithMultipleConstructors1
50 // <init>(): AbstractKotlinClassWithMultipleConstructors1
51 // <init>(kotlin.Int): AbstractKotlinClassWithMultipleConstructors1
52 // <init>(kotlin.String): AbstractKotlinClassWithMultipleConstructors1
53 // class: lib.AbstractKotlinClassWithMultipleConstructors1
54 // <init>(): lib.AbstractKotlinClassWithMultipleConstructors1
55 // <init>(kotlin.Int): lib.AbstractKotlinClassWithMultipleConstructors1
56 // <init>(kotlin.String): lib.AbstractKotlinClassWithMultipleConstructors1
57 // class: AbstractKotlinClassWithMultipleConstructors2
58 // <init>(kotlin.Float): AbstractKotlinClassWithMultipleConstructors2
59 // <init>(kotlin.Int): AbstractKotlinClassWithMultipleConstructors2
60 // <init>(kotlin.String): AbstractKotlinClassWithMultipleConstructors2
61 // class: lib.AbstractKotlinClassWithMultipleConstructors2
62 // <init>(kotlin.Float): lib.AbstractKotlinClassWithMultipleConstructors2
63 // <init>(kotlin.Int): lib.AbstractKotlinClassWithMultipleConstructors2
64 // <init>(kotlin.String): lib.AbstractKotlinClassWithMultipleConstructors2
65 // class: AbstractKotlinClassWithPrimaryConstructor
66 // <init>(kotlin.Int): AbstractKotlinClassWithPrimaryConstructor
67 // class: lib.AbstractKotlinClassWithPrimaryConstructor
68 // <init>(kotlin.Int): lib.AbstractKotlinClassWithPrimaryConstructor
69 // class: AbstractKotlinClassWithoutExplicitConstructor
70 // <init>(): AbstractKotlinClassWithoutExplicitConstructor
71 // class: lib.AbstractKotlinClassWithoutExplicitConstructor
72 // <init>(): lib.AbstractKotlinClassWithoutExplicitConstructor
73 // class: DataClass
74 // <init>(kotlin.Int,kotlin.String): DataClass
75 // class: lib.DataClass
76 // <init>(kotlin.Int,kotlin.String): lib.DataClass
77 // class: DataClassWithSecondaryConstructor
78 // <init>(kotlin.Int): DataClassWithSecondaryConstructor
79 // <init>(kotlin.Int,kotlin.String): DataClassWithSecondaryConstructor
80 // class: lib.DataClassWithSecondaryConstructor
81 // <init>(kotlin.Int): lib.DataClassWithSecondaryConstructor
82 // <init>(kotlin.Int,kotlin.String): lib.DataClassWithSecondaryConstructor
83 // class: JavaAnnotation
84 // <init>(): JavaAnnotation
85 // class: lib.JavaAnnotation
86 // <init>(): lib.JavaAnnotation
87 // class: JavaClassWithExplicitConstructor
88 // <init>(kotlin.Int): JavaClassWithExplicitConstructor
89 // class: lib.JavaClassWithExplicitConstructor
90 // <init>(kotlin.Int): lib.JavaClassWithExplicitConstructor
91 // class: JavaClassWithExplicitEmptyConstructor
92 // <init>(): JavaClassWithExplicitEmptyConstructor
93 // class: lib.JavaClassWithExplicitEmptyConstructor
94 // <init>(): lib.JavaClassWithExplicitEmptyConstructor
95 // class: JavaClassWithMultipleConstructors1
96 // <init>(): JavaClassWithMultipleConstructors1
97 // <init>(kotlin.Int): JavaClassWithMultipleConstructors1
98 // <init>(kotlin.String): JavaClassWithMultipleConstructors1
99 // class: lib.JavaClassWithMultipleConstructors1
100 // <init>(): lib.JavaClassWithMultipleConstructors1
101 // <init>(kotlin.Int): lib.JavaClassWithMultipleConstructors1
102 // <init>(kotlin.String): lib.JavaClassWithMultipleConstructors1
103 // class: JavaClassWithoutExplicitConstructor
104 // <init>(): JavaClassWithoutExplicitConstructor
105 // class: lib.JavaClassWithoutExplicitConstructor
106 // <init>(): lib.JavaClassWithoutExplicitConstructor
107 // class: JavaInterface
108 // class: lib.JavaInterface
109 // class: KotlinAnnotation
110 // <init>(): KotlinAnnotation
111 // class: lib.KotlinAnnotation
112 // <init>(): lib.KotlinAnnotation
113 // class: KotlinClassWithCompanion
114 // <init>(): KotlinClassWithCompanion
115 // class: lib.KotlinClassWithCompanion
116 // <init>(): lib.KotlinClassWithCompanion
117 // class: KotlinClassWithExplicitConstructor
118 // <init>(kotlin.Int): KotlinClassWithExplicitConstructor
119 // class: lib.KotlinClassWithExplicitConstructor
120 // <init>(kotlin.Int): lib.KotlinClassWithExplicitConstructor
121 // class: KotlinClassWithExplicitEmptyConstructor
122 // <init>(): KotlinClassWithExplicitEmptyConstructor
123 // class: lib.KotlinClassWithExplicitEmptyConstructor
124 // <init>(): lib.KotlinClassWithExplicitEmptyConstructor
125 // class: KotlinClassWithMultipleConstructors1
126 // <init>(): KotlinClassWithMultipleConstructors1
127 // <init>(kotlin.Int): KotlinClassWithMultipleConstructors1
128 // <init>(kotlin.String): KotlinClassWithMultipleConstructors1
129 // class: lib.KotlinClassWithMultipleConstructors1
130 // <init>(): lib.KotlinClassWithMultipleConstructors1
131 // <init>(kotlin.Int): lib.KotlinClassWithMultipleConstructors1
132 // <init>(kotlin.String): lib.KotlinClassWithMultipleConstructors1
133 // class: KotlinClassWithMultipleConstructors2
134 // <init>(kotlin.Float): KotlinClassWithMultipleConstructors2
135 // <init>(kotlin.Int): KotlinClassWithMultipleConstructors2
136 // <init>(kotlin.String): KotlinClassWithMultipleConstructors2
137 // class: lib.KotlinClassWithMultipleConstructors2
138 // <init>(kotlin.Float): lib.KotlinClassWithMultipleConstructors2
139 // <init>(kotlin.Int): lib.KotlinClassWithMultipleConstructors2
140 // <init>(kotlin.String): lib.KotlinClassWithMultipleConstructors2
141 // class: KotlinClassWithNamedCompanion
142 // <init>(): KotlinClassWithNamedCompanion
143 // class: lib.KotlinClassWithNamedCompanion
144 // <init>(): lib.KotlinClassWithNamedCompanion
145 // class: KotlinClassWithPrimaryConstructor
146 // <init>(kotlin.Int): KotlinClassWithPrimaryConstructor
147 // class: lib.KotlinClassWithPrimaryConstructor
148 // <init>(kotlin.Int): lib.KotlinClassWithPrimaryConstructor
149 // class: KotlinClassWithoutExplicitConstructor
150 // <init>(): KotlinClassWithoutExplicitConstructor
151 // class: lib.KotlinClassWithoutExplicitConstructor
152 // <init>(): lib.KotlinClassWithoutExplicitConstructor
153 // class: KotlinInterface
154 // class: lib.KotlinInterface
155 // class: KotlinObject
156 // <init>(): KotlinObject
157 // class: lib.KotlinObject
158 // <init>(): lib.KotlinObject
159 // END
160 
161 // MODULE: lib
162 // FILE: lib/JavaInterface.java
163 package lib;
164 interface JavaInterface {
165 }
166 // FILE: lib/AbstractJavaClassWithoutExplicitConstructor.java
167 package lib;
168 abstract class AbstractJavaClassWithoutExplicitConstructor {
169 }
170 // FILE: lib/AbstractJavaClassWithExplicitEmptyConstructor.java
171 package lib;
172 abstract class AbstractJavaClassWithExplicitEmptyConstructor {
173     AbstractJavaClassWithExplicitEmptyConstructor() {}
174 }
175 // FILE: lib/AbstractJavaClassWithExplicitConstructor.java
176 package lib;
177 abstract class AbstractJavaClassWithExplicitConstructor {
178     AbstractJavaClassWithExplicitConstructor(int x) {}
179 }
180 // FILE: lib/AbstractJavaClassWithMultipleConstructors1.java
181 package lib;
182 abstract class AbstractJavaClassWithMultipleConstructors1 {
<lambda>null183     AbstractJavaClassWithMultipleConstructors1() {}
184     AbstractJavaClassWithMultipleConstructors1(int y) {}
185     AbstractJavaClassWithMultipleConstructors1(String x) {}
186 }
187 // FILE: lib/JavaClassWithoutExplicitConstructor.java
188 package lib;
189 class JavaClassWithoutExplicitConstructor {
190 }
191 // FILE: lib/JavaClassWithExplicitEmptyConstructor.java
192 package lib;
193 class JavaClassWithExplicitEmptyConstructor {
194     JavaClassWithExplicitEmptyConstructor() {}
195 }
196 // FILE: lib/JavaClassWithExplicitConstructor.java
197 package lib;
198 class JavaClassWithExplicitConstructor {
199     JavaClassWithExplicitConstructor(int x) {}
200 }
201 // FILE: lib/JavaClassWithMultipleConstructors1.java
202 package lib;
203 class JavaClassWithMultipleConstructors1 {
<lambda>null204     JavaClassWithMultipleConstructors1() {}
205     JavaClassWithMultipleConstructors1(int y) {}
206     JavaClassWithMultipleConstructors1(String x) {}
207 }
208 // FILE: JavaAnnotation.java
209 package lib;
210 public @interface JavaAnnotation {
211 }
212 // FILE: kotlin_lib.kt
213 package lib
214 interface KotlinInterface {}
215 class KotlinClassWithoutExplicitConstructor {
216 }
217 class KotlinClassWithExplicitEmptyConstructor() {}
218 class KotlinClassWithPrimaryConstructor(x:Int) {
219 }
220 class KotlinClassWithExplicitConstructor {
221     constructor(x:Int) {}
222 }
223 class KotlinClassWithMultipleConstructors1 {
224     constructor() {}
225     constructor(y:Int): this() {}
226     constructor(x: String) : this() {}
227 }
228 class KotlinClassWithMultipleConstructors2(z:Float) {
229     constructor(y:Int): this(0f) {}
230     constructor(x: String) : this(0f) {}
231 }
232 abstract class AbstractKotlinClassWithoutExplicitConstructor {
233 }
234 abstract class AbstractKotlinClassWithPrimaryConstructor(x:Int) {
235 }
236 abstract class AbstractKotlinClassWithExplicitEmptyConstructor() {}
237 abstract class AbstractKotlinClassWithExplicitConstructor {
238     constructor(x:Int) {}
239 }
240 abstract class AbstractKotlinClassWithMultipleConstructors1 {
241     constructor() {}
242     constructor(y:Int): this() {}
243     constructor(x: String) : this() {}
244 }
245 abstract class AbstractKotlinClassWithMultipleConstructors2(z:Float) {
246     constructor(y:Int): this(0f) {}
247     constructor(x: String) : this(0f) {}
248 }
249 annotation class KotlinAnnotation
250 object KotlinObject {}
251 class KotlinClassWithCompanion {
252     companion object
253 }
254 class KotlinClassWithNamedCompanion {
255     companion object MyCompanion
256 }
257 data class DataClass(val x:Int, var y:String)
258 data class DataClassWithSecondaryConstructor(val x:Int, val y:String) {
259     constructor(x:Int) : this(x, "")
260 }
261 // MODULE: main(lib)
262 // FILE: JavaInterface.java
263 interface JavaInterface {
264 }
265 // FILE: AbstractJavaClassWithoutExplicitConstructor.java
266 abstract class AbstractJavaClassWithoutExplicitConstructor {
267 }
268 // FILE: AbstractJavaClassWithExplicitEmptyConstructor.java
269 abstract class AbstractJavaClassWithExplicitEmptyConstructor {
270     AbstractJavaClassWithExplicitEmptyConstructor() {}
271 }
272 // FILE: AbstractJavaClassWithExplicitConstructor.java
273 abstract class AbstractJavaClassWithExplicitConstructor {
274     AbstractJavaClassWithExplicitConstructor(int x) {}
275 }
276 // FILE: AbstractJavaClassWithMultipleConstructors1.java
277 abstract class AbstractJavaClassWithMultipleConstructors1 {
<lambda>null278     AbstractJavaClassWithMultipleConstructors1() {}
279     AbstractJavaClassWithMultipleConstructors1(int y) {}
280     AbstractJavaClassWithMultipleConstructors1(String x) {}
281 }
282 // FILE: JavaClassWithoutExplicitConstructor.java
283 class JavaClassWithoutExplicitConstructor {
284 }
285 // FILE: JavaClassWithExplicitEmptyConstructor.java
286 class JavaClassWithExplicitEmptyConstructor {
287     JavaClassWithExplicitEmptyConstructor() {}
288 }
289 // FILE: JavaClassWithExplicitConstructor.java
290 class JavaClassWithExplicitConstructor {
291     JavaClassWithExplicitConstructor(int x) {}
292 }
293 // FILE: JavaClassWithMultipleConstructors1.java
294 class JavaClassWithMultipleConstructors1 {
<lambda>null295     JavaClassWithMultipleConstructors1() {}
296     JavaClassWithMultipleConstructors1(int y) {}
297     JavaClassWithMultipleConstructors1(String x) {}
298 }
299 // FILE: JavaAnnotation.java
300 public @interface JavaAnnotation {
301 }
302 // FILE: kotlin.kt
303 interface KotlinInterface {}
304 class KotlinClassWithoutExplicitConstructor {
305 }
306 class KotlinClassWithExplicitEmptyConstructor() {}
307 class KotlinClassWithPrimaryConstructor(x:Int) {
308 }
309 class KotlinClassWithExplicitConstructor {
310     constructor(x:Int) {}
311 }
312 class KotlinClassWithMultipleConstructors1 {
313     constructor() {}
314     constructor(y:Int): this() {}
315     constructor(x: String) : this() {}
316 }
317 class KotlinClassWithMultipleConstructors2(z:Float) {
318     constructor(y:Int): this(0f) {}
319     constructor(x: String) : this(0f) {}
320 }
321 abstract class AbstractKotlinClassWithoutExplicitConstructor {
322 }
323 abstract class AbstractKotlinClassWithPrimaryConstructor(x:Int) {
324 }
325 abstract class AbstractKotlinClassWithExplicitEmptyConstructor() {}
326 abstract class AbstractKotlinClassWithExplicitConstructor {
327     constructor(x:Int) {}
328 }
329 abstract class AbstractKotlinClassWithMultipleConstructors1 {
330     constructor() {}
331     constructor(y:Int): this() {}
332     constructor(x: String) : this() {}
333 }
334 abstract class AbstractKotlinClassWithMultipleConstructors2(z:Float) {
335     constructor(y:Int): this(0f) {}
336     constructor(x: String) : this(0f) {}
337 }
338 annotation class KotlinAnnotation
339 object KotlinObject {}
340 class KotlinClassWithCompanion {
341     companion object
342 }
343 class KotlinClassWithNamedCompanion {
344     companion object MyCompanion
345 }
346 data class DataClass(val x:Int, var y:String)
347 data class DataClassWithSecondaryConstructor(val x:Int, val y:String) {
348     constructor(x:Int) : this(x, "")
349 }