summaryrefslogtreecommitdiffstats
path: root/lldb/packages/Python/lldbsuite/test
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py12
-rw-r--r--lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/main.cpp12
2 files changed, 22 insertions, 2 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
index e7a34647a6d..5d796f9bf99 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/TestDataFormatterSynthVal.py
@@ -55,32 +55,40 @@ class DataFormatterSynthValueTestCase(TestBase):
y.SetPreferSyntheticValue(True)
z = self.frame().FindVariable("z")
z.SetPreferSyntheticValue(True)
+ q = self.frame().FindVariable("q")
+ z.SetPreferSyntheticValue(True)
x_val = x.GetValueAsUnsigned
y_val = y.GetValueAsUnsigned
z_val = z.GetValueAsUnsigned
+ q_val = q.GetValueAsUnsigned
if self.TraceOn():
- print("x_val = %s; y_val = %s; z_val = %s" % (x_val(),y_val(),z_val()))
+ print("x_val = %s; y_val = %s; z_val = %s; q_val = %s" % (x_val(),y_val(),z_val(),q_val()))
self.assertFalse(x_val() == 3, "x == 3 before synthetics")
self.assertFalse(y_val() == 4, "y == 4 before synthetics")
self.assertFalse(z_val() == 7, "z == 7 before synthetics")
+ self.assertFalse(q_val() == 8, "q == 8 before synthetics")
# now set up the synth
self.runCmd("script from myIntSynthProvider import *")
self.runCmd("type synth add -l myIntSynthProvider myInt")
self.runCmd("type synth add -l myArraySynthProvider myArray")
+ self.runCmd("type synth add -l myIntSynthProvider myIntAndStuff")
if self.TraceOn():
- print("x_val = %s; y_val = %s; z_val = %s" % (x_val(),y_val(),z_val()))
+ print("x_val = %s; y_val = %s; z_val = %s; q_val = %s" % (x_val(),y_val(),z_val(),q_val()))
self.assertTrue(x_val() == 3, "x != 3 after synthetics")
self.assertTrue(y_val() == 4, "y != 4 after synthetics")
self.assertTrue(z_val() == 7, "z != 7 after synthetics")
+ self.assertTrue(q_val() == 8, "q != 8 after synthetics")
self.expect("frame variable x", substrs=['3'])
self.expect("frame variable x", substrs=['theValue = 3'], matching=False)
+ self.expect("frame variable q", substrs=['8'])
+ self.expect("frame variable q", substrs=['theValue = 8'], matching=False)
# check that an aptly defined synthetic provider does not affect one-lining
self.expect("expression struct S { myInt theInt{12}; }; S()", substrs = ['(theInt = 12)'])
diff --git a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/main.cpp b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/main.cpp
index accbf0a5a57..1a5925a05a6 100644
--- a/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/main.cpp
+++ b/lldb/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-synthval/main.cpp
@@ -5,6 +5,16 @@ class myInt {
int val() { return theValue; }
};
+class myIntAndStuff {
+private:
+ int theValue;
+ double theExtraFluff;
+public:
+ myIntAndStuff() : theValue(0), theExtraFluff(1.25) {}
+ myIntAndStuff(int _x) : theValue(_x), theExtraFluff(1.25) {}
+ int val() { return theValue; }
+};
+
class myArray {
public:
int array[16];
@@ -17,11 +27,13 @@ class hasAnInt {
};
myInt operator + (myInt x, myInt y) { return myInt(x.val() + y.val()); }
+myInt operator + (myInt x, myIntAndStuff y) { return myInt(x.val() + y.val()); }
int main() {
myInt x{3};
myInt y{4};
myInt z {x+y};
+ myIntAndStuff q {z.val()+1};
hasAnInt hi;
myArray ma;
OpenPOWER on IntegriCloud