From 0d2decffcfbbe453c6c58fb2f9cb5c0be0082589 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sun, 10 Mar 2013 23:35:12 -0400 Subject: [PATCH] Bug 402861 - Error involving pointer-to-member of template class Change-Id: I418b5698757650f86000c31b8b7ea12e0192fcee Reviewed-on: https://git.eclipse.org/r/11034 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../core/parser/tests/ast2/AST2TemplateTests.java | 15 +++++++++++++++ .../dom/parser/cpp/CPPFieldSpecialization.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index 98f06da5e73..9d6a65a6de9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -6212,6 +6212,21 @@ public class AST2TemplateTests extends AST2TestBase { public void testPointerToMemberAsDependentExpression_391001() throws Exception { parseAndCheckBindings(getAboveComment(), CPP, true); } + + // template + // struct A { + // char x; + // }; + // + // typedef A B; + // + // template + // struct C {}; + // + // typedef C<&B::x> T; + public void testPointerToMemberOfTemplateClass_402861() throws Exception { + parseAndCheckBindings(); + } // class Memory { }; // Memory memory; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFieldSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFieldSpecialization.java index 39b4c496cd9..ebc64913b07 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFieldSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFieldSpecialization.java @@ -44,7 +44,7 @@ public class CPPFieldSpecialization extends CPPSpecialization implements ICPPFie @Override public ICPPClassType getClassOwner() { - return getField().getClassOwner(); + return (ICPPClassType) getOwner(); } @Override