mirror of
https://github.com/intel/llvm.git
synced 2026-02-02 02:00:03 +08:00
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. llvm-svn: 343040
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,3 +45,8 @@ int xx;
|
||||
// expected-warning@-3 {{identifier contains Unicode character <U+200D> that is invisible in some environments}}
|
||||
int foobar = 0; // expected-warning {{identifier contains Unicode character <U+200B> 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
|
||||
|
||||
Reference in New Issue
Block a user