From 5a3544dc810e826044bc0de0ce07c4884ccdfc49 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 9 Feb 2009 14:15:38 +0000 Subject: [PATCH] type of new-expression, bug 264163. --- .../eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java | 1 + .../core/dom/parser/cpp/CPPASTNewExpression.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 49e8642cfcf..0c2f2caeb45 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -6713,6 +6713,7 @@ public class AST2CPPTests extends AST2BaseTest { // void blatest() { // reset(new tl()); // reset(new cl()); + // reset(new cl[1]); // } public void testTypeOfNewExpression_264163() throws Exception { String code= getAboveComment(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java index 3febc0a9c27..a418c48618b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTNewExpression.java @@ -12,6 +12,7 @@ package org.eclipse.cdt.internal.core.dom.parser.cpp; import org.eclipse.cdt.core.dom.ast.ASTVisitor; +import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator; import org.eclipse.cdt.core.dom.ast.IASTArrayModifier; import org.eclipse.cdt.core.dom.ast.IASTDeclarator; @@ -19,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; import org.eclipse.cdt.core.dom.ast.IASTTypeId; +import org.eclipse.cdt.core.dom.ast.IArrayType; import org.eclipse.cdt.core.dom.ast.IType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression; import org.eclipse.cdt.internal.core.dom.parser.ASTNode; @@ -210,6 +212,13 @@ public class CPPASTNewExpression extends ASTNode implements public IType getExpressionType() { IType t= CPPVisitor.createType(getTypeId()); + if (t instanceof IArrayType) { + try { + t= ((IArrayType) t).getType(); + } catch (DOMException e) { + return e.getProblem(); + } + } return new CPPPointerType(t); } }