diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp index 395718ecbe292..2efd4bc1e2c09 100644 --- a/lldb/source/Target/Language.cpp +++ b/lldb/source/Target/Language.cpp @@ -549,7 +549,7 @@ Language::~Language() = default; static std::optional ToDwarfSourceLanguage(lldb::LanguageType language_type) { - if (language_type < lldb::eLanguageTypeLastStandardLanguage) + if (language_type <= lldb::eLanguageTypeLastStandardLanguage) return static_cast(language_type); switch (language_type) { diff --git a/lldb/unittests/Target/LanguageTest.cpp b/lldb/unittests/Target/LanguageTest.cpp index a00fda78d569a..a1f9267dd45d0 100644 --- a/lldb/unittests/Target/LanguageTest.cpp +++ b/lldb/unittests/Target/LanguageTest.cpp @@ -24,9 +24,6 @@ TEST_F(LanguageTest, SourceLanguage_GetDescription) { continue; auto lang_type = static_cast(i); - if (lang_type == lldb::eLanguageTypeLastStandardLanguage) - continue; - SourceLanguage lang(lang_type); // eLanguageTypeHIP is not implemented as a DW_LNAME because of a conflict. @@ -67,3 +64,16 @@ TEST_F(LanguageTest, SourceLanguage_AsLanguageType) { EXPECT_EQ(SourceLanguage(eLanguageTypeUnknown).AsLanguageType(), eLanguageTypeUnknown); } + +TEST_F(LanguageTest, SourceLanguage_LastStandardLanguage) { + // eLanguageTypeLastStandardLanguage should be treated as a standard DWARF + // language. + SourceLanguage lang(eLanguageTypeLastStandardLanguage); + EXPECT_TRUE(lang); + + // It should have a valid description (not "Unknown"). + EXPECT_NE(lang.GetDescription(), "Unknown"); + + // It should convert to the correct language type. + EXPECT_EQ(lang.AsLanguageType(), eLanguageTypeLastStandardLanguage); +}