Yeah, this was a really lousy commit. I’m sorry I committed without checking whether it linked. Thanks for reverting. I will fix this and re-commit.
Sean > On Oct 21, 2015, at 11:43 AM, Siva Chandra <sivachan...@google.com> wrote: > > This breaks the build because of two things: > > 1. The function GetLanguagesSupportingREPLs is declared static in > Language.cpp, but Language.h has it declared as a static method. > 2. There is a declaration for a static method > GetREPLEnumerateSupportedLanguagesCallbackAtIndex in PluginManager, > but no definition anywhere. > > On Wed, Oct 21, 2015 at 10:43 AM, Sean Callanan via lldb-commits > <lldb-commits@lists.llvm.org> wrote: >> Author: spyffe >> Date: Wed Oct 21 12:43:18 2015 >> New Revision: 250913 >> >> URL: http://llvm.org/viewvc/llvm-project?rev=250913&view=rev >> Log: >> Made the REPL choose a default language if only one REPL can be chosen. >> This requires REPLs to enumerate the languages they support. >> >> Modified: >> lldb/trunk/include/lldb/Core/PluginManager.h >> lldb/trunk/include/lldb/Target/Language.h >> lldb/trunk/include/lldb/lldb-private-interfaces.h >> lldb/trunk/source/Core/Debugger.cpp >> lldb/trunk/source/Core/PluginManager.cpp >> lldb/trunk/source/Target/Language.cpp >> lldb/trunk/source/Target/Target.cpp >> >> Modified: lldb/trunk/include/lldb/Core/PluginManager.h >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Core/PluginManager.h?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/include/lldb/Core/PluginManager.h (original) >> +++ lldb/trunk/include/lldb/Core/PluginManager.h Wed Oct 21 12:43:18 2015 >> @@ -449,7 +449,8 @@ public: >> static bool >> RegisterPlugin (const ConstString &name, >> const char *description, >> - REPLCreateInstance create_callback); >> + REPLCreateInstance create_callback, >> + REPLEnumerateSupportedLanguages >> enumerate_languages_callback); >> >> static bool >> UnregisterPlugin (REPLCreateInstance create_callback); >> @@ -460,6 +461,12 @@ public: >> static REPLCreateInstance >> GetREPLCreateCallbackForPluginName (const ConstString &name); >> >> + static REPLEnumerateSupportedLanguages >> + GetREPLEnumerateSupportedLanguagesCallbackAtIndex (uint32_t idx); >> + >> + static REPLEnumerateSupportedLanguages >> + GetREPLSystemEnumerateSupportedLanguagesCallbackForPluginName (const >> ConstString &name); >> + >> //------------------------------------------------------------------ >> // Some plug-ins might register a DebuggerInitializeCallback >> // callback when registering the plug-in. After a new Debugger >> >> Modified: lldb/trunk/include/lldb/Target/Language.h >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Target/Language.h?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/include/lldb/Target/Language.h (original) >> +++ lldb/trunk/include/lldb/Target/Language.h Wed Oct 21 12:43:18 2015 >> @@ -149,6 +149,9 @@ public: >> static void >> GetLanguagesSupportingTypeSystems (std::set<lldb::LanguageType> >> &languages, >> std::set<lldb::LanguageType> >> &languages_for_expressions); >> + >> + static void >> + GetLanguagesSupportingREPLs (std::set<lldb::LanguageType> &languages); >> >> protected: >> //------------------------------------------------------------------ >> >> Modified: lldb/trunk/include/lldb/lldb-private-interfaces.h >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/lldb-private-interfaces.h?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/include/lldb/lldb-private-interfaces.h (original) >> +++ lldb/trunk/include/lldb/lldb-private-interfaces.h Wed Oct 21 12:43:18 >> 2015 >> @@ -51,6 +51,7 @@ namespace lldb_private >> typedef lldb::TypeSystemSP (*TypeSystemCreateInstance) >> (lldb::LanguageType language, Module *module, Target *target); >> typedef lldb::REPLSP (*REPLCreateInstance) (Error &error, >> lldb::LanguageType language, Debugger *debugger, Target *target, const char >> *repl_options); >> typedef void (*TypeSystemEnumerateSupportedLanguages) >> (std::set<lldb::LanguageType> &languages_for_types, >> std::set<lldb::LanguageType> &languages_for_expressions); >> + typedef void (*REPLEnumerateSupportedLanguages) >> (std::set<lldb::LanguageType> &languages); >> typedef int (*ComparisonFunction)(const void *, const void *); >> typedef void (*DebuggerInitializeCallback)(Debugger &debugger); >> >> >> Modified: lldb/trunk/source/Core/Debugger.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/Debugger.cpp?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/source/Core/Debugger.cpp (original) >> +++ lldb/trunk/source/Core/Debugger.cpp Wed Oct 21 12:43:18 2015 >> @@ -1805,11 +1805,6 @@ Debugger::RunREPL (LanguageType language >> { >> Error err; >> FileSpec repl_executable; >> - if (language == eLanguageTypeUnknown) >> - { >> - err.SetErrorString ("must specify a language for a REPL"); // TODO >> make it possible to specify a default language >> - return err; >> - } >> >> Target *const target = nullptr; // passing in an empty target means the >> REPL must create one >> >> >> Modified: lldb/trunk/source/Core/PluginManager.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/PluginManager.cpp?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/source/Core/PluginManager.cpp (original) >> +++ lldb/trunk/source/Core/PluginManager.cpp Wed Oct 21 12:43:18 2015 >> @@ -2662,6 +2662,7 @@ struct REPLInstance >> ConstString name; >> std::string description; >> REPLCreateInstance create_callback; >> + REPLEnumerateSupportedLanguages enumerate_languages_callback; >> }; >> >> typedef std::vector<REPLInstance> REPLInstances; >> @@ -2683,7 +2684,8 @@ GetREPLInstances () >> bool >> PluginManager::RegisterPlugin (const ConstString &name, >> const char *description, >> - REPLCreateInstance create_callback) >> + REPLCreateInstance create_callback, >> + REPLEnumerateSupportedLanguages >> enumerate_languages_callback) >> { >> if (create_callback) >> { >> @@ -2693,6 +2695,7 @@ PluginManager::RegisterPlugin (const Con >> if (description && description[0]) >> instance.description = description; >> instance.create_callback = create_callback; >> + instance.enumerate_languages_callback = >> enumerate_languages_callback; >> Mutex::Locker locker (GetREPLMutex ()); >> GetREPLInstances ().push_back (instance); >> } >> >> Modified: lldb/trunk/source/Target/Language.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Language.cpp?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/source/Target/Language.cpp (original) >> +++ lldb/trunk/source/Target/Language.cpp Wed Oct 21 12:43:18 2015 >> @@ -299,6 +299,17 @@ Language::GetLanguagesSupportingTypeSyst >> } >> } >> >> +static void >> +GetLanguagesSupportingREPLs (std::set<lldb::LanguageType> &languages) >> +{ >> + uint32_t idx = 0; >> + >> + while (REPLEnumerateSupportedLanguages enumerate = >> PluginManager::GetREPLEnumerateSupportedLanguagesCallbackAtIndex(idx++)) >> + { >> + (*enumerate)(languages); >> + } >> +} >> + >> std::unique_ptr<Language::TypeScavenger> >> Language::GetTypeScavenger () >> { >> >> Modified: lldb/trunk/source/Target/Target.cpp >> URL: >> http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Target/Target.cpp?rev=250913&r1=250912&r2=250913&view=diff >> ============================================================================== >> --- lldb/trunk/source/Target/Target.cpp (original) >> +++ lldb/trunk/source/Target/Target.cpp Wed Oct 21 12:43:18 2015 >> @@ -218,7 +218,19 @@ Target::GetREPL (Error &err, lldb::Langu >> { >> if (language == eLanguageTypeUnknown) >> { >> - return REPLSP(); // must provide a language >> + std::set<LanguageType> repl_languages; >> + >> + Language::GetLanguagesSupportingREPLs(repl_languages); >> + >> + if (repl_languages.size() == 1) >> + { >> + language = *repl_languages.begin(); >> + } >> + else >> + { >> + err.SetErrorStringWithFormat("Multiple possible REPL languages. >> Please specify a language."); >> + return REPLSP(); // must provide a language >> + } >> } >> >> REPLMap::iterator pos = m_repl_map.find(language); >> >> >> _______________________________________________ >> lldb-commits mailing list >> lldb-commits@lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits