bruntib updated this revision to Diff 219088. bruntib edited the summary of this revision. bruntib added a comment.
Thank you for the suggestion. I didn't know about this behavior of `%check_clang_tidy`. Repository: rCTE Clang Tools Extra CHANGES SINCE LAST ACTION https://reviews.llvm.org/D67265/new/ https://reviews.llvm.org/D67265 Files: clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp clang-tools-extra/test/clang-tidy/readability-magic-numbers-userliteral.cpp Index: clang-tools-extra/test/clang-tidy/readability-magic-numbers-userliteral.cpp =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/readability-magic-numbers-userliteral.cpp @@ -0,0 +1,16 @@ +// RUN: %check_clang_tidy -std=c++14-or-later %s readability-magic-numbers %t -- + +namespace std { + class string {}; + using size_t = decltype(sizeof(int)); + string operator "" s(const char *, std::size_t); + int operator "" s(unsigned long long); +} + +void UserDefinedLiteral() { + using std::operator ""s; + "Hello World"s; + const int i = 3600s; + int j = 3600s; + // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: 3600s is a magic number; consider replacing it with a named constant [readability-magic-numbers] +} Index: clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp +++ clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp @@ -112,10 +112,21 @@ return llvm::any_of( Result.Context->getParents(ExprResult), [&Result](const DynTypedNode &Parent) { - return isUsedToInitializeAConstant(Result, Parent) || - // Ignore this instance, because this match reports the location - // where the template is defined, not where it is instantiated. - Parent.get<SubstNonTypeTemplateParmExpr>(); + if (isUsedToInitializeAConstant(Result, Parent)) + return true; + + // Ignore this instance, because this match reports the location + // where the template is defined, not where it is instantiated. + if (Parent.get<SubstNonTypeTemplateParmExpr>()) + return true; + + // Don't warn on string user defined literals: + // std::string s = "Hello World"s; + if (const UserDefinedLiteral *UDL = Parent.get<UserDefinedLiteral>()) + if (UDL->getLiteralOperatorKind() == UserDefinedLiteral::LOK_String) + return true; + + return false; }); }
Index: clang-tools-extra/test/clang-tidy/readability-magic-numbers-userliteral.cpp =================================================================== --- /dev/null +++ clang-tools-extra/test/clang-tidy/readability-magic-numbers-userliteral.cpp @@ -0,0 +1,16 @@ +// RUN: %check_clang_tidy -std=c++14-or-later %s readability-magic-numbers %t -- + +namespace std { + class string {}; + using size_t = decltype(sizeof(int)); + string operator "" s(const char *, std::size_t); + int operator "" s(unsigned long long); +} + +void UserDefinedLiteral() { + using std::operator ""s; + "Hello World"s; + const int i = 3600s; + int j = 3600s; + // CHECK-MESSAGES: :[[@LINE-1]]:11: warning: 3600s is a magic number; consider replacing it with a named constant [readability-magic-numbers] +} Index: clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp =================================================================== --- clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp +++ clang-tools-extra/clang-tidy/readability/MagicNumbersCheck.cpp @@ -112,10 +112,21 @@ return llvm::any_of( Result.Context->getParents(ExprResult), [&Result](const DynTypedNode &Parent) { - return isUsedToInitializeAConstant(Result, Parent) || - // Ignore this instance, because this match reports the location - // where the template is defined, not where it is instantiated. - Parent.get<SubstNonTypeTemplateParmExpr>(); + if (isUsedToInitializeAConstant(Result, Parent)) + return true; + + // Ignore this instance, because this match reports the location + // where the template is defined, not where it is instantiated. + if (Parent.get<SubstNonTypeTemplateParmExpr>()) + return true; + + // Don't warn on string user defined literals: + // std::string s = "Hello World"s; + if (const UserDefinedLiteral *UDL = Parent.get<UserDefinedLiteral>()) + if (UDL->getLiteralOperatorKind() == UserDefinedLiteral::LOK_String) + return true; + + return false; }); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits