/* * Copyright 2022 Google LLC * Copyright 2010-2022 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: DeclarationOrderProcessor // EXPECTED: // lib.KotlinClass // b:Ljava/lang/String; // a:Ljava/lang/String; // c:Ljava/lang/String; // isB:Ljava/lang/String; // isA:Ljava/lang/String; // isC:Ljava/lang/String; // noBackingB:Ljava/lang/String; // noBackingA:Ljava/lang/String; // noBackingC:Ljava/lang/String; // noBackingVarB:Ljava/lang/String; // noBackingVarA:Ljava/lang/String; // noBackingVarC:Ljava/lang/String; // privateFun:()V // protectedFun:()V // internalFun:()V // publicFun:()V // overloaded:(Ljava/lang/String;)Ljava/lang/String; // overloaded:(I)Ljava/lang/String; // overloaded:()Ljava/lang/String; // overloaded:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; // lib.JavaClass // b:Ljava/lang/String; // a:Ljava/lang/String; // c:Ljava/lang/String; // overloaded:(Ljava/lang/String;)V // overloaded:(I)V // overloaded:()V // overloaded:(Ljava/lang/String;Ljava/lang/String;)V // KotlinClass // b:Ljava/lang/String; // a:Ljava/lang/String; // c:Ljava/lang/String; // isB:Ljava/lang/String; // isA:Ljava/lang/String; // isC:Ljava/lang/String; // noBackingB:Ljava/lang/String; // noBackingA:Ljava/lang/String; // noBackingC:Ljava/lang/String; // noBackingVarB:Ljava/lang/String; // noBackingVarA:Ljava/lang/String; // noBackingVarC:Ljava/lang/String; // privateFun:()V // protectedFun:()V // internalFun:()V // publicFun:()V // overloaded:(Ljava/lang/String;)Ljava/lang/String; // overloaded:(I)Ljava/lang/String; // overloaded:()Ljava/lang/String; // overloaded:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; // JavaClass // b:Ljava/lang/String; // a:Ljava/lang/String; // c:Ljava/lang/String; // overloaded:(Ljava/lang/String;)V // overloaded:(I)V // overloaded:()V // overloaded:(Ljava/lang/String;Ljava/lang/String;)V // KotlinCompanion.Companion // companionObjectProperty:Ljava/lang/String; // companionObjectPropertyJvmStatic:Ljava/lang/String; // companionObjectPropertyJvmField:Ljava/lang/String; // companionObjectPropertyLateinit:Ljava/lang/String; // companionObjectPropertyConst:Ljava/lang/String; // companionObjectFunction:(Ljava/lang/String;)V // companionObjectFunctionJvmStatic:(Ljava/lang/String;)V // lib.KotlinCompanion.Companion // companionObjectProperty:Ljava/lang/String; // companionObjectPropertyJvmStatic:Ljava/lang/String; // companionObjectPropertyLateinit:Ljava/lang/String; // companionObjectPropertyConst:Ljava/lang/String; // companionObjectPropertyJvmField:Ljava/lang/String; // companionObjectFunction:(Ljava/lang/String;)V // companionObjectFunctionJvmStatic:(Ljava/lang/String;)V // equals:(Ljava/lang/Object;)Z // hashCode:()I // toString:()Ljava/lang/String; // :()V // END // MODULE: module1 // FILE: lib/KotlinClass.kt package lib; class KotlinClass { val b: String = TODO() val a: String = TODO() val c: String = TODO() val isB:String = TODO() val isA:String = TODO() val isC:String = TODO() val noBackingB: String get() = "" val noBackingA: String get() = "" val noBackingC: String get() = "" var noBackingVarB: String get() = "" set(value) {} var noBackingVarA: String get() = "" set(value) {} var noBackingVarC: String get() = "" set(value) {} private fun privateFun(): Unit = TODO() protected fun protectedFun(): Unit = TODO() internal fun internalFun(): Unit = TODO() fun publicFun(): Unit = TODO() fun overloaded(x:String): String = TODO() fun overloaded(x:Int): String = TODO() fun overloaded(): String = TODO() fun overloaded(x:String, y:String): String = TODO() } // FILE: lib/JavaClass.java package lib; public class JavaClass { // notice the non alphabetic order, which is triggering the problem String b = ""; String a = ""; String c = ""; void overloaded(String x) {} void overloaded(int x) {} void overloaded() {} void overloaded(String x, String y) {} } // FILE: lib/KotlinCompanion.kt package lib class KotlinCompanion { companion object { val companionObjectProperty: String = "hello" @JvmStatic val companionObjectPropertyJvmStatic: String = "hello" @JvmField val companionObjectPropertyJvmField: String = "hello" lateinit var companionObjectPropertyLateinit: String const val companionObjectPropertyConst: String = "hello" fun companionObjectFunction(companionFunctionParam: String) {} @JvmStatic fun companionObjectFunctionJvmStatic(companionFunctionParam: String) {} } } // MODULE: main(module1) // FILE: main.kt class KotlinClass { val b: String? = TODO() val a: String = TODO() val c: String? = TODO() val isB:String = TODO() val isA:String = TODO() val isC:String = TODO() val noBackingB: String get() = "" val noBackingA: String get() = "" val noBackingC: String get() = "" var noBackingVarB: String get() = "" set(value) {} var noBackingVarA: String get() = "" set(value) {} var noBackingVarC: String get() = "" set(value) {} private fun privateFun(): Unit = TODO() protected fun protectedFun(): Unit = TODO() internal fun internalFun(): Unit = TODO() fun publicFun(): Unit = TODO() fun overloaded(x:String): String = TODO() fun overloaded(x:Int): String = TODO() fun overloaded(): String = TODO() fun overloaded(x:String, y:String): String = TODO() } // FILE: JavaClass.java public class JavaClass { String b = ""; String a = ""; String c = ""; void overloaded(String x) {} void overloaded(int x) {} void overloaded() {} void overloaded(String x, String y) {} } // FILE: KotlinCompanion.kt class KotlinCompanion { companion object { val companionObjectProperty: String = "hello" @JvmStatic val companionObjectPropertyJvmStatic: String = "hello" @JvmField val companionObjectPropertyJvmField: String = "hello" lateinit var companionObjectPropertyLateinit: String const val companionObjectPropertyConst: String = "hello" fun companionObjectFunction(companionFunctionParam: String) {} @JvmStatic fun companionObjectFunctionJvmStatic(companionFunctionParam: String) {} } }