/* * 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: TopLevelMemberProcessor // EXPECTED: // lib : -> lib.LibJavaClass // lib : -> lib.RealLibClass // lib : -> lib.RealLibClass$Companion // lib : functionInLib -> lib.LibKt // lib : functionInLibCompanion -> lib.RealLibClass$Companion // lib : functionInLibJvmName -> lib.LibCustomClassName // lib : functionInLibRealClass -> lib.RealLibClass // lib : javaFieldInLib -> lib.LibJavaClass // lib : javaMethodInLib -> lib.LibJavaClass // lib : jvmStaticFunctionInLibCompanion -> lib.RealLibClass$Companion // lib : jvmStaticValueInLibCompanion -> lib.RealLibClass$Companion // lib : jvmStaticVariableInLibCompanion -> lib.RealLibClass$Companion // lib : valueInLib -> lib.LibKt // lib : valueInLibCompanion -> lib.RealLibClass$Companion // lib : valueInLibJvmName -> lib.LibCustomClassName // lib : valueInLibRealClass -> lib.RealLibClass // lib : variableInLib -> lib.LibKt // lib : variableInLibCompanion -> lib.RealLibClass$Companion // lib : variableInLibJvmName -> lib.LibCustomClassName // lib : variableInLibRealClass -> lib.RealLibClass // main : -> main.MainJavaClass // main : -> main.RealMainClass // main : -> main.RealMainClass$Companion // main : functionInMain -> main.MainKt // main : functionInMainCompanion -> main.RealMainClass$Companion // main : functionInMainJvmName -> main.MainCustomClassName // main : functionInMainRealClass -> main.RealMainClass // main : javaFieldInMain -> main.MainJavaClass // main : javaMethodInMain -> main.MainJavaClass // main : jvmStaticFunctionInMainCompanion -> main.RealMainClass$Companion // main : jvmStaticValueInMainCompanion -> main.RealMainClass$Companion // main : jvmStaticVariableInMainCompanion -> main.RealMainClass$Companion // main : valueInMain -> main.MainKt // main : valueInMainCompanion -> main.RealMainClass$Companion // main : valueInMainJvmName -> main.MainCustomClassName // main : valueInMainRealClass -> main.RealMainClass // main : variableInMain -> main.MainKt // main : variableInMainCompanion -> main.RealMainClass$Companion // main : variableInMainJvmName -> main.MainCustomClassName // main : variableInMainRealClass -> main.RealMainClass // END // MODULE: lib // FILE: lib.kt package lib fun functionInLib() {} val valueInLib: String = "" var variableInLib: String = "" class RealLibClass { fun functionInLibRealClass() {} val valueInLibRealClass: String = "" var variableInLibRealClass: String = "" companion object { fun functionInLibCompanion() {} val valueInLibCompanion: String = "" var variableInLibCompanion: String = "" @JvmStatic fun jvmStaticFunctionInLibCompanion() {} @JvmStatic val jvmStaticValueInLibCompanion: String = "" @JvmStatic var jvmStaticVariableInLibCompanion: String = "" } } // FILE: customName.kt @file:JvmName("LibCustomClassName") package lib fun functionInLibJvmName() {} val valueInLibJvmName: String = "" var variableInLibJvmName: String = "" // FILE: lib/LibJavaClass.java package lib; public class LibJavaClass { public LibJavaClass() {} private String javaFieldInLib; private void javaMethodInLib() { } } // MODULE: main(lib) // FILE: main.kt package main fun functionInMain() {} val valueInMain: String = "" var variableInMain: String = "" class RealMainClass { fun functionInMainRealClass() {} val valueInMainRealClass: String = "" var variableInMainRealClass: String = "" companion object { fun functionInMainCompanion() {} val valueInMainCompanion: String = "" var variableInMainCompanion: String = "" @JvmStatic fun jvmStaticFunctionInMainCompanion() {} @JvmStatic val jvmStaticValueInMainCompanion: String = "" @JvmStatic var jvmStaticVariableInMainCompanion: String = "" } } // FILE: customName.kt @file:JvmName("MainCustomClassName") package main fun functionInMainJvmName() {} val valueInMainJvmName: String = "" var variableInMainJvmName: String = "" // FILE: main/MainJavaClass.java package main; public class MainJavaClass { public MainJavaClass() {} private String javaFieldInMain; private void javaMethodInMain() { } }