From d0479aa61b4b2beb415b07a74f32ea652b1c9804 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 1 Dec 2014 21:01:46 +0300 Subject: [PATCH] DecompiledTextFactory: use own implementation of type normalizer Do not rely on IDE utils This makes implementing cls stub builder easier --- .../textBuilder/DecompiledTextFactory.kt | 17 +++++++++++------ .../decompiledText/FlexibleTypes.expected.kt | 6 +++--- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DecompiledTextFactory.kt index 3269930449c..9e48dbe3238 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DecompiledTextFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DecompiledTextFactory.kt @@ -19,9 +19,7 @@ package org.jetbrains.jet.plugin.decompiler.textBuilder import com.intellij.openapi.util.TextRange import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.jet.lang.descriptors.* -import org.jetbrains.jet.lang.resolve.MemberComparator import org.jetbrains.jet.lang.resolve.kotlin.KotlinBinaryClassCache -import org.jetbrains.jet.lang.resolve.kotlin.header.KotlinClassHeader import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.renderer.DescriptorRenderer import org.jetbrains.jet.renderer.DescriptorRendererBuilder @@ -30,11 +28,11 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils.isEnumEntry import org.jetbrains.jet.lang.resolve.DescriptorUtils.isSyntheticClassObject import org.jetbrains.jet.lang.types.error.MissingDependencyErrorClass import org.jetbrains.jet.lang.resolve.dataClassUtils.isComponentLike -import org.jetbrains.jet.plugin.util.IdeDescriptorRenderers import org.jetbrains.jet.lang.types.isFlexible import org.jetbrains.jet.lang.resolve.java.JvmAbi import org.jetbrains.jet.lang.resolve.kotlin.header.isCompatiblePackageFacadeKind import org.jetbrains.jet.lang.resolve.kotlin.header.isCompatibleClassKind +import org.jetbrains.jet.lang.types.flexibility private val FILE_ABI_VERSION_MARKER: String = "FILE_ABI" private val CURRENT_ABI_VERSION_MARKER: String = "CURRENT_ABI" @@ -79,7 +77,14 @@ private val FLEXIBLE_TYPE_COMMENT = "/* platform type */" public val descriptorRendererForDecompiler: DescriptorRenderer = DescriptorRendererBuilder() .setWithDefinedIn(false) .setClassWithPrimaryConstructor(true) - .setTypeNormalizer(IdeDescriptorRenderers.APPROXIMATE_FLEXIBLE_TYPES) + .setTypeNormalizer { + type -> + if (type.isFlexible()) { + type.flexibility().lowerBound + } + else type + + } .build() //TODO: should use more accurate way to identify descriptors @@ -152,8 +157,8 @@ private fun buildDecompiledText(packageFqName: FqName, descriptors: List /* platform type */ + internal abstract fun collection(): kotlin.List /* platform type */ - internal final fun withBody(): kotlin.Int? /* platform type */ { /* compiled code */ } + internal final fun withBody(): kotlin.Int /* platform type */ { /* compiled code */ } } \ No newline at end of file