diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-08-07 18:59:04 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-08-07 18:59:04 +0000 |
commit | cff339a60a571a606a7510548f661dc6a719368d (patch) | |
tree | 3abed613ae0b8025332a5c40918ebb696aa4695a | |
parent | d43e114291eed272f8d7b735d3d1c4ca4cd04986 (diff) |
Comment AST: DeclInfo: add a special kind for enums.
Comment XML: add a root node kind for enums.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161442 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | bindings/xml/comment-xml-schema.rng | 31 | ||||
-rw-r--r-- | include/clang/AST/Comment.h | 5 | ||||
-rw-r--r-- | lib/AST/Comment.cpp | 3 | ||||
-rw-r--r-- | test/Index/Inputs/CommentXML/valid-enum-01.xml | 6 | ||||
-rw-r--r-- | test/Index/annotate-comments.cpp | 12 | ||||
-rw-r--r-- | test/Index/comment-xml-schema.c | 3 | ||||
-rw-r--r-- | tools/libclang/CXComment.cpp | 4 |
7 files changed, 61 insertions, 3 deletions
diff --git a/bindings/xml/comment-xml-schema.rng b/bindings/xml/comment-xml-schema.rng index 8071b3a06c..69d8229d6b 100644 --- a/bindings/xml/comment-xml-schema.rng +++ b/bindings/xml/comment-xml-schema.rng @@ -13,6 +13,7 @@ <ref name="Variable" /> <ref name="Namespace" /> <ref name="Typedef" /> + <ref name="Enum" /> </choice> </start> @@ -216,6 +217,36 @@ </element> </define> + <define name="Enum"> + <element name="Enum"> + <ref name="attrSourceLocation" /> + <ref name="Name" /> + <optional> + <ref name="USR" /> + </optional> + <optional> + <ref name="Abstract" /> + </optional> + + <!-- Template parameters, parameters and results don't make sense for + enums, but the user can specify \tparam \param or \returns in a + comment anyway. --> + <optional> + <ref name="TemplateParameters" /> + </optional> + <optional> + <ref name="Parameters" /> + </optional> + <optional> + <ref name="ResultDiscussion" /> + </optional> + + <optional> + <ref name="Discussion" /> + </optional> + </element> + </define> + <define name="attrSourceLocation"> <optional> <attribute name="file"> diff --git a/include/clang/AST/Comment.h b/include/clang/AST/Comment.h index 43d14ec238..01aaac3f77 100644 --- a/include/clang/AST/Comment.h +++ b/include/clang/AST/Comment.h @@ -962,7 +962,10 @@ struct DeclInfo { /// A C++ typedef-name (a 'typedef' decl specifier or alias-declaration), /// see \c TypedefNameDecl. - TypedefKind + TypedefKind, + + /// An enumeration or scoped enumeration. + EnumKind }; /// What kind of template specialization \c ThisDecl is. diff --git a/lib/AST/Comment.cpp b/lib/AST/Comment.cpp index de569d5276..8a711f0c1f 100644 --- a/lib/AST/Comment.cpp +++ b/lib/AST/Comment.cpp @@ -251,6 +251,9 @@ void DeclInfo::fill() { TemplateParameters = TAT->getTemplateParameters(); break; } + case Decl::Enum: + Kind = EnumKind; + break; } IsFilled = true; diff --git a/test/Index/Inputs/CommentXML/valid-enum-01.xml b/test/Index/Inputs/CommentXML/valid-enum-01.xml new file mode 100644 index 0000000000..e346d738eb --- /dev/null +++ b/test/Index/Inputs/CommentXML/valid-enum-01.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<Enum> +<Name>aaa</Name> +<Abstract><Para>Aaa.</Para></Abstract> +</Enum> + diff --git a/test/Index/annotate-comments.cpp b/test/Index/annotate-comments.cpp index af026d6454..fbaefca6d5 100644 --- a/test/Index/annotate-comments.cpp +++ b/test/Index/annotate-comments.cpp @@ -428,11 +428,18 @@ namespace comment_to_xml_conversion_13 { } } +/// Aaa. enum comment_to_xml_conversion_15 { /// Aaa. comment_to_xml_conversion_16 }; +/// Aaa. +enum class comment_to_xml_conversion_17 { + /// Aaa. + comment_to_xml_conversion_18 +}; + #endif // RUN: rm -rf %t @@ -889,4 +896,7 @@ enum comment_to_xml_conversion_15 { // CHECK: annotate-comments.cpp:422:5: VarDecl=comment_to_xml_conversion_12:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}annotate-comments.cpp" line="422" column="5"><Name>comment_to_xml_conversion_12</Name><USR>c:@comment_to_xml_conversion_12</USR><Abstract><Para> Aaa.</Para></Abstract></Variable>] // CHECK: annotate-comments.cpp:425:11: Namespace=comment_to_xml_conversion_13:{{.*}} FullCommentAsXML=[<Namespace file="{{[^"]+}}annotate-comments.cpp" line="425" column="11"><Name>comment_to_xml_conversion_13</Name><USR>c:@N@comment_to_xml_conversion_13</USR><Abstract><Para> Aaa.</Para></Abstract></Namespace>] // CHECK: annotate-comments.cpp:427:13: Namespace=comment_to_xml_conversion_14:{{.*}} FullCommentAsXML=[<Namespace file="{{[^"]+}}annotate-comments.cpp" line="427" column="13"><Name>comment_to_xml_conversion_14</Name><USR>c:@N@comment_to_xml_conversion_13@N@comment_to_xml_conversion_14</USR><Abstract><Para> Aaa.</Para></Abstract></Namespace>] -// CHECK: annotate-comments.cpp:433:3: EnumConstantDecl=comment_to_xml_conversion_16:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}annotate-comments.cpp" line="433" column="3"><Name>comment_to_xml_conversion_16</Name><USR>c:@E@comment_to_xml_conversion_15@comment_to_xml_conversion_16</USR><Abstract><Para> Aaa.</Para></Abstract></Variable>] +// CHECK: annotate-comments.cpp:432:6: EnumDecl=comment_to_xml_conversion_15:{{.*}} FullCommentAsXML=[<Enum file="{{[^"]+}}annotate-comments.cpp" line="432" column="6"><Name>comment_to_xml_conversion_15</Name><USR>c:@E@comment_to_xml_conversion_15</USR><Abstract><Para> Aaa.</Para></Abstract></Enum>] +// CHECK: annotate-comments.cpp:434:3: EnumConstantDecl=comment_to_xml_conversion_16:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}annotate-comments.cpp" line="434" column="3"><Name>comment_to_xml_conversion_16</Name><USR>c:@E@comment_to_xml_conversion_15@comment_to_xml_conversion_16</USR><Abstract><Para> Aaa.</Para></Abstract></Variable>] +// CHECK: annotate-comments.cpp:438:12: EnumDecl=comment_to_xml_conversion_17:{{.*}} FullCommentAsXML=[<Enum file="{{[^"]+}}annotate-comments.cpp" line="438" column="12"><Name>comment_to_xml_conversion_17</Name><USR>c:@E@comment_to_xml_conversion_17</USR><Abstract><Para> Aaa.</Para></Abstract></Enum>] +// CHECK: annotate-comments.cpp:440:3: EnumConstantDecl=comment_to_xml_conversion_18:{{.*}} FullCommentAsXML=[<Variable file="{{[^"]+}}annotate-comments.cpp" line="440" column="3"><Name>comment_to_xml_conversion_18</Name><USR>c:@E@comment_to_xml_conversion_17@comment_to_xml_conversion_18</USR><Abstract><Para> Aaa.</Para></Abstract></Variable>] diff --git a/test/Index/comment-xml-schema.c b/test/Index/comment-xml-schema.c index 05a4ecaf00..1166e78f57 100644 --- a/test/Index/comment-xml-schema.c +++ b/test/Index/comment-xml-schema.c @@ -23,7 +23,8 @@ // // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-typedef-01.xml // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-typedef-02.xml - +// +// RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/valid-enum-01.xml // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-01.xml 2>&1 | FileCheck %s -check-prefix=INVALID // RUN: xmllint --noout --relaxng %S/../../bindings/xml/comment-xml-schema.rng %S/Inputs/CommentXML/invalid-function-02.xml 2>&1 | FileCheck %s -check-prefix=INVALID diff --git a/tools/libclang/CXComment.cpp b/tools/libclang/CXComment.cpp index acb4353418..4e7bf76951 100644 --- a/tools/libclang/CXComment.cpp +++ b/tools/libclang/CXComment.cpp @@ -1065,6 +1065,10 @@ void CommentASTToXMLConverter::visitFullComment(const FullComment *C) { RootEndTag = "</Typedef>"; Result << "<Typedef"; break; + case DeclInfo::EnumKind: + RootEndTag = "</Enum>"; + Result << "<Enum"; + break; } { |