sameconrad added inline comments.

================
Comment at: clang-reorder-fields/ReorderFieldsAction.cpp:178
   for (const auto *Initializer : CtorDecl->inits()) {
-    if (!Initializer->isWritten())
+    if (!Initializer->isMemberInitializer() || !Initializer->isWritten())
       continue;
----------------
While adding tests for emitting warnings about base class members I found 
another bug here- non-member initializers don't have a field decl and so would 
result in undefind behavior further down when accessing field indexes (I added 
the test case ClassDerived which would cause a segfault before this change).


================
Comment at: clang-reorder-fields/ReorderFieldsAction.cpp:111
+        Results.insert(FD);
+  return Results;
+}
----------------
compnerd wrote:
> What if the `FieldDecl` belongs to a base class?  Can you add a test case for 
> that scenario?
I've added tests for this scenario and an explanatory comment.  It doesn't seem 
this is actually a problem due to the way Clang constructs the AST.  
Sema::PerformObjectMemberConversion always inserts an implicit 
UncheckedDerivedToBase cast when accessing a base class member which means that 
hasObjectExpression(cxxThisExpr()) won't actually match against such an 
expression. 


================
Comment at: test/clang-reorder-fields/FieldDependencyWarning.cpp:3
+
+#include <string>
+
----------------
alexshap wrote:
> tests should not depend on STL (for good examples see how things are done in 
> clang-tidy tests), so simply remove this include and define a small class 
> with a constructor right here 
This has been updated to use a simple struct.


https://reviews.llvm.org/D35972



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

Reply via email to