Add a data formatter for __NSArray0, the type of empty arrays

llvm-svn: 250341
diff --git a/lldb/source/Plugins/Language/ObjC/NSArray.cpp b/lldb/source/Plugins/Language/ObjC/NSArray.cpp
index 2a6c886..675a91a 100644
--- a/lldb/source/Plugins/Language/ObjC/NSArray.cpp
+++ b/lldb/source/Plugins/Language/ObjC/NSArray.cpp
@@ -202,6 +202,31 @@
             std::vector<lldb::ValueObjectSP> m_children;
         };
         
+        class NSArray0SyntheticFrontEnd : public SyntheticChildrenFrontEnd
+        {
+        public:
+            NSArray0SyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
+            
+            virtual size_t
+            CalculateNumChildren ();
+            
+            virtual lldb::ValueObjectSP
+            GetChildAtIndex (size_t idx);
+            
+            virtual bool
+            Update();
+            
+            virtual bool
+            MightHaveChildren ();
+            
+            virtual size_t
+            GetIndexOfChildWithName (const ConstString &name);
+            
+            virtual
+            ~NSArray0SyntheticFrontEnd ();
+        private:
+        };
+        
         class NSArrayCodeRunningSyntheticFrontEnd : public SyntheticChildrenFrontEnd
         {
         public:
@@ -275,6 +300,10 @@
         if (error.Fail())
             return false;
     }
+    else if (!strcmp(class_name,"__NSArray0"))
+    {
+        value = 0;
+    }
     else if (!strcmp(class_name,"__NSCFArray"))
     {
         Error error;
@@ -632,6 +661,45 @@
     return retval_sp;
 }
 
+lldb_private::formatters::NSArray0SyntheticFrontEnd::NSArray0SyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) :
+SyntheticChildrenFrontEnd (*valobj_sp.get())
+{
+}
+
+lldb_private::formatters::NSArray0SyntheticFrontEnd::~NSArray0SyntheticFrontEnd ()
+{
+}
+
+size_t
+lldb_private::formatters::NSArray0SyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name)
+{
+    return UINT32_MAX;
+}
+
+size_t
+lldb_private::formatters::NSArray0SyntheticFrontEnd::CalculateNumChildren ()
+{
+    return 0;
+}
+
+bool
+lldb_private::formatters::NSArray0SyntheticFrontEnd::Update()
+{
+    return false;
+}
+
+bool
+lldb_private::formatters::NSArray0SyntheticFrontEnd::MightHaveChildren ()
+{
+    return false;
+}
+
+lldb::ValueObjectSP
+lldb_private::formatters::NSArray0SyntheticFrontEnd::GetChildAtIndex (size_t idx)
+{
+    return lldb::ValueObjectSP();
+}
+
 SyntheticChildrenFrontEnd* lldb_private::formatters::NSArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP valobj_sp)
 {
     if (!valobj_sp)
@@ -669,6 +737,10 @@
     {
         return (new NSArrayISyntheticFrontEnd(valobj_sp));
     }
+    else if (!strcmp(class_name,"__NSArray0"))
+    {
+        return (new NSArray0SyntheticFrontEnd(valobj_sp));
+    }
     else if (!strcmp(class_name,"__NSArrayM"))
     {
         if (runtime->GetFoundationVersion() >= 1100)