[document parsing]: support c++11 type aliases

with no comment of their own to inherit the
comment of their aliased type. // rdar://13752382

llvm-svn: 180924
This commit is contained in:
Fariborz Jahanian 2013-05-02 15:44:16 +00:00
parent 1d29750b7d
commit 6384fbb28f
2 changed files with 28 additions and 1 deletions

View File

@ -442,7 +442,7 @@ comments::FullComment *ASTContext::getCommentForDecl(
if (comments::FullComment *FC = getCommentForDecl(Overridden[i], PP))
return cloneFullComment(FC, D);
}
else if (const TypedefDecl *TD = dyn_cast<TypedefDecl>(D)) {
else if (const TypedefNameDecl *TD = dyn_cast<TypedefNameDecl>(D)) {
// Attach any tag type's documentation to its typedef if latter
// does not have one of its own.
QualType QT = TD->getUnderlyingType();

View File

@ -0,0 +1,27 @@
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: c-index-test -test-load-source all -comments-xml-schema=%S/../../bindings/xml/comment-xml-schema.rng std=c++11 %s > %t/out
// RUN: FileCheck %s < %t/out
// rdar://13752382
namespace inner {
//! This documentation should be inherited.
struct Opaque;
}
// CHECK: (CXComment_Text Text=[ This documentation should be inherited.])))]
namespace borrow {
//! This is documentation for the typedef (which shows up).
typedef inner::Opaque Typedef;
// CHECK: (CXComment_Text Text=[ This is documentation for the typedef (which shows up).])))]
//! This is documentation for the alias (which shows up).
using Alias = inner::Opaque;
// CHECK: (CXComment_Text Text=[ This is documentation for the alias (which shows up).])))]
typedef inner::Opaque NoDocTypedef;
// CHECK: (CXComment_Text Text=[ This documentation should be inherited.])))]
using NoDocAlias = inner::Opaque;
// CHECK: (CXComment_Text Text=[ This documentation should be inherited.])))]
}