blob: 438892713d2599980b09b1241fbcfb63f9a9964f [file] [log] [blame]
/*
* 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
// <init>(kotlin.Int): AbstractJavaClassWithExplicitConstructor
// class: lib.AbstractJavaClassWithExplicitConstructor
// <init>(kotlin.Int): lib.AbstractJavaClassWithExplicitConstructor
// class: AbstractJavaClassWithExplicitEmptyConstructor
// <init>(): AbstractJavaClassWithExplicitEmptyConstructor
// class: lib.AbstractJavaClassWithExplicitEmptyConstructor
// <init>(): lib.AbstractJavaClassWithExplicitEmptyConstructor
// class: AbstractJavaClassWithMultipleConstructors1
// <init>(): AbstractJavaClassWithMultipleConstructors1
// <init>(kotlin.Int): AbstractJavaClassWithMultipleConstructors1
// <init>(kotlin.String): AbstractJavaClassWithMultipleConstructors1
// class: lib.AbstractJavaClassWithMultipleConstructors1
// <init>(): lib.AbstractJavaClassWithMultipleConstructors1
// <init>(kotlin.Int): lib.AbstractJavaClassWithMultipleConstructors1
// <init>(kotlin.String): lib.AbstractJavaClassWithMultipleConstructors1
// class: AbstractJavaClassWithoutExplicitConstructor
// <init>(): AbstractJavaClassWithoutExplicitConstructor
// class: lib.AbstractJavaClassWithoutExplicitConstructor
// <init>(): lib.AbstractJavaClassWithoutExplicitConstructor
// class: AbstractKotlinClassWithExplicitConstructor
// <init>(kotlin.Int): AbstractKotlinClassWithExplicitConstructor
// class: lib.AbstractKotlinClassWithExplicitConstructor
// <init>(kotlin.Int): lib.AbstractKotlinClassWithExplicitConstructor
// class: AbstractKotlinClassWithExplicitEmptyConstructor
// <init>(): AbstractKotlinClassWithExplicitEmptyConstructor
// class: lib.AbstractKotlinClassWithExplicitEmptyConstructor
// <init>(): lib.AbstractKotlinClassWithExplicitEmptyConstructor
// class: AbstractKotlinClassWithMultipleConstructors1
// <init>(): AbstractKotlinClassWithMultipleConstructors1
// <init>(kotlin.Int): AbstractKotlinClassWithMultipleConstructors1
// <init>(kotlin.String): AbstractKotlinClassWithMultipleConstructors1
// class: lib.AbstractKotlinClassWithMultipleConstructors1
// <init>(): lib.AbstractKotlinClassWithMultipleConstructors1
// <init>(kotlin.Int): lib.AbstractKotlinClassWithMultipleConstructors1
// <init>(kotlin.String): lib.AbstractKotlinClassWithMultipleConstructors1
// class: AbstractKotlinClassWithMultipleConstructors2
// <init>(kotlin.Float): AbstractKotlinClassWithMultipleConstructors2
// <init>(kotlin.Int): AbstractKotlinClassWithMultipleConstructors2
// <init>(kotlin.String): AbstractKotlinClassWithMultipleConstructors2
// class: lib.AbstractKotlinClassWithMultipleConstructors2
// <init>(kotlin.Float): lib.AbstractKotlinClassWithMultipleConstructors2
// <init>(kotlin.Int): lib.AbstractKotlinClassWithMultipleConstructors2
// <init>(kotlin.String): lib.AbstractKotlinClassWithMultipleConstructors2
// class: AbstractKotlinClassWithPrimaryConstructor
// <init>(kotlin.Int): AbstractKotlinClassWithPrimaryConstructor
// class: lib.AbstractKotlinClassWithPrimaryConstructor
// <init>(kotlin.Int): lib.AbstractKotlinClassWithPrimaryConstructor
// class: AbstractKotlinClassWithoutExplicitConstructor
// <init>(): AbstractKotlinClassWithoutExplicitConstructor
// class: lib.AbstractKotlinClassWithoutExplicitConstructor
// <init>(): lib.AbstractKotlinClassWithoutExplicitConstructor
// class: DataClass
// <init>(kotlin.Int,kotlin.String): DataClass
// class: lib.DataClass
// <init>(kotlin.Int,kotlin.String): lib.DataClass
// class: DataClassWithSecondaryConstructor
// <init>(kotlin.Int): DataClassWithSecondaryConstructor
// <init>(kotlin.Int,kotlin.String): DataClassWithSecondaryConstructor
// class: lib.DataClassWithSecondaryConstructor
// <init>(kotlin.Int): lib.DataClassWithSecondaryConstructor
// <init>(kotlin.Int,kotlin.String): lib.DataClassWithSecondaryConstructor
// class: JavaAnnotation
// <init>(): JavaAnnotation
// class: lib.JavaAnnotation
// <init>(): lib.JavaAnnotation
// class: JavaClassWithExplicitConstructor
// <init>(kotlin.Int): JavaClassWithExplicitConstructor
// class: lib.JavaClassWithExplicitConstructor
// <init>(kotlin.Int): lib.JavaClassWithExplicitConstructor
// class: JavaClassWithExplicitEmptyConstructor
// <init>(): JavaClassWithExplicitEmptyConstructor
// class: lib.JavaClassWithExplicitEmptyConstructor
// <init>(): lib.JavaClassWithExplicitEmptyConstructor
// class: JavaClassWithMultipleConstructors1
// <init>(): JavaClassWithMultipleConstructors1
// <init>(kotlin.Int): JavaClassWithMultipleConstructors1
// <init>(kotlin.String): JavaClassWithMultipleConstructors1
// class: lib.JavaClassWithMultipleConstructors1
// <init>(): lib.JavaClassWithMultipleConstructors1
// <init>(kotlin.Int): lib.JavaClassWithMultipleConstructors1
// <init>(kotlin.String): lib.JavaClassWithMultipleConstructors1
// class: JavaClassWithoutExplicitConstructor
// <init>(): JavaClassWithoutExplicitConstructor
// class: lib.JavaClassWithoutExplicitConstructor
// <init>(): lib.JavaClassWithoutExplicitConstructor
// class: JavaInterface
// class: lib.JavaInterface
// class: KotlinAnnotation
// <init>(): KotlinAnnotation
// class: lib.KotlinAnnotation
// <init>(): lib.KotlinAnnotation
// class: KotlinClassWithCompanion
// <init>(): KotlinClassWithCompanion
// class: lib.KotlinClassWithCompanion
// <init>(): lib.KotlinClassWithCompanion
// class: KotlinClassWithExplicitConstructor
// <init>(kotlin.Int): KotlinClassWithExplicitConstructor
// class: lib.KotlinClassWithExplicitConstructor
// <init>(kotlin.Int): lib.KotlinClassWithExplicitConstructor
// class: KotlinClassWithExplicitEmptyConstructor
// <init>(): KotlinClassWithExplicitEmptyConstructor
// class: lib.KotlinClassWithExplicitEmptyConstructor
// <init>(): lib.KotlinClassWithExplicitEmptyConstructor
// class: KotlinClassWithMultipleConstructors1
// <init>(): KotlinClassWithMultipleConstructors1
// <init>(kotlin.Int): KotlinClassWithMultipleConstructors1
// <init>(kotlin.String): KotlinClassWithMultipleConstructors1
// class: lib.KotlinClassWithMultipleConstructors1
// <init>(): lib.KotlinClassWithMultipleConstructors1
// <init>(kotlin.Int): lib.KotlinClassWithMultipleConstructors1
// <init>(kotlin.String): lib.KotlinClassWithMultipleConstructors1
// class: KotlinClassWithMultipleConstructors2
// <init>(kotlin.Float): KotlinClassWithMultipleConstructors2
// <init>(kotlin.Int): KotlinClassWithMultipleConstructors2
// <init>(kotlin.String): KotlinClassWithMultipleConstructors2
// class: lib.KotlinClassWithMultipleConstructors2
// <init>(kotlin.Float): lib.KotlinClassWithMultipleConstructors2
// <init>(kotlin.Int): lib.KotlinClassWithMultipleConstructors2
// <init>(kotlin.String): lib.KotlinClassWithMultipleConstructors2
// class: KotlinClassWithNamedCompanion
// <init>(): KotlinClassWithNamedCompanion
// class: lib.KotlinClassWithNamedCompanion
// <init>(): lib.KotlinClassWithNamedCompanion
// class: KotlinClassWithPrimaryConstructor
// <init>(kotlin.Int): KotlinClassWithPrimaryConstructor
// class: lib.KotlinClassWithPrimaryConstructor
// <init>(kotlin.Int): lib.KotlinClassWithPrimaryConstructor
// class: KotlinClassWithoutExplicitConstructor
// <init>(): KotlinClassWithoutExplicitConstructor
// class: lib.KotlinClassWithoutExplicitConstructor
// <init>(): lib.KotlinClassWithoutExplicitConstructor
// class: KotlinInterface
// class: lib.KotlinInterface
// class: KotlinObject
// <init>(): KotlinObject
// class: lib.KotlinObject
// <init>(): 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, "")
}