From b03ff9f8d162116c8c2644ac4f912526d250fbee Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Mon, 28 Jul 2008 11:53:26 +0000 Subject: [PATCH] Typeid for pointer to member, bug 242197. --- .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 15 ++++++++++++++- .../core/dom/parser/cpp/GNUCPPSourceParser.java | 3 +++ 2 files changed, 17 insertions(+), 1 deletion(-) 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;