This revision was automatically updated to reflect the committed changes. Closed by commit rG8340fbb9c7bc: [lldb] Reactivate Objective-C++ plugin (authored by teemperor). Herald added a project: LLDB. Herald added a subscriber: lldb-commits.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D82109/new/ https://reviews.llvm.org/D82109 Files: lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp lldb/unittests/Language/CLanguages/CLanguagesTest.cpp lldb/unittests/Language/CLanguages/CMakeLists.txt lldb/unittests/Language/CMakeLists.txt lldb/unittests/Language/Highlighting/HighlighterTest.cpp Index: lldb/unittests/Language/Highlighting/HighlighterTest.cpp =================================================================== --- lldb/unittests/Language/Highlighting/HighlighterTest.cpp +++ lldb/unittests/Language/Highlighting/HighlighterTest.cpp @@ -58,6 +58,8 @@ EXPECT_EQ(getName("a/dir.CC"), "clang"); EXPECT_EQ(getName("/a/dir.hpp"), "clang"); EXPECT_EQ(getName("header.h"), "clang"); + EXPECT_EQ(getName("foo.m"), "clang"); + EXPECT_EQ(getName("foo.mm"), "clang"); EXPECT_EQ(getName(""), "none"); EXPECT_EQ(getName("/dev/null"), "none"); Index: lldb/unittests/Language/CMakeLists.txt =================================================================== --- lldb/unittests/Language/CMakeLists.txt +++ lldb/unittests/Language/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(CPlusPlus) +add_subdirectory(CLanguages) add_subdirectory(Highlighting) Index: lldb/unittests/Language/CLanguages/CMakeLists.txt =================================================================== --- /dev/null +++ lldb/unittests/Language/CLanguages/CMakeLists.txt @@ -0,0 +1,8 @@ +add_lldb_unittest(LanguageCLanguagesTests + CLanguagesTest.cpp + + LINK_LIBS + lldbPluginCPlusPlusLanguage + lldbPluginObjCLanguage + lldbPluginObjCPlusPlusLanguage +) Index: lldb/unittests/Language/CLanguages/CLanguagesTest.cpp =================================================================== --- /dev/null +++ lldb/unittests/Language/CLanguages/CLanguagesTest.cpp @@ -0,0 +1,46 @@ +//===-- CLanguagesTest.cpp ------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" +#include "Plugins/Language/ObjC/ObjCLanguage.h" +#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" +#include "TestingSupport/SubsystemRAII.h" +#include "lldb/lldb-enumerations.h" + +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +using namespace lldb_private; + +/// Returns the name of the LLDB plugin for the given language or a null +/// ConstString if there is no fitting plugin. +static ConstString GetPluginName(lldb::LanguageType language) { + Language *language_plugin = Language::FindPlugin(language); + if (language_plugin) + return language_plugin->GetPluginName(); + return ConstString(); +} + +TEST(CLanguages, LookupCLanguagesByLanguageType) { + SubsystemRAII<CPlusPlusLanguage, ObjCPlusPlusLanguage, ObjCLanguage> langs; + + // There is no plugin to find for C. + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC), nullptr); + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC89), nullptr); + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC99), nullptr); + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC11), nullptr); + + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus), "cplusplus"); + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_03), "cplusplus"); + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_11), "cplusplus"); + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_14), "cplusplus"); + + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeObjC), "objc"); + + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeObjC_plus_plus), "objcplusplus"); +} Index: lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp =================================================================== --- lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -70,7 +70,9 @@ // Static Functions Language *CPlusPlusLanguage::CreateInstance(lldb::LanguageType language) { - if (Language::LanguageIsCPlusPlus(language)) + // Use plugin for C++ but not for Objective-C++ (which has its own plugin). + if (Language::LanguageIsCPlusPlus(language) && + language != eLanguageTypeObjC_plus_plus) return new CPlusPlusLanguage(); return nullptr; }
Index: lldb/unittests/Language/Highlighting/HighlighterTest.cpp =================================================================== --- lldb/unittests/Language/Highlighting/HighlighterTest.cpp +++ lldb/unittests/Language/Highlighting/HighlighterTest.cpp @@ -58,6 +58,8 @@ EXPECT_EQ(getName("a/dir.CC"), "clang"); EXPECT_EQ(getName("/a/dir.hpp"), "clang"); EXPECT_EQ(getName("header.h"), "clang"); + EXPECT_EQ(getName("foo.m"), "clang"); + EXPECT_EQ(getName("foo.mm"), "clang"); EXPECT_EQ(getName(""), "none"); EXPECT_EQ(getName("/dev/null"), "none"); Index: lldb/unittests/Language/CMakeLists.txt =================================================================== --- lldb/unittests/Language/CMakeLists.txt +++ lldb/unittests/Language/CMakeLists.txt @@ -1,2 +1,3 @@ add_subdirectory(CPlusPlus) +add_subdirectory(CLanguages) add_subdirectory(Highlighting) Index: lldb/unittests/Language/CLanguages/CMakeLists.txt =================================================================== --- /dev/null +++ lldb/unittests/Language/CLanguages/CMakeLists.txt @@ -0,0 +1,8 @@ +add_lldb_unittest(LanguageCLanguagesTests + CLanguagesTest.cpp + + LINK_LIBS + lldbPluginCPlusPlusLanguage + lldbPluginObjCLanguage + lldbPluginObjCPlusPlusLanguage +) Index: lldb/unittests/Language/CLanguages/CLanguagesTest.cpp =================================================================== --- /dev/null +++ lldb/unittests/Language/CLanguages/CLanguagesTest.cpp @@ -0,0 +1,46 @@ +//===-- CLanguagesTest.cpp ------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h" +#include "Plugins/Language/ObjC/ObjCLanguage.h" +#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h" +#include "TestingSupport/SubsystemRAII.h" +#include "lldb/lldb-enumerations.h" + +#include "gmock/gmock.h" +#include "gtest/gtest.h" + +using namespace lldb_private; + +/// Returns the name of the LLDB plugin for the given language or a null +/// ConstString if there is no fitting plugin. +static ConstString GetPluginName(lldb::LanguageType language) { + Language *language_plugin = Language::FindPlugin(language); + if (language_plugin) + return language_plugin->GetPluginName(); + return ConstString(); +} + +TEST(CLanguages, LookupCLanguagesByLanguageType) { + SubsystemRAII<CPlusPlusLanguage, ObjCPlusPlusLanguage, ObjCLanguage> langs; + + // There is no plugin to find for C. + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC), nullptr); + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC89), nullptr); + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC99), nullptr); + EXPECT_EQ(Language::FindPlugin(lldb::eLanguageTypeC11), nullptr); + + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus), "cplusplus"); + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_03), "cplusplus"); + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_11), "cplusplus"); + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeC_plus_plus_14), "cplusplus"); + + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeObjC), "objc"); + + EXPECT_EQ(GetPluginName(lldb::eLanguageTypeObjC_plus_plus), "objcplusplus"); +} Index: lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp =================================================================== --- lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp +++ lldb/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp @@ -70,7 +70,9 @@ // Static Functions Language *CPlusPlusLanguage::CreateInstance(lldb::LanguageType language) { - if (Language::LanguageIsCPlusPlus(language)) + // Use plugin for C++ but not for Objective-C++ (which has its own plugin). + if (Language::LanguageIsCPlusPlus(language) && + language != eLanguageTypeObjC_plus_plus) return new CPlusPlusLanguage(); return nullptr; }
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits