teemperor requested changes to this revision.
teemperor added a comment.
This revision now requires changes to proceed.

Thanks! This is looking pretty good, I just have some final minor comments 
about some code that I think we can also drop/split-out.



================
Comment at: lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp:20
 
-class BitsetFrontEnd : public SyntheticChildrenFrontEnd {
+// This class can be used for handling bitsets from both libcxx and libstdcpp.
+class GenericBitsetFrontEnd : public SyntheticChildrenFrontEnd {
----------------
nit: `///` to make this into a proper doc string.


================
Comment at: lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp:23
 public:
-  BitsetFrontEnd(ValueObject &valobj);
+  enum class StdLib {
+    LibCxx,
----------------
I like it!


================
Comment at: lldb/source/Plugins/Language/CPlusPlus/GenericBitset.cpp:90
+  // template argument.
+  ValueObjectSP dereferenced_type = m_backend.GetSP();
+  if (m_backend.GetCompilerType().IsPointerOrReferenceType()) {
----------------
If you look in `CPlusPlusLanguage.cpp` there is a thing called 
`stl_deref_flags` and you can just use the same two lines that define that 
variable in the Libstdc++ init function. The 
`stl_deref_flags.SetFrontEndWantsDereference();` will set a flag that does this 
whole deref-stuff here automatically (that's why this code wasn't necessary for 
the libc++ provider).


================
Comment at: 
lldb/test/API/functionalities/data-formatter/data-formatter-stl/generic/bitset/TestDataFormatterGenericBitset.py:66
+        self.check("ptr", 13)
+        self.expect("p ref",
+                    substrs=['[0] = false',
----------------
is there a specific reason for these added `self.expect("p ...", substrs=[<many 
lines>])` checks? I think testing the formatter with the expression evaluator 
is good, but there are far less verbose ways to test this (to be specific, 
`self.primes` could be a list of ValueCheck objects and you can pass that same 
ValueObject list as the `result_children`/`children` parameters to 
`self.expect_expr` or `self.expect_var_path`. This could be done in `check` so 
it would also cover all the checks in this test.).

So I would suggest we drop the added checks here and instead leave this up to a 
separate commit that refactors the test (you can do that if you want, but I 
don't mind doing it myself). This commit is in the current state just 
repurposing the existing libcxx formatter (with all the potentially existing 
bugs), so I think this is good enough for landing without expanding the test. 
Otherwise I think these checks could be implemented in a better way with the 
ValueCheck approach (see above).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D112180

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

Reply via email to