Debugger: Forbid 'Nothing' constructor calls in evaluated code (KT-33093)

This commit is contained in:
Yan Zhulanow
2019-11-11 18:05:36 +09:00
parent 55b3637f03
commit 82a1750d26
4 changed files with 44 additions and 0 deletions
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.debugger.evaluate.compilation
import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil
import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.codegen.AsmUtil
import org.jetbrains.kotlin.codegen.getCallLabelForLambdaArgument
import org.jetbrains.kotlin.descriptors.*
@@ -196,6 +197,9 @@ class CodeFragmentParameterAnalyzer(
evaluationStatus.error(EvaluationError.SuspendCall)
throw EvaluateExceptionUtil.createEvaluateException("Evaluation of 'suspend' calls is not supported")
}
if (descriptor is ConstructorDescriptor && KotlinBuiltIns.isNothing(descriptor.returnType)) {
throw EvaluateExceptionUtil.createEvaluateException("'Nothing' can't be instantiated")
}
}
return super.visitCallExpression(expression, data)