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 }