Fix decompiler tests.

This commit is contained in:
Dmitry Petrov
2016-11-22 12:21:23 +03:00
parent 01c21e218a
commit fc2a965d2a
6 changed files with 24 additions and 18 deletions
@@ -17,26 +17,27 @@
package org.jetbrains.kotlin.idea.decompiler.textBuilder
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.MemberDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
import org.jetbrains.kotlin.idea.caches.resolve.IDEPackagePartProvider
import org.jetbrains.kotlin.idea.decompiler.classFile.buildDecompiledTextForClassFile
import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import org.jetbrains.kotlin.load.java.descriptors.isFromJvmPackagePart
import org.jetbrains.kotlin.load.kotlin.JvmVirtualFileFinder
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedMemberDescriptor
import org.jetbrains.kotlin.test.KotlinTestUtils
class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
override fun getPackages(): List<FqName> = emptyList()
override fun getFacades(): List<FqName> = listOf(FqName("kotlin.collections.CollectionsKt"))
override fun getFacades(): List<FqName> = listOf(FqName("kotlin.collections.CollectionsKt"), FqName("kotlin.collections.TypeAliasesKt"))
override fun getTopLevelMembers(): Map<String, String> = mapOf("kotlin.collections.CollectionsKt" to "mutableListOf")
@@ -56,8 +57,8 @@ class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
override fun getSdk() = PluginTestCaseBase.fullJdk()
}
override fun isFromFacade(descriptor: CallableMemberDescriptor, facadeFqName: FqName): Boolean =
descriptor is DeserializedCallableMemberDescriptor &&
JvmFileClassUtil.getImplClassName(descriptor) != null &&
facadeFqName == JvmFileClassUtil.getPartFqNameForDeserializedCallable(descriptor)
override fun isFromFacade(descriptor: MemberDescriptor, facadeFqName: FqName): Boolean =
descriptor is DeserializedMemberDescriptor &&
descriptor.isFromJvmPackagePart() &&
facadeFqName == JvmFileClassUtil.getPartFqNameForDeserialized(descriptor)
}
@@ -17,7 +17,7 @@
package org.jetbrains.kotlin.idea.decompiler.textBuilder
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.MemberDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.fileClasses.OldPackageFacadeClassUtils
@@ -65,7 +65,7 @@ class KotlinJavaScriptDecompiledTextConsistencyTest : TextConsistencyBaseTest()
override fun getProjectDescriptor() = KotlinStdJSProjectDescriptor.instance
override fun isFromFacade(descriptor: CallableMemberDescriptor, facadeFqName: FqName): Boolean {
override fun isFromFacade(descriptor: MemberDescriptor, facadeFqName: FqName): Boolean {
val containingDeclaration = descriptor.containingDeclaration
return containingDeclaration is PackageFragmentDescriptor &&
facadeFqName == OldPackageFacadeClassUtils.getPackageClassFqName(containingDeclaration.fqName)
@@ -43,7 +43,7 @@ abstract class TextConsistencyBaseTest : KotlinLightCodeInsightFixtureTestCase()
protected abstract fun getModuleDescriptor(): ModuleDescriptor
protected abstract fun isFromFacade(descriptor: CallableMemberDescriptor, facadeFqName: FqName): Boolean
protected abstract fun isFromFacade(descriptor: MemberDescriptor, facadeFqName: FqName): Boolean
fun testConsistency() {
getPackages().forEach { doTestPackage(it) }
@@ -76,7 +76,7 @@ abstract class TextConsistencyBaseTest : KotlinLightCodeInsightFixtureTestCase()
override fun resolveDeclarationsInFacade(facadeFqName: FqName): List<DeclarationDescriptor> =
module.getPackage(facadeFqName.parent()).memberScope.getContributedDescriptors().filter {
(it is CallableMemberDescriptor && isFromFacade(it, facadeFqName) || it is TypeAliasDescriptor) &&
(it is MemberDescriptor && it !is ClassDescriptor && isFromFacade(it, facadeFqName)) &&
!KotlinBuiltIns.isBuiltIn(it)
}.sortedWith(MemberComparator.INSTANCE)
}