From 816227210649ec9353d52b629f58ac469e1f0f8a Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Wed, 9 Sep 2015 12:39:10 +0300 Subject: [PATCH] Cleanup - do not use annotation resolve in CodegenFileClassProvider - test using private methods across different parts of multifile class --- .../kotlin/codegen/CodegenFileClassesProvider.kt | 11 ++++------- .../fileClasses/multifileClassWith2Files/foo.kt | 3 +-- .../Baz.java | 0 .../bar.kt | 2 +- .../foo.kt | 2 +- .../multifileClassWithInternal.kt | 0 .../BlackBoxWithJavaCodegenTestGenerated.java | 6 +++--- 7 files changed, 10 insertions(+), 14 deletions(-) rename compiler/testData/codegen/boxWithJava/fileClasses/{multifileClassWithInternal => multifileClassWithCrossPrivate}/Baz.java (100%) rename compiler/testData/codegen/boxWithJava/fileClasses/{multifileClassWithInternal => multifileClassWithCrossPrivate}/bar.kt (71%) rename compiler/testData/codegen/boxWithJava/fileClasses/{multifileClassWithInternal => multifileClassWithCrossPrivate}/foo.kt (71%) rename compiler/testData/codegen/boxWithJava/fileClasses/{multifileClassWithInternal => multifileClassWithCrossPrivate}/multifileClassWithInternal.kt (100%) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/CodegenFileClassesProvider.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/CodegenFileClassesProvider.kt index ad0a9366601..58a845754c4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/CodegenFileClassesProvider.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/CodegenFileClassesProvider.kt @@ -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() 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, multifileFacadesWithObsoleteParts: Collection ) : CodegenFileClassesProvider { - val codegenFileClassesManager = CodegenFileClassesProvider(bindingContext) + val codegenFileClassesManager = CodegenFileClassesProvider() files.forEach { codegenFileClassesManager.addFileClassInfo(it) } diff --git a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWith2Files/foo.kt b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWith2Files/foo.kt index 74bb68ff299..3ad9ce5bde9 100644 --- a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWith2Files/foo.kt +++ b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWith2Files/foo.kt @@ -1,3 +1,2 @@ -@file:JvmName("Util") -@file:JvmMultifileClass +@file:[JvmName("Util") JvmMultifileClass] public fun foo(): String = "O" \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/Baz.java b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/Baz.java similarity index 100% rename from compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/Baz.java rename to compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/Baz.java diff --git a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/bar.kt b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/bar.kt similarity index 71% rename from compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/bar.kt rename to compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/bar.kt index 120066c7e6b..b95dd3fdd30 100644 --- a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/bar.kt +++ b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/bar.kt @@ -2,4 +2,4 @@ @file:JvmMultifileClass public fun bar(): String = barx() -internal fun foox(): String = "O" \ No newline at end of file +private fun foox(): String = "O" \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/foo.kt b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/foo.kt similarity index 71% rename from compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/foo.kt rename to compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/foo.kt index 86c78c3ab08..2245cb041d3 100644 --- a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/foo.kt +++ b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/foo.kt @@ -2,4 +2,4 @@ @file:JvmMultifileClass public fun foo(): String = foox() -internal fun barx(): String = "K" \ No newline at end of file +private fun barx(): String = "K" \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/multifileClassWithInternal.kt b/compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/multifileClassWithInternal.kt similarity index 100% rename from compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithInternal/multifileClassWithInternal.kt rename to compiler/testData/codegen/boxWithJava/fileClasses/multifileClassWithCrossPrivate/multifileClassWithInternal.kt diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java index a9dc672daf2..fe559e005dd 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/BlackBoxWithJavaCodegenTestGenerated.java @@ -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); }