Eliminated redundant "constructors" for ClangExpressionVariable.                                                                                                                                                       
                                                                                                                                                                                                                       
The ClangExpressionVariable::CreateVariableInList functions looked cute, but                                                                                                                                           
caused more confusion than they solved.  I removed them, and instead made sure                                                                                                                                         
that there are adequate facilities for easily adding newly-constructed                                                                                                                                                 
ExpressionVariables to lists.      

I also made some of the constructors that are common be generic, so that it's
possible to construct expression variables from generic places (like the ABI and
ValueObject) without having to know the specifics about the class.

llvm-svn: 249095
diff --git a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
index 4356297..3f0517f 100644
--- a/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
+++ b/lldb/source/Plugins/ExpressionParser/Clang/ClangExpressionDeclMap.cpp
@@ -219,16 +219,14 @@
 
         uint32_t offset = m_parser_vars->m_materializer->AddResultVariable(user_type, is_lvalue, m_keep_result_in_memory, err);
 
-        ClangExpressionVariable *var = ClangExpressionVariable::CreateVariableInList(m_found_entities,
-                                                                                     exe_ctx.GetBestExecutionContextScope(),
-                                                                                     name,
-                                                                                     user_type,
-                                                                                     m_parser_vars->m_target_info.byte_order,
-                                                                                     m_parser_vars->m_target_info.address_byte_size);
+        ClangExpressionVariable *var = new ClangExpressionVariable(exe_ctx.GetBestExecutionContextScope(),
+                                                                   name,
+                                                                   user_type,
+                                                                   m_parser_vars->m_target_info.byte_order,
+                                                                   m_parser_vars->m_target_info.address_byte_size);
 
-        if (!var)
-            return false;
-
+        m_found_entities.AddNewlyConstructedVariable(var);
+        
         var->EnableParserVars(GetParserID());
 
         ClangExpressionVariable::ParserVars *parser_vars = var->GetParserVars(GetParserID());
@@ -268,11 +266,11 @@
     if (!m_parser_vars->m_target_info.IsValid())
         return false;
 
-    ClangExpressionVariable *var = m_parser_vars->m_persistent_vars->CreatePersistentVariable (exe_ctx.GetBestExecutionContextScope (),
-                                                                                               name,
-                                                                                               user_type,
-                                                                                               m_parser_vars->m_target_info.byte_order,
-                                                                                               m_parser_vars->m_target_info.address_byte_size);
+    ClangExpressionVariable *var = llvm::cast<ClangExpressionVariable>(m_parser_vars->m_persistent_vars->CreatePersistentVariable (exe_ctx.GetBestExecutionContextScope (),
+                                                                                                                                   name,
+                                                                                                                                   user_type,
+                                                                                                                                   m_parser_vars->m_target_info.byte_order,
+                                                                                                                                   m_parser_vars->m_target_info.address_byte_size).get());
 
     if (!var)
         return false;
@@ -1801,7 +1799,8 @@
 
     std::string decl_name(context.m_decl_name.getAsString());
     ConstString entity_name(decl_name.c_str());
-    ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities, valobj));
+    ClangExpressionVariable *entity(new ClangExpressionVariable(valobj));
+    m_found_entities.AddNewlyConstructedVariable(entity);
 
     assert (entity);
     entity->EnableParserVars(GetParserID());
@@ -1879,14 +1878,13 @@
 
     std::string decl_name(context.m_decl_name.getAsString());
     ConstString entity_name(decl_name.c_str());
-    ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities,
-                                                                                  m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (),
-                                                                                  entity_name,
-                                                                                  user_type,
-                                                                                  m_parser_vars->m_target_info.byte_order,
-                                                                                  m_parser_vars->m_target_info.address_byte_size));
-    assert (entity);
-
+    ClangExpressionVariable *entity(new ClangExpressionVariable(m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (),
+                                                                entity_name,
+                                                                user_type,
+                                                                m_parser_vars->m_target_info.byte_order,
+                                                                m_parser_vars->m_target_info.address_byte_size));
+    m_found_entities.AddNewlyConstructedVariable(entity);
+    
     entity->EnableParserVars(GetParserID());
     ClangExpressionVariable::ParserVars *parser_vars = entity->GetParserVars(GetParserID());
 
@@ -1995,11 +1993,10 @@
 
     NamedDecl *var_decl = context.AddVarDecl(parser_clang_type);
 
-    ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList(m_found_entities,
-                                                                                  m_parser_vars->m_exe_ctx.GetBestExecutionContextScope(),
-                                                                                  m_parser_vars->m_target_info.byte_order,
-                                                                                  m_parser_vars->m_target_info.address_byte_size));
-    assert (entity);
+    ClangExpressionVariable *entity(new ClangExpressionVariable(m_parser_vars->m_exe_ctx.GetBestExecutionContextScope(),
+                                                                m_parser_vars->m_target_info.byte_order,
+                                                                m_parser_vars->m_target_info.address_byte_size));
+    m_found_entities.AddNewlyConstructedVariable(entity);
 
     std::string decl_name(context.m_decl_name.getAsString());
     entity->SetName (ConstString (decl_name.c_str()));
@@ -2104,11 +2101,10 @@
 
     lldb::addr_t load_addr = fun_address.GetCallableLoadAddress(target, is_indirect_function);
 
-    ClangExpressionVariable *entity(ClangExpressionVariable::CreateVariableInList (m_found_entities,
-                                                                                   m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (),
-                                                                                   m_parser_vars->m_target_info.byte_order,
-                                                                                   m_parser_vars->m_target_info.address_byte_size));
-    assert (entity);
+    ClangExpressionVariable *entity(new ClangExpressionVariable (m_parser_vars->m_exe_ctx.GetBestExecutionContextScope (),
+                                                                 m_parser_vars->m_target_info.byte_order,
+                                                                 m_parser_vars->m_target_info.address_byte_size));
+    m_found_entities.AddNewlyConstructedVariable(entity);
 
     std::string decl_name(context.m_decl_name.getAsString());
     entity->SetName(ConstString(decl_name.c_str()));