================
@@ -469,18 +473,23 @@ UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck(
 
 void UseTrailingReturnTypeCheck::storeOptions(
     ClangTidyOptions::OptionMap &Opts) {
+  Options.store(Opts, "WarnOnNonTrailingVoid", WarnOnNonTrailingVoid);
   Options.store(Opts, "TransformFunctions", TransformFunctions);
   Options.store(Opts, "TransformLambdas", TransformLambdas);
 }
 
 void UseTrailingReturnTypeCheck::registerMatchers(MatchFinder *Finder) {
+  const auto HasNoWrittenReturnType =
+      anyOf(cxxConversionDecl(), cxxConstructorDecl(), cxxDestructorDecl());
+
   auto F =
-      functionDecl(
-          unless(anyOf(
-              hasTrailingReturn(), returns(voidType()), cxxConversionDecl(),
+      traverse(
+          TK_IgnoreUnlessSpelledInSource,
+          functionDecl(unless(anyOf(
+              hasTrailingReturn(), HasNoWrittenReturnType,
+              WarnOnNonTrailingVoid ? unless(anything()) : returns(voidType()),
               cxxMethodDecl(
-                  anyOf(isImplicit(),
-                        hasParent(cxxRecordDecl(hasParent(lambdaExpr()))))))))
+                  hasParent(cxxRecordDecl(hasParent(lambdaExpr()))))))))
----------------
5chmidti wrote:

This last hasParent won't work. cxxRecordDecl::get parent returns a 
DeclContext, which can not be a lambda expression.

https://github.com/llvm/llvm-project/pull/129406
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to