- do not use annotation resolve in CodegenFileClassProvider
- test using private methods across different parts of multifile class
This commit is contained in:
Dmitry Petrov
2015-09-09 12:39:10 +03:00
parent 5e38c99f81
commit 8162272106
7 changed files with 10 additions and 14 deletions
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.resolve.BindingContext
import java.util.*
public class CodegenFileClassesProvider private constructor(private val bindingContext: BindingContext) : JvmFileClassesProvider {
public class CodegenFileClassesProvider private constructor() : JvmFileClassesProvider {
private val fileParts = hashMapOf<JetFile, JvmFileClassInfo>()
override fun getFileClassFqName(file: JetFile): FqName =
@@ -33,11 +33,8 @@ public class CodegenFileClassesProvider private constructor(private val bindingC
public fun getFileClassInfo(file: JetFile): JvmFileClassInfo =
fileParts.getOrPut(file) { createFileClassInfo(file) }
private fun createFileClassInfo(file: JetFile): JvmFileClassInfo {
val fileAnnotations = JvmFileClassUtil.collectFileAnnotations(file, bindingContext)
val jvmClassNameAnnotation = JvmFileClassUtil.parseJvmFileClass(fileAnnotations)
return JvmFileClassUtil.getFileClassInfo(file, jvmClassNameAnnotation)
}
private fun createFileClassInfo(file: JetFile): JvmFileClassInfo =
JvmFileClassUtil.getFileClassInfoNoResolve(file)
internal fun addFileClassInfo(file: JetFile) {
if (fileParts.containsKey(file)) return
@@ -51,7 +48,7 @@ public class CodegenFileClassesProvider private constructor(private val bindingC
packagesWithObsoleteParts: Collection<FqName>,
multifileFacadesWithObsoleteParts: Collection<FqName>
) : CodegenFileClassesProvider {
val codegenFileClassesManager = CodegenFileClassesProvider(bindingContext)
val codegenFileClassesManager = CodegenFileClassesProvider()
files.forEach {
codegenFileClassesManager.addFileClassInfo(it)
}
@@ -1,3 +1,2 @@
@file:JvmName("Util")
@file:JvmMultifileClass
@file:[JvmName("Util") JvmMultifileClass]
public fun foo(): String = "O"
@@ -2,4 +2,4 @@
@file:JvmMultifileClass
public fun bar(): String = barx()
internal fun foox(): String = "O"
private fun foox(): String = "O"
@@ -2,4 +2,4 @@
@file:JvmMultifileClass
public fun foo(): String = foox()
internal fun barx(): String = "K"
private fun barx(): String = "K"
@@ -141,9 +141,9 @@ public class BlackBoxWithJavaCodegenTestGenerated extends AbstractBlackBoxCodege
doTestWithJava(fileName);
}
@TestMetadata("multifileClassWithInternal")
public void testMultifileClassWithInternal() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/");
@TestMetadata("multifileClassWithCrossPrivate")
public void testMultifileClassWithCrossPrivate() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/");
doTestWithJava(fileName);
}