diff options
author | Dmitri Gribenko <gribozavr@gmail.com> | 2012-08-03 21:15:32 +0000 |
---|---|---|
committer | Dmitri Gribenko <gribozavr@gmail.com> | 2012-08-03 21:15:32 +0000 |
commit | 6430583017c0dd6185e0ca9682b4437d352a68df (patch) | |
tree | 0228a5df58d22442c94dd0f2946cfd53ab41d95a /clang/lib/AST/Comment.cpp | |
parent | ed9430274e362c05af1f35b5da5d190a60343683 (diff) | |
download | bcm5719-llvm-6430583017c0dd6185e0ca9682b4437d352a68df.tar.gz bcm5719-llvm-6430583017c0dd6185e0ca9682b4437d352a68df.zip |
Comment diagnostics: warn if \returns is used in a non-function comment or if
the function returns void.
llvm-svn: 161261
Diffstat (limited to 'clang/lib/AST/Comment.cpp')
-rw-r--r-- | clang/lib/AST/Comment.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/Comment.cpp b/clang/lib/AST/Comment.cpp index 645aea7ee9d..ac224ccecd3 100644 --- a/clang/lib/AST/Comment.cpp +++ b/clang/lib/AST/Comment.cpp @@ -141,7 +141,7 @@ void DeclInfo::fill() { assert(!IsFilled); // Set defaults. - Kind = FunctionKind; + Kind = OtherKind; IsTemplateDecl = false; IsTemplateSpecialization = false; IsTemplatePartialSpecialization = false; @@ -170,6 +170,7 @@ void DeclInfo::fill() { Kind = FunctionKind; ParamVars = ArrayRef<const ParmVarDecl *>(FD->param_begin(), FD->getNumParams()); + ResultType = FD->getResultType(); unsigned NumLists = FD->getNumTemplateParameterLists(); if (NumLists != 0) { IsTemplateDecl = true; @@ -178,7 +179,8 @@ void DeclInfo::fill() { FD->getTemplateParameterList(NumLists - 1); } - if (K == Decl::CXXMethod) { + if (K == Decl::CXXMethod || K == Decl::CXXConstructor || + K == Decl::CXXDestructor || K == Decl::CXXConversion) { const CXXMethodDecl *MD = cast<CXXMethodDecl>(ThisDecl); IsInstanceMethod = MD->isInstance(); IsClassMethod = !IsInstanceMethod; @@ -190,6 +192,7 @@ void DeclInfo::fill() { Kind = FunctionKind; ParamVars = ArrayRef<const ParmVarDecl *>(MD->param_begin(), MD->param_size()); + ResultType = MD->getResultType(); IsInstanceMethod = MD->isInstanceMethod(); IsClassMethod = !IsInstanceMethod; break; @@ -201,6 +204,7 @@ void DeclInfo::fill() { const FunctionDecl *FD = FTD->getTemplatedDecl(); ParamVars = ArrayRef<const ParmVarDecl *>(FD->param_begin(), FD->getNumParams()); + ResultType = FD->getResultType(); TemplateParameters = FTD->getTemplateParameters(); break; } @@ -226,6 +230,7 @@ void DeclInfo::fill() { IsTemplateSpecialization = true; break; case Decl::Record: + case Decl::CXXRecord: Kind = ClassKind; break; case Decl::Var: |