diff options
author | albert-github <albert.tests@gmail.com> | 2020-09-07 10:11:13 (GMT) |
---|---|---|
committer | albert-github <albert.tests@gmail.com> | 2020-09-07 10:11:13 (GMT) |
commit | 74d43fa25c5db5c1b0fc6ed45a725aaee972b1b7 (patch) | |
tree | 9b2d78d8c008badde34404e278af45701f70a339 | |
parent | 05547d571d1f5c32e7577ef26c830a240505d0aa (diff) | |
download | Doxygen-74d43fa25c5db5c1b0fc6ed45a725aaee972b1b7.zip Doxygen-74d43fa25c5db5c1b0fc6ed45a725aaee972b1b7.tar.gz Doxygen-74d43fa25c5db5c1b0fc6ed45a725aaee972b1b7.tar.bz2 |
issue #6442 C++: Trailing return type syntax + void
When having:
```
/*!
* \brief Performs some side effect
*/
auto side_effect_after() -> void {}
```
We get the warning:
```
warning: return type of member side_effect_after is not documented
```
as the trailing return type was not taken into consideration.
-rw-r--r-- | src/memberdef.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 464dbd0..486284a 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -4050,6 +4050,18 @@ void MemberDefImpl::warnIfUndocumented() const warnIfUndocumentedParams(); } } +static QCString stripTrailngReturn(const QCString trailRet) +{ + QCString ret = trailRet; + + ret = ret.stripWhiteSpace(); + if (ret.startsWith("->")) + { + ret = ret.mid(2).stripWhiteSpace(); + return ret; + } + return trailRet; +} void MemberDefImpl::detectUndocumentedParams(bool hasParamCommand,bool hasReturnCommand) const { @@ -4058,7 +4070,17 @@ void MemberDefImpl::detectUndocumentedParams(bool hasParamCommand,bool hasReturn bool isPython = getLanguage()==SrcLangExt_Python; bool isFortran = getLanguage()==SrcLangExt_Fortran; bool isFortranSubroutine = isFortran && returnType.find("subroutine")!=-1; + bool isVoidReturn = (returnType=="void") || (returnType.right(5)==" void"); + if (!isVoidReturn && returnType == "auto") + { + const ArgumentList &defArgList=isDocsForDefinition() ? argumentList() : declArgumentList(); + if (!defArgList.trailingReturnType().isEmpty()) + { + QCString strippedTrailingReturn = stripTrailngReturn(defArgList.trailingReturnType()); + isVoidReturn = (strippedTrailingReturn=="void") || (strippedTrailingReturn.right(5)==" void"); + } + } if (!m_impl->hasDocumentedParams && hasParamCommand) { |