Revert r188863 which could propose wrong fixits for multibyte character literals.

llvm-svn: 188918
This commit is contained in:
Nick Lewycky 2013-08-21 18:57:51 +00:00
parent e5e9f8911f
commit 8054f1de88
2 changed files with 3 additions and 20 deletions

View File

@ -978,7 +978,7 @@ CharLiteralParser::CharLiteralParser(const char *begin, const char *end,
uint32_t largest_character_for_kind;
if (tok::wide_char_constant == Kind) {
largest_character_for_kind =
0xFFFFFFFFu >> (32 - PP.getTargetInfo().getWCharWidth());
0xFFFFFFFFu >> (32-PP.getTargetInfo().getWCharWidth());
} else if (tok::utf16_char_constant == Kind) {
largest_character_for_kind = 0xFFFF;
} else if (tok::utf32_char_constant == Kind) {
@ -1009,13 +1009,7 @@ CharLiteralParser::CharLiteralParser(const char *begin, const char *end,
unsigned Msg = diag::err_bad_character_encoding;
if (NoErrorOnBadEncoding)
Msg = diag::warn_bad_character_encoding;
std::string escaped = llvm::utohexstr(static_cast<uint8_t>(*start));
FullSourceLoc SourceLoc(Loc, PP.getSourceManager());
PP.Diag(Loc, Msg) << FixItHint::CreateReplacement(
MakeCharSourceRange(PP.getLangOpts(),
SourceLoc, TokBegin, start,
start + 1),
"\\x" + escaped);
PP.Diag(Loc, Msg);
if (NoErrorOnBadEncoding) {
start = tmp_in_start;
buffer_begin = tmp_out_start;
@ -1053,7 +1047,7 @@ CharLiteralParser::CharLiteralParser(const char *begin, const char *end,
unsigned CharWidth = getCharWidth(Kind, PP.getTargetInfo());
uint64_t result =
ProcessCharEscape(TokBegin, begin, end, HadError,
FullSourceLoc(Loc, PP.getSourceManager()),
FullSourceLoc(Loc,PP.getSourceManager()),
CharWidth, &PP.getDiagnostics(), PP.getLangOpts());
*buffer_begin++ = result;
}

View File

@ -1,11 +0,0 @@
// RUN: cp %s %t
// RUN: %clang_cc1 -fixit -x c %t
// RUN: FileCheck -input-file=%t %t
// Note that this file is not valid UTF-8.
int test1 = 'ˆ';
// CHECK: int test1 = '\x88';
int test2 = 'abˆc';
// CHECK: int test2 = 'ab\x88c';