Fix empty run actions in context menu for non-JVM test results.
Issue #KT-36910 Fixed Issue #KT-36909 Fixed
This commit is contained in:
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.run
|
|||||||
import com.intellij.execution.Location
|
import com.intellij.execution.Location
|
||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
|
import org.jetbrains.kotlin.asJava.elements.KtLightElement
|
||||||
import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightClass
|
import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightClass
|
||||||
import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightMethod
|
import org.jetbrains.kotlin.idea.caches.lightClasses.KtFakeLightMethod
|
||||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||||
@@ -16,13 +17,19 @@ import org.jetbrains.kotlin.psi.KtNamedFunction
|
|||||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||||
|
|
||||||
internal fun getTestMethodForKotlinTest(location: Location<*>): PsiMethod? {
|
internal fun getTestMethodForKotlinTest(location: Location<*>): PsiMethod? {
|
||||||
val leaf = location.psiElement
|
val leaf = when (val psi = location.psiElement) {
|
||||||
|
is KtLightElement<*, *> -> psi.kotlinOrigin
|
||||||
|
else -> psi
|
||||||
|
}
|
||||||
val function = leaf?.getParentOfType<KtNamedFunction>(false) ?: return null
|
val function = leaf?.getParentOfType<KtNamedFunction>(false) ?: return null
|
||||||
return KtFakeLightMethod.get(function)
|
return KtFakeLightMethod.get(function)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun getTestClassForKotlinTest(location: Location<*>): PsiClass? {
|
internal fun getTestClassForKotlinTest(location: Location<*>): PsiClass? {
|
||||||
val leaf = location.psiElement
|
val leaf = when (val psi = location.psiElement) {
|
||||||
val owner = leaf?.getParentOfType<KtDeclaration>(true) as? KtClassOrObject ?: return null
|
is KtLightElement<*, *> -> psi.kotlinOrigin
|
||||||
|
else -> psi
|
||||||
|
}
|
||||||
|
val owner = leaf?.getParentOfType<KtDeclaration>(false) as? KtClassOrObject ?: return null
|
||||||
return KtFakeLightClass(owner)
|
return KtFakeLightClass(owner)
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user