Skip to content

Commit bc4952c

Browse files
committed
fixup! add test
1 parent 29d911d commit bc4952c

File tree

3 files changed

+60
-2
lines changed

3 files changed

+60
-2
lines changed

lldb/source/Target/Language.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -550,9 +550,10 @@ ToDwarfSourceLanguage(lldb::LanguageType language_type) {
550550
switch (language_type) {
551551
case eLanguageTypeMipsAssembler:
552552
return llvm::dwarf::DW_LANG_Mips_Assembler;
553-
default:
554-
return llvm::dwarf::DW_LANG_hi_user;
553+
default: break;
555554
}
555+
556+
llvm_unreachable("Unhandled language type");
556557
}
557558

558559
SourceLanguage::SourceLanguage(lldb::LanguageType language_type) {

lldb/unittests/Target/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ add_lldb_unittest(TargetTests
22
ABITest.cpp
33
DynamicRegisterInfoTest.cpp
44
ExecutionContextTest.cpp
5+
Language.cpp
56
LocateModuleCallbackTest.cpp
67
MemoryRegionInfoTest.cpp
78
MemoryTest.cpp

lldb/unittests/Target/Language.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
//===-- LanguageTest.cpp --------------------------------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "lldb/Target/Language.h"
10+
#include "lldb/lldb-enumerations.h"
11+
#include "gtest/gtest.h"
12+
13+
using namespace lldb_private;
14+
using namespace lldb;
15+
16+
namespace {
17+
class LanguageTest : public ::testing::Test {};
18+
} // namespace
19+
20+
TEST_F(LanguageTest, SourceLanguage_GetDescription) {
21+
for (uint32_t i = 1; i < lldb::eNumLanguageTypes; ++i) {
22+
// 0x29 is unassigned
23+
if (i == 0x29)
24+
continue;
25+
26+
auto lang_type = static_cast<lldb::LanguageType>(i);
27+
if (lang_type == lldb::eLanguageTypeLastStandardLanguage)
28+
continue;
29+
30+
SourceLanguage lang(lang_type);
31+
32+
// eLanguageTypeHIP is not implemented as a DW_LNAME because of a conflict.
33+
if (lang_type == lldb::eLanguageTypeHIP)
34+
EXPECT_FALSE(lang);
35+
else
36+
EXPECT_TRUE(lang);
37+
}
38+
39+
EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus).GetDescription(),
40+
"ISO C++");
41+
EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus_17).GetDescription(),
42+
"ISO C++");
43+
EXPECT_EQ(SourceLanguage(eLanguageTypeC_plus_plus_20).GetDescription(),
44+
"ISO C++");
45+
46+
EXPECT_EQ(SourceLanguage(eLanguageTypeObjC).GetDescription(), "Objective C");
47+
EXPECT_EQ(SourceLanguage(eLanguageTypeMipsAssembler).GetDescription(),
48+
"Assembly");
49+
50+
auto next_vendor_language =
51+
static_cast<lldb::LanguageType>(eLanguageTypeMipsAssembler + 1);
52+
if (next_vendor_language < eNumLanguageTypes)
53+
EXPECT_NE(SourceLanguage(next_vendor_language).GetDescription(), "Unknown");
54+
55+
EXPECT_EQ(SourceLanguage(eLanguageTypeUnknown).GetDescription(), "Unknown");
56+
}

0 commit comments

Comments
 (0)