Replace getEntries with hardcoded PsiMethod in LC decompiled declaration

This adds NotNull annotation.

^KTIJ-23530 Fixed
This commit is contained in:
Roman Efremov
2022-12-21 20:04:30 +01:00
committed by Space Team
parent cbb20ce2b8
commit 25f65aff3a
3 changed files with 16 additions and 17 deletions
@@ -20,7 +20,9 @@ import org.jetbrains.kotlin.analysis.decompiler.psi.file.KtClsFile
import org.jetbrains.kotlin.analyzer.KotlinModificationTrackerService
import org.jetbrains.kotlin.asJava.classes.KotlinClassInnerStuffCache
import org.jetbrains.kotlin.asJava.classes.LightClassesLazyCreator
import org.jetbrains.kotlin.asJava.classes.getEnumEntriesPsiMethod
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.isGetEntriesMethod
import org.jetbrains.kotlin.asJava.isSyntheticValuesOrValueOfMethod
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -159,8 +161,12 @@ open class KtLightClassForDecompiledDeclaration(
private val _methods: MutableList<PsiMethod> by lazyPub {
mutableListOf<PsiMethod>().also {
val isEnum = isEnum
clsDelegate.methods.mapNotNullTo(it) { psiMethod ->
if (isSyntheticValuesOrValueOfMethod(psiMethod)) return@mapNotNullTo null
if (isEnum && isGetEntriesMethod(psiMethod)) {
return@mapNotNullTo getEnumEntriesPsiMethod(this)
}
KtLightMethodForDecompiledDeclaration(
funDelegate = psiMethod,
funParent = this,
@@ -24,4 +24,13 @@ fun isSyntheticValuesOrValueOfMethod(method: PsiMethod): Boolean {
}
return false
}
}
fun isGetEntriesMethod(method: PsiMethod): Boolean {
return with(method) {
name == "getEntries" &&
parameterList.parametersCount == 0 &&
hasModifierProperty(PsiModifier.PUBLIC) &&
hasModifierProperty(PsiModifier.STATIC)
}
}
@@ -1,16 +0,0 @@
public enum MyEnumClass /* one.MyEnumClass*/ {
Entry;
@org.jetbrains.annotations.NotNull()
public static one.MyEnumClass valueOf(java.lang.String) throws java.lang.IllegalArgumentException, java.lang.NullPointerException;// valueOf(java.lang.String)
@org.jetbrains.annotations.NotNull()
public static one.MyEnumClass[] values();// values()
private MyEnumClass();// .ctor()
public final int doo();// doo()
public static kotlin.enums.EnumEntries<one.MyEnumClass> getEntries();// getEntries()
}