summaryrefslogtreecommitdiffstats
path: root/src/memberdef.cpp
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2020-09-07 10:11:13 (GMT)
committeralbert-github <albert.tests@gmail.com>2020-09-07 10:11:13 (GMT)
commit74d43fa25c5db5c1b0fc6ed45a725aaee972b1b7 (patch)
tree9b2d78d8c008badde34404e278af45701f70a339 /src/memberdef.cpp
parent05547d571d1f5c32e7577ef26c830a240505d0aa (diff)
downloadDoxygen-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.
Diffstat (limited to 'src/memberdef.cpp')
-rw-r--r--src/memberdef.cpp22
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)
{