From: Richard Smith Date: Tue, 25 Sep 2018 22:34:45 +0000 (+0000) Subject: Don't emit "will be treated as an identifier character" warning for X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=730ec602048e07c8eecf40b415ea0a5ad7439413;p=clang Don't emit "will be treated as an identifier character" warning for UTF-8 characters that aren't identifier characters in the current language mode. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@343040 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index 974414c1e4..35ba8c11ec 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -3085,6 +3085,8 @@ bool Lexer::LexUnicode(Token &Result, uint32_t C, const char *CurPtr) { maybeDiagnoseIDCharCompat(PP->getDiagnostics(), C, makeCharRange(*this, BufferPtr, CurPtr), /*IsFirst=*/true); + maybeDiagnoseUTF8Homoglyph(PP->getDiagnostics(), C, + makeCharRange(*this, BufferPtr, CurPtr)); } MIOpt.ReadToken(); @@ -3879,7 +3881,6 @@ LexNextToken: // We can't just reset CurPtr to BufferPtr because BufferPtr may point to // an escaped newline. --CurPtr; - const char *UTF8StartPtr = CurPtr; llvm::ConversionResult Status = llvm::convertUTF8Sequence((const llvm::UTF8 **)&CurPtr, (const llvm::UTF8 *)BufferEnd, @@ -3894,9 +3895,6 @@ LexNextToken: // (We manually eliminate the tail call to avoid recursion.) goto LexNextToken; } - if (!isLexingRawMode()) - maybeDiagnoseUTF8Homoglyph(PP->getDiagnostics(), CodePoint, - makeCharRange(*this, UTF8StartPtr, CurPtr)); return LexUnicode(Result, CodePoint, CurPtr); } diff --git a/test/Lexer/unicode.c b/test/Lexer/unicode.c index bebab82988..01285fbc21 100644 --- a/test/Lexer/unicode.c +++ b/test/Lexer/unicode.c @@ -45,3 +45,8 @@ int ⁠xx‍; // expected-warning@-3 {{identifier contains Unicode character that is invisible in some environments}} int foo​bar = 0; // expected-warning {{identifier contains Unicode character that is invisible in some environments}} int x = foobar; // expected-error {{undeclared identifier}} + +int ∣foo; // expected-error {{non-ASCII character}} +#ifndef PP_ONLY +#define ∶ x // expected-error {{macro name must be an identifier}} +#endif