From: Richard Smith Date: Mon, 28 Jul 2014 21:16:37 +0000 (+0000) Subject: [modules] PR20475: merging support for alias template declarations. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1e7f3f10ef19076e9783d7dec16ce2b03c1ca2b2;p=clang [modules] PR20475: merging support for alias template declarations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@214124 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Serialization/ASTReaderDecl.cpp b/lib/Serialization/ASTReaderDecl.cpp index 9ed1bf97ec..44214f8209 100644 --- a/lib/Serialization/ASTReaderDecl.cpp +++ b/lib/Serialization/ASTReaderDecl.cpp @@ -2075,6 +2075,9 @@ void ASTDeclReader::mergeTemplatePattern(RedeclarableTemplateDecl *D, Result); if (auto *DVar = dyn_cast(DPattern)) return mergeRedeclarable(DVar, cast(ExistingPattern), Result); + if (auto *DAlias = dyn_cast(DPattern)) + return mergeRedeclarable(DAlias, cast(ExistingPattern), + Result); llvm_unreachable("merged an unknown kind of redeclarable template"); } diff --git a/test/Modules/Inputs/cxx-templates-a.h b/test/Modules/Inputs/cxx-templates-a.h index c95dc6325e..cfb8902db1 100644 --- a/test/Modules/Inputs/cxx-templates-a.h +++ b/test/Modules/Inputs/cxx-templates-a.h @@ -73,3 +73,5 @@ template struct MergeTemplateDefinitions { static constexpr int g(); }; template constexpr int MergeTemplateDefinitions::f() { return 1; } + +template using AliasTemplate = T; diff --git a/test/Modules/Inputs/cxx-templates-b.h b/test/Modules/Inputs/cxx-templates-b.h index efd07c617e..802b9262d8 100644 --- a/test/Modules/Inputs/cxx-templates-b.h +++ b/test/Modules/Inputs/cxx-templates-b.h @@ -63,6 +63,8 @@ template<> struct MergeSpecializations { typedef int explicitly_specialized_in_b; }; +template using AliasTemplate = U; + @import cxx_templates_a; template void UseDefinedInBImplIndirectly(T &v) { PerformDelayedLookup(v);