diff options
author | Alex Lorenz <arphaman@gmail.com> | 2017-04-21 14:17:49 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2017-04-21 14:17:49 +0000 |
commit | 6b82a75df5ca295c9f8159011e907da42725b99b (patch) | |
tree | c9fdc18270ecde7dfa9dd2d02674e6341017392e /clang/lib/AST/Comment.cpp | |
parent | e2037d24f9cf40fab9a83ce740051e73cae939f1 (diff) | |
download | bcm5719-llvm-6b82a75df5ca295c9f8159011e907da42725b99b.tar.gz bcm5719-llvm-6b82a75df5ca295c9f8159011e907da42725b99b.zip |
[PR32667] -Wdocumentation should allow @param/@returns for fields/variables
that have a function/block pointer type
This commit improves the -Wdocumentation warning by making sure that @param and
@returns commands won't trigger warnings when used for fields, variables,
or properties whose type is a function/block pointer type. The
function/block pointer type must be specified directly with the declaration,
and when a typedef is used the warning is still emitted.
In the future we might also want to handle the std::function type as well.
rdar://24978538
llvm-svn: 300981
Diffstat (limited to 'clang/lib/AST/Comment.cpp')
-rw-r--r-- | clang/lib/AST/Comment.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/AST/Comment.cpp b/clang/lib/AST/Comment.cpp index 7a7d3dd8304..20ff2430df2 100644 --- a/clang/lib/AST/Comment.cpp +++ b/clang/lib/AST/Comment.cpp @@ -280,8 +280,25 @@ void DeclInfo::fill() { case Decl::EnumConstant: case Decl::ObjCIvar: case Decl::ObjCAtDefsField: + case Decl::ObjCProperty: { + const TypeSourceInfo *TSI; + if (const auto *VD = dyn_cast<DeclaratorDecl>(CommentDecl)) + TSI = VD->getTypeSourceInfo(); + else if (const auto *PD = dyn_cast<ObjCPropertyDecl>(CommentDecl)) + TSI = PD->getTypeSourceInfo(); + else + TSI = nullptr; + if (TSI) { + TypeLoc TL = TSI->getTypeLoc().getUnqualifiedLoc(); + FunctionTypeLoc FTL; + if (getFunctionTypeLoc(TL, FTL)) { + ParamVars = FTL.getParams(); + ReturnType = FTL.getReturnLoc().getType(); + } + } Kind = VariableKind; break; + } case Decl::Namespace: Kind = NamespaceKind; break; |