diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt index bf12df8c339..2615d115264 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/libraries/DecompiledTextFactory.kt @@ -30,6 +30,8 @@ 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 public fun buildDecompiledText( classFile: VirtualFile, @@ -53,9 +55,12 @@ public fun buildDecompiledText( } private val DECOMPILED_COMMENT = "/* compiled code */" +private val FLEXIBLE_TYPE_COMMENT = "/* platform type */" + public val descriptorRendererForDecompiler: DescriptorRenderer = DescriptorRendererBuilder() .setWithDefinedIn(false) .setClassWithPrimaryConstructor(true) + .setTypeNormalizer(IdeDescriptorRenderers.APPROXIMATE_FLEXIBLE_TYPES) .build() //TODO: should use more accurate way to identify descriptors @@ -99,6 +104,13 @@ private fun buildDecompiledText(packageFqName: FqName, descriptors: List /* platform type */ + + internal final fun withBody(): kotlin.Int? /* platform type */ { /* compiled code */ } +} \ No newline at end of file diff --git a/idea/testData/libraries/decompiledText/FlexibleTypes/FlexibleTypes.kt b/idea/testData/libraries/decompiledText/FlexibleTypes/FlexibleTypes.kt new file mode 100644 index 00000000000..c60d8368e1d --- /dev/null +++ b/idea/testData/libraries/decompiledText/FlexibleTypes/FlexibleTypes.kt @@ -0,0 +1,11 @@ +package test + +import kotlin.internal.flexible.ft + +abstract class FlexibleTypes() { + abstract fun collection(): ft, List> + + abstract val p: ft + + fun withBody(): ft { return 1 } +} \ No newline at end of file diff --git a/idea/testData/libraries/decompiledText/FlexibleTypes/ft.kt b/idea/testData/libraries/decompiledText/FlexibleTypes/ft.kt new file mode 100644 index 00000000000..331750ac1ce --- /dev/null +++ b/idea/testData/libraries/decompiledText/FlexibleTypes/ft.kt @@ -0,0 +1,3 @@ +package kotlin.internal.flexible + +class ft \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/libraries/DecompiledTextTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/libraries/DecompiledTextTestGenerated.java index 673d0ed182b..db972afdbdd 100644 --- a/idea/tests/org/jetbrains/jet/plugin/libraries/DecompiledTextTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/libraries/DecompiledTextTestGenerated.java @@ -61,6 +61,12 @@ public class DecompiledTextTestGenerated extends AbstractDecompiledTextTest { doTest(fileName); } + @TestMetadata("FlexibleTypes") + public void testFlexibleTypes() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/libraries/decompiledText/FlexibleTypes/"); + doTest(fileName); + } + @TestMetadata("FunctionTypes") public void testFunctionTypes() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/libraries/decompiledText/FunctionTypes/");