diff options
author | John McCall <rjmccall@apple.com> | 2009-12-22 22:26:37 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-12-22 22:26:37 +0000 |
commit | 323c310efa0abd7a786b0303501186b5f33eb8d7 (patch) | |
tree | 0e26bd9e87409bb7fe4ca1ecdc182bcd3ac6f3a3 /lib/Sema/SemaTemplateInstantiateDecl.cpp | |
parent | 90f9382b3e97afa55e6aaaa4ab31c7473a8c7bb9 (diff) |
Add using shadow decls to the "instantiated locals" map, fixing PR5847.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@91928 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplateInstantiateDecl.cpp')
-rw-r--r-- | lib/Sema/SemaTemplateInstantiateDecl.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/Sema/SemaTemplateInstantiateDecl.cpp b/lib/Sema/SemaTemplateInstantiateDecl.cpp index 2ca4810055..18a73250a5 100644 --- a/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -1161,6 +1161,8 @@ Decl *TemplateDeclInstantiator::VisitUsingDecl(UsingDecl *D) { if (NewUD->isInvalidDecl()) return NewUD; + bool isFunctionScope = Owner->isFunctionOrMethod(); + // Process the shadow decls. for (UsingDecl::shadow_iterator I = D->shadow_begin(), E = D->shadow_end(); I != E; ++I) { @@ -1176,6 +1178,9 @@ Decl *TemplateDeclInstantiator::VisitUsingDecl(UsingDecl *D) { UsingShadowDecl *InstShadow = SemaRef.BuildUsingShadowDecl(/*Scope*/ 0, NewUD, InstTarget); SemaRef.Context.setInstantiatedFromUsingShadowDecl(InstShadow, Shadow); + + if (isFunctionScope) + SemaRef.CurrentInstantiationScope->InstantiatedLocal(Shadow, InstShadow); } return NewUD; |