From 91d6659911be3cac503e6d9ad1b4893a381a9573 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 9 Feb 2009 14:05:21 +0000 Subject: [PATCH] type of new-expression, bug 264163. --- .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 12 ++++++++++++ .../core/dom/parser/cpp/CPPASTNewExpression.java | 3 ++- .../core/dom/parser/cpp/semantics/CPPVisitor.java | 1 - 3 files changed, 14 insertions(+), 2 deletions(-) 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 20046f4c620..49e8642cfcf 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 @@ -6706,4 +6706,16 @@ public class AST2CPPTests extends AST2BaseTest { ba.assertNonProblem("fip(0)", 3, ICPPFunction.class); ba.assertNonProblem("fia(0)", 3, ICPPFunction.class); } + + // class cl {}; + // typedef cl tl; + // void reset(cl* ptr){}; + // void blatest() { + // reset(new tl()); + // reset(new cl()); + // } + public void testTypeOfNewExpression_264163() throws Exception { + String code= getAboveComment(); + parseAndCheckBindings(code, ParserLanguage.CPP); + } } 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 d99297e7b0f..3febc0a9c27 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 @@ -209,6 +209,7 @@ public class CPPASTNewExpression extends ASTNode implements } public IType getExpressionType() { - return CPPVisitor.createType(getTypeId()); + IType t= CPPVisitor.createType(getTypeId()); + return new CPPPointerType(t); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java index b7586ed0174..f6a658146fd 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java @@ -1706,7 +1706,6 @@ public class CPPVisitor extends ASTQueries { if (binding instanceof ICPPConstructor) { try { type= ((ICPPConstructor) binding).getClassOwner(); - type = new CPPPointerType(type); } catch (DOMException e) { type = e.getProblem(); }