Skip to content

Commit 93503aa

Browse files
authored
Fix MSVC build issues (#84362)
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 7bee91f commit 93503aa

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)