Debugger: Simplify method filters, use smart pointer in KotlinLambdaMethodFilter

This commit is contained in:
Yan Zhulanow
2019-11-21 00:57:56 +09:00
parent c6262b5ff2
commit 1a3553cdb7
4 changed files with 29 additions and 41 deletions
@@ -14,7 +14,7 @@ import com.intellij.debugger.impl.PositionUtil
import com.intellij.execution.process.ProcessOutputTypes
import com.sun.jdi.request.StepRequest
import org.jetbrains.kotlin.idea.debugger.stepping.*
import org.jetbrains.kotlin.idea.debugger.stepping.filter.KotlinBasicStepMethodFilter
import org.jetbrains.kotlin.idea.debugger.stepping.filter.KotlinOrdinaryMethodFilter
import org.jetbrains.kotlin.idea.debugger.stepping.filter.KotlinLambdaMethodFilter
import org.jetbrains.kotlin.idea.debugger.stepping.smartStepInto.KotlinLambdaSmartStepTarget
import org.jetbrains.kotlin.idea.debugger.stepping.smartStepInto.KotlinMethodSmartStepTarget
@@ -23,7 +23,6 @@ import org.jetbrains.kotlin.idea.debugger.test.util.SteppingInstruction
import org.jetbrains.kotlin.idea.debugger.test.util.SteppingInstructionKind
import org.jetbrains.kotlin.idea.debugger.test.util.renderSourcePosition
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstance
@@ -151,17 +150,8 @@ abstract class KotlinDescriptorTestCaseWithStepping : KotlinDescriptorTestCase()
val stepTargets = KotlinSmartStepIntoHandler().findSmartStepTargets(position)
stepTargets.mapNotNull { stepTarget ->
when (stepTarget) {
is KotlinLambdaSmartStepTarget ->
KotlinLambdaMethodFilter(
stepTarget.getLambda(), stepTarget.getCallingExpressionLines()!!, stepTarget.isInline, stepTarget.isSuspend
)
is KotlinMethodSmartStepTarget ->
KotlinBasicStepMethodFilter(
stepTarget.declaration?.createSmartPointer(),
stepTarget.isInvoke,
stepTarget.targetMethodName,
stepTarget.getCallingExpressionLines()!!
)
is KotlinLambdaSmartStepTarget -> KotlinLambdaMethodFilter(stepTarget)
is KotlinMethodSmartStepTarget -> KotlinOrdinaryMethodFilter(stepTarget)
is MethodSmartStepTarget -> BasicStepMethodFilter(stepTarget.method, stepTarget.getCallingExpressionLines())
else -> null
}