diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-05-07 03:54:19 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2015-05-07 03:54:19 +0000 |
commit | d9ba224f66af76e66352dcabd52a030e382ee235 (patch) | |
tree | 2672a07b55bb73c955fe0ae06ba1a4292e7487a1 /clang/lib/Sema/SemaTemplate.cpp | |
parent | 69a4779965a47ca7ce767a2c28fd8ffc041df77c (diff) | |
download | bcm5719-llvm-d9ba224f66af76e66352dcabd52a030e382ee235.tar.gz bcm5719-llvm-d9ba224f66af76e66352dcabd52a030e382ee235.zip |
[modules] Suport for merging a parsed enum definition into an existing imported but not visible definition.
llvm-svn: 236690
Diffstat (limited to 'clang/lib/Sema/SemaTemplate.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplate.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index c642c0599b5..687e6111f2d 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -12,7 +12,6 @@ #include "TreeTransform.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" -#include "clang/AST/ASTMutationListener.h" #include "clang/AST/DeclFriend.h" #include "clang/AST/DeclTemplate.h" #include "clang/AST/Expr.h" @@ -838,7 +837,7 @@ Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, SourceLocation FriendLoc, unsigned NumOuterTemplateParamLists, TemplateParameterList** OuterTemplateParamLists, - bool *SkipBody) { + SkipBodyInfo *SkipBody) { assert(TemplateParams && TemplateParams->size() > 0 && "No template parameters"); assert(TUK != TUK_Reference && "Can only declare or define class templates"); @@ -999,16 +998,12 @@ Sema::CheckClassTemplate(Scope *S, unsigned TagSpec, TagUseKind TUK, // simply making that previous definition visible. NamedDecl *Hidden = nullptr; if (SkipBody && !hasVisibleDefinition(Def, &Hidden)) { - *SkipBody = true; + SkipBody->ShouldSkip = true; auto *Tmpl = cast<CXXRecordDecl>(Hidden)->getDescribedClassTemplate(); assert(Tmpl && "original definition of a class template is not a " "class template?"); - if (auto *Listener = getASTMutationListener()) { - Listener->RedefinedHiddenDefinition(Hidden, KWLoc); - Listener->RedefinedHiddenDefinition(Tmpl, KWLoc); - } - Hidden->setHidden(false); - Tmpl->setHidden(false); + makeMergedDefinitionVisible(Hidden, KWLoc); + makeMergedDefinitionVisible(Tmpl, KWLoc); return Def; } |