forked from OSchip/llvm-project
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:
parent
acfeb1a6c2
commit
7805ae257f
|
@ -16,7 +16,6 @@
|
|||
#include "clang/Basic/SourceManager.h"
|
||||
#include "clang/Lex/Lexer.h"
|
||||
#include "llvm/ADT/PriorityQueue.h"
|
||||
#include "llvm/Support/ConvertUTF.h"
|
||||
|
||||
#include <limits>
|
||||
#include <memory>
|
||||
|
@ -464,29 +463,8 @@ std::string SyntaxTree::Impl::getStmtValue(const Stmt *S) const {
|
|||
}
|
||||
if (auto *D = dyn_cast<DeclRefExpr>(S))
|
||||
return getRelativeName(D->getDecl(), getEnclosingDeclContext(AST, 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;
|
||||
}
|
||||
if (auto *String = dyn_cast<StringLiteral>(S))
|
||||
return std::string(String->getString());
|
||||
}
|
||||
if (auto *B = dyn_cast<CXXBoolLiteralExpr>(S))
|
||||
return B->getValue() ? "true" : "false";
|
||||
return "";
|
||||
|
|
|
@ -47,12 +47,6 @@ class X : Base {
|
|||
if (i == 0)
|
||||
// CHECK: StringLiteral: 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
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue