[IDE] Move KotlinJavaScriptMetaFileDecompiler to kotlin.git

KTIJ-27752

GitOrigin-RevId: 4b599ed1e07fbbab8f97ab995172d6eb902277eb
This commit is contained in:
Pavel Kirpichenkov
2023-11-08 20:12:16 +02:00
committed by intellij-monorepo-bot
parent 2a550a0751
commit 3ffacaccc0
8 changed files with 6 additions and 61 deletions

View File

@@ -1,38 +0,0 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.decompiler.js
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinMetadataDecompiler
import org.jetbrains.kotlin.analysis.decompiler.stub.file.KotlinMetadataStubBuilder
import org.jetbrains.kotlin.idea.base.psi.fileTypes.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.metadata.ProtoBuf
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
import org.jetbrains.kotlin.psi.stubs.KotlinStubVersions
import org.jetbrains.kotlin.serialization.js.DynamicTypeDeserializer
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
import org.jetbrains.kotlin.utils.JsMetadataVersion
import java.io.ByteArrayInputStream
class KotlinJavaScriptMetaFileDecompiler : KotlinMetadataDecompiler<JsMetadataVersion>(
fileType = KotlinJavaScriptMetaFileType,
serializerProtocol = { JsSerializerProtocol },
flexibleTypeDeserializer = DynamicTypeDeserializer,
expectedBinaryVersion = { JsMetadataVersion.INSTANCE },
invalidBinaryVersion = { JsMetadataVersion.INVALID_VERSION },
stubVersion = KotlinStubVersions.JS_STUB_VERSION
) {
override fun readFile(bytes: ByteArray, file: VirtualFile): KotlinMetadataStubBuilder.FileWithMetadata {
val stream = ByteArrayInputStream(bytes)
val version = JsMetadataVersion.readFrom(stream)
if (!version.isCompatible()) {
return KotlinMetadataStubBuilder.FileWithMetadata.Incompatible(version)
}
JsProtoBuf.Header.parseDelimitedFrom(stream)
val proto = ProtoBuf.PackageFragment.parseFrom(stream, JsSerializerProtocol.extensionRegistry)
return KotlinMetadataStubBuilder.FileWithMetadata.Compatible(proto, version, JsSerializerProtocol)
}
}

View File

@@ -4,7 +4,7 @@ package org.jetbrains.kotlin.idea.vfilefinder
import com.intellij.util.indexing.DefaultFileTypeSpecificInputFilter
import com.intellij.util.indexing.FileContent
import com.intellij.util.indexing.ID
import org.jetbrains.kotlin.idea.base.psi.fileTypes.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.analysis.decompiler.js.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.utils.JsMetadataVersion

View File

@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType
import org.jetbrains.kotlin.analysis.decompiler.stub.file.ClsKotlinBinaryClassCache
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.base.psi.fileTypes.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.analysis.decompiler.js.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.library.metadata.KlibMetadataProtoBuf
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name

View File

@@ -7,7 +7,7 @@ import com.intellij.openapi.fileTypes.FileType
import org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType
import org.jetbrains.kotlin.idea.KotlinModuleFileType
import org.jetbrains.kotlin.idea.base.psi.fileTypes.KotlinJavaScriptMetaFileType
import org.jetbrains.kotlin.analysis.decompiler.js.KotlinJavaScriptMetaFileType
abstract class KotlinBinaryExtension(val fileType: FileType) {
companion object {

View File

@@ -8,4 +8,5 @@ import org.jetbrains.kotlin.idea.base.psi.KotlinBasePsiBundle
class IdeKotlinLabelProviderService : KotlinLabelProviderService() {
override fun getLabelForBuiltInFileType(): String = KotlinBasePsiBundle.message("kotlin.built.in.file.type")
override fun getLabelForKlibMetaFileType(): String = KotlinBasePsiBundle.message("klib.metadata.short")
override fun getLabelForKotlinJavaScriptMetaFileType(): String = KotlinBasePsiBundle.message("kotlin.javascript.meta.file")
}

View File

@@ -1,18 +0,0 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.kotlin.idea.base.psi.fileTypes
import com.intellij.openapi.fileTypes.FileType
import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.idea.base.psi.KotlinBasePsiBundle
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil
object KotlinJavaScriptMetaFileType : FileType {
override fun getName() = "KJSM"
override fun getDescription() = KotlinBasePsiBundle.message("kotlin.javascript.meta.file")
override fun getDefaultExtension() = KotlinJavascriptSerializationUtil.CLASS_METADATA_FILE_EXTENSION
override fun getIcon() = null
override fun isBinary() = true
override fun isReadOnly() = true
override fun getCharset(file: VirtualFile, content: ByteArray) = null
}

View File

@@ -21,7 +21,7 @@
<fileType name="KNM" fieldName="INSTANCE" extensions="knm"
implementationClass="org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType"/>
<fileType name="KJSM" fieldName="INSTANCE" extensions="kjsm"
implementationClass="org.jetbrains.kotlin.idea.base.psi.fileTypes.KotlinJavaScriptMetaFileType"/>
implementationClass="org.jetbrains.kotlin.analysis.decompiler.js.KotlinJavaScriptMetaFileType"/>
<fileType name="kotlin_builtins" fieldName="INSTANCE" extensions="kotlin_builtins;kotlin_metadata"
implementationClass="org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType"/>
<fileType name="kotlin_module" fieldName="INSTANCE" extensions="kotlin_module"

View File

@@ -189,7 +189,7 @@
<search.topHitProvider implementation="org.jetbrains.kotlin.idea.editor.KotlinEditorOptionsTopHitProvider"/>
<psi.classFileDecompiler implementation="org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler"/>
<psi.classFileDecompiler implementation="org.jetbrains.kotlin.idea.decompiler.js.KotlinJavaScriptMetaFileDecompiler"/>
<psi.classFileDecompiler implementation="org.jetbrains.kotlin.analysis.decompiler.js.KotlinJavaScriptMetaFileDecompiler"/>
<psi.classFileDecompiler implementation="org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInDecompiler"/>
<moduleConfigurationEditorProvider implementation="org.jetbrains.kotlin.idea.roots.ui.NonJvmKotlinModuleEditorsProvider"/>