From 3d94e24317361141fa2b78b2787d3f5524e11024 Mon Sep 17 00:00:00 2001 From: Sergey Prigogin Date: Mon, 23 May 2016 21:11:48 -0700 Subject: [PATCH] Bug 494359 - Explicit specialization is improperly ignored Test case. Change-Id: I9eb34ad4d3309bf568d26338bd7611fa9fea0673 --- .../tests/IndexBindingResolutionTestBase.java | 1 + .../index/tests/IndexMultiFileTest.java | 39 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java index abbc35b9af4..d4f4d4486ac 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBindingResolutionTestBase.java @@ -388,6 +388,7 @@ public abstract class IndexBindingResolutionTestBase extends BaseTestCase { static protected class NameCollector extends ASTVisitor { { shouldVisitNames = true; + shouldVisitImplicitNames = true; } public List nameList = new ArrayList<>(); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexMultiFileTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexMultiFileTest.java index 1faae43b576..4824a655688 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexMultiFileTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexMultiFileTest.java @@ -124,4 +124,43 @@ public class IndexMultiFileTest extends IndexBindingResolutionTestBase { public void testNamespace_481161() throws Exception { checkBindings(); } + + // A.h + // #include "B.h" + // + // template + // struct A { + // A(D p); + // }; + // + // template <> + // struct A { + // A(D p); + // }; + + // B.h + // struct B {}; + // + // struct C {}; + // + // template + // struct D {}; + + // C.h + // class B; + + // confuser.cpp + // #include "B.h" + + // test.cpp * + // #include "A.h" + // #include "C.h" + // + // void test() { + // D x; + // new A(x); + // } + public void testExplicitSpecialization_494359() throws Exception { + checkBindings(); + } }