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 a5a89050180..bfb3c271c35 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 @@ -5490,4 +5490,17 @@ public class AST2CPPTests extends AST2BaseTest { StringBuffer buffer = getContents(1)[0]; parse( buffer.toString(), ParserLanguage.CPP, true, true ); } + + public void testBug178059() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append( "class A { \n"); //$NON-NLS-1$ + buffer.append( " double operator*(const A&); \n"); //$NON-NLS-1$ + buffer.append( "}; \n"); //$NON-NLS-1$ + buffer.append( "class B : public A { \n"); //$NON-NLS-1$ + buffer.append( " double operator*(double); \n"); //$NON-NLS-1$ + buffer.append( " using A::operator*; \n"); //$NON-NLS-1$ + buffer.append( "} \n"); //$NON-NLS-1$ + + parse( buffer.toString(), ParserLanguage.CPP, true, true ); + } } 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 2b91a5c01f7..404614280cf 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 @@ -2075,7 +2075,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { consume(); } - IASTName name = createName(name()); + IASTName name = idExpression(); int end; switch (LT(1)) { case IToken.tSEMI: