IDEA-131450 Debugger: Evaluate: multidimensional arrays creation expression can't be processed

This commit is contained in:
Egor.Ushakov
2014-11-18 17:49:03 +03:00
parent c893a38a70
commit d46f0ef5d1
2 changed files with 12 additions and 6 deletions
@@ -1249,7 +1249,7 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
}
}
myResult = new ArrayInitializerEvaluator(evaluators);
if (!(expression.getParent() instanceof PsiNewExpression)) {
if (type != null && !(expression.getParent() instanceof PsiNewExpression)) {
myResult = new NewArrayInstanceEvaluator(new TypeEvaluator(JVMNameUtil.getJVMQualifiedName(type)),
null,
myResult);
@@ -95,12 +95,18 @@ class NewArrayInstanceEvaluator implements Evaluator {
int length = arrayReference.length();
for (int idx = 0; idx < length; idx++) {
ArrayReference componentArray = (ArrayReference)arrayReference.getValue(idx);
Object[] componentArrayValues = (Object[])values[idx];
if (componentArray == null) {
componentArray = debugProcess.newInstance(componentType, componentArrayValues.length);
arrayReference.setValue(idx, componentArray);
Object value = values[idx];
if (value instanceof Value) {
arrayReference.setValue(idx, (Value)value);
}
else {
Object[] componentArrayValues = (Object[])value;
if (componentArray == null) {
componentArray = debugProcess.newInstance(componentType, componentArrayValues.length);
arrayReference.setValue(idx, componentArray);
}
setInitialValues(componentArray, componentArrayValues, context);
}
setInitialValues(componentArray, componentArrayValues, context);
}
}
else {