From 5b6849225c6fea8523107e937296aadaa25c33c2 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Thu, 5 Mar 2015 16:01:06 +0300 Subject: [PATCH] DecompiledTextFactory: add buildDecompiledTextFromJSMetadata --- .../textBuilder/DecompiledTextFactory.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt index d73957b2b16..6162321b917 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/textBuilder/DecompiledTextFactory.kt @@ -18,7 +18,12 @@ package org.jetbrains.kotlin.idea.decompiler.textBuilder import com.intellij.openapi.util.TextRange import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider +import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl +import org.jetbrains.kotlin.idea.decompiler.navigation.JsMetaFileVirtualFileHolder +import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.renderer.DescriptorRenderer @@ -71,6 +76,21 @@ public fun buildDecompiledText( } } +public fun buildDecompiledTextFromJsMetadata( + classFile: VirtualFile +): DecompiledText { + val module = classFile.getUserData(JsMetaFileVirtualFileHolder.MODULE_DESCRIPTOR_KEY) + assert(module != null) + + val packageFqName = classFile.getUserData(JsMetaFileVirtualFileHolder.PACKAGE_FQNAME_KEY) + assert (packageFqName != null) + + val fragments = module.getPackageFragmentProvider().getPackageFragments(packageFqName) + val descriptors = fragments.flatMap { it.getMemberScope().getAllDescriptors() } + + return buildDecompiledText(packageFqName, descriptors) +} + private val DECOMPILED_CODE_COMMENT = "/* compiled code */" private val DECOMPILED_COMMENT_FOR_PARAMETER = "/* = compiled code */" private val FLEXIBLE_TYPE_COMMENT = "/* platform type */"