[PATCH] D82089: [clang-tidy] modernize-loop-convert reverse iteration support
Alexander Kornienko via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 10 06:29:45 PDT 2020
alexfh requested changes to this revision.
alexfh added a comment.
This revision now requires changes to proceed.
Thanks for the patch! Looks generally good. A few comments inline.
================
Comment at: clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp:74-76
+static const char MakeReverseRangeFunction[] = "MakeReverseRangeFunction";
+static const char MakeReverseRangeHeader[] = "MakeReverseRangeHeader";
+static const char UseCxx20ReverseRanges[] = "UseCxx20ReverseRanges";
----------------
These are used in two places close together. I'd just use literals like for the other option names.
================
Comment at: clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp:921
+ &Descriptor.ContainerNeedsDereference,
+ /*IsReverse*/ FixerKind == LFK_ReverseIterator);
} else if (FixerKind == LFK_PseudoArray) {
----------------
`/*IsReverse=*/`
================
Comment at: clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp:1003
+ IsEnabled = true;
+ Function = RangesMakeReverse.str();
+ Header = RangesMakeReverseHeader.str();
----------------
I'd just use string literals directly.
================
Comment at: clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp:1011-1015
+ if (Header.front() == '<' && Header.back() == '>') {
+ IsSystemInclude = true;
+ Header.pop_back();
+ Header.erase(0, 1);
+ }
----------------
It looks like this should be a feature of the `IncludeInserter`. Not necessarily in this patch though. The `createIncludeInsertion` in other checks could be made a bit more self-descriptive too, e.g. this one in clang-tidy/modernize/MakeSmartPtrCheck.cpp:
```
Diag << Inserter.createIncludeInsertion(
FD, MakeSmartPtrFunctionHeader,
/*IsAngled=*/MakeSmartPtrFunctionHeader == StdMemoryHeader);
```
could have angle brackets in `MakeSmartPtrFunctionHeader` instead of making a special case for `memory`.
================
Comment at: clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h:42-63
+
+ class ReverseRangeDetail {
+ public:
+ ReverseRangeDetail(bool UseCxx20IfAvailable, std::string FunctionName,
+ std::string HeaderName, const LangOptions &LangOpts);
+
+ bool isEnabled() const { return IsEnabled; }
----------------
This abstraction doesn't seem to give much benefit over placing all these fields into the `LoopConvertCheck` class.
================
Comment at: clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.h:58
+ private:
+ bool IsEnabled{false};
+ bool UseCxx20IfAvailable;
----------------
Use ` = false;` for initialization. It's more common in LLVM.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82089/new/
https://reviews.llvm.org/D82089
More information about the cfe-commits
mailing list