Add an overload of SetValueFromCString() to ValueObjectSynthetic that is just a passthrough to the parent object
Without this overload, attempts to edit the value of a variable with synthetic children enabled would change the value inside the synthetic ValueObject, but not propagate the changes to the underlying storage, hence resulting in no write for any meaningful purpose Comes with a test case, and fixes rdar://19586311 llvm-svn: 227120
This commit is contained in:
parent
9a9e1a59ce
commit
3de4971a7a
|
@ -140,6 +140,9 @@ public:
|
|||
return (UpdateValueIfNeeded(), m_provides_value == eLazyBoolYes);
|
||||
}
|
||||
|
||||
virtual bool
|
||||
SetValueFromCString (const char *value_str, Error& error);
|
||||
|
||||
protected:
|
||||
virtual bool
|
||||
UpdateValue ();
|
||||
|
|
|
@ -298,3 +298,9 @@ ValueObjectSynthetic::CanProvideValue ()
|
|||
return true;
|
||||
return m_parent->CanProvideValue();
|
||||
}
|
||||
|
||||
bool
|
||||
ValueObjectSynthetic::SetValueFromCString (const char *value_str, Error& error)
|
||||
{
|
||||
return m_parent->SetValueFromCString(value_str, error);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,4 @@
|
|||
LEVEL = ../../../make
|
||||
OBJC_SOURCES := main.m
|
||||
include $(LEVEL)/Makefile.rules
|
||||
LDFLAGS += -framework Foundation
|
|
@ -0,0 +1,3 @@
|
|||
import lldbinline
|
||||
|
||||
lldbinline.MakeInlineTest(__file__, globals())
|
|
@ -0,0 +1,19 @@
|
|||
//===-- main.m ---------------------------------------------------*- ObjC -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
int main() {
|
||||
NSDictionary* dic = @{@1 : @2};
|
||||
NSLog(@"hello world"); //% dic = self.frame().FindVariable("dic")
|
||||
//% dic.SetPreferSyntheticValue(True)
|
||||
//% dic.SetPreferDynamicValue(lldb.eDynamicCanRunTarget)
|
||||
//% dic.SetValueFromCString("12")
|
||||
return 0; //% dic = self.frame().FindVariable("dic")
|
||||
//% self.assertTrue(dic.GetValueAsUnsigned() == 0xC, "failed to read what I wrote")
|
||||
}
|
Loading…
Reference in New Issue