HazardyKnusperkeks added inline comments.

================
Comment at: clang/lib/Format/QualifierAlignmentFixer.cpp:57
+
+  std::string NewText = " " + Qualifier + " ";
+  NewText += Next->TokenText;
----------------
MyDeveloperDay wrote:
> 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.
Full support for that.


================
Comment at: clang/lib/Format/QualifierAlignmentFixer.h:30
+  // Left to Right ordering requires multiple passes
+  SmallVector<AnalyzerPass, 8> Passes;
+  StringRef &Code;
----------------
MyDeveloperDay wrote:
> 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.
I know what it is. So the 8 is `NumberOfSupportedQualifiers`? My point is that 
if we add something, let's say attributes ;), one only need to change that 
constant and both vectors grow accordingly, so that no heap allocation happens.

Nothing I would block that change for.


================
Comment at: clang/unittests/Format/QualifierFixerTest.cpp:573
+  // The Default
+  EXPECT_EQ(Style.QualifierOrder.size(), 5);
+  EXPECT_EQ(Style.QualifierOrder[0], "inline");
----------------
This one would suffice, since we add the values within the test now. But 
actually I would go for Style.QualifierOrder = {"inline",...}; and no EXPECTs 
needed.


================
Comment at: clang/unittests/Format/QualifierFixerTest.cpp:855
+
+  Style.TypenameMacros.push_back("HRESULT");
+  Style.TypenameMacros.push_back("DWORD");
----------------
This is not correct, the documentation of TypenameMacros says
```These are expected to be macros of the form:

STACK_OF(...)
```
and HRESULT is just a typedef.
So a test against `STACK_OF(int)` is useful. But the macro detection should be 
reworked, or maybe dropped?
The handling of `LLVM_NODISARD` basically boils down to handling attributes and 
`AttributeMacros`.


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