зеркало из https://github.com/microsoft/clang-1.git
Attach enum's documentation to its typedef if
latter does not have one of its own. // rdar://13067629 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173516 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
d5617eeafc
Коммит
41170b55ba
|
@ -434,6 +434,16 @@ comments::FullComment *ASTContext::getCommentForDecl(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (const TypedefDecl *TD = dyn_cast<TypedefDecl>(D)) {
|
||||||
|
QualType QT = TD->getUnderlyingType();
|
||||||
|
if (const EnumType *ET = QT->getAs<EnumType>()) {
|
||||||
|
if (const EnumDecl *ED = ET->getDecl())
|
||||||
|
if (comments::FullComment *FC = getCommentForDecl(ED, PP)) {
|
||||||
|
comments::FullComment *CFC = cloneFullComment(FC, D);
|
||||||
|
return CFC;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
// 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 %s > %t/out
|
||||||
|
// RUN: FileCheck %s < %t/out
|
||||||
|
// rdar://13067629
|
||||||
|
|
||||||
|
// Ensure that XML we generate is not invalid.
|
||||||
|
// RUN: FileCheck %s -check-prefix=WRONG < %t/out
|
||||||
|
// WRONG-NOT: CommentXMLInvalid
|
||||||
|
|
||||||
|
/** Documentation for NSUInteger */
|
||||||
|
typedef unsigned int NSUInteger;
|
||||||
|
|
||||||
|
/** Documentation for MyEnum */
|
||||||
|
typedef enum : NSUInteger {
|
||||||
|
MyEnumFoo, /**< value Foo */
|
||||||
|
MyEnumBar, /**< value Bar */
|
||||||
|
MyEnumBaz, /**< value Baz */
|
||||||
|
} MyEnum;
|
||||||
|
// CHECK: TypedefDecl=MyEnum:[[@LINE-1]]:3 (Definition) FullCommentAsHTML=[<p class="para-brief"> Documentation for MyEnum </p>] FullCommentAsXML=[<Typedef file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-1]]" column="3"><Name><anonymous></Name><USR>c:@EA@MyEnum</USR><Declaration>typedef enum MyEnum MyEnum</Declaration><Abstract><Para> Documentation for MyEnum </Para></Abstract></Typedef>] CommentXMLValid
|
||||||
|
|
||||||
|
|
||||||
|
/** Documentation for E */
|
||||||
|
enum E {
|
||||||
|
MyEnumFoo, /**< value Foo */
|
||||||
|
MyEnumBar, /**< value Bar */
|
||||||
|
MyEnumBaz, /**< value Baz */
|
||||||
|
};
|
||||||
|
typedef enum E E_T;
|
||||||
|
// CHECK: TypedefDecl=E_T:[[@LINE-1]]:16 (Definition) FullCommentAsHTML=[<p class="para-brief"> Documentation for E </p>] FullCommentAsXML=[<Typedef file="{{[^"]+}}annotate-comments-typedef.m" line="[[@LINE-1]]" column="16"><Name>E</Name><USR>c:@E@E</USR><Declaration>typedef enum E E_T</Declaration><Abstract><Para> Documentation for E </Para></Abstract></Typedef>] CommentXMLValid
|
Загрузка…
Ссылка в новой задаче