[cfe-commits] r161261 - in /cfe/trunk: include/clang/AST/Comment.h include/clang/AST/CommentSema.h include/clang/Basic/DiagnosticCommentKinds.td lib/AST/Comment.cpp lib/AST/CommentSema.cpp test/Sema/warn-documentation.cpp

Douglas Gregor dgregor at apple.com
Mon Aug 6 08:42:27 PDT 2012


On Aug 3, 2012, at 2:15 PM, Dmitri Gribenko <gribozavr at gmail.com> wrote:

> Author: gribozavr
> Date: Fri Aug  3 16:15:32 2012
> New Revision: 161261
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=161261&view=rev
> Log:
> Comment diagnostics: warn if \returns is used in a non-function comment or if
> the function returns void.
> 
> Modified:
>    cfe/trunk/include/clang/AST/Comment.h
>    cfe/trunk/include/clang/AST/CommentSema.h
>    cfe/trunk/include/clang/Basic/DiagnosticCommentKinds.td
>    cfe/trunk/lib/AST/Comment.cpp
>    cfe/trunk/lib/AST/CommentSema.cpp
>    cfe/trunk/test/Sema/warn-documentation.cpp
> 
> Modified: cfe/trunk/include/clang/AST/Comment.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Comment.h?rev=161261&r1=161260&r2=161261&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/Comment.h (original)
> +++ cfe/trunk/include/clang/AST/Comment.h Fri Aug  3 16:15:32 2012
> @@ -15,6 +15,7 @@
> #define LLVM_CLANG_AST_COMMENT_H
> 
> #include "clang/Basic/SourceLocation.h"
> +#include "clang/AST/Type.h"
> #include "llvm/ADT/ArrayRef.h"
> #include "llvm/ADT/StringRef.h"
> 
> @@ -919,6 +920,10 @@
>   /// that we consider a "function".
>   ArrayRef<const ParmVarDecl *> ParamVars;
> 
> +  /// Function result type if \c ThisDecl is something that we consider
> +  /// a "function".
> +  QualType ResultType;
> +
>   /// Template parameters that can be referenced by \\tparam if \c ThisDecl is
>   /// a template.
>   const TemplateParameterList *TemplateParameters;
> @@ -926,6 +931,9 @@
>   /// A simplified description of \c ThisDecl kind that should be good enough
>   /// for documentation rendering purposes.
>   enum DeclKind {
> +    /// Everything else not explicitly mentioned below.
> +    OtherKind,
> +
>     /// Something that we consider a "function":
>     /// \li function,
>     /// \li function template,
> 
> Modified: cfe/trunk/include/clang/AST/CommentSema.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/CommentSema.h?rev=161261&r1=161260&r2=161261&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/CommentSema.h (original)
> +++ cfe/trunk/include/clang/AST/CommentSema.h Fri Aug  3 16:15:32 2012
> @@ -181,6 +181,8 @@
> 
>   void checkBlockCommandEmptyParagraph(BlockCommandComment *Command);
> 
> +  void checkReturnsCommand(const BlockCommandComment *Command);
> +
>   bool isFunctionDecl();
>   bool isTemplateDecl();
> 
> @@ -210,6 +212,7 @@
>   bool isBlockCommand(StringRef Name);
>   bool isParamCommand(StringRef Name);
>   bool isTParamCommand(StringRef Name);
> +  bool isReturnsCommand(StringRef Name);
>   unsigned getBlockCommandNumArgs(StringRef Name);
> 
>   bool isInlineCommand(StringRef Name) const;
> 
> Modified: cfe/trunk/include/clang/Basic/DiagnosticCommentKinds.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticCommentKinds.td?rev=161261&r1=161260&r2=161261&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/DiagnosticCommentKinds.td (original)
> +++ cfe/trunk/include/clang/Basic/DiagnosticCommentKinds.td Fri Aug  3 16:15:32 2012
> @@ -98,5 +98,17 @@
> def note_doc_tparam_name_suggestion : Note<
>   "did you mean '%0'?">;
> 
> +// \returns command
> +
> +def warn_doc_returns_not_attached_to_a_function_decl : Warning<
> +  "'\\%0' command used in a comment that is not attached to "
> +  "a function declaration">,
> +  InGroup<Documentation>, DefaultIgnore;

"function or method", to cover ObjC methods?

> +def warn_doc_returns_attached_to_a_void_function : Warning<
> +  "'\\%0' command used in a comment that is attached to a "
> +  "%select{void function|constructor|destructor}1">,
> +  InGroup<Documentation>, DefaultIgnore;

Should the select also specialize for 'method', for ObjCMethodDecls?

	- Doug



More information about the cfe-commits mailing list