From 97ac86273a802d2ef922dbbb16ac953269ebebff Mon Sep 17 00:00:00 2001 From: Igor Yakovlev Date: Fri, 4 Sep 2020 14:11:25 +0300 Subject: [PATCH] [ULC] Add support of const fields to multifile facade --- .../kotlin/asJava/classes/ultraKtLightClassForFacade.kt | 7 ++++--- .../testData/asJava/ultraLightFacades/multifileFacade.kt | 4 +++- .../testData/asJava/ultraLightFacades/multifileFacade.kt.1 | 4 +++- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt index 33fb5924704..d5c395f46b9 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraKtLightClassForFacade.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil.JVM_MULTIFILE_CLASS_SHORT import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil.findAnnotationEntryOnFileNoResolve import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtNamedFunction @@ -130,11 +131,11 @@ class KtUltraLightClassForFacade( } private val _ownFields: List by lazyPub { - if (multiFileClass) return@lazyPub emptyList() - hashSetOf().let { nameCache -> filesWithSupportsWithCreators.flatMap { (file, _, creator) -> - file.declarations.filterIsInstance().mapNotNull { + val allProperties = file.declarations.filterIsInstance() + val properties = if (multiFileClass) allProperties.filter { it.hasModifier(KtTokens.CONST_KEYWORD) } else allProperties + properties.mapNotNull { creator.createPropertyField(it, nameCache, forceStatic = true) } } diff --git a/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt b/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt index 43e11fd82e3..76bf845a2cc 100644 --- a/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt +++ b/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt @@ -5,4 +5,6 @@ fun foo() = 42 val x = 24 -private fun privateFoo(): Int = 3 \ No newline at end of file +private fun privateFoo(): Int = 3 + +const val x1 = 42 \ No newline at end of file diff --git a/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt.1 b/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt.1 index a05d67d9562..5fb5f6f3148 100644 --- a/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt.1 +++ b/compiler/testData/asJava/ultraLightFacades/multifileFacade.kt.1 @@ -3,4 +3,6 @@ fun bar() = 24 -val y = 24 \ No newline at end of file +val y = 24 + +const val y1 = 42 \ No newline at end of file