From 0ff408c23895fd714c0df430af64571c21e8a285 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Fri, 8 May 2015 09:28:42 -0500 Subject: [PATCH] Bug 466845 - Parameter pack of reference type as field owner Change-Id: Ib1a04bbe50817db5400c70d494fd9d938458020f Signed-off-by: Nathan Ridge --- .../parser/tests/ast2/AST2TemplateTests.java | 28 +++++++++++++++++++ .../dom/parser/cpp/semantics/CPPVisitor.java | 2 +- 2 files changed, 29 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 61b71b28cbf..4c5c5fbd080 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 @@ -8166,6 +8166,34 @@ public class AST2TemplateTests extends AST2TestBase { public void testMemberAccessInPackExpansion_442213() throws Exception { parseAndCheckBindings(); } + + // // Example 1 + // template + // void foo1(T&... t) { + // bar(t.waldo...); + // } + // + // // Example 2 + // template struct A {}; + // template + // void foo2(A&... t) { + // bar(t.waldo...); + // } + // + // // Example 3 + // template + // void foo1(T&&... t) { + // bar(t.waldo...); + // } + // + // // Example 4 + // template + // void foo1(const T&... t) { + // bar(t.waldo...); + // } + public void testMemberAccessViaReferenceInPackExpansion_466845() throws Exception { + parseAndCheckBindings(); + } // template // struct A {}; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java index 0d6bbd28aa5..4f9518752e7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPVisitor.java @@ -1296,10 +1296,10 @@ public class CPPVisitor extends ASTQueries { if (parent instanceof ICPPASTFieldReference) { final ICPPASTFieldReference fieldReference = (ICPPASTFieldReference) parent; IType type = fieldReference.getFieldOwnerType(); - type= getUltimateTypeUptoPointers(type); if (type instanceof ICPPParameterPackType) { type = ((ICPPParameterPackType) type).getType(); } + type= getUltimateTypeUptoPointers(type); if (type instanceof ICPPClassType) { type= SemanticUtil.mapToAST(type, fieldReference); return ((ICPPClassType) type).getCompositeScope();