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/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 "";
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue