[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/vbvictor closed https://github.com/llvm/llvm-project/pull/140759 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/carlosgalvezp approved this pull request. LGTM! https://github.com/llvm/llvm-project/pull/140759 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
carlosgalvezp wrote:
Ok! I think this change would have been better to do in #135383, where it
clearly shows that you need 2 different error messages.
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -39,23 +38,6 @@ class UseTrailingReturnTypeCheck : public ClangTidyCheck {
private:
Preprocessor *PP = nullptr;
nicovank wrote:
Is this field still needed now?
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -28,7 +27,7 @@ struct ClassifiedToken {
class UseTrailingReturnTypeCheck : public ClangTidyCheck {
public:
UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
+ : ClangTidyCheck(Name, Context) {};
vbvictor wrote:
Overlooked, fixed now
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/vbvictor updated
https://github.com/llvm/llvm-project/pull/140759
>From fbae463925738d8628593d5daaabe2a299aecbbf Mon Sep 17 00:00:00 2001
From: Baranov Victor
Date: Tue, 20 May 2025 19:23:35 +0300
Subject: [PATCH 1/4] [clang-tidy][nfc] refactor use-trailing-return-type-check
private methods to be static functions and fix styling issues
---
.../modernize/UseTrailingReturnTypeCheck.cpp | 65 ++-
.../modernize/UseTrailingReturnTypeCheck.h| 21 +-
.../use-trailing-return-type-cxx20.cpp| 2 +-
3 files changed, 37 insertions(+), 51 deletions(-)
diff --git
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 9774e988d71e2..d90876d59a6ad 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
"use a trailing return type for this function";
static SourceLocation expandIfMacroId(SourceLocation Loc,
@@ -125,7 +125,7 @@ static SourceLocation expandIfMacroId(SourceLocation Loc,
return Loc;
}
-SourceLocation
UseTrailingReturnTypeCheck::findTrailingReturnTypeSourceLocation(
+static SourceLocation findTrailingReturnTypeSourceLocation(
const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
const SourceManager &SM, const LangOptions &LangOpts) {
// We start with the location of the closing parenthesis.
@@ -217,10 +217,11 @@ classifyToken(const FunctionDecl &F, Preprocessor &PP,
Token Tok) {
return CT;
}
-std::optional>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
-const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
-const LangOptions &LangOpts) {
+static std::optional>
+classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
+ const SourceManager &SM,
+ const LangOptions &LangOpts,
+ Preprocessor *PP) {
SourceLocation BeginF = expandIfMacroId(F.getBeginLoc(), SM);
SourceLocation BeginNameF = expandIfMacroId(F.getLocation(), SM);
@@ -242,7 +243,6 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
const MacroInfo *MI = PP->getMacroInfo(&Info);
if (!MI || MI->isFunctionLike()) {
// Cannot handle function style macros.
- diag(F.getLocation(), Message);
return std::nullopt;
}
}
@@ -253,10 +253,8 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
if (std::optional CT = classifyToken(F, *PP, T))
ClassifiedTokens.push_back(*CT);
-else {
- diag(F.getLocation(), Message);
+else
return std::nullopt;
-}
}
return ClassifiedTokens;
@@ -273,9 +271,10 @@ static bool hasAnyNestedLocalQualifiers(QualType Type) {
return Result;
}
-SourceRange UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
-const FunctionDecl &F, const TypeLoc &ReturnLoc, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static SourceRange
+findReturnTypeAndCVSourceRange(const FunctionDecl &F, const TypeLoc &ReturnLoc,
+ const ASTContext &Ctx, const SourceManager &SM,
+ const LangOptions &LangOpts, Preprocessor *PP) {
// We start with the range of the return type and expand to neighboring
// qualifiers (const, volatile and restrict).
@@ -283,7 +282,6 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
if (ReturnTypeRange.isInvalid()) {
// Happens if e.g. clang cannot resolve all includes and the return type is
// unknown.
-diag(F.getLocation(), Message);
return {};
}
@@ -294,7 +292,7 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
// Include qualifiers to the left and right of the return type.
std::optional> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector &Tokens = *MaybeTokens;
@@ -331,10 +329,11 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
return ReturnTypeRange;
}
-void UseTrailingReturnTypeCheck::keepSpecifiers(
-std::string &ReturnType, std::string &Auto, SourceRange ReturnTypeCVRange,
-const FunctionDecl &F, const FriendDecl *Fr, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static void keepSpecifiers(std::string &ReturnType, std::string &Auto,
+ SourceRange ReturnTypeCVRange, const FunctionDecl
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -28,7 +27,7 @@ struct ClassifiedToken {
class UseTrailingReturnTypeCheck : public ClangTidyCheck {
public:
UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
+ : ClangTidyCheck(Name, Context) {};
vbvictor wrote:
```suggestion
: ClangTidyCheck(Name, Context) {}
```
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/nicovank edited https://github.com/llvm/llvm-project/pull/140759 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -28,7 +27,7 @@ struct ClassifiedToken {
class UseTrailingReturnTypeCheck : public ClangTidyCheck {
public:
UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
+ : ClangTidyCheck(Name, Context) {};
nicovank wrote:
Is there a need for this semicolon?
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/vbvictor updated
https://github.com/llvm/llvm-project/pull/140759
>From fbae463925738d8628593d5daaabe2a299aecbbf Mon Sep 17 00:00:00 2001
From: Baranov Victor
Date: Tue, 20 May 2025 19:23:35 +0300
Subject: [PATCH 1/3] [clang-tidy][nfc] refactor use-trailing-return-type-check
private methods to be static functions and fix styling issues
---
.../modernize/UseTrailingReturnTypeCheck.cpp | 65 ++-
.../modernize/UseTrailingReturnTypeCheck.h| 21 +-
.../use-trailing-return-type-cxx20.cpp| 2 +-
3 files changed, 37 insertions(+), 51 deletions(-)
diff --git
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 9774e988d71e2..d90876d59a6ad 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
"use a trailing return type for this function";
static SourceLocation expandIfMacroId(SourceLocation Loc,
@@ -125,7 +125,7 @@ static SourceLocation expandIfMacroId(SourceLocation Loc,
return Loc;
}
-SourceLocation
UseTrailingReturnTypeCheck::findTrailingReturnTypeSourceLocation(
+static SourceLocation findTrailingReturnTypeSourceLocation(
const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
const SourceManager &SM, const LangOptions &LangOpts) {
// We start with the location of the closing parenthesis.
@@ -217,10 +217,11 @@ classifyToken(const FunctionDecl &F, Preprocessor &PP,
Token Tok) {
return CT;
}
-std::optional>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
-const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
-const LangOptions &LangOpts) {
+static std::optional>
+classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
+ const SourceManager &SM,
+ const LangOptions &LangOpts,
+ Preprocessor *PP) {
SourceLocation BeginF = expandIfMacroId(F.getBeginLoc(), SM);
SourceLocation BeginNameF = expandIfMacroId(F.getLocation(), SM);
@@ -242,7 +243,6 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
const MacroInfo *MI = PP->getMacroInfo(&Info);
if (!MI || MI->isFunctionLike()) {
// Cannot handle function style macros.
- diag(F.getLocation(), Message);
return std::nullopt;
}
}
@@ -253,10 +253,8 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
if (std::optional CT = classifyToken(F, *PP, T))
ClassifiedTokens.push_back(*CT);
-else {
- diag(F.getLocation(), Message);
+else
return std::nullopt;
-}
}
return ClassifiedTokens;
@@ -273,9 +271,10 @@ static bool hasAnyNestedLocalQualifiers(QualType Type) {
return Result;
}
-SourceRange UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
-const FunctionDecl &F, const TypeLoc &ReturnLoc, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static SourceRange
+findReturnTypeAndCVSourceRange(const FunctionDecl &F, const TypeLoc &ReturnLoc,
+ const ASTContext &Ctx, const SourceManager &SM,
+ const LangOptions &LangOpts, Preprocessor *PP) {
// We start with the range of the return type and expand to neighboring
// qualifiers (const, volatile and restrict).
@@ -283,7 +282,6 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
if (ReturnTypeRange.isInvalid()) {
// Happens if e.g. clang cannot resolve all includes and the return type is
// unknown.
-diag(F.getLocation(), Message);
return {};
}
@@ -294,7 +292,7 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
// Include qualifiers to the left and right of the return type.
std::optional> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector &Tokens = *MaybeTokens;
@@ -331,10 +329,11 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
return ReturnTypeRange;
}
-void UseTrailingReturnTypeCheck::keepSpecifiers(
-std::string &ReturnType, std::string &Auto, SourceRange ReturnTypeCVRange,
-const FunctionDecl &F, const FriendDecl *Fr, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static void keepSpecifiers(std::string &ReturnType, std::string &Auto,
+ SourceRange ReturnTypeCVRange, const FunctionDecl
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/vbvictor updated
https://github.com/llvm/llvm-project/pull/140759
>From fbae463925738d8628593d5daaabe2a299aecbbf Mon Sep 17 00:00:00 2001
From: Baranov Victor
Date: Tue, 20 May 2025 19:23:35 +0300
Subject: [PATCH 1/2] [clang-tidy][nfc] refactor use-trailing-return-type-check
private methods to be static functions and fix styling issues
---
.../modernize/UseTrailingReturnTypeCheck.cpp | 65 ++-
.../modernize/UseTrailingReturnTypeCheck.h| 21 +-
.../use-trailing-return-type-cxx20.cpp| 2 +-
3 files changed, 37 insertions(+), 51 deletions(-)
diff --git
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 9774e988d71e2..d90876d59a6ad 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
"use a trailing return type for this function";
static SourceLocation expandIfMacroId(SourceLocation Loc,
@@ -125,7 +125,7 @@ static SourceLocation expandIfMacroId(SourceLocation Loc,
return Loc;
}
-SourceLocation
UseTrailingReturnTypeCheck::findTrailingReturnTypeSourceLocation(
+static SourceLocation findTrailingReturnTypeSourceLocation(
const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
const SourceManager &SM, const LangOptions &LangOpts) {
// We start with the location of the closing parenthesis.
@@ -217,10 +217,11 @@ classifyToken(const FunctionDecl &F, Preprocessor &PP,
Token Tok) {
return CT;
}
-std::optional>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
-const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
-const LangOptions &LangOpts) {
+static std::optional>
+classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
+ const SourceManager &SM,
+ const LangOptions &LangOpts,
+ Preprocessor *PP) {
SourceLocation BeginF = expandIfMacroId(F.getBeginLoc(), SM);
SourceLocation BeginNameF = expandIfMacroId(F.getLocation(), SM);
@@ -242,7 +243,6 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
const MacroInfo *MI = PP->getMacroInfo(&Info);
if (!MI || MI->isFunctionLike()) {
// Cannot handle function style macros.
- diag(F.getLocation(), Message);
return std::nullopt;
}
}
@@ -253,10 +253,8 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
if (std::optional CT = classifyToken(F, *PP, T))
ClassifiedTokens.push_back(*CT);
-else {
- diag(F.getLocation(), Message);
+else
return std::nullopt;
-}
}
return ClassifiedTokens;
@@ -273,9 +271,10 @@ static bool hasAnyNestedLocalQualifiers(QualType Type) {
return Result;
}
-SourceRange UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
-const FunctionDecl &F, const TypeLoc &ReturnLoc, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static SourceRange
+findReturnTypeAndCVSourceRange(const FunctionDecl &F, const TypeLoc &ReturnLoc,
+ const ASTContext &Ctx, const SourceManager &SM,
+ const LangOptions &LangOpts, Preprocessor *PP) {
// We start with the range of the return type and expand to neighboring
// qualifiers (const, volatile and restrict).
@@ -283,7 +282,6 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
if (ReturnTypeRange.isInvalid()) {
// Happens if e.g. clang cannot resolve all includes and the return type is
// unknown.
-diag(F.getLocation(), Message);
return {};
}
@@ -294,7 +292,7 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
// Include qualifiers to the left and right of the return type.
std::optional> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector &Tokens = *MaybeTokens;
@@ -331,10 +329,11 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
return ReturnTypeRange;
}
-void UseTrailingReturnTypeCheck::keepSpecifiers(
-std::string &ReturnType, std::string &Auto, SourceRange ReturnTypeCVRange,
-const FunctionDecl &F, const FriendDecl *Fr, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static void keepSpecifiers(std::string &ReturnType, std::string &Auto,
+ SourceRange ReturnTypeCVRange, const FunctionDecl
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
vbvictor wrote:
This came from https://github.com/llvm/llvm-project/pull/135383, I will need a
second error message for lambdas. Maybe it's better to write
`ErrorMessageOnFunction` and `ErrorMessageOnLambda` or `MessageOnFunction` and
`MessageOnLambda` for short.
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -383,6 +382,10 @@ void UseTrailingReturnTypeCheck::keepSpecifiers( } } +UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck( vbvictor wrote: Initially, I did this change in preparation for PR https://github.com/llvm/llvm-project/pull/135383, where I added 2 options and move Ctor to .cpp file. I'll revert this and do only obvious changes in NFC in the future to avoid confusion https://github.com/llvm/llvm-project/pull/140759 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -383,6 +382,10 @@ void UseTrailingReturnTypeCheck::keepSpecifiers( } } +UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck( carlosgalvezp wrote: Nit: typically we keep these in the header in this case, since it's just 1 more line in the header, compared to 3 more lines in the .cpp. https://github.com/llvm/llvm-project/pull/140759 ___ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
carlosgalvezp wrote:
Nit: I think the name was clearer before. I read this as "the function that
does something with the message".
Maybe `ErrorMessage` would be more accurate?
https://github.com/llvm/llvm-project/pull/140759
___
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
llvmbot wrote:
@llvm/pr-subscribers-clang-tools-extra
Author: Baranov Victor (vbvictor)
Changes
- Deleted unused includes
- Deleted useless braces
- Converted private methods to static function to improve compilations speed
and readability
- Modernized tests to use `cxx-or-later`
---
Full diff: https://github.com/llvm/llvm-project/pull/140759.diff
3 Files Affected:
- (modified)
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp (+35-30)
- (modified)
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h (+1-20)
- (modified)
clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
(+1-1)
``diff
diff --git
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 9774e988d71e2..d90876d59a6ad 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
"use a trailing return type for this function";
static SourceLocation expandIfMacroId(SourceLocation Loc,
@@ -125,7 +125,7 @@ static SourceLocation expandIfMacroId(SourceLocation Loc,
return Loc;
}
-SourceLocation
UseTrailingReturnTypeCheck::findTrailingReturnTypeSourceLocation(
+static SourceLocation findTrailingReturnTypeSourceLocation(
const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
const SourceManager &SM, const LangOptions &LangOpts) {
// We start with the location of the closing parenthesis.
@@ -217,10 +217,11 @@ classifyToken(const FunctionDecl &F, Preprocessor &PP,
Token Tok) {
return CT;
}
-std::optional>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
-const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
-const LangOptions &LangOpts) {
+static std::optional>
+classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
+ const SourceManager &SM,
+ const LangOptions &LangOpts,
+ Preprocessor *PP) {
SourceLocation BeginF = expandIfMacroId(F.getBeginLoc(), SM);
SourceLocation BeginNameF = expandIfMacroId(F.getLocation(), SM);
@@ -242,7 +243,6 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
const MacroInfo *MI = PP->getMacroInfo(&Info);
if (!MI || MI->isFunctionLike()) {
// Cannot handle function style macros.
- diag(F.getLocation(), Message);
return std::nullopt;
}
}
@@ -253,10 +253,8 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
if (std::optional CT = classifyToken(F, *PP, T))
ClassifiedTokens.push_back(*CT);
-else {
- diag(F.getLocation(), Message);
+else
return std::nullopt;
-}
}
return ClassifiedTokens;
@@ -273,9 +271,10 @@ static bool hasAnyNestedLocalQualifiers(QualType Type) {
return Result;
}
-SourceRange UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
-const FunctionDecl &F, const TypeLoc &ReturnLoc, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static SourceRange
+findReturnTypeAndCVSourceRange(const FunctionDecl &F, const TypeLoc &ReturnLoc,
+ const ASTContext &Ctx, const SourceManager &SM,
+ const LangOptions &LangOpts, Preprocessor *PP) {
// We start with the range of the return type and expand to neighboring
// qualifiers (const, volatile and restrict).
@@ -283,7 +282,6 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
if (ReturnTypeRange.isInvalid()) {
// Happens if e.g. clang cannot resolve all includes and the return type is
// unknown.
-diag(F.getLocation(), Message);
return {};
}
@@ -294,7 +292,7 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
// Include qualifiers to the left and right of the return type.
std::optional> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector &Tokens = *MaybeTokens;
@@ -331,10 +329,11 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
return ReturnTypeRange;
}
-void UseTrailingReturnTypeCheck::keepSpecifiers(
-std::string &ReturnType, std::string &Auto, SourceRange ReturnTypeCVRange,
-const FunctionDecl &F, const FriendDecl *Fr, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static void keepSpecifiers(std::string &ReturnType,
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
llvmbot wrote:
@llvm/pr-subscribers-clang-tidy
Author: Baranov Victor (vbvictor)
Changes
- Deleted unused includes
- Deleted useless braces
- Converted private methods to static function to improve compilations speed
and readability
- Modernized tests to use `cxx-or-later`
---
Full diff: https://github.com/llvm/llvm-project/pull/140759.diff
3 Files Affected:
- (modified)
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp (+35-30)
- (modified)
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h (+1-20)
- (modified)
clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
(+1-1)
``diff
diff --git
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 9774e988d71e2..d90876d59a6ad 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
"use a trailing return type for this function";
static SourceLocation expandIfMacroId(SourceLocation Loc,
@@ -125,7 +125,7 @@ static SourceLocation expandIfMacroId(SourceLocation Loc,
return Loc;
}
-SourceLocation
UseTrailingReturnTypeCheck::findTrailingReturnTypeSourceLocation(
+static SourceLocation findTrailingReturnTypeSourceLocation(
const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
const SourceManager &SM, const LangOptions &LangOpts) {
// We start with the location of the closing parenthesis.
@@ -217,10 +217,11 @@ classifyToken(const FunctionDecl &F, Preprocessor &PP,
Token Tok) {
return CT;
}
-std::optional>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
-const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
-const LangOptions &LangOpts) {
+static std::optional>
+classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
+ const SourceManager &SM,
+ const LangOptions &LangOpts,
+ Preprocessor *PP) {
SourceLocation BeginF = expandIfMacroId(F.getBeginLoc(), SM);
SourceLocation BeginNameF = expandIfMacroId(F.getLocation(), SM);
@@ -242,7 +243,6 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
const MacroInfo *MI = PP->getMacroInfo(&Info);
if (!MI || MI->isFunctionLike()) {
// Cannot handle function style macros.
- diag(F.getLocation(), Message);
return std::nullopt;
}
}
@@ -253,10 +253,8 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
if (std::optional CT = classifyToken(F, *PP, T))
ClassifiedTokens.push_back(*CT);
-else {
- diag(F.getLocation(), Message);
+else
return std::nullopt;
-}
}
return ClassifiedTokens;
@@ -273,9 +271,10 @@ static bool hasAnyNestedLocalQualifiers(QualType Type) {
return Result;
}
-SourceRange UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
-const FunctionDecl &F, const TypeLoc &ReturnLoc, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static SourceRange
+findReturnTypeAndCVSourceRange(const FunctionDecl &F, const TypeLoc &ReturnLoc,
+ const ASTContext &Ctx, const SourceManager &SM,
+ const LangOptions &LangOpts, Preprocessor *PP) {
// We start with the range of the return type and expand to neighboring
// qualifiers (const, volatile and restrict).
@@ -283,7 +282,6 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
if (ReturnTypeRange.isInvalid()) {
// Happens if e.g. clang cannot resolve all includes and the return type is
// unknown.
-diag(F.getLocation(), Message);
return {};
}
@@ -294,7 +292,7 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
// Include qualifiers to the left and right of the return type.
std::optional> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector &Tokens = *MaybeTokens;
@@ -331,10 +329,11 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
return ReturnTypeRange;
}
-void UseTrailingReturnTypeCheck::keepSpecifiers(
-std::string &ReturnType, std::string &Auto, SourceRange ReturnTypeCVRange,
-const FunctionDecl &F, const FriendDecl *Fr, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static void keepSpecifiers(std::string &ReturnType, std::string
[clang-tools-extra] [clang-tidy][NFC] Refactor `modernize-use-trailing-return-type-check` check code and tests (PR #140759)
https://github.com/vbvictor created
https://github.com/llvm/llvm-project/pull/140759
- Deleted unused includes
- Deleted useless braces
- Converted private methods to static function to improve compilations speed
and readability
- Modernized tests to use `cxx-or-later`
>From fbae463925738d8628593d5daaabe2a299aecbbf Mon Sep 17 00:00:00 2001
From: Baranov Victor
Date: Tue, 20 May 2025 19:23:35 +0300
Subject: [PATCH] [clang-tidy][nfc] refactor use-trailing-return-type-check
private methods to be static functions and fix styling issues
---
.../modernize/UseTrailingReturnTypeCheck.cpp | 65 ++-
.../modernize/UseTrailingReturnTypeCheck.h| 21 +-
.../use-trailing-return-type-cxx20.cpp| 2 +-
3 files changed, 37 insertions(+), 51 deletions(-)
diff --git
a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
index 9774e988d71e2..d90876d59a6ad 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
@@ -113,7 +113,7 @@ struct UnqualNameVisitor : public
RecursiveASTVisitor {
};
} // namespace
-constexpr llvm::StringLiteral Message =
+constexpr llvm::StringLiteral MessageFunction =
"use a trailing return type for this function";
static SourceLocation expandIfMacroId(SourceLocation Loc,
@@ -125,7 +125,7 @@ static SourceLocation expandIfMacroId(SourceLocation Loc,
return Loc;
}
-SourceLocation
UseTrailingReturnTypeCheck::findTrailingReturnTypeSourceLocation(
+static SourceLocation findTrailingReturnTypeSourceLocation(
const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
const SourceManager &SM, const LangOptions &LangOpts) {
// We start with the location of the closing parenthesis.
@@ -217,10 +217,11 @@ classifyToken(const FunctionDecl &F, Preprocessor &PP,
Token Tok) {
return CT;
}
-std::optional>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
-const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
-const LangOptions &LangOpts) {
+static std::optional>
+classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
+ const SourceManager &SM,
+ const LangOptions &LangOpts,
+ Preprocessor *PP) {
SourceLocation BeginF = expandIfMacroId(F.getBeginLoc(), SM);
SourceLocation BeginNameF = expandIfMacroId(F.getLocation(), SM);
@@ -242,7 +243,6 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
const MacroInfo *MI = PP->getMacroInfo(&Info);
if (!MI || MI->isFunctionLike()) {
// Cannot handle function style macros.
- diag(F.getLocation(), Message);
return std::nullopt;
}
}
@@ -253,10 +253,8 @@
UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
if (std::optional CT = classifyToken(F, *PP, T))
ClassifiedTokens.push_back(*CT);
-else {
- diag(F.getLocation(), Message);
+else
return std::nullopt;
-}
}
return ClassifiedTokens;
@@ -273,9 +271,10 @@ static bool hasAnyNestedLocalQualifiers(QualType Type) {
return Result;
}
-SourceRange UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
-const FunctionDecl &F, const TypeLoc &ReturnLoc, const ASTContext &Ctx,
-const SourceManager &SM, const LangOptions &LangOpts) {
+static SourceRange
+findReturnTypeAndCVSourceRange(const FunctionDecl &F, const TypeLoc &ReturnLoc,
+ const ASTContext &Ctx, const SourceManager &SM,
+ const LangOptions &LangOpts, Preprocessor *PP) {
// We start with the range of the return type and expand to neighboring
// qualifiers (const, volatile and restrict).
@@ -283,7 +282,6 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
if (ReturnTypeRange.isInvalid()) {
// Happens if e.g. clang cannot resolve all includes and the return type is
// unknown.
-diag(F.getLocation(), Message);
return {};
}
@@ -294,7 +292,7 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
// Include qualifiers to the left and right of the return type.
std::optional> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector &Tokens = *MaybeTokens;
@@ -331,10 +329,11 @@ SourceRange
UseTrailingReturnTypeCheck::findReturnTypeAndCVSourceRange(
return ReturnTypeRange;
}
-void UseTrailingReturnTypeCheck::keepSpecifiers(
-std::string &ReturnType, std::string &Auto, SourceRange ReturnTypeCVRange,
-const FunctionDecl &F, const FriendDecl *Fr, const ASTContext &Ctx,
-const SourceManager &SM,
