summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-05-07 03:54:19 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-05-07 03:54:19 +0000
commitd9ba224f66af76e66352dcabd52a030e382ee235 (patch)
tree2672a07b55bb73c955fe0ae06ba1a4292e7487a1 /clang/lib/Sema/SemaTemplate.cpp
parent69a4779965a47ca7ce767a2c28fd8ffc041df77c (diff)
downloadbcm5719-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.cpp13
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;
}
OpenPOWER on IntegriCloud