diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java index 85ecf131ee7..cd8097be7fa 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecFailingTest.java @@ -48,23 +48,6 @@ public class AST2CPPSpecFailingTest extends AST2SpecBaseTest { parse(getAboveComment(), ParserLanguage.CPP, true, 2); } - // class T { - // // ... - // public: - // T(); - // T(int); - // T(int, int); - // }; - // T(a); //declaration - // T(*b)(); //declaration - // T(c)=7; //declaration - // T(d),e,f=3; //declaration - // extern int h; - // T(g)(h,2); //declaration - public void _test6_8s2() throws Exception { // TODO raised bug 90622 - parse(getAboveComment(), ParserLanguage.CPP, true, 0); - } - // struct B { // virtual void f(int); // virtual void f(char); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java index 2bd9c35815b..b6778113772 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPSpecTest.java @@ -995,6 +995,23 @@ public class AST2CPPSpecTest extends AST2SpecBaseTest { parse(getAboveComment(), ParserLanguage.CPP, false, 0); } + // class T { + // // ... + // public: + // T(); + // T(int); + // T(int, int); + // }; + // T(a); //declaration + // T(*b)(); //declaration + // T(c)=7; //declaration + // T(d),e,f=3; //declaration + // extern int h; + // T(g)(h,2); //declaration + public void test6_8s2() throws Exception { // TODO raised bug 90622 + parse(getAboveComment(), ParserLanguage.CPP, true, 0); + } + // struct T1 { // T1 operator()(int x) { return T1(x); } // int operator=(int x) { return x; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index bd5a1dbcae6..79616fe98ae 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -3237,7 +3237,6 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { */ protected IASTDeclarator initDeclarator(DtorStrategy strategy, DeclarationOptions option) throws EndOfFileException, BacktrackException { - final IASTDeclarator dtor= declarator(strategy, option); if (option.fAllowInitializer) { IASTInitializer initializer= optionalCPPInitializer(dtor); @@ -3420,9 +3419,9 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { if (LT(1) == IToken.tRPAREN) throwBacktrack(LA(1)); - final IASTDeclarator nested= declarator(strategy, option); + final IASTDeclarator nested= declarator(DtorStrategy.PREFER_FUNCTION, option); endOffset= consume(IToken.tRPAREN).getEndOffset(); - final IASTDeclarator cand2= declarator(pointerOps, null, nested, startingOffset, endOffset, DtorStrategy.PREFER_FUNCTION, option); + final IASTDeclarator cand2= declarator(pointerOps, null, nested, startingOffset, endOffset, strategy, option); if (cand1 == null || cand1End == null) return cand2; final IToken cand2End= LA(1);