From f78158904b16abcb7731c5904a5750edb5bea5da Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sun, 7 Jul 2019 18:24:18 -0400 Subject: [PATCH] Bug 549035 - Constructor with reference to initializer list Change-Id: I83fd8d2453c36feb51bab80b5bf0943b68a1c97a --- .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 14 ++++++++++++++ .../core/dom/parser/cpp/semantics/Conversions.java | 1 + 2 files changed, 15 insertions(+) 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 f38ec70b8ba..005478412bc 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 @@ -12852,6 +12852,20 @@ public class AST2CPPTests extends AST2CPPTestBase { bh.assertImplicitName("a0", 2, IProblemBinding.class); } + // namespace std { + // template + // class initializer_list {}; + // } + // + // struct A { + // A(const std::initializer_list&); + // }; + // + // A a{1, 3, 5, 6}; + public void testInitListConstRef_549035() throws Exception { + parseAndCheckImplicitNameBindings(); + } + // struct type { // type(int a) {} // }; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java index 61627f970d6..b4858bbd4b4 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/Conversions.java @@ -400,6 +400,7 @@ public class Conversions { } static IType getInitListType(IType target) { + target = getNestedType(target, REF | TDEF | CVTYPE); if (target instanceof ICPPClassType && target instanceof ICPPTemplateInstance) { ICPPTemplateInstance inst = (ICPPTemplateInstance) target; if (CharArrayUtils.equals(INITIALIZER_LIST_NAME, inst.getNameCharArray())) {