diff options
| author | Enrico Granata <egranata@apple.com> | 2015-11-02 21:52:05 +0000 |
|---|---|---|
| committer | Enrico Granata <egranata@apple.com> | 2015-11-02 21:52:05 +0000 |
| commit | 407b5c62bae52c77efaf0cfa477cc0cbfc09bd85 (patch) | |
| tree | e4a6a6de0e3c940a09c74fc74137bc95ffb9051d /lldb | |
| parent | b1d4a39990f0abcd323cdb5631f46101d3e4e867 (diff) | |
| download | bcm5719-llvm-407b5c62bae52c77efaf0cfa477cc0cbfc09bd85.tar.gz bcm5719-llvm-407b5c62bae52c77efaf0cfa477cc0cbfc09bd85.zip | |
Change ValueObject::IsLogicalTrue so that it starts by asking the applicable Language plugin before using the C-style rule
llvm-svn: 251838
Diffstat (limited to 'lldb')
| -rw-r--r-- | lldb/include/lldb/Target/Language.h | 4 | ||||
| -rw-r--r-- | lldb/source/Core/ValueObject.cpp | 15 | ||||
| -rw-r--r-- | lldb/source/Target/Language.cpp | 7 |
3 files changed, 26 insertions, 0 deletions
diff --git a/lldb/include/lldb/Target/Language.h b/lldb/include/lldb/Target/Language.h index 57ef8b5ef89..8eb5ed2734d 100644 --- a/lldb/include/lldb/Target/Language.h +++ b/lldb/include/lldb/Target/Language.h @@ -119,6 +119,10 @@ public: virtual DumpValueObjectOptions::DeclPrintingHelper GetDeclPrintingHelper (); + virtual LazyBool + IsLogicalTrue (ValueObject& valobj, + Error& error); + // These are accessors for general information about the Languages lldb knows about: static lldb::LanguageType diff --git a/lldb/source/Core/ValueObject.cpp b/lldb/source/Core/ValueObject.cpp index 11ccd1bcfb6..fe86f374a01 100644 --- a/lldb/source/Core/ValueObject.cpp +++ b/lldb/source/Core/ValueObject.cpp @@ -47,6 +47,7 @@ #include "lldb/Symbol/Type.h" #include "lldb/Target/ExecutionContext.h" +#include "lldb/Target/Language.h" #include "lldb/Target/LanguageRuntime.h" #include "lldb/Target/ObjCLanguageRuntime.h" #include "lldb/Target/Process.h" @@ -515,6 +516,20 @@ ValueObject::ResolveValue (Scalar &scalar) bool ValueObject::IsLogicalTrue (Error& error) { + if (Language *language = Language::FindPlugin(GetObjectRuntimeLanguage())) + { + LazyBool is_logical_true = language->IsLogicalTrue(*this, error); + switch (is_logical_true) + { + case eLazyBoolYes: + case eLazyBoolNo: + return (is_logical_true == true); + case eLazyBoolCalculate: + default: + break; + } + } + Scalar scalar_value; if (!ResolveValue (scalar_value)) diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp index a2855b76e7e..3a53a6bec0e 100644 --- a/lldb/source/Target/Language.cpp +++ b/lldb/source/Target/Language.cpp @@ -351,6 +351,13 @@ Language::GetDeclPrintingHelper () return nullptr; } +LazyBool +Language::IsLogicalTrue (ValueObject& valobj, + Error& error) +{ + return eLazyBoolCalculate; +} + //---------------------------------------------------------------------- // Constructor //---------------------------------------------------------------------- |

