Changeset View
Changeset View
Standalone View
Standalone View
clang/lib/Lex/LiteralSupport.cpp
Show First 20 Lines • Show All 542 Lines • ▼ Show 20 Lines | if (ThisTokBuf == ThisTokEnd || *ThisTokBuf != '{') { | ||||
if (Diags) { | if (Diags) { | ||||
Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, | Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, | ||||
diag::err_delimited_escape_missing_brace) | diag::err_delimited_escape_missing_brace) | ||||
<< StringRef(&ThisTokBuf[-1], 1); | << StringRef(&ThisTokBuf[-1], 1); | ||||
} | } | ||||
return false; | return false; | ||||
} | } | ||||
ThisTokBuf++; | ThisTokBuf++; | ||||
const char *ClosingBrace = | const char *ClosingBrace = std::find_if(ThisTokBuf, ThisTokEnd, [](char C) { | ||||
std::find_if_not(ThisTokBuf, ThisTokEnd, [](char C) { | return C == '}' || isVerticalWhitespace(C); | ||||
aaron.ballman: `isVerticalWhitespace()`? | |||||
return llvm::isAlnum(C) || llvm::isSpace(C) || C == '_' || C == '-'; | |||||
}); | }); | ||||
bool Incomplete = ClosingBrace == ThisTokEnd || *ClosingBrace != '}'; | bool Incomplete = ClosingBrace == ThisTokEnd; | ||||
bool Empty = ClosingBrace == ThisTokBuf; | bool Empty = ClosingBrace == ThisTokBuf; | ||||
if (Incomplete || Empty) { | if (Incomplete || Empty) { | ||||
if (Diags) { | if (Diags) { | ||||
Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, | Diag(Diags, Features, Loc, ThisTokBegin, UcnBegin, ThisTokBuf, | ||||
Incomplete ? diag::err_ucn_escape_incomplete | Incomplete ? diag::err_ucn_escape_incomplete | ||||
: diag::err_delimited_escape_empty) | : diag::err_delimited_escape_empty) | ||||
<< StringRef(&UcnBegin[1], 1); | << StringRef(&UcnBegin[1], 1); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,731 Lines • Show Last 20 Lines |
isVerticalWhitespace()?