This patch adds support of expression evaluation in a context of some object. Consider the following example:
struct S { int a = 11; int b = 12; }; int main() { S s; int a = 1; int b = 2; // We have stopped here return 0; }
This patch allows to do something like that:
lldb.frame.FindVariable("s").EvaluateExpression("a + b")
and the result will be 33 (not 3) because fields a and b of s will be used (not locals a and b).
This is achieved by replacing of this type and object for the expression. This has some limitations: an expression can be evaluated only for values located in the debuggee process memory (they must have an address of eAddressTypeLoad type).
Our company needs this functionality to implement some UI visualization of variables in our IDEs. I understand that the community may be not interested in this functionality, and I'll just abandon it if so. But if the community is interested in this, we can save some time on merging in the future :)