/* * Copyright 2020 Google LLC * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ // WITH_RUNTIME // TEST PROCESSOR: ConstructorDeclarationsProcessor // EXPECTED: // class: AbstractJavaClassWithExplicitConstructor // (kotlin.Int): AbstractJavaClassWithExplicitConstructor // class: lib.AbstractJavaClassWithExplicitConstructor // (kotlin.Int): lib.AbstractJavaClassWithExplicitConstructor // class: AbstractJavaClassWithExplicitEmptyConstructor // (): AbstractJavaClassWithExplicitEmptyConstructor // class: lib.AbstractJavaClassWithExplicitEmptyConstructor // (): lib.AbstractJavaClassWithExplicitEmptyConstructor // class: AbstractJavaClassWithMultipleConstructors1 // (): AbstractJavaClassWithMultipleConstructors1 // (kotlin.Int): AbstractJavaClassWithMultipleConstructors1 // (kotlin.String): AbstractJavaClassWithMultipleConstructors1 // class: lib.AbstractJavaClassWithMultipleConstructors1 // (): lib.AbstractJavaClassWithMultipleConstructors1 // (kotlin.Int): lib.AbstractJavaClassWithMultipleConstructors1 // (kotlin.String): lib.AbstractJavaClassWithMultipleConstructors1 // class: AbstractJavaClassWithoutExplicitConstructor // (): AbstractJavaClassWithoutExplicitConstructor // class: lib.AbstractJavaClassWithoutExplicitConstructor // (): lib.AbstractJavaClassWithoutExplicitConstructor // class: AbstractKotlinClassWithExplicitConstructor // (kotlin.Int): AbstractKotlinClassWithExplicitConstructor // class: lib.AbstractKotlinClassWithExplicitConstructor // (kotlin.Int): lib.AbstractKotlinClassWithExplicitConstructor // class: AbstractKotlinClassWithExplicitEmptyConstructor // (): AbstractKotlinClassWithExplicitEmptyConstructor // class: lib.AbstractKotlinClassWithExplicitEmptyConstructor // (): lib.AbstractKotlinClassWithExplicitEmptyConstructor // class: AbstractKotlinClassWithMultipleConstructors1 // (): AbstractKotlinClassWithMultipleConstructors1 // (kotlin.Int): AbstractKotlinClassWithMultipleConstructors1 // (kotlin.String): AbstractKotlinClassWithMultipleConstructors1 // class: lib.AbstractKotlinClassWithMultipleConstructors1 // (): lib.AbstractKotlinClassWithMultipleConstructors1 // (kotlin.Int): lib.AbstractKotlinClassWithMultipleConstructors1 // (kotlin.String): lib.AbstractKotlinClassWithMultipleConstructors1 // class: AbstractKotlinClassWithMultipleConstructors2 // (kotlin.Float): AbstractKotlinClassWithMultipleConstructors2 // (kotlin.Int): AbstractKotlinClassWithMultipleConstructors2 // (kotlin.String): AbstractKotlinClassWithMultipleConstructors2 // class: lib.AbstractKotlinClassWithMultipleConstructors2 // (kotlin.Float): lib.AbstractKotlinClassWithMultipleConstructors2 // (kotlin.Int): lib.AbstractKotlinClassWithMultipleConstructors2 // (kotlin.String): lib.AbstractKotlinClassWithMultipleConstructors2 // class: AbstractKotlinClassWithPrimaryConstructor // (kotlin.Int): AbstractKotlinClassWithPrimaryConstructor // class: lib.AbstractKotlinClassWithPrimaryConstructor // (kotlin.Int): lib.AbstractKotlinClassWithPrimaryConstructor // class: AbstractKotlinClassWithoutExplicitConstructor // (): AbstractKotlinClassWithoutExplicitConstructor // class: lib.AbstractKotlinClassWithoutExplicitConstructor // (): lib.AbstractKotlinClassWithoutExplicitConstructor // class: DataClass // (kotlin.Int,kotlin.String): DataClass // class: lib.DataClass // (kotlin.Int,kotlin.String): lib.DataClass // class: DataClassWithSecondaryConstructor // (kotlin.Int): DataClassWithSecondaryConstructor // (kotlin.Int,kotlin.String): DataClassWithSecondaryConstructor // class: lib.DataClassWithSecondaryConstructor // (kotlin.Int): lib.DataClassWithSecondaryConstructor // (kotlin.Int,kotlin.String): lib.DataClassWithSecondaryConstructor // class: JavaAnnotation // (): JavaAnnotation // class: lib.JavaAnnotation // (): lib.JavaAnnotation // class: JavaClassWithExplicitConstructor // (kotlin.Int): JavaClassWithExplicitConstructor // class: lib.JavaClassWithExplicitConstructor // (kotlin.Int): lib.JavaClassWithExplicitConstructor // class: JavaClassWithExplicitEmptyConstructor // (): JavaClassWithExplicitEmptyConstructor // class: lib.JavaClassWithExplicitEmptyConstructor // (): lib.JavaClassWithExplicitEmptyConstructor // class: JavaClassWithMultipleConstructors1 // (): JavaClassWithMultipleConstructors1 // (kotlin.Int): JavaClassWithMultipleConstructors1 // (kotlin.String): JavaClassWithMultipleConstructors1 // class: lib.JavaClassWithMultipleConstructors1 // (): lib.JavaClassWithMultipleConstructors1 // (kotlin.Int): lib.JavaClassWithMultipleConstructors1 // (kotlin.String): lib.JavaClassWithMultipleConstructors1 // class: JavaClassWithoutExplicitConstructor // (): JavaClassWithoutExplicitConstructor // class: lib.JavaClassWithoutExplicitConstructor // (): lib.JavaClassWithoutExplicitConstructor // class: JavaInterface // class: lib.JavaInterface // class: KotlinAnnotation // (): KotlinAnnotation // class: lib.KotlinAnnotation // (): lib.KotlinAnnotation // class: KotlinClassWithCompanion // (): KotlinClassWithCompanion // class: lib.KotlinClassWithCompanion // (): lib.KotlinClassWithCompanion // class: KotlinClassWithExplicitConstructor // (kotlin.Int): KotlinClassWithExplicitConstructor // class: lib.KotlinClassWithExplicitConstructor // (kotlin.Int): lib.KotlinClassWithExplicitConstructor // class: KotlinClassWithExplicitEmptyConstructor // (): KotlinClassWithExplicitEmptyConstructor // class: lib.KotlinClassWithExplicitEmptyConstructor // (): lib.KotlinClassWithExplicitEmptyConstructor // class: KotlinClassWithMultipleConstructors1 // (): KotlinClassWithMultipleConstructors1 // (kotlin.Int): KotlinClassWithMultipleConstructors1 // (kotlin.String): KotlinClassWithMultipleConstructors1 // class: lib.KotlinClassWithMultipleConstructors1 // (): lib.KotlinClassWithMultipleConstructors1 // (kotlin.Int): lib.KotlinClassWithMultipleConstructors1 // (kotlin.String): lib.KotlinClassWithMultipleConstructors1 // class: KotlinClassWithMultipleConstructors2 // (kotlin.Float): KotlinClassWithMultipleConstructors2 // (kotlin.Int): KotlinClassWithMultipleConstructors2 // (kotlin.String): KotlinClassWithMultipleConstructors2 // class: lib.KotlinClassWithMultipleConstructors2 // (kotlin.Float): lib.KotlinClassWithMultipleConstructors2 // (kotlin.Int): lib.KotlinClassWithMultipleConstructors2 // (kotlin.String): lib.KotlinClassWithMultipleConstructors2 // class: KotlinClassWithNamedCompanion // (): KotlinClassWithNamedCompanion // class: lib.KotlinClassWithNamedCompanion // (): lib.KotlinClassWithNamedCompanion // class: KotlinClassWithPrimaryConstructor // (kotlin.Int): KotlinClassWithPrimaryConstructor // class: lib.KotlinClassWithPrimaryConstructor // (kotlin.Int): lib.KotlinClassWithPrimaryConstructor // class: KotlinClassWithoutExplicitConstructor // (): KotlinClassWithoutExplicitConstructor // class: lib.KotlinClassWithoutExplicitConstructor // (): lib.KotlinClassWithoutExplicitConstructor // class: KotlinInterface // class: lib.KotlinInterface // class: KotlinObject // (): KotlinObject // class: lib.KotlinObject // (): lib.KotlinObject // END // MODULE: lib // FILE: lib/JavaInterface.java package lib; interface JavaInterface { } // FILE: lib/AbstractJavaClassWithoutExplicitConstructor.java package lib; abstract class AbstractJavaClassWithoutExplicitConstructor { } // FILE: lib/AbstractJavaClassWithExplicitEmptyConstructor.java package lib; abstract class AbstractJavaClassWithExplicitEmptyConstructor { AbstractJavaClassWithExplicitEmptyConstructor() {} } // FILE: lib/AbstractJavaClassWithExplicitConstructor.java package lib; abstract class AbstractJavaClassWithExplicitConstructor { AbstractJavaClassWithExplicitConstructor(int x) {} } // FILE: lib/AbstractJavaClassWithMultipleConstructors1.java package lib; abstract class AbstractJavaClassWithMultipleConstructors1 { AbstractJavaClassWithMultipleConstructors1() {} AbstractJavaClassWithMultipleConstructors1(int y) {} AbstractJavaClassWithMultipleConstructors1(String x) {} } // FILE: lib/JavaClassWithoutExplicitConstructor.java package lib; class JavaClassWithoutExplicitConstructor { } // FILE: lib/JavaClassWithExplicitEmptyConstructor.java package lib; class JavaClassWithExplicitEmptyConstructor { JavaClassWithExplicitEmptyConstructor() {} } // FILE: lib/JavaClassWithExplicitConstructor.java package lib; class JavaClassWithExplicitConstructor { JavaClassWithExplicitConstructor(int x) {} } // FILE: lib/JavaClassWithMultipleConstructors1.java package lib; class JavaClassWithMultipleConstructors1 { JavaClassWithMultipleConstructors1() {} JavaClassWithMultipleConstructors1(int y) {} JavaClassWithMultipleConstructors1(String x) {} } // FILE: JavaAnnotation.java package lib; public @interface JavaAnnotation { } // FILE: kotlin_lib.kt package lib interface KotlinInterface {} class KotlinClassWithoutExplicitConstructor { } class KotlinClassWithExplicitEmptyConstructor() {} class KotlinClassWithPrimaryConstructor(x:Int) { } class KotlinClassWithExplicitConstructor { constructor(x:Int) {} } class KotlinClassWithMultipleConstructors1 { constructor() {} constructor(y:Int): this() {} constructor(x: String) : this() {} } class KotlinClassWithMultipleConstructors2(z:Float) { constructor(y:Int): this(0f) {} constructor(x: String) : this(0f) {} } abstract class AbstractKotlinClassWithoutExplicitConstructor { } abstract class AbstractKotlinClassWithPrimaryConstructor(x:Int) { } abstract class AbstractKotlinClassWithExplicitEmptyConstructor() {} abstract class AbstractKotlinClassWithExplicitConstructor { constructor(x:Int) {} } abstract class AbstractKotlinClassWithMultipleConstructors1 { constructor() {} constructor(y:Int): this() {} constructor(x: String) : this() {} } abstract class AbstractKotlinClassWithMultipleConstructors2(z:Float) { constructor(y:Int): this(0f) {} constructor(x: String) : this(0f) {} } annotation class KotlinAnnotation object KotlinObject {} class KotlinClassWithCompanion { companion object } class KotlinClassWithNamedCompanion { companion object MyCompanion } data class DataClass(val x:Int, var y:String) data class DataClassWithSecondaryConstructor(val x:Int, val y:String) { constructor(x:Int) : this(x, "") } // MODULE: main(lib) // FILE: JavaInterface.java interface JavaInterface { } // FILE: AbstractJavaClassWithoutExplicitConstructor.java abstract class AbstractJavaClassWithoutExplicitConstructor { } // FILE: AbstractJavaClassWithExplicitEmptyConstructor.java abstract class AbstractJavaClassWithExplicitEmptyConstructor { AbstractJavaClassWithExplicitEmptyConstructor() {} } // FILE: AbstractJavaClassWithExplicitConstructor.java abstract class AbstractJavaClassWithExplicitConstructor { AbstractJavaClassWithExplicitConstructor(int x) {} } // FILE: AbstractJavaClassWithMultipleConstructors1.java abstract class AbstractJavaClassWithMultipleConstructors1 { AbstractJavaClassWithMultipleConstructors1() {} AbstractJavaClassWithMultipleConstructors1(int y) {} AbstractJavaClassWithMultipleConstructors1(String x) {} } // FILE: JavaClassWithoutExplicitConstructor.java class JavaClassWithoutExplicitConstructor { } // FILE: JavaClassWithExplicitEmptyConstructor.java class JavaClassWithExplicitEmptyConstructor { JavaClassWithExplicitEmptyConstructor() {} } // FILE: JavaClassWithExplicitConstructor.java class JavaClassWithExplicitConstructor { JavaClassWithExplicitConstructor(int x) {} } // FILE: JavaClassWithMultipleConstructors1.java class JavaClassWithMultipleConstructors1 { JavaClassWithMultipleConstructors1() {} JavaClassWithMultipleConstructors1(int y) {} JavaClassWithMultipleConstructors1(String x) {} } // FILE: JavaAnnotation.java public @interface JavaAnnotation { } // FILE: kotlin.kt interface KotlinInterface {} class KotlinClassWithoutExplicitConstructor { } class KotlinClassWithExplicitEmptyConstructor() {} class KotlinClassWithPrimaryConstructor(x:Int) { } class KotlinClassWithExplicitConstructor { constructor(x:Int) {} } class KotlinClassWithMultipleConstructors1 { constructor() {} constructor(y:Int): this() {} constructor(x: String) : this() {} } class KotlinClassWithMultipleConstructors2(z:Float) { constructor(y:Int): this(0f) {} constructor(x: String) : this(0f) {} } abstract class AbstractKotlinClassWithoutExplicitConstructor { } abstract class AbstractKotlinClassWithPrimaryConstructor(x:Int) { } abstract class AbstractKotlinClassWithExplicitEmptyConstructor() {} abstract class AbstractKotlinClassWithExplicitConstructor { constructor(x:Int) {} } abstract class AbstractKotlinClassWithMultipleConstructors1 { constructor() {} constructor(y:Int): this() {} constructor(x: String) : this() {} } abstract class AbstractKotlinClassWithMultipleConstructors2(z:Float) { constructor(y:Int): this(0f) {} constructor(x: String) : this(0f) {} } annotation class KotlinAnnotation object KotlinObject {} class KotlinClassWithCompanion { companion object } class KotlinClassWithNamedCompanion { companion object MyCompanion } data class DataClass(val x:Int, var y:String) data class DataClassWithSecondaryConstructor(val x:Int, val y:String) { constructor(x:Int) : this(x, "") }