Author: enrico
Date: Mon Aug 31 19:19:35 2015
New Revision: 246512

URL: http://llvm.org/viewvc/llvm-project?rev=246512&view=rev
Log:
Make FormatEntity be a little bit smarter when printing function arguments


Modified:
    lldb/trunk/source/Core/FormatEntity.cpp

Modified: lldb/trunk/source/Core/FormatEntity.cpp
URL: 
http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FormatEntity.cpp?rev=246512&r1=246511&r2=246512&view=diff
==============================================================================
--- lldb/trunk/source/Core/FormatEntity.cpp (original)
+++ lldb/trunk/source/Core/FormatEntity.cpp Mon Aug 31 19:19:35 2015
@@ -20,6 +20,7 @@
 #include "lldb/Core/ValueObjectVariable.h"
 #include "lldb/DataFormatters/DataVisualization.h"
 #include "lldb/DataFormatters/FormatManager.h"
+#include "lldb/DataFormatters/ValueObjectPrinter.h"
 #include "lldb/Expression/ClangExpressionVariable.h"
 #include "lldb/Host/FileSpec.h"
 #include "lldb/Interpreter/CommandInterpreter.h"
@@ -1785,20 +1786,34 @@ FormatEntity::Format (const Entry &entry
 
                                 VariableSP var_sp (args.GetVariableAtIndex 
(arg_idx));
                                 ValueObjectSP var_value_sp 
(ValueObjectVariable::Create (exe_scope, var_sp));
+                                StreamString ss;
                                 const char *var_representation = nullptr;
                                 const char *var_name = 
var_value_sp->GetName().GetCString();
-                                if 
(var_value_sp->GetCompilerType().IsAggregateType() &&
-                                    
DataVisualization::ShouldPrintAsOneLiner(*var_value_sp.get()))
+                                if (var_value_sp->GetCompilerType().IsValid())
                                 {
-                                    static StringSummaryFormat 
format(TypeSummaryImpl::Flags()
-                                                                      
.SetHideItemNames(false)
-                                                                      
.SetShowMembersOneLiner(true),
-                                                                      "");
-                                    format.FormatObject(var_value_sp.get(), 
buffer, TypeSummaryOptions());
-                                    var_representation = buffer.c_str();
+                                    if (var_value_sp && 
exe_scope->CalculateTarget())
+                                        var_value_sp = 
var_value_sp->GetQualifiedRepresentationIfAvailable(exe_scope->CalculateTarget()->TargetProperties::GetPreferDynamicValue(),
+                                                                               
                            
exe_scope->CalculateTarget()->TargetProperties::GetEnableSyntheticValue());
+                                    if 
(var_value_sp->GetCompilerType().IsAggregateType() &&
+                                        
DataVisualization::ShouldPrintAsOneLiner(*var_value_sp.get()))
+                                    {
+                                        static StringSummaryFormat 
format(TypeSummaryImpl::Flags()
+                                                                          
.SetHideItemNames(false)
+                                                                          
.SetShowMembersOneLiner(true),
+                                                                          "");
+                                        
format.FormatObject(var_value_sp.get(), buffer, TypeSummaryOptions());
+                                        var_representation = buffer.c_str();
+                                    }
+                                    else
+                                        
var_value_sp->DumpPrintableRepresentation(ss,
+                                                                               
   
ValueObject::ValueObjectRepresentationStyle::eValueObjectRepresentationStyleSummary,
+                                                                               
   eFormatDefault,
+                                                                               
   
ValueObject::PrintableRepresentationSpecialCases::ePrintableRepresentationSpecialCasesAllow,
+                                                                               
   false);
                                 }
-                                else
-                                    var_representation = 
var_value_sp->GetValueAsCString();
+                                
+                                if (ss.GetData() && ss.GetSize())
+                                    var_representation = ss.GetData();
                                 if (arg_idx > 0)
                                     s.PutCString (", ");
                                 if (var_value_sp->GetError().Success())


_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to