mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-161167 cannot use a qualified class instance creation expression in Java debugger "Evaluate Expression"
This commit is contained in:
+15
-10
@@ -42,6 +42,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.sun.jdi.Value;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -1325,8 +1326,20 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
|
||||
processBoxingConversions(constructor.getParameterList().getParameters(), argExpressions, constructorResolveResult.getSubstitutor(), argumentEvaluators);
|
||||
}
|
||||
|
||||
if (aClass != null && aClass.getContainingClass() != null && !aClass.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
argumentEvaluators = addThisEvaluator(argumentEvaluators, aClass.getContainingClass());
|
||||
if (aClass != null) {
|
||||
PsiClass containingClass = aClass.getContainingClass();
|
||||
if (containingClass != null && !aClass.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
PsiExpression qualifier = expression.getQualifier();
|
||||
if (qualifier != null) {
|
||||
qualifier.accept(this);
|
||||
if (myResult != null) {
|
||||
argumentEvaluators = ArrayUtil.prepend(myResult, argumentEvaluators);
|
||||
}
|
||||
}
|
||||
else {
|
||||
argumentEvaluators = ArrayUtil.prepend(new ThisEvaluator(calcIterationCount(containingClass, "this")), argumentEvaluators);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
JVMName signature = JVMNameUtil.getJVMConstructorSignature(constructor, aClass);
|
||||
@@ -1346,14 +1359,6 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private Evaluator[] addThisEvaluator(Evaluator[] argumentEvaluators, PsiClass cls) {
|
||||
Evaluator[] res = new Evaluator[argumentEvaluators.length+1];
|
||||
int depth = calcIterationCount(cls, "this");
|
||||
res[0] = new ThisEvaluator(depth);
|
||||
System.arraycopy(argumentEvaluators, 0, res, 1, argumentEvaluators.length);
|
||||
return res;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitArrayInitializerExpression(PsiArrayInitializerExpression expression) {
|
||||
PsiExpression[] initializers = expression.getInitializers();
|
||||
|
||||
Reference in New Issue
Block a user