MyDeveloperDay added inline comments.

================
Comment at: clang/lib/Format/QualifierAlignmentFixer.cpp:28
+
+static void replaceToken(const SourceManager &SourceMgr,
+                         tooling::Replacements &Fixes,
----------------
HazardyKnusperkeks wrote:
> Out of curiosity, on what premise do you choose a static member function that 
> is only used in this file or a local free function? I would always choose the 
> latter (with an anon namespace), to keep the header smaller.
I've been pulled up on using anon namespaces before in previous reviews, 
personally I always use them myself in my code. To be honest I've been moving 
most of these functions into actual class statics functions so I can test the 
functions explicitly in the unit tests (anon namespaces aren't good for that 
obvs)

I'd like to leave them as statics so I can more easily do that move and add 
more tests if I find issues. 


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.cpp:57
+
+  std::string NewText = " " + Qualifier + " ";
+  NewText += Next->TokenText;
----------------
HazardyKnusperkeks wrote:
> Does not need to be addressed here, but does LLVM have a string builder or 
> so? This produces a lot of (de-)allocations.
I'm not a massive fan of this either, but I'm unsure if LLVM has anything, I 
think getting functional first is important, we can go for fast if someone can 
point out a better pattern.


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.cpp:129
+
+bool LeftRightQualifierAlignmentFixer::isQualifierOrType(
+    const FormatToken *Tok) {
----------------
HazardyKnusperkeks wrote:
> I would prefer to match the order of functions in the header with the order 
> in the cpp.
I can spin that around, (its going to mess with review comments, but I know 
what you mean)


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.cpp:347
+                           QualifierToken);
+      else if (Alignment == FormatStyle::QAS_Left)
+        Tok = analyzeLeft(SourceMgr, Keywords, Fixes, Tok, Qualifier,
----------------
HazardyKnusperkeks wrote:
> Only else and assert? It does nothing if Alignment is something different, or?
You know this was my bad because I reused the alignment type  because it had 
the left and right but this could be a boolean  as its different from the 
QualifierAlignment, let me change this for clarity


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.cpp:366
+  // Split the Order list by type and reverse the left side
+  bool left = true;
+  for (const auto &s : Order) {
----------------
HazardyKnusperkeks wrote:
> Couldn't you just
> ```
> LeftOrder.assign(std::reverse_iterator(type) /*maybe with a next or prev, 
> haven't thought too much about it*/, Order.rend());
> RightOrder.assign(std::next(type), Order.end());
> ```
> ?
There is probably a better way but it needs to handle "type" being the first or 
last element, I tried and it didn't quite work.


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.h:24
+
+typedef std::function<std::pair<tooling::Replacements, unsigned>(
+    const Environment &)>
----------------
HazardyKnusperkeks wrote:
> I don't know what the LLVM style is on that, but I prefer `using` anytime 
> over `typedef`.
I was actually just following what is in Format.cpp


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.h:30
+  // Left to Right ordering requires multiple passes
+  SmallVector<AnalyzerPass, 8> Passes;
+  StringRef &Code;
----------------
HazardyKnusperkeks wrote:
> Has the 8 some meaning? Then maybe give it a name. Or is it just coincidence 
> that you repeat the 8 for QualifierTokens?
For SmallVector this is basically a "ShortStringOptimization" for vector i.e. 
its stack allocated until the vector goes over 8, I have 7 qualifiers, and I 
wanted it an order of 2 so hence 8 (its shouldn't grow (and heap allocation) 
unless we define more qualifier types (this only supports what I say for now)

I think the use of a literal is quite common in this case, its really just a 
hint, I think its ok to use without it being a variable.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69764/new/

https://reviews.llvm.org/D69764

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to