[PATCH] D137302: [clang-tidy] Add modernize-type-traits check
Carlos Galvez via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Dec 19 23:22:29 PST 2022
carlosgalvezp added inline comments.
================
Comment at: clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp:140
+const internal::VariadicDynCastAllOfMatcher<TypeLoc, DependentNameTypeLoc>
+ dependentNameTypeLoc; // NOLINT(readability-identifier-naming)
+
----------------
I don't see a reason why the naming convention can't be followed here?
================
Comment at: clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp:142
+
+namespace internal {
+DeclarationName getName(const DependentScopeDeclRefExpr &D) {
----------------
Why is an internal namespace needed, when you are already have the anonymous namespace?
================
Comment at: clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp:143
+namespace internal {
+DeclarationName getName(const DependentScopeDeclRefExpr &D) {
+ return D.getDeclName();
----------------
Internal functions and variables should be declared "static", outside the anonymous namespace, as per the LLVM Coding Standards. AST matchers can be put in the anonymous namespace.
================
Comment at: clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.cpp:181
+ // Only register matchers for trait<...>::value in c++17 mode.
+ if (getLangOpts().CPlusPlus17) {
+ Finder->addMatcher(mapAnyOf(declRefExpr, dependentScopeDeclRefExpr)
----------------
I think clang-format should remove these braces since it's only 1 statement in the "if" condition.
================
Comment at: clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.h:30
+ void check(const ast_matchers::MatchFinder::MatchResult &Result) override;
+ bool isLanguageVersionSupported(const LangOptions &LangOpts) const override;
+ llvm::Optional<TraversalKind> getCheckTraversalKind() const override;
----------------
Nit: typically this is implemented inline in the header.
================
Comment at: clang-tools-extra/clang-tidy/modernize/TypeTraitsCheck.h:31
+ bool isLanguageVersionSupported(const LangOptions &LangOpts) const override;
+ llvm::Optional<TraversalKind> getCheckTraversalKind() const override;
+};
----------------
There's an ongoing effort to deprecate llvm::Optional in favor of std::optional, perhaps start using it right away in this check?
================
Comment at: clang-tools-extra/test/clang-tidy/checkers/modernize/type-traits.cpp:23
+// CHECK-MESSAGES-CXX17: :[[@LINE-1]]:19: warning: use c++17 style variable templates
+// CHeCK-FIXES-CXX17: bool NoTemplate = std::is_const_v<bool>
+
----------------
Typo. Shouldn't the test have failed?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137302/new/
https://reviews.llvm.org/D137302
More information about the cfe-commits
mailing list