Fix NPE from KotlinBuiltInDecompiler
This happened because of bae955aafd: similarly to the corresponding code in
the compiler, the IDE should also skip the metadata for kotlin.Cloneable when
decompiling built-ins because the deserializer is not going to resolve this
class from the metadata
This commit is contained in:
+2
-1
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
|||||||
import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf
|
import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment
|
import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl
|
import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl
|
||||||
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
import java.io.ByteArrayInputStream
|
import java.io.ByteArrayInputStream
|
||||||
|
|
||||||
class KotlinBuiltInDecompiler : ClassFileDecompilers.Full() {
|
class KotlinBuiltInDecompiler : ClassFileDecompilers.Full() {
|
||||||
@@ -82,7 +83,7 @@ fun buildDecompiledTextForBuiltIns(builtInFile: VirtualFile): DecompiledText {
|
|||||||
declarations.addAll(resolver.resolveDeclarationsInFacade(packageFqName))
|
declarations.addAll(resolver.resolveDeclarationsInFacade(packageFqName))
|
||||||
for (classProto in file.classesToDecompile) {
|
for (classProto in file.classesToDecompile) {
|
||||||
val classId = file.nameResolver.getClassId(classProto.fqName)
|
val classId = file.nameResolver.getClassId(classProto.fqName)
|
||||||
declarations.add(resolver.resolveTopLevelClass(classId)!!)
|
declarations.addIfNotNull(resolver.resolveTopLevelClass(classId))
|
||||||
}
|
}
|
||||||
return buildDecompiledText(packageFqName, declarations, decompilerRendererForBuiltIns)
|
return buildDecompiledText(packageFqName, declarations, decompilerRendererForBuiltIns)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl
|
|||||||
import org.jetbrains.kotlin.serialization.js.JsProtoBuf
|
import org.jetbrains.kotlin.serialization.js.JsProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
|
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
|
||||||
import org.jetbrains.kotlin.utils.JsMetadataVersion
|
import org.jetbrains.kotlin.utils.JsMetadataVersion
|
||||||
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
import java.io.ByteArrayInputStream
|
import java.io.ByteArrayInputStream
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
|
|
||||||
@@ -76,7 +77,7 @@ fun buildDecompiledTextFromJsMetadata(kjsmFile: VirtualFile): DecompiledText {
|
|||||||
declarations.addAll(resolver.resolveDeclarationsInFacade(packageFqName))
|
declarations.addAll(resolver.resolveDeclarationsInFacade(packageFqName))
|
||||||
for (klass in file.classesToDecompile) {
|
for (klass in file.classesToDecompile) {
|
||||||
val classId = file.nameResolver.getClassId(klass.fqName)
|
val classId = file.nameResolver.getClassId(klass.fqName)
|
||||||
declarations.add(resolver.resolveTopLevelClass(classId)!!)
|
declarations.addIfNotNull(resolver.resolveTopLevelClass(classId))
|
||||||
}
|
}
|
||||||
return buildDecompiledText(packageFqName, declarations, decompilerRendererForJS)
|
return buildDecompiledText(packageFqName, declarations, decompilerRendererForJS)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user