Update references to UTF* types and functions to match llvm r282822.

The content of LLVM's "Support/ConvertUTF.h" header was moved into the
"llvm" namespace. Update this code to match.
This commit is contained in:
Bob Wilson
2016-10-13 11:52:25 -07:00
parent b9d1b49c33
commit c08a96a880
5 changed files with 80 additions and 75 deletions

View File

@@ -491,17 +491,17 @@ bool TypeTransformContext::isPrintingSynthesizedExtension() const {
std::string ASTPrinter::sanitizeUtf8(StringRef Text) {
llvm::SmallString<256> Builder;
Builder.reserve(Text.size());
const UTF8* Data = reinterpret_cast<const UTF8*>(Text.begin());
const UTF8* End = reinterpret_cast<const UTF8*>(Text.end());
const llvm::UTF8* Data = reinterpret_cast<const llvm::UTF8*>(Text.begin());
const llvm::UTF8* End = reinterpret_cast<const llvm::UTF8*>(Text.end());
StringRef Replacement = "\ufffd";
while (Data < End) {
auto Step = getNumBytesForUTF8(*Data);
auto Step = llvm::getNumBytesForUTF8(*Data);
if (Data + Step > End) {
Builder.append(Replacement);
break;
}
if (isLegalUTF8Sequence(Data, Data + Step)) {
if (llvm::isLegalUTF8Sequence(Data, Data + Step)) {
Builder.append(Data, Data + Step);
} else {

View File

@@ -55,12 +55,12 @@ raw_ostream &llvm::operator<<(raw_ostream &OS, swift::ObjCSelector S) {
bool Identifier::isOperatorSlow() const {
StringRef data = str();
auto *s = reinterpret_cast<UTF8 const *>(data.begin()),
*end = reinterpret_cast<UTF8 const *>(data.end());
UTF32 codePoint;
ConversionResult res = llvm::convertUTF8Sequence(&s, end, &codePoint,
strictConversion);
assert(res == conversionOK && "invalid UTF-8 in identifier?!");
auto *s = reinterpret_cast<llvm::UTF8 const *>(data.begin()),
*end = reinterpret_cast<llvm::UTF8 const *>(data.end());
llvm::UTF32 codePoint;
llvm::ConversionResult res =
llvm::convertUTF8Sequence(&s, end, &codePoint, llvm::strictConversion);
assert(res == llvm::conversionOK && "invalid UTF-8 in identifier?!");
(void)res;
return !empty() && isOperatorStartCodePoint(codePoint);
}

View File

@@ -22,14 +22,15 @@ StringRef swift::unicode::extractFirstExtendedGraphemeCluster(StringRef S) {
if (S.empty())
return StringRef();
const UTF8 *SourceStart = reinterpret_cast<const UTF8 *>(S.data());
const llvm::UTF8 *SourceStart =
reinterpret_cast<const llvm::UTF8 *>(S.data());
const UTF8 *SourceNext = SourceStart;
UTF32 C[2];
UTF32 *TargetStart = C;
const llvm::UTF8 *SourceNext = SourceStart;
llvm::UTF32 C[2];
llvm::UTF32 *TargetStart = C;
ConvertUTF8toUTF32(&SourceNext, SourceStart + S.size(), &TargetStart, C + 1,
lenientConversion);
llvm::lenientConversion);
if (TargetStart == C) {
// The source string contains an ill-formed subsequence at the end.
return S;
@@ -42,7 +43,7 @@ StringRef swift::unicode::extractFirstExtendedGraphemeCluster(StringRef S) {
size_t C1Offset = SourceNext - SourceStart;
ConvertUTF8toUTF32(&SourceNext, SourceStart + S.size(), &TargetStart, C + 2,
lenientConversion);
llvm::lenientConversion);
if (TargetStart == C + 1) {
// End of source string or the source string contains an ill-formed
@@ -65,14 +66,15 @@ static bool extractFirstUnicodeScalarImpl(StringRef S, unsigned &Scalar) {
if (S.empty())
return false;
const UTF8 *SourceStart = reinterpret_cast<const UTF8 *>(S.data());
const llvm::UTF8 *SourceStart =
reinterpret_cast<const llvm::UTF8 *>(S.data());
const UTF8 *SourceNext = SourceStart;
UTF32 C;
UTF32 *TargetStart = &C;
const llvm::UTF8 *SourceNext = SourceStart;
llvm::UTF32 C;
llvm::UTF32 *TargetStart = &C;
ConvertUTF8toUTF32(&SourceNext, SourceStart + S.size(), &TargetStart,
TargetStart + 1, lenientConversion);
TargetStart + 1, llvm::lenientConversion);
if (TargetStart == &C) {
// The source string contains an ill-formed subsequence at the end.
return false;
@@ -98,13 +100,14 @@ unsigned swift::unicode::extractFirstUnicodeScalar(StringRef S) {
uint64_t swift::unicode::getUTF16Length(StringRef Str) {
uint64_t Length;
// Transcode the string to UTF-16 to get its length.
SmallVector<UTF16, 128> buffer(Str.size() + 1); // +1 for ending nulls.
const UTF8 *fromPtr = (const UTF8 *) Str.data();
UTF16 *toPtr = &buffer[0];
ConversionResult Result = ConvertUTF8toUTF16(&fromPtr, fromPtr + Str.size(),
SmallVector<llvm::UTF16, 128> buffer(Str.size() + 1); // +1 for ending nulls.
const llvm::UTF8 *fromPtr = (const llvm::UTF8 *) Str.data();
llvm::UTF16 *toPtr = &buffer[0];
llvm::ConversionResult Result =
ConvertUTF8toUTF16(&fromPtr, fromPtr + Str.size(),
&toPtr, toPtr + Str.size(),
strictConversion);
assert(Result == conversionOK &&
llvm::strictConversion);
assert(Result == llvm::conversionOK &&
"UTF-8 encoded string cannot be converted into UTF-16 encoding");
(void)Result;

View File

@@ -2965,19 +2965,19 @@ llvm::Constant *IRGenModule::getAddrOfGlobalUTF16String(StringRef utf8) {
if (entry) return entry;
// If not, first transcode it to UTF16.
SmallVector<UTF16, 128> buffer(utf8.size() + 1); // +1 for ending nulls.
const UTF8 *fromPtr = (const UTF8 *) utf8.data();
UTF16 *toPtr = &buffer[0];
SmallVector<llvm::UTF16, 128> buffer(utf8.size() + 1); // +1 for ending nulls.
const llvm::UTF8 *fromPtr = (const llvm::UTF8 *) utf8.data();
llvm::UTF16 *toPtr = &buffer[0];
(void) ConvertUTF8toUTF16(&fromPtr, fromPtr + utf8.size(),
&toPtr, toPtr + utf8.size(),
strictConversion);
llvm::strictConversion);
// The length of the transcoded string in UTF-8 code points.
size_t utf16Length = toPtr - &buffer[0];
// Null-terminate the UTF-16 string.
*toPtr = 0;
ArrayRef<UTF16> utf16(&buffer[0], utf16Length + 1);
ArrayRef<llvm::UTF16> utf16(&buffer[0], utf16Length + 1);
auto init = llvm::ConstantDataArray::get(LLVMContext, utf16);
auto global = new llvm::GlobalVariable(Module, init->getType(), true,

View File

@@ -76,27 +76,28 @@ class ConvertForWcharSize;
template<>
class ConvertForWcharSize<2> {
public:
static ConversionResult ConvertFromUTF8(const char** sourceStart,
static llvm::ConversionResult ConvertFromUTF8(const char** sourceStart,
const char* sourceEnd,
wchar_t** targetStart,
wchar_t* targetEnd,
ConversionFlags flags) {
return ConvertUTF8toUTF16(reinterpret_cast<const UTF8**>(sourceStart),
reinterpret_cast<const UTF8*>(sourceEnd),
reinterpret_cast<UTF16**>(targetStart),
reinterpret_cast<UTF16*>(targetEnd),
llvm::ConversionFlags flags) {
return ConvertUTF8toUTF16(reinterpret_cast<const llvm::UTF8**>(sourceStart),
reinterpret_cast<const llvm::UTF8*>(sourceEnd),
reinterpret_cast<llvm::UTF16**>(targetStart),
reinterpret_cast<llvm::UTF16*>(targetEnd),
flags);
}
static ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
static llvm::ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
const wchar_t* sourceEnd,
char** targetStart,
char* targetEnd,
ConversionFlags flags) {
return ConvertUTF16toUTF8(reinterpret_cast<const UTF16**>(sourceStart),
reinterpret_cast<const UTF16*>(sourceEnd),
reinterpret_cast<UTF8**>(targetStart),
reinterpret_cast<UTF8*>(targetEnd),
llvm::ConversionFlags flags) {
return ConvertUTF16toUTF8(
reinterpret_cast<const llvm::UTF16**>(sourceStart),
reinterpret_cast<const llvm::UTF16*>(sourceEnd),
reinterpret_cast<llvm::UTF8**>(targetStart),
reinterpret_cast<llvm::UTF8*>(targetEnd),
flags);
}
};
@@ -104,27 +105,28 @@ public:
template<>
class ConvertForWcharSize<4> {
public:
static ConversionResult ConvertFromUTF8(const char** sourceStart,
static llvm::ConversionResult ConvertFromUTF8(const char** sourceStart,
const char* sourceEnd,
wchar_t** targetStart,
wchar_t* targetEnd,
ConversionFlags flags) {
return ConvertUTF8toUTF32(reinterpret_cast<const UTF8**>(sourceStart),
reinterpret_cast<const UTF8*>(sourceEnd),
reinterpret_cast<UTF32**>(targetStart),
reinterpret_cast<UTF32*>(targetEnd),
llvm::ConversionFlags flags) {
return ConvertUTF8toUTF32(reinterpret_cast<const llvm::UTF8**>(sourceStart),
reinterpret_cast<const llvm::UTF8*>(sourceEnd),
reinterpret_cast<llvm::UTF32**>(targetStart),
reinterpret_cast<llvm::UTF32*>(targetEnd),
flags);
}
static ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
static llvm::ConversionResult ConvertToUTF8(const wchar_t** sourceStart,
const wchar_t* sourceEnd,
char** targetStart,
char* targetEnd,
ConversionFlags flags) {
return ConvertUTF32toUTF8(reinterpret_cast<const UTF32**>(sourceStart),
reinterpret_cast<const UTF32*>(sourceEnd),
reinterpret_cast<UTF8**>(targetStart),
reinterpret_cast<UTF8*>(targetEnd),
llvm::ConversionFlags flags) {
return ConvertUTF32toUTF8(
reinterpret_cast<const llvm::UTF32**>(sourceStart),
reinterpret_cast<const llvm::UTF32*>(sourceEnd),
reinterpret_cast<llvm::UTF8**>(targetStart),
reinterpret_cast<llvm::UTF8*>(targetEnd),
flags);
}
};
@@ -140,8 +142,8 @@ static void convertFromUTF8(llvm::StringRef utf8,
wchar_t *wide_begin = out.end();
auto res = Convert::ConvertFromUTF8(&utf8_begin, utf8.end(),
&wide_begin, out.data() + reserve,
lenientConversion);
assert(res == conversionOK && "utf8-to-wide conversion failed!");
llvm::lenientConversion);
assert(res == llvm::conversionOK && "utf8-to-wide conversion failed!");
(void)res;
out.set_size(wide_begin - out.begin());
}
@@ -154,8 +156,8 @@ static void convertToUTF8(llvm::ArrayRef<wchar_t> wide,
char *utf8_begin = out.end();
auto res = Convert::ConvertToUTF8(&wide_begin, wide.end(),
&utf8_begin, out.data() + reserve,
lenientConversion);
assert(res == conversionOK && "wide-to-utf8 conversion failed!");
llvm::lenientConversion);
assert(res == llvm::conversionOK && "wide-to-utf8 conversion failed!");
(void)res;
out.set_size(utf8_begin - out.begin());
}