Fixed possible NPE in LightClasses

Fixed #EA-218014
This commit is contained in:
Igor Yakovlev
2020-04-21 14:21:13 +03:00
parent 8a7aac728d
commit 72303fd2ad
@@ -246,8 +246,8 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
private fun findCorrespondingLightClass( private fun findCorrespondingLightClass(
decompiledClassOrObject: KtClassOrObject, decompiledClassOrObject: KtClassOrObject,
rootLightClassForDecompiledFile: KtLightClassForDecompiledDeclaration rootLightClassForDecompiledFile: KtLightClassForDecompiledDeclaration
): KtLightClassForDecompiledDeclaration { ): KtLightClassForDecompiledDeclaration? {
val relativeFqName = getClassRelativeName(decompiledClassOrObject) val relativeFqName = getClassRelativeName(decompiledClassOrObject) ?: return null
val iterator = relativeFqName.pathSegments().iterator() val iterator = relativeFqName.pathSegments().iterator()
val base = iterator.next() val base = iterator.next()
assert(rootLightClassForDecompiledFile.name == base.asString()) { assert(rootLightClassForDecompiledFile.name == base.asString()) {
@@ -267,8 +267,8 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
return current return current
} }
private fun getClassRelativeName(decompiledClassOrObject: KtClassOrObject): FqName { private fun getClassRelativeName(decompiledClassOrObject: KtClassOrObject): FqName? {
val name = decompiledClassOrObject.nameAsName!! val name = decompiledClassOrObject.nameAsName ?: return null
val parent = PsiTreeUtil.getParentOfType( val parent = PsiTreeUtil.getParentOfType(
decompiledClassOrObject, decompiledClassOrObject,
KtClassOrObject::class.java, KtClassOrObject::class.java,
@@ -278,7 +278,7 @@ class IDEKotlinAsJavaSupport(private val project: Project) : KotlinAsJavaSupport
assert(decompiledClassOrObject.isTopLevel()) assert(decompiledClassOrObject.isTopLevel())
return FqName.topLevel(name) return FqName.topLevel(name)
} }
return getClassRelativeName(parent).child(name) return getClassRelativeName(parent)?.child(name)
} }
private fun createLightClassForDecompiledKotlinFile(file: KtClsFile): KtLightClassForDecompiledDeclaration? { private fun createLightClassForDecompiledKotlinFile(file: KtClsFile): KtLightClassForDecompiledDeclaration? {