IDEA-67963 Autoboxing not working for array initializers in debugger evaluation

This commit is contained in:
peter
2011-10-18 19:45:46 +02:00
parent bb6c7e0e3a
commit 89bf8b86f2
@@ -1194,11 +1194,15 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
public void visitArrayInitializerExpression(PsiArrayInitializerExpression expression) {
PsiExpression[] initializers = expression.getInitializers();
Evaluator[] evaluators = new Evaluator[initializers.length];
final PsiType type = expression.getType();
boolean primitive = type instanceof PsiArrayType && ((PsiArrayType)type).getComponentType() instanceof PsiPrimitiveType;
for (int idx = 0; idx < initializers.length; idx++) {
PsiExpression initializer = initializers[idx];
initializer.accept(this);
if (myResult != null) {
evaluators[idx] = new DisableGC(handleUnaryNumericPromotion(initializer.getType(), myResult));
final Evaluator coerced =
primitive ? handleUnaryNumericPromotion(initializer.getType(), myResult) : new BoxingEvaluator(myResult);
evaluators[idx] = new DisableGC(coerced);
}
else {
throwEvaluateException(DebuggerBundle.message("evaluation.error.invalid.expression", initializer.getText()));