================
@@ -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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits