diff options
Diffstat (limited to 'lldb/source/Symbol/SymbolContext.cpp')
-rw-r--r-- | lldb/source/Symbol/SymbolContext.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lldb/source/Symbol/SymbolContext.cpp b/lldb/source/Symbol/SymbolContext.cpp index 15d980edab9..54db5e090b8 100644 --- a/lldb/source/Symbol/SymbolContext.cpp +++ b/lldb/source/Symbol/SymbolContext.cpp @@ -525,6 +525,38 @@ SymbolContext::GetAddressRange (uint32_t scope, return false; } +LanguageType +SymbolContext::GetLanguage () const +{ + LanguageType lang; + if (function && + (lang = function->GetLanguage()) != eLanguageTypeUnknown) + { + return lang; + } + else if (variable && + (lang = variable->GetLanguage()) != eLanguageTypeUnknown) + { + return lang; + } + else if (symbol && + (lang = symbol->GetLanguage()) != eLanguageTypeUnknown) + { + return lang; + } + else if (comp_unit && + (lang = comp_unit->GetLanguage()) != eLanguageTypeUnknown) + { + return lang; + } + else if (symbol) + { + // If all else fails, try to guess the language from the name. + return symbol->GetMangled().GuessLanguage(); + } + return eLanguageTypeUnknown; +} + bool SymbolContext::GetParentOfInlinedScope (const Address &curr_frame_pc, SymbolContext &next_frame_sc, |