================
@@ -840,10 +840,12 @@ def test_get_values(self):
self.assertTrue(variables.IsValid())
self.assertTrue(variables.GetValueAtIndex(0).name == "_handler_one")
- # FIXME: Synthetic variables are never in scope.
+ # Synthetic variables are always in scope.
variables = frame0.GetVariables(False, False, False, True)
----------------
jimingham wrote:
Something is not quite right here. Without synthetic variables, this
invocation returns an empty list as it should.
The only True you are passing here is to the last argument to GetVariables: "in
scope only". But that doesn't actually specify any variables to get. It just
says, for instance "If Locals is true and the current context has a variable
called `foo` that is shadowed by a variable `foo` in an outer scope, then
should you return ONLY the `foo` that's currently visible, or should you return
both.
But if all the actual search scope indicators are False, you shouldn't return
anything. So it is odd that you are returning the synthetic ones here. If we
aren't considering synthetic variables to be Locals, then we need a version of
GetVariables that also has a `bool synthetics` variable as well. Or we could
treat them as Locals, and print them when locals are requested?
The actual work in this patch seems right, which class the synthetic variables
should print under is orthogonal to whether they can ever go out of scope. But
the test seems wrong.
https://github.com/llvm/llvm-project/pull/204177
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits