diff options
| -rw-r--r-- | clang/include/clang/AST/DeclTemplate.h | 2 | ||||
| -rw-r--r-- | clang/lib/AST/DeclTemplate.cpp | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/clang/include/clang/AST/DeclTemplate.h b/clang/include/clang/AST/DeclTemplate.h index 8d3cfad8179..b26c569d5d0 100644 --- a/clang/include/clang/AST/DeclTemplate.h +++ b/clang/include/clang/AST/DeclTemplate.h @@ -592,6 +592,8 @@ public: return getInstantiatedFromMemberTemplateImpl(); } + virtual RedeclarableTemplateDecl *getNextRedeclaration(); + // Implement isa/cast/dyncast/etc. static bool classof(const Decl *D) { return classofKind(D->getKind()); } static bool classof(const RedeclarableTemplateDecl *D) { return true; } diff --git a/clang/lib/AST/DeclTemplate.cpp b/clang/lib/AST/DeclTemplate.cpp index 0ca2837627f..25df086e73c 100644 --- a/clang/lib/AST/DeclTemplate.cpp +++ b/clang/lib/AST/DeclTemplate.cpp @@ -119,6 +119,13 @@ void RedeclarableTemplateDecl::setPreviousDeclarationImpl( } } +RedeclarableTemplateDecl *RedeclarableTemplateDecl::getNextRedeclaration() { + if (CommonOrPrev.is<RedeclarableTemplateDecl*>()) + return CommonOrPrev.get<RedeclarableTemplateDecl*>(); + CommonBase *Common = CommonOrPrev.get<CommonBase*>(); + return Common ? Common->Latest : this; +} + //===----------------------------------------------------------------------===// // FunctionTemplateDecl Implementation //===----------------------------------------------------------------------===// |

