From 8c111ed68e9263f19055defe39ecbcbd9342d808 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Tue, 29 Jul 2014 00:58:01 +0000 Subject: [PATCH] [modules] Add testcase for a bug reduced from a selfhost issue. This bug was never present in Clang trunk, but was present in some of my development work, and it seems like a useful test to have. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214154 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/Modules/Inputs/cxx-templates-a.h | 7 +++++++ test/Modules/Inputs/cxx-templates-b.h | 1 + test/Modules/cxx-templates.cpp | 1 + 3 files changed, 9 insertions(+) diff --git a/test/Modules/Inputs/cxx-templates-a.h b/test/Modules/Inputs/cxx-templates-a.h index cfb8902db1..0289c8ada8 100644 --- a/test/Modules/Inputs/cxx-templates-a.h +++ b/test/Modules/Inputs/cxx-templates-a.h @@ -75,3 +75,10 @@ template struct MergeTemplateDefinitions { template constexpr int MergeTemplateDefinitions::f() { return 1; } template using AliasTemplate = T; + +template struct PartiallyInstantiatePartialSpec {}; +template struct PartiallyInstantiatePartialSpec { + static T *foo() { return reinterpret_cast(0); } + static T *bar() { return reinterpret_cast(0); } +}; +typedef PartiallyInstantiatePartialSpec PartiallyInstantiatePartialSpecHelper; diff --git a/test/Modules/Inputs/cxx-templates-b.h b/test/Modules/Inputs/cxx-templates-b.h index 802b9262d8..5dbf1a1121 100644 --- a/test/Modules/Inputs/cxx-templates-b.h +++ b/test/Modules/Inputs/cxx-templates-b.h @@ -73,4 +73,5 @@ template void UseDefinedInBImplIndirectly(T &v) { void TriggerInstantiation() { UseDefinedInBImpl(); Std::f(); + PartiallyInstantiatePartialSpec::foo(); } diff --git a/test/Modules/cxx-templates.cpp b/test/Modules/cxx-templates.cpp index cbe9f35089..b5036ff956 100644 --- a/test/Modules/cxx-templates.cpp +++ b/test/Modules/cxx-templates.cpp @@ -105,6 +105,7 @@ void g() { int &p = WithPartialSpecializationUse().f(); int &q = WithExplicitSpecializationUse().inner_template(); + int *r = PartiallyInstantiatePartialSpec::bar(); } static_assert(Outer::Inner::f() == 1, ""); -- 2.40.0