[PATCH] D53339: [clang-tidy] Add the abseil-duration-factory-float check
Jonas Toth via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Oct 17 05:44:38 PDT 2018
JonasToth added inline comments.
================
Comment at: clang-tidy/abseil/DurationFactoryFloatCheck.cpp:34
+ llvm::APSInt ApInt(/*BitWidth=*/64, /*isUnsigned=*/false);
+ ApInt = static_cast<unsigned long long>(value);
+ if (is_negative)
----------------
Wouldn't it make more sense to use `std::uint64_t` instead to correspond to the line above? And where does the signedness difference come from? (`/*isUnsigned=*/false`)
================
Comment at: clang-tidy/abseil/DurationFactoryFloatCheck.cpp:61
+ // Don't try and replace things inside of macro definitions.
+ if (!clang::Lexer::makeFileCharRange(
+ clang::CharSourceRange::getCharRange(MatchedCall->getSourceRange()),
----------------
That is worth a helper function taking a `SourceRange` as argument.
================
Comment at: clang-tidy/abseil/DurationFactoryFloatCheck.cpp:69
+ // Macros are ignored.
+ if (Arg->getBeginLoc().isMacroID())
+ return;
----------------
maybe `assert` instead, as your comment above suggests that macros are already filtered out?
================
Comment at: clang-tidy/abseil/DurationFactoryFloatCheck.cpp:72
+
+ // Check for static casts to float
+ if (const auto *MaybeCastArg = Result.Nodes.getNodeAs<Expr>("cast_arg")) {
----------------
missing full stop.
================
Comment at: clang-tidy/abseil/DurationFactoryFloatCheck.cpp:84
+
+ // Check for floats without fractional components
+ if (const auto *LitFloat =
----------------
missing full stop
================
Comment at: docs/clang-tidy/checks/list.rst:12
abseil-redundant-strcat-calls
- abseil-string-find-startswith
abseil-str-cat-append
----------------
spurious change
================
Comment at: test/clang-tidy/abseil-duration-factory-float.cpp:32
+void ConvertFloatTest() {
+ absl::Duration d;
+
----------------
Could you also provide test cases with hexadecimal floating literals, which are C++17? The thousand-separators could be checked as well (dunno the correct term right now, but the `1'000'000` feature).
Please add test cases for negative literals, too.
https://reviews.llvm.org/D53339
More information about the cfe-commits
mailing list