-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[clang-tidy][NFC] Refactor modernize-use-trailing-return-type-check
check code and tests
#140759
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
…hods to be static functions and fix styling issues
@llvm/pr-subscribers-clang-tidy Author: Baranov Victor (vbvictor) Changes
Full diff: https://github.com/llvm/llvm-project/pull/140759.diff 3 Files Affected:
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<UnqualNameVisitor> {
};
} // 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<SmallVector<ClassifiedToken, 8>>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
- const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
- const LangOptions &LangOpts) {
+static std::optional<SmallVector<ClassifiedToken, 8>>
+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<ClassifiedToken> 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<SmallVector<ClassifiedToken, 8>> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector<ClassifiedToken, 8> &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 &F,
+ const FriendDecl *Fr, const ASTContext &Ctx,
+ const SourceManager &SM, const LangOptions &LangOpts,
+ Preprocessor *PP) {
// Check if there are specifiers inside the return type. E.g. unsigned
// inline int.
const auto *M = dyn_cast<CXXMethodDecl>(&F);
@@ -346,7 +345,7 @@ void UseTrailingReturnTypeCheck::keepSpecifiers(
// Tokenize return type. If it contains macros which contain a mix of
// qualifiers, specifiers and types, give up.
std::optional<SmallVector<ClassifiedToken, 8>> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return;
@@ -383,6 +382,10 @@ void UseTrailingReturnTypeCheck::keepSpecifiers(
}
}
+UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck(
+ StringRef Name, ClangTidyContext *Context)
+ : ClangTidyCheck(Name, Context) {}
+
void UseTrailingReturnTypeCheck::registerMatchers(MatchFinder *Finder) {
auto F = functionDecl(
unless(anyOf(hasTrailingReturn(), returns(voidType()),
@@ -423,7 +426,7 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
if (F->getDeclaredReturnType()->isFunctionPointerType() ||
F->getDeclaredReturnType()->isMemberFunctionPointerType() ||
F->getDeclaredReturnType()->isMemberPointerType()) {
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
@@ -440,24 +443,26 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
// FIXME: This may happen if we have __attribute__((...)) on the function.
// We abort for now. Remove this when the function type location gets
// available in clang.
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
SourceLocation InsertionLoc =
findTrailingReturnTypeSourceLocation(*F, FTL, Ctx, SM, LangOpts);
if (InsertionLoc.isInvalid()) {
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
// Using the declared return type via F->getDeclaredReturnType().getAsString()
// discards user formatting and order of const, volatile, type, whitespace,
// space before & ... .
- SourceRange ReturnTypeCVRange =
- findReturnTypeAndCVSourceRange(*F, FTL.getReturnLoc(), Ctx, SM, LangOpts);
- if (ReturnTypeCVRange.isInvalid())
+ SourceRange ReturnTypeCVRange = findReturnTypeAndCVSourceRange(
+ *F, FTL.getReturnLoc(), Ctx, SM, LangOpts, PP);
+ if (ReturnTypeCVRange.isInvalid()) {
+ diag(F->getLocation(), MessageFunction);
return;
+ }
// Check if unqualified names in the return type conflict with other entities
// after the rewrite.
@@ -470,7 +475,7 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
UnqualNameVisitor UNV{*F};
UNV.TraverseTypeLoc(FTL.getReturnLoc());
if (UNV.Collision) {
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
@@ -486,10 +491,10 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
std::string Auto = NeedSpaceAfterAuto ? "auto " : "auto";
std::string ReturnType =
std::string(tooling::fixit::getText(ReturnTypeCVRange, Ctx));
- keepSpecifiers(ReturnType, Auto, ReturnTypeCVRange, *F, Fr, Ctx, SM,
- LangOpts);
+ keepSpecifiers(ReturnType, Auto, ReturnTypeCVRange, *F, Fr, Ctx, SM, LangOpts,
+ PP);
- diag(F->getLocation(), Message)
+ diag(F->getLocation(), MessageFunction)
<< FixItHint::CreateReplacement(ReturnTypeCVRange, Auto)
<< FixItHint::CreateInsertion(InsertionLoc, " -> " + ReturnType);
}
diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
index 5fb6ae945f466..a5b04cf03682d 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
@@ -11,7 +11,6 @@
#include "../ClangTidyCheck.h"
#include "clang/Lex/Token.h"
-#include <optional>
namespace clang::tidy::modernize {
@@ -27,8 +26,7 @@ struct ClassifiedToken {
/// http://clang.llvm.org/extra/clang-tidy/checks/modernize/use-trailing-return-type.html
class UseTrailingReturnTypeCheck : public ClangTidyCheck {
public:
- UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
+ UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context);
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus11;
}
@@ -39,23 +37,6 @@ class UseTrailingReturnTypeCheck : public ClangTidyCheck {
private:
Preprocessor *PP = nullptr;
-
- SourceLocation findTrailingReturnTypeSourceLocation(
- const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
- const SourceManager &SM, const LangOptions &LangOpts);
- std::optional<SmallVector<ClassifiedToken, 8>>
- classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
- const SourceManager &SM,
- const LangOptions &LangOpts);
- SourceRange findReturnTypeAndCVSourceRange(const FunctionDecl &F,
- const TypeLoc &ReturnLoc,
- const ASTContext &Ctx,
- const SourceManager &SM,
- const LangOptions &LangOpts);
- void keepSpecifiers(std::string &ReturnType, std::string &Auto,
- SourceRange ReturnTypeCVRange, const FunctionDecl &F,
- const FriendDecl *Fr, const ASTContext &Ctx,
- const SourceManager &SM, const LangOptions &LangOpts);
};
} // namespace clang::tidy::modernize
diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
index 72fdcc0177965..8a0618d154fd4 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy -std=c++20 %s modernize-use-trailing-return-type %t
+// RUN: %check_clang_tidy -std=c++20-or-later %s modernize-use-trailing-return-type %t
namespace std {
template <typename T, typename U>
|
@llvm/pr-subscribers-clang-tools-extra Author: Baranov Victor (vbvictor) Changes
Full diff: https://github.com/llvm/llvm-project/pull/140759.diff 3 Files Affected:
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<UnqualNameVisitor> {
};
} // 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<SmallVector<ClassifiedToken, 8>>
-UseTrailingReturnTypeCheck::classifyTokensBeforeFunctionName(
- const FunctionDecl &F, const ASTContext &Ctx, const SourceManager &SM,
- const LangOptions &LangOpts) {
+static std::optional<SmallVector<ClassifiedToken, 8>>
+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<ClassifiedToken> 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<SmallVector<ClassifiedToken, 8>> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return {};
const SmallVector<ClassifiedToken, 8> &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 &F,
+ const FriendDecl *Fr, const ASTContext &Ctx,
+ const SourceManager &SM, const LangOptions &LangOpts,
+ Preprocessor *PP) {
// Check if there are specifiers inside the return type. E.g. unsigned
// inline int.
const auto *M = dyn_cast<CXXMethodDecl>(&F);
@@ -346,7 +345,7 @@ void UseTrailingReturnTypeCheck::keepSpecifiers(
// Tokenize return type. If it contains macros which contain a mix of
// qualifiers, specifiers and types, give up.
std::optional<SmallVector<ClassifiedToken, 8>> MaybeTokens =
- classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts);
+ classifyTokensBeforeFunctionName(F, Ctx, SM, LangOpts, PP);
if (!MaybeTokens)
return;
@@ -383,6 +382,10 @@ void UseTrailingReturnTypeCheck::keepSpecifiers(
}
}
+UseTrailingReturnTypeCheck::UseTrailingReturnTypeCheck(
+ StringRef Name, ClangTidyContext *Context)
+ : ClangTidyCheck(Name, Context) {}
+
void UseTrailingReturnTypeCheck::registerMatchers(MatchFinder *Finder) {
auto F = functionDecl(
unless(anyOf(hasTrailingReturn(), returns(voidType()),
@@ -423,7 +426,7 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
if (F->getDeclaredReturnType()->isFunctionPointerType() ||
F->getDeclaredReturnType()->isMemberFunctionPointerType() ||
F->getDeclaredReturnType()->isMemberPointerType()) {
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
@@ -440,24 +443,26 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
// FIXME: This may happen if we have __attribute__((...)) on the function.
// We abort for now. Remove this when the function type location gets
// available in clang.
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
SourceLocation InsertionLoc =
findTrailingReturnTypeSourceLocation(*F, FTL, Ctx, SM, LangOpts);
if (InsertionLoc.isInvalid()) {
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
// Using the declared return type via F->getDeclaredReturnType().getAsString()
// discards user formatting and order of const, volatile, type, whitespace,
// space before & ... .
- SourceRange ReturnTypeCVRange =
- findReturnTypeAndCVSourceRange(*F, FTL.getReturnLoc(), Ctx, SM, LangOpts);
- if (ReturnTypeCVRange.isInvalid())
+ SourceRange ReturnTypeCVRange = findReturnTypeAndCVSourceRange(
+ *F, FTL.getReturnLoc(), Ctx, SM, LangOpts, PP);
+ if (ReturnTypeCVRange.isInvalid()) {
+ diag(F->getLocation(), MessageFunction);
return;
+ }
// Check if unqualified names in the return type conflict with other entities
// after the rewrite.
@@ -470,7 +475,7 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
UnqualNameVisitor UNV{*F};
UNV.TraverseTypeLoc(FTL.getReturnLoc());
if (UNV.Collision) {
- diag(F->getLocation(), Message);
+ diag(F->getLocation(), MessageFunction);
return;
}
@@ -486,10 +491,10 @@ void UseTrailingReturnTypeCheck::check(const MatchFinder::MatchResult &Result) {
std::string Auto = NeedSpaceAfterAuto ? "auto " : "auto";
std::string ReturnType =
std::string(tooling::fixit::getText(ReturnTypeCVRange, Ctx));
- keepSpecifiers(ReturnType, Auto, ReturnTypeCVRange, *F, Fr, Ctx, SM,
- LangOpts);
+ keepSpecifiers(ReturnType, Auto, ReturnTypeCVRange, *F, Fr, Ctx, SM, LangOpts,
+ PP);
- diag(F->getLocation(), Message)
+ diag(F->getLocation(), MessageFunction)
<< FixItHint::CreateReplacement(ReturnTypeCVRange, Auto)
<< FixItHint::CreateInsertion(InsertionLoc, " -> " + ReturnType);
}
diff --git a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
index 5fb6ae945f466..a5b04cf03682d 100644
--- a/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
+++ b/clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
@@ -11,7 +11,6 @@
#include "../ClangTidyCheck.h"
#include "clang/Lex/Token.h"
-#include <optional>
namespace clang::tidy::modernize {
@@ -27,8 +26,7 @@ struct ClassifiedToken {
/// http://clang.llvm.org/extra/clang-tidy/checks/modernize/use-trailing-return-type.html
class UseTrailingReturnTypeCheck : public ClangTidyCheck {
public:
- UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context)
- : ClangTidyCheck(Name, Context) {}
+ UseTrailingReturnTypeCheck(StringRef Name, ClangTidyContext *Context);
bool isLanguageVersionSupported(const LangOptions &LangOpts) const override {
return LangOpts.CPlusPlus11;
}
@@ -39,23 +37,6 @@ class UseTrailingReturnTypeCheck : public ClangTidyCheck {
private:
Preprocessor *PP = nullptr;
-
- SourceLocation findTrailingReturnTypeSourceLocation(
- const FunctionDecl &F, const FunctionTypeLoc &FTL, const ASTContext &Ctx,
- const SourceManager &SM, const LangOptions &LangOpts);
- std::optional<SmallVector<ClassifiedToken, 8>>
- classifyTokensBeforeFunctionName(const FunctionDecl &F, const ASTContext &Ctx,
- const SourceManager &SM,
- const LangOptions &LangOpts);
- SourceRange findReturnTypeAndCVSourceRange(const FunctionDecl &F,
- const TypeLoc &ReturnLoc,
- const ASTContext &Ctx,
- const SourceManager &SM,
- const LangOptions &LangOpts);
- void keepSpecifiers(std::string &ReturnType, std::string &Auto,
- SourceRange ReturnTypeCVRange, const FunctionDecl &F,
- const FriendDecl *Fr, const ASTContext &Ctx,
- const SourceManager &SM, const LangOptions &LangOpts);
};
} // namespace clang::tidy::modernize
diff --git a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
index 72fdcc0177965..8a0618d154fd4 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/modernize/use-trailing-return-type-cxx20.cpp
@@ -1,4 +1,4 @@
-// RUN: %check_clang_tidy -std=c++20 %s modernize-use-trailing-return-type %t
+// RUN: %check_clang_tidy -std=c++20-or-later %s modernize-use-trailing-return-type %t
namespace std {
template <typename T, typename U>
|
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
Outdated
Show resolved
Hide resolved
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.cpp
Outdated
Show resolved
Hide resolved
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
Outdated
Show resolved
Hide resolved
clang-tools-extra/clang-tidy/modernize/UseTrailingReturnTypeCheck.h
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
cxx-or-later