[Index/DocComments] When cloning a full comment, pick the template parameters from the original FullComment,

if the parameters are not already set (e.g. because it is a typedef).

Fixes crash of rdar://16128173

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@207382 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Argyrios Kyrtzidis 2014-04-27 22:53:03 +00:00
parent 68dfabb403
commit 22ede254f8
2 changed files with 17 additions and 0 deletions

View File

@ -422,6 +422,8 @@ comments::FullComment *ASTContext::cloneFullComment(comments::FullComment *FC,
ThisDeclInfo->IsFilled = false;
ThisDeclInfo->fill();
ThisDeclInfo->CommentDecl = FC->getDecl();
if (!ThisDeclInfo->TemplateParameters)
ThisDeclInfo->TemplateParameters = FC->getDeclInfo()->TemplateParameters;
comments::FullComment *CFC =
new (*this) comments::FullComment(FC->getBlocks(),
ThisDeclInfo);

View File

@ -67,3 +67,18 @@ void func_template_1(T AAA);
template<template<template<typename CCC> class DDD, class BBB> class AAA>
void func_template_2();
// FIXME: There is not Declaration field in the generated output.
namespace rdar16128173 {
// CHECK: <Declaration>template &lt;class PtrTy&gt; class OpaquePtr {}</Declaration>
/// \brief Wrapper for void* pointer.
/// \tparam PtrTy Either a pointer type like 'T*' or a type that behaves like
/// a pointer.
template <class PtrTy>
class OpaquePtr {};
// CHECK: <Declaration>typedef OpaquePtr&lt;int&gt; DeclGroupPtrTy</Declaration>
typedef OpaquePtr<int> DeclGroupPtrTy;
DeclGroupPtrTy blah;
}