[kotlin] KTIJ-33747 Fix rendering of member info

GitOrigin-RevId: 7e55c557ddaa2035105ba74d35b9ffe03d6f607b
This commit is contained in:
Vladimir Dolzhenko
2025-12-22 18:14:28 +00:00
committed by intellij-monorepo-bot
parent eba3f2f688
commit ab118c5eab
2 changed files with 31 additions and 2 deletions
@@ -165,8 +165,7 @@ public class CreateTestDialog extends DialogWrapper {
}
private void updateMethodsTable() {
List<MemberInfo> methods = TestIntegrationUtils.extractClassMethods(
myTargetClass, myShowInheritedMethodsBox.isSelected());
List<MemberInfo> methods = createMemberInfos(myTargetClass, myShowInheritedMethodsBox.isSelected());
Set<PsiMember> selectedMethods = new HashSet<>();
for (MemberInfo each : myMethodsTable.getSelectedMemberInfos()) {
@@ -179,6 +178,10 @@ public class CreateTestDialog extends DialogWrapper {
myMethodsTable.setMemberInfos(methods);
}
protected @NotNull List<@NotNull MemberInfo> createMemberInfos(PsiClass targetClass, boolean includeInherited) {
return TestIntegrationUtils.extractClassMethods(targetClass, includeInherited);
}
private String getDefaultLibraryName() {
return getProperties().getValue(DEFAULT_LIBRARY_NAME_PROPERTY, "JUnit5");
}
@@ -9,10 +9,16 @@ import com.intellij.psi.PsiClass
import com.intellij.psi.PsiPackage
import com.intellij.psi.codeStyle.JavaCodeStyleSettings
import com.intellij.refactoring.util.RefactoringMessageUtil
import com.intellij.refactoring.util.classMembers.MemberInfo
import com.intellij.testIntegration.createTest.CreateTestDialog
import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.analysis.api.permissions.KaAllowAnalysisOnEdt
import org.jetbrains.kotlin.analysis.api.permissions.allowAnalysisOnEdt
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfoSupport
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtNamedFunction
import org.jetbrains.kotlin.psi.KtProperty
@@ -33,6 +39,26 @@ class KotlinCreateTestDialog(
suggestTestClassName(targetClass, sourceElement)?.let { className = it }
}
override fun createMemberInfos(targetClass: PsiClass?, includeInherited: Boolean): List<MemberInfo> {
return super.createMemberInfos(targetClass, includeInherited).map(::KotlinTestMemberInfo)
}
/**
* Workaround to fix display name rendering for Kotlin test members
*/
@OptIn(KaAllowAnalysisOnEdt::class)
private class KotlinTestMemberInfo(memberInfo: MemberInfo): MemberInfo(memberInfo.member) {
init {
val unwrapped = (memberInfo.member as? KtLightMethod)?.unwrapped
if (unwrapped is KtNamedFunction) {
displayName =
allowAnalysisOnEdt {
KotlinMemberInfoSupport.getInstance().renderMemberInfo(unwrapped)
}
}
}
}
override fun getClassName(): String = explicitClassName ?: super.className
override fun checkCanCreateClass(): String? =