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 6125af78517..2cc949f3faa 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 @@ -5951,5 +5951,18 @@ public class AST2CPPTests extends AST2BaseTest { public void testAdjustmentOfParameterTypes_Bug239975() throws Exception { parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP); } - + + // class A { + // public: + // void m(int c); + // }; + // + // void test(char c) { + // void (A::* ptr2mem)(char); + // ptr2mem= reinterpret_cast(&A::m); + // ptr2mem= (void (A::*)(int))(0); + // } + public void testTypeIdForPtrToMember_Bug242197() throws Exception { + parseAndCheckBindings(getAboveComment(), ParserLanguage.CPP); + } } 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 0d5d78103fc..33333999615 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 @@ -2766,6 +2766,9 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { } identifier= name(); + if (identifier.getLastToken().getType() == IToken.tCOLONCOLON) + throwBacktrack(identifier.getLastToken()); + endOffset= identifier.getLastToken().getEndOffset(); encounteredTypename= true; break;