forked from OSchip/llvm-project
Fix a problem where summary strings could not use a synthetically generated value as part of themselves
llvm-svn: 220414
This commit is contained in:
parent
ea1e86e80d
commit
50bed5e86f
|
@ -1802,6 +1802,7 @@ FormatPromptRecurse
|
||||||
log->Printf("[Debugger::FormatPrompt] ALL RIGHT: unparsed portion = %s, why stopping = %d,"
|
log->Printf("[Debugger::FormatPrompt] ALL RIGHT: unparsed portion = %s, why stopping = %d,"
|
||||||
" final_value_type %d",
|
" final_value_type %d",
|
||||||
first_unparsed, reason_to_stop, final_value_type);
|
first_unparsed, reason_to_stop, final_value_type);
|
||||||
|
target = target->GetQualifiedRepresentationIfAvailable(target->GetDynamicValueType(), true).get();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -90,6 +90,11 @@ class DataFormatterSynthValueTestCase(TestBase):
|
||||||
|
|
||||||
# check that an aptly defined synthetic provider does not affect one-lining
|
# check that an aptly defined synthetic provider does not affect one-lining
|
||||||
self.expect("expression struct S { myInt theInt{12}; }; S()", substrs = ['(theInt = 12)'])
|
self.expect("expression struct S { myInt theInt{12}; }; S()", substrs = ['(theInt = 12)'])
|
||||||
|
|
||||||
|
# check that we can use a synthetic value in a summary
|
||||||
|
self.runCmd("type summary add hasAnInt -s ${var.theInt}")
|
||||||
|
hi = self.frame().FindVariable("hi")
|
||||||
|
self.assertEqual(hi.GetSummary(), "42")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
import atexit
|
import atexit
|
||||||
|
|
|
@ -5,11 +5,18 @@ class myInt {
|
||||||
int val() { return theValue; }
|
int val() { return theValue; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class hasAnInt {
|
||||||
|
public:
|
||||||
|
myInt theInt;
|
||||||
|
hasAnInt() : theInt(42) {}
|
||||||
|
};
|
||||||
|
|
||||||
myInt operator + (myInt x, myInt y) { return myInt(x.val() + y.val()); }
|
myInt operator + (myInt x, myInt y) { return myInt(x.val() + y.val()); }
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
myInt x{3};
|
myInt x{3};
|
||||||
myInt y{4};
|
myInt y{4};
|
||||||
myInt z {x+y};
|
myInt z {x+y};
|
||||||
|
hasAnInt hi;
|
||||||
return z.val(); // break here
|
return z.val(); // break here
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue