<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">That depends - some of the language plugin stuff is being used in C/C++/ObjC, and then there either are new test cases, or existing test cases cover the fact that refactoring has not broken functionality</div><div class=""><br class=""></div><div class="">Some of the new functionality is not (yet) used, and is just infrastructural plumbing - in those cases, the best we can do to test is using existing test coverage to ensure our plumbing through does not break existing behavior</div><div class="">This change falls in this latter category - i.e. since it is just infrastructure work, there is no change in functionality, and the lack of regressions is the best testing coverage we can get in the current world</div><div class="">When I start using this, I will add tests (or rework existing tests) as needed</div><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 18, 2015, at 5:19 PM, Zachary Turner <<a href="mailto:zturner@google.com" class="">zturner@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class="">Hi Enrico, have there been any tests exercising any of the language plugin stuff yet?  Hard to follow every CL that goes in, so just trying to catch up.</div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Wed, Nov 18, 2015 at 5:14 PM Enrico Granata via lldb-commits <<a href="mailto:lldb-commits@lists.llvm.org" class="">lldb-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: enrico<br class="">
Date: Wed Nov 18 19:11:53 2015<br class="">
New Revision: 253531<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=253531&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=253531&view=rev</a><br class="">
Log:<br class="">
Allow the language plugins a say in how the function name is rendered as part of frame formatting<br class="">
<br class="">
Modified:<br class="">
    lldb/trunk/include/lldb/Target/Language.h<br class="">
    lldb/trunk/source/Core/FormatEntity.cpp<br class="">
    lldb/trunk/source/Target/Language.cpp<br class="">
<br class="">
Modified: lldb/trunk/include/lldb/Target/Language.h<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Language.h?rev=253531&r1=253530&r2=253531&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Language.h?rev=253531&r1=253530&r2=253531&view=diff</a><br class="">
==============================================================================<br class="">
--- lldb/trunk/include/lldb/Target/Language.h (original)<br class="">
+++ lldb/trunk/include/lldb/Target/Language.h Wed Nov 18 19:11:53 2015<br class="">
@@ -32,7 +32,6 @@ class Language :<br class="">
 public PluginInterface<br class="">
 {<br class="">
 public:<br class="">
-<br class="">
     class TypeScavenger<br class="">
     {<br class="">
     public:<br class="">
@@ -67,6 +66,13 @@ public:<br class="">
                    const char *key,<br class="">
                    ResultSet &results) = 0;<br class="">
     };<br class="">
+<br class="">
+    enum class FunctionNameRepresentation<br class="">
+    {<br class="">
+        eName,<br class="">
+        eNameWithArgs,<br class="">
+        eNameWithNoArgs<br class="">
+    };<br class="">
<br class="">
     ~Language() override;<br class="">
<br class="">
@@ -134,6 +140,11 @@ public:<br class="">
     virtual bool<br class="">
     IsUninitializedReference (ValueObject& valobj);<br class="">
<br class="">
+    virtual bool<br class="">
+    GetFunctionDisplayName (const SymbolContext *sc,<br class="">
+                            FunctionNameRepresentation representation,<br class="">
+                            Stream& s);<br class="">
+<br class="">
     // These are accessors for general information about the Languages lldb knows about:<br class="">
<br class="">
     static lldb::LanguageType<br class="">
<br class="">
Modified: lldb/trunk/source/Core/FormatEntity.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FormatEntity.cpp?rev=253531&r1=253530&r2=253531&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/FormatEntity.cpp?rev=253531&r1=253530&r2=253531&view=diff</a><br class="">
==============================================================================<br class="">
--- lldb/trunk/source/Core/FormatEntity.cpp (original)<br class="">
+++ lldb/trunk/source/Core/FormatEntity.cpp Wed Nov 18 19:11:53 2015<br class="">
@@ -1653,201 +1653,264 @@ FormatEntity::Format (const Entry &entry<br class="">
<br class="">
         case Entry::Type::FunctionName:<br class="">
             {<br class="">
-                const char *name = NULL;<br class="">
+                Language *language_plugin = nullptr;<br class="">
+                bool language_plugin_handled = false;<br class="">
+                StreamString ss;<br class="">
                 if (sc->function)<br class="">
-                    name = sc->function->GetName().AsCString (NULL);<br class="">
+                    language_plugin = Language::FindPlugin(sc->function->GetLanguage());<br class="">
                 else if (sc->symbol)<br class="">
-                    name = sc->symbol->GetName().AsCString (NULL);<br class="">
-                if (name)<br class="">
+                    language_plugin = Language::FindPlugin(sc->symbol->GetLanguage());<br class="">
+                if (language_plugin)<br class="">
                 {<br class="">
-                    s.PutCString(name);<br class="">
-<br class="">
-                    if (sc->block)<br class="">
+                    language_plugin_handled = language_plugin->GetFunctionDisplayName(sc,<br class="">
+                                                                                      Language::FunctionNameRepresentation::eName,<br class="">
+                                                                                      ss);<br class="">
+                }<br class="">
+                if (language_plugin_handled)<br class="">
+                {<br class="">
+                    s.PutCString(ss.GetData());<br class="">
+                    return true;<br class="">
+                }<br class="">
+                else<br class="">
+                {<br class="">
+                    const char *name = NULL;<br class="">
+                    if (sc->function)<br class="">
+                        name = sc->function->GetName().AsCString (NULL);<br class="">
+                    else if (sc->symbol)<br class="">
+                        name = sc->symbol->GetName().AsCString (NULL);<br class="">
+                    if (name)<br class="">
                     {<br class="">
-                        Block *inline_block = sc->block->GetContainingInlinedBlock ();<br class="">
-                        if (inline_block)<br class="">
+                        s.PutCString(name);<br class="">
+<br class="">
+                        if (sc->block)<br class="">
                         {<br class="">
-                            const InlineFunctionInfo *inline_info = sc->block->GetInlinedFunctionInfo();<br class="">
-                            if (inline_info)<br class="">
+                            Block *inline_block = sc->block->GetContainingInlinedBlock ();<br class="">
+                            if (inline_block)<br class="">
                             {<br class="">
-                                s.PutCString(" [inlined] ");<br class="">
-                                inline_info->GetName(sc->function->GetLanguage()).Dump(&s);<br class="">
+                                const InlineFunctionInfo *inline_info = sc->block->GetInlinedFunctionInfo();<br class="">
+                                if (inline_info)<br class="">
+                                {<br class="">
+                                    s.PutCString(" [inlined] ");<br class="">
+                                    inline_info->GetName(sc->function->GetLanguage()).Dump(&s);<br class="">
+                                }<br class="">
                             }<br class="">
                         }<br class="">
+                        return true;<br class="">
                     }<br class="">
-                    return true;<br class="">
                 }<br class="">
             }<br class="">
             return false;<br class="">
<br class="">
         case Entry::Type::FunctionNameNoArgs:<br class="">
             {<br class="">
-                ConstString name;<br class="">
+                Language *language_plugin = nullptr;<br class="">
+                bool language_plugin_handled = false;<br class="">
+                StreamString ss;<br class="">
                 if (sc->function)<br class="">
-                    name = sc->function->GetNameNoArguments();<br class="">
+                    language_plugin = Language::FindPlugin(sc->function->GetLanguage());<br class="">
                 else if (sc->symbol)<br class="">
-                    name = sc->symbol->GetNameNoArguments();<br class="">
-                if (name)<br class="">
+                    language_plugin = Language::FindPlugin(sc->symbol->GetLanguage());<br class="">
+                if (language_plugin)<br class="">
                 {<br class="">
-                    s.PutCString(name.GetCString());<br class="">
+                    language_plugin_handled = language_plugin->GetFunctionDisplayName(sc,<br class="">
+                                                                                      Language::FunctionNameRepresentation::eNameWithNoArgs,<br class="">
+                                                                                      ss);<br class="">
+                }<br class="">
+                if (language_plugin_handled)<br class="">
+                {<br class="">
+                    s.PutCString(ss.GetData());<br class="">
                     return true;<br class="">
                 }<br class="">
+                else<br class="">
+                {<br class="">
+                    ConstString name;<br class="">
+                    if (sc->function)<br class="">
+                        name = sc->function->GetNameNoArguments();<br class="">
+                    else if (sc->symbol)<br class="">
+                        name = sc->symbol->GetNameNoArguments();<br class="">
+                    if (name)<br class="">
+                    {<br class="">
+                        s.PutCString(name.GetCString());<br class="">
+                        return true;<br class="">
+                    }<br class="">
+                }<br class="">
             }<br class="">
             return false;<br class="">
<br class="">
         case Entry::Type::FunctionNameWithArgs:<br class="">
             {<br class="">
-                // Print the function name with arguments in it<br class="">
+                Language *language_plugin = nullptr;<br class="">
+                bool language_plugin_handled = false;<br class="">
+                StreamString ss;<br class="">
                 if (sc->function)<br class="">
+                    language_plugin = Language::FindPlugin(sc->function->GetLanguage());<br class="">
+                else if (sc->symbol)<br class="">
+                    language_plugin = Language::FindPlugin(sc->symbol->GetLanguage());<br class="">
+                if (language_plugin)<br class="">
                 {<br class="">
-                    ExecutionContextScope *exe_scope = exe_ctx ? exe_ctx->GetBestExecutionContextScope() : NULL;<br class="">
-                    const char *cstr = sc->function->GetName().AsCString (NULL);<br class="">
-                    if (cstr)<br class="">
+                    language_plugin_handled = language_plugin->GetFunctionDisplayName(sc,<br class="">
+                                                                                      Language::FunctionNameRepresentation::eNameWithArgs,<br class="">
+                                                                                      ss);<br class="">
+                }<br class="">
+                if (language_plugin_handled)<br class="">
+                {<br class="">
+                    s.PutCString(ss.GetData());<br class="">
+                    return true;<br class="">
+                }<br class="">
+                else<br class="">
+                {<br class="">
+                    // Print the function name with arguments in it<br class="">
+                    if (sc->function)<br class="">
                     {<br class="">
-                        const InlineFunctionInfo *inline_info = NULL;<br class="">
-                        VariableListSP variable_list_sp;<br class="">
-                        bool get_function_vars = true;<br class="">
-                        if (sc->block)<br class="">
+                        ExecutionContextScope *exe_scope = exe_ctx ? exe_ctx->GetBestExecutionContextScope() : NULL;<br class="">
+                        const char *cstr = sc->function->GetName().AsCString (NULL);<br class="">
+                        if (cstr)<br class="">
                         {<br class="">
-                            Block *inline_block = sc->block->GetContainingInlinedBlock ();<br class="">
-<br class="">
-                            if (inline_block)<br class="">
+                            const InlineFunctionInfo *inline_info = NULL;<br class="">
+                            VariableListSP variable_list_sp;<br class="">
+                            bool get_function_vars = true;<br class="">
+                            if (sc->block)<br class="">
                             {<br class="">
-                                get_function_vars = false;<br class="">
-                                inline_info = sc->block->GetInlinedFunctionInfo();<br class="">
-                                if (inline_info)<br class="">
-                                    variable_list_sp = inline_block->GetBlockVariableList (true);<br class="">
-                            }<br class="">
-                        }<br class="">
-<br class="">
-                        if (get_function_vars)<br class="">
-                        {<br class="">
-                            variable_list_sp = sc->function->GetBlock(true).GetBlockVariableList (true);<br class="">
-                        }<br class="">
-<br class="">
-                        if (inline_info)<br class="">
-                        {<br class="">
-                            s.PutCString (cstr);<br class="">
-                            s.PutCString (" [inlined] ");<br class="">
-                            cstr = inline_info->GetName(sc->function->GetLanguage()).GetCString();<br class="">
-                        }<br class="">
-<br class="">
-                        VariableList args;<br class="">
-                        if (variable_list_sp)<br class="">
-                            variable_list_sp->AppendVariablesWithScope(eValueTypeVariableArgument, args);<br class="">
-                        if (args.GetSize() > 0)<br class="">
-                        {<br class="">
-                            const char *open_paren = strchr (cstr, '(');<br class="">
-                            const char *close_paren = nullptr;<br class="">
-                            const char *generic = strchr(cstr, '<');<br class="">
-                            // if before the arguments list begins there is a template sign<br class="">
-                            // then scan to the end of the generic args before you try to find<br class="">
-                            // the arguments list<br class="">
-                            if (generic && open_paren && generic < open_paren)<br class="">
-                            {<br class="">
-                                int generic_depth = 1;<br class="">
-                                ++generic;<br class="">
-                                for (;<br class="">
-                                     *generic && generic_depth > 0;<br class="">
-                                     generic++)<br class="">
-                                {<br class="">
-                                    if (*generic == '<')<br class="">
-                                        generic_depth++;<br class="">
-                                    if (*generic == '>')<br class="">
-                                        generic_depth--;<br class="">
+                                Block *inline_block = sc->block->GetContainingInlinedBlock ();<br class="">
+<br class="">
+                                if (inline_block)<br class="">
+                                {<br class="">
+                                    get_function_vars = false;<br class="">
+                                    inline_info = sc->block->GetInlinedFunctionInfo();<br class="">
+                                    if (inline_info)<br class="">
+                                        variable_list_sp = inline_block->GetBlockVariableList (true);<br class="">
                                 }<br class="">
-                                if (*generic)<br class="">
-                                    open_paren = strchr(generic, '(');<br class="">
-                                else<br class="">
-                                    open_paren = nullptr;<br class="">
                             }<br class="">
-                            if (open_paren)<br class="">
+<br class="">
+                            if (get_function_vars)<br class="">
                             {<br class="">
-                                if (IsToken (open_paren, "(anonymous namespace)"))<br class="">
-                                {<br class="">
-                                    open_paren = strchr (open_paren + strlen("(anonymous namespace)"), '(');<br class="">
-                                    if (open_paren)<br class="">
-                                        close_paren = strchr (open_paren, ')');<br class="">
-                                }<br class="">
-                                else<br class="">
-                                    close_paren = strchr (open_paren, ')');<br class="">
+                                variable_list_sp = sc->function->GetBlock(true).GetBlockVariableList (true);<br class="">
                             }<br class="">
-<br class="">
-                            if (open_paren)<br class="">
-                                s.Write(cstr, open_paren - cstr + 1);<br class="">
-                            else<br class="">
+<br class="">
+                            if (inline_info)<br class="">
                             {<br class="">
                                 s.PutCString (cstr);<br class="">
-                                s.PutChar ('(');<br class="">
+                                s.PutCString (" [inlined] ");<br class="">
+                                cstr = inline_info->GetName(sc->function->GetLanguage()).GetCString();<br class="">
                             }<br class="">
-                            const size_t num_args = args.GetSize();<br class="">
-                            for (size_t arg_idx = 0; arg_idx < num_args; ++arg_idx)<br class="">
+<br class="">
+                            VariableList args;<br class="">
+                            if (variable_list_sp)<br class="">
+                                variable_list_sp->AppendVariablesWithScope(eValueTypeVariableArgument, args);<br class="">
+                            if (args.GetSize() > 0)<br class="">
                             {<br class="">
-                                std::string buffer;<br class="">
-<br class="">
-                                VariableSP var_sp (args.GetVariableAtIndex (arg_idx));<br class="">
-                                ValueObjectSP var_value_sp (ValueObjectVariable::Create (exe_scope, var_sp));<br class="">
-                                StreamString ss;<br class="">
-                                const char *var_representation = nullptr;<br class="">
-                                const char *var_name = var_value_sp->GetName().GetCString();<br class="">
-                                if (var_value_sp->GetCompilerType().IsValid())<br class="">
-                                {<br class="">
-                                    if (var_value_sp && exe_scope->CalculateTarget())<br class="">
-                                        var_value_sp = var_value_sp->GetQualifiedRepresentationIfAvailable(exe_scope->CalculateTarget()->TargetProperties::GetPreferDynamicValue(),<br class="">
-                                                                                                           exe_scope->CalculateTarget()->TargetProperties::GetEnableSyntheticValue());<br class="">
-                                    if (var_value_sp->GetCompilerType().IsAggregateType() &&<br class="">
-                                        DataVisualization::ShouldPrintAsOneLiner(*var_value_sp.get()))<br class="">
+                                const char *open_paren = strchr (cstr, '(');<br class="">
+                                const char *close_paren = nullptr;<br class="">
+                                const char *generic = strchr(cstr, '<');<br class="">
+                                // if before the arguments list begins there is a template sign<br class="">
+                                // then scan to the end of the generic args before you try to find<br class="">
+                                // the arguments list<br class="">
+                                if (generic && open_paren && generic < open_paren)<br class="">
+                                {<br class="">
+                                    int generic_depth = 1;<br class="">
+                                    ++generic;<br class="">
+                                    for (;<br class="">
+                                         *generic && generic_depth > 0;<br class="">
+                                         generic++)<br class="">
+                                    {<br class="">
+                                        if (*generic == '<')<br class="">
+                                            generic_depth++;<br class="">
+                                        if (*generic == '>')<br class="">
+                                            generic_depth--;<br class="">
+                                    }<br class="">
+                                    if (*generic)<br class="">
+                                        open_paren = strchr(generic, '(');<br class="">
+                                    else<br class="">
+                                        open_paren = nullptr;<br class="">
+                                }<br class="">
+                                if (open_paren)<br class="">
+                                {<br class="">
+                                    if (IsToken (open_paren, "(anonymous namespace)"))<br class="">
                                     {<br class="">
-                                        static StringSummaryFormat format(TypeSummaryImpl::Flags()<br class="">
-                                                                          .SetHideItemNames(false)<br class="">
-                                                                          .SetShowMembersOneLiner(true),<br class="">
-                                                                          "");<br class="">
-                                        format.FormatObject(var_value_sp.get(), buffer, TypeSummaryOptions());<br class="">
-                                        var_representation = buffer.c_str();<br class="">
+                                        open_paren = strchr (open_paren + strlen("(anonymous namespace)"), '(');<br class="">
+                                        if (open_paren)<br class="">
+                                            close_paren = strchr (open_paren, ')');<br class="">
                                     }<br class="">
                                     else<br class="">
-                                        var_value_sp->DumpPrintableRepresentation(ss,<br class="">
-                                                                                  ValueObject::ValueObjectRepresentationStyle::eValueObjectRepresentationStyleSummary,<br class="">
-                                                                                  eFormatDefault,<br class="">
-                                                                                  ValueObject::PrintableRepresentationSpecialCases::ePrintableRepresentationSpecialCasesAllow,<br class="">
-                                                                                  false);<br class="">
+                                        close_paren = strchr (open_paren, ')');<br class="">
                                 }<br class="">
<br class="">
-                                if (ss.GetData() && ss.GetSize())<br class="">
-                                    var_representation = ss.GetData();<br class="">
-                                if (arg_idx > 0)<br class="">
-                                    s.PutCString (", ");<br class="">
-                                if (var_value_sp->GetError().Success())<br class="">
+                                if (open_paren)<br class="">
+                                    s.Write(cstr, open_paren - cstr + 1);<br class="">
+                                else<br class="">
                                 {<br class="">
-                                    if (var_representation)<br class="">
-                                        s.Printf ("%s=%s", var_name, var_representation);<br class="">
+                                    s.PutCString (cstr);<br class="">
+                                    s.PutChar ('(');<br class="">
+                                }<br class="">
+                                const size_t num_args = args.GetSize();<br class="">
+                                for (size_t arg_idx = 0; arg_idx < num_args; ++arg_idx)<br class="">
+                                {<br class="">
+                                    std::string buffer;<br class="">
+<br class="">
+                                    VariableSP var_sp (args.GetVariableAtIndex (arg_idx));<br class="">
+                                    ValueObjectSP var_value_sp (ValueObjectVariable::Create (exe_scope, var_sp));<br class="">
+                                    StreamString ss;<br class="">
+                                    const char *var_representation = nullptr;<br class="">
+                                    const char *var_name = var_value_sp->GetName().GetCString();<br class="">
+                                    if (var_value_sp->GetCompilerType().IsValid())<br class="">
+                                    {<br class="">
+                                        if (var_value_sp && exe_scope->CalculateTarget())<br class="">
+                                            var_value_sp = var_value_sp->GetQualifiedRepresentationIfAvailable(exe_scope->CalculateTarget()->TargetProperties::GetPreferDynamicValue(),<br class="">
+                                                                                                               exe_scope->CalculateTarget()->TargetProperties::GetEnableSyntheticValue());<br class="">
+                                        if (var_value_sp->GetCompilerType().IsAggregateType() &&<br class="">
+                                            DataVisualization::ShouldPrintAsOneLiner(*var_value_sp.get()))<br class="">
+                                        {<br class="">
+                                            static StringSummaryFormat format(TypeSummaryImpl::Flags()<br class="">
+                                                                              .SetHideItemNames(false)<br class="">
+                                                                              .SetShowMembersOneLiner(true),<br class="">
+                                                                              "");<br class="">
+                                            format.FormatObject(var_value_sp.get(), buffer, TypeSummaryOptions());<br class="">
+                                            var_representation = buffer.c_str();<br class="">
+                                        }<br class="">
+                                        else<br class="">
+                                            var_value_sp->DumpPrintableRepresentation(ss,<br class="">
+                                                                                      ValueObject::ValueObjectRepresentationStyle::eValueObjectRepresentationStyleSummary,<br class="">
+                                                                                      eFormatDefault,<br class="">
+                                                                                      ValueObject::PrintableRepresentationSpecialCases::ePrintableRepresentationSpecialCasesAllow,<br class="">
+                                                                                      false);<br class="">
+                                    }<br class="">
+<br class="">
+                                    if (ss.GetData() && ss.GetSize())<br class="">
+                                        var_representation = ss.GetData();<br class="">
+                                    if (arg_idx > 0)<br class="">
+                                        s.PutCString (", ");<br class="">
+                                    if (var_value_sp->GetError().Success())<br class="">
+                                    {<br class="">
+                                        if (var_representation)<br class="">
+                                            s.Printf ("%s=%s", var_name, var_representation);<br class="">
+                                        else<br class="">
+                                            s.Printf ("%s=%s at %s", var_name, var_value_sp->GetTypeName().GetCString(), var_value_sp->GetLocationAsCString());<br class="">
+                                    }<br class="">
                                     else<br class="">
-                                        s.Printf ("%s=%s at %s", var_name, var_value_sp->GetTypeName().GetCString(), var_value_sp->GetLocationAsCString());<br class="">
+                                        s.Printf ("%s=<unavailable>", var_name);<br class="">
                                 }<br class="">
+<br class="">
+                                if (close_paren)<br class="">
+                                    s.PutCString (close_paren);<br class="">
                                 else<br class="">
-                                    s.Printf ("%s=<unavailable>", var_name);<br class="">
+                                    s.PutChar(')');<br class="">
+<br class="">
                             }<br class="">
-<br class="">
-                            if (close_paren)<br class="">
-                                s.PutCString (close_paren);<br class="">
                             else<br class="">
-                                s.PutChar(')');<br class="">
-<br class="">
+                            {<br class="">
+                                s.PutCString(cstr);<br class="">
+                            }<br class="">
+                            return true;<br class="">
                         }<br class="">
-                        else<br class="">
+                    }<br class="">
+                    else if (sc->symbol)<br class="">
+                    {<br class="">
+                        const char *cstr = sc->symbol->GetName().AsCString (NULL);<br class="">
+                        if (cstr)<br class="">
                         {<br class="">
                             s.PutCString(cstr);<br class="">
+                            return true;<br class="">
                         }<br class="">
-                        return true;<br class="">
-                    }<br class="">
-                }<br class="">
-                else if (sc->symbol)<br class="">
-                {<br class="">
-                    const char *cstr = sc->symbol->GetName().AsCString (NULL);<br class="">
-                    if (cstr)<br class="">
-                    {<br class="">
-                        s.PutCString(cstr);<br class="">
-                        return true;<br class="">
                     }<br class="">
                 }<br class="">
             }<br class="">
<br class="">
Modified: lldb/trunk/source/Target/Language.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Language.cpp?rev=253531&r1=253530&r2=253531&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Language.cpp?rev=253531&r1=253530&r2=253531&view=diff</a><br class="">
==============================================================================<br class="">
--- lldb/trunk/source/Target/Language.cpp (original)<br class="">
+++ lldb/trunk/source/Target/Language.cpp Wed Nov 18 19:11:53 2015<br class="">
@@ -370,6 +370,14 @@ Language::IsUninitializedReference (Valu<br class="">
     return false;<br class="">
 }<br class="">
<br class="">
+bool<br class="">
+Language::GetFunctionDisplayName (const SymbolContext *sc,<br class="">
+                                  FunctionNameRepresentation representation,<br class="">
+                                  Stream& s)<br class="">
+{<br class="">
+    return false;<br class="">
+}<br class="">
+<br class="">
 //----------------------------------------------------------------------<br class="">
 // Constructor<br class="">
 //----------------------------------------------------------------------<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
lldb-commits mailing list<br class="">
<a href="mailto:lldb-commits@lists.llvm.org" target="_blank" class="">lldb-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""><div class="">
<div class="" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><br class="Apple-interchange-newline">Thanks,</div><div class="" style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><i class="">- Enrico</i><br class="">📩 egranata@<font color="#ff2600" class=""></font>.com ☎️ 27683</div>
</div>
<br class=""></body></html>