Skip to content

Commit 34a0f37

Browse files
committed
Fix MSVC build issues
MSVC fails when there is ambiguity (multiple options) around implicit type conversion operators. Make ConstString's conversion operator to string_view explicit to avoid ambiguity with one to StringRef and remove an unused local variable that MSVC also fails on.
1 parent 552da24 commit 34a0f37

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

lldb/include/lldb/Utility/ConstString.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ class ConstString {
168168
// Implicitly convert \class ConstString instances to \class StringRef.
169169
operator llvm::StringRef() const { return GetStringRef(); }
170170

171-
// Implicitly convert \class ConstString instances to \class std::string_view.
172-
operator std::string_view() const {
171+
// Explicitly convert \class ConstString instances to \class std::string_view.
172+
explicit operator std::string_view() const {
173173
return std::string_view(m_string, GetLength());
174174
}
175175

lldb/source/Core/Mangled.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ void Mangled::SetValue(ConstString name) {
125125
}
126126

127127
// Local helpers for different demangling implementations.
128-
static char *GetMSVCDemangledStr(std::string_view M) {
128+
static char *GetMSVCDemangledStr(llvm::StringRef M) {
129129
char *demangled_cstr = llvm::microsoftDemangle(
130130
M, nullptr, nullptr,
131131
llvm::MSDemangleFlags(
@@ -169,27 +169,29 @@ static char *GetItaniumDemangledStr(const char *M) {
169169
return demangled_cstr;
170170
}
171171

172-
static char *GetRustV0DemangledStr(std::string_view M) {
172+
static char *GetRustV0DemangledStr(llvm::StringRef M) {
173173
char *demangled_cstr = llvm::rustDemangle(M);
174174

175175
if (Log *log = GetLog(LLDBLog::Demangle)) {
176176
if (demangled_cstr && demangled_cstr[0])
177177
LLDB_LOG(log, "demangled rustv0: {0} -> \"{1}\"", M, demangled_cstr);
178178
else
179-
LLDB_LOG(log, "demangled rustv0: {0} -> error: failed to demangle", M);
179+
LLDB_LOG(log, "demangled rustv0: {0} -> error: failed to demangle",
180+
static_cast<std::string_view>(M));
180181
}
181182

182183
return demangled_cstr;
183184
}
184185

185-
static char *GetDLangDemangledStr(std::string_view M) {
186+
static char *GetDLangDemangledStr(llvm::StringRef M) {
186187
char *demangled_cstr = llvm::dlangDemangle(M);
187188

188189
if (Log *log = GetLog(LLDBLog::Demangle)) {
189190
if (demangled_cstr && demangled_cstr[0])
190191
LLDB_LOG(log, "demangled dlang: {0} -> \"{1}\"", M, demangled_cstr);
191192
else
192-
LLDB_LOG(log, "demangled dlang: {0} -> error: failed to demangle", M);
193+
LLDB_LOG(log, "demangled dlang: {0} -> error: failed to demangle",
194+
static_cast<std::string_view>(M));
193195
}
194196

195197
return demangled_cstr;

lldb/unittests/SymbolFile/PDB/SymbolFilePDBTests.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,6 @@ TEST_F(SymbolFilePDBTests, TestTypedefs) {
527527
SymbolFilePDB *symfile =
528528
static_cast<SymbolFilePDB *>(module->GetSymbolFile());
529529
llvm::pdb::IPDBSession &session = symfile->GetPDBSession();
530-
TypeMap results;
531530

532531
const char *TypedefsToCheck[] = {"ClassTypedef", "NSClassTypedef",
533532
"FuncPointerTypedef",

0 commit comments

Comments
 (0)