[lldb-mi] Fix evaluation for children of created variable object.
Move code in CMICmdCmdVarListChildren::Execute() up so that the child object will always be added when the MI command -var-list-children is entered (instead of only when the print-value was all or simple). This patch fixes evaluation of expressions like varobj.member for a created varobj with children. Reviewed by: abidh Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D11659 llvm-svn: 243782
This commit is contained in:
parent
fe7e41e8f5
commit
c18daf29ae
|
@ -256,6 +256,17 @@ class MiVarTestCase(lldbmi_testcase.MiTestCaseBase):
|
|||
self.runCmd("-var-create var_pcomplx * pcomplx")
|
||||
self.expect("\^done,name=\"var_pcomplx\",numchild=\"2\",value=\"\{\.\.\.\}\",type=\"pcomplex_type\",thread-id=\"1\",has_more=\"0\"")
|
||||
|
||||
# Test that -var-evaluate-expression can evaluate the children of created varobj
|
||||
self.runCmd("-var-list-children var_complx")
|
||||
self.runCmd("-var-evaluate-expression var_complx.i")
|
||||
self.expect("\^done,value=\"3\"")
|
||||
self.runCmd("-var-list-children var_complx_array")
|
||||
self.runCmd("-var-evaluate-expression var_complx_array.[0]")
|
||||
self.expect("\^done,value=\"\{...\}\"")
|
||||
self.runCmd("-var-list-children var_pcomplx")
|
||||
self.runCmd("-var-evaluate-expression var_pcomplx.complex_type")
|
||||
self.expect("\^done,value=\"\{...\}\"")
|
||||
|
||||
# Test that -var-list-children lists empty children if range is empty
|
||||
# (and that print-values is optional)
|
||||
self.runCmd("-var-list-children var_complx 0 0")
|
||||
|
|
|
@ -1019,6 +1019,9 @@ CMICmdCmdVarListChildren::Execute(void)
|
|||
const MIuint nChildren = member.GetNumChildren();
|
||||
const CMIUtilString strThreadId(CMIUtilString::Format("%u", member.GetThread().GetIndexID()));
|
||||
|
||||
// Varobj gets added to CMICmnLLDBDebugSessionInfoVarObj static container of varObjs
|
||||
CMICmnLLDBDebugSessionInfoVarObj var(strExp, name, member, rVarObjName);
|
||||
|
||||
// MI print "child={name=\"%s\",exp=\"%s\",numchild=\"%d\",value=\"%s\",type=\"%s\",thread-id=\"%u\",has_more=\"%u\"}"
|
||||
const CMICmnMIValueConst miValueConst(name);
|
||||
const CMICmnMIValueResult miValueResult("name", miValueConst);
|
||||
|
@ -1040,8 +1043,6 @@ CMICmdCmdVarListChildren::Execute(void)
|
|||
if (eVarInfoFormat == CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_AllValues ||
|
||||
(eVarInfoFormat == CMICmnLLDBDebugSessionInfo::eVariableInfoFormat_SimpleValues && nChildren == 0))
|
||||
{
|
||||
// Varobj gets added to CMICmnLLDBDebugSessionInfoVarObj static container of varObjs
|
||||
CMICmnLLDBDebugSessionInfoVarObj var(strExp, name, member, rVarObjName);
|
||||
const CMIUtilString strValue(
|
||||
CMICmnLLDBDebugSessionInfoVarObj::GetValueStringFormatted(member, CMICmnLLDBDebugSessionInfoVarObj::eVarFormat_Natural));
|
||||
const CMICmnMIValueConst miValueConst7(strValue);
|
||||
|
|
Loading…
Reference in New Issue