Skip to content

Commit 9711854

Browse files
committed
Fix NPE from KotlinBuiltInDecompiler
This happened because of bae955a: 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 (cherry picked from commit cdeabf2)
1 parent ed98ff3 commit 9711854

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/builtIns/KotlinBuiltInDecompiler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer
3636
import org.jetbrains.kotlin.serialization.builtins.BuiltInsProtoBuf
3737
import org.jetbrains.kotlin.serialization.deserialization.MetadataPackageFragment
3838
import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl
39+
import org.jetbrains.kotlin.utils.addIfNotNull
3940
import java.io.ByteArrayInputStream
4041

4142
class KotlinBuiltInDecompiler : ClassFileDecompilers.Full() {
@@ -82,7 +83,7 @@ fun buildDecompiledTextForBuiltIns(builtInFile: VirtualFile): DecompiledText {
8283
declarations.addAll(resolver.resolveDeclarationsInFacade(packageFqName))
8384
for (classProto in file.classesToDecompile) {
8485
val classId = file.nameResolver.getClassId(classProto.fqName)
85-
declarations.add(resolver.resolveTopLevelClass(classId)!!)
86+
declarations.addIfNotNull(resolver.resolveTopLevelClass(classId))
8687
}
8788
return buildDecompiledText(packageFqName, declarations, decompilerRendererForBuiltIns)
8889
}

idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/js/KotlinJavaScriptMetaFileDecompiler.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl
3333
import org.jetbrains.kotlin.serialization.js.JsProtoBuf
3434
import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol
3535
import org.jetbrains.kotlin.utils.JsMetadataVersion
36+
import org.jetbrains.kotlin.utils.addIfNotNull
3637
import java.io.ByteArrayInputStream
3738
import java.io.IOException
3839

@@ -76,7 +77,7 @@ fun buildDecompiledTextFromJsMetadata(kjsmFile: VirtualFile): DecompiledText {
7677
declarations.addAll(resolver.resolveDeclarationsInFacade(packageFqName))
7778
for (klass in file.classesToDecompile) {
7879
val classId = file.nameResolver.getClassId(klass.fqName)
79-
declarations.add(resolver.resolveTopLevelClass(classId)!!)
80+
declarations.addIfNotNull(resolver.resolveTopLevelClass(classId))
8081
}
8182
return buildDecompiledText(packageFqName, declarations, decompilerRendererForJS)
8283
}

0 commit comments

Comments
 (0)