Revert "[clang-diff] Fix assertion error when dealing with wide strings"

This reverts commit e80748ff88.

This was causing a test failure on a buildbot: https://lab.llvm.org/buildbot/#/builders/139/builds/22964
This commit is contained in:
Douglas Yung 2022-06-07 14:58:10 -07:00
parent acfeb1a6c2
commit 7805ae257f
2 changed files with 1 additions and 29 deletions

View file

@ -16,7 +16,6 @@
#include "clang/Basic/SourceManager.h" #include "clang/Basic/SourceManager.h"
#include "clang/Lex/Lexer.h" #include "clang/Lex/Lexer.h"
#include "llvm/ADT/PriorityQueue.h" #include "llvm/ADT/PriorityQueue.h"
#include "llvm/Support/ConvertUTF.h"
#include <limits> #include <limits>
#include <memory> #include <memory>
@ -464,29 +463,8 @@ std::string SyntaxTree::Impl::getStmtValue(const Stmt *S) const {
} }
if (auto *D = dyn_cast<DeclRefExpr>(S)) if (auto *D = dyn_cast<DeclRefExpr>(S))
return getRelativeName(D->getDecl(), getEnclosingDeclContext(AST, S)); return getRelativeName(D->getDecl(), getEnclosingDeclContext(AST, S));
if (auto *String = dyn_cast<StringLiteral>(S)) { if (auto *String = dyn_cast<StringLiteral>(S))
if (String->isWide() || String->isUTF16() || String->isUTF32()) {
std::string UTF8Str;
unsigned int NumChars = String->getLength();
const char *Bytes = String->getBytes().data();
if (String->isWide()) {
const auto *Chars = reinterpret_cast<const wchar_t *>(Bytes);
if (!convertWideToUTF8({Chars, NumChars}, UTF8Str))
return "";
} else if (String->isUTF16()) {
const auto *Chars = reinterpret_cast<const UTF16 *>(Bytes);
if (!convertUTF16ToUTF8String({Chars, NumChars}, UTF8Str))
return "";
} else {
assert(String->isUTF32() && "Unsupported string encoding.");
const auto *Chars = reinterpret_cast<const UTF32 *>(Bytes);
if (!convertUTF32ToUTF8String({Chars, NumChars}, UTF8Str))
return "";
}
return UTF8Str;
}
return std::string(String->getString()); return std::string(String->getString());
}
if (auto *B = dyn_cast<CXXBoolLiteralExpr>(S)) if (auto *B = dyn_cast<CXXBoolLiteralExpr>(S))
return B->getValue() ? "true" : "false"; return B->getValue() ? "true" : "false";
return ""; return "";

View file

@ -47,12 +47,6 @@ class X : Base {
if (i == 0) if (i == 0)
// CHECK: StringLiteral: foo( // CHECK: StringLiteral: foo(
return "foo"; return "foo";
// CHECK: StringLiteral: wide(
(void)L"wide";
// CHECK: StringLiteral: utf-16(
(void)u"utf-16";
// CHECK: StringLiteral: utf-32(
(void)U"utf-32";
// CHECK-NOT: ImplicitCastExpr // CHECK-NOT: ImplicitCastExpr
return 0; return 0;
} }