diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-12-14 13:15:08 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2017-12-14 13:15:08 +0000 |
commit | 6c3c48f7a30186ac9d31b7e913c61786ae6526e7 (patch) | |
tree | 94ce559787a2d2dded184f4813ed4eb029700f2f /test/Lexer/unicode.c | |
parent | f38a7e77a530c9c439c9b49f033deabf00a569bd (diff) | |
download | clang-6c3c48f7a30186ac9d31b7e913c61786ae6526e7.tar.gz |
Warn if we find a Unicode homoglyph for a symbol in an identifier.
Specifically, warn if:
* we find a character that the language standard says we must treat as an
identifier, and
* that character is not reasonably an identifier character (it's a punctuation
character or similar), and
* it renders identically to a valid non-identifier character in common
fixed-width fonts.
Some tools "helpfully" substitute the surprising characters for the expected
characters, and replacing semicolons with Greek question marks is a common
"prank".
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@320697 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Lexer/unicode.c')
-rw-r--r-- | test/Lexer/unicode.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/test/Lexer/unicode.c b/test/Lexer/unicode.c index 30805d1acb..30e353fa79 100644 --- a/test/Lexer/unicode.c +++ b/test/Lexer/unicode.c @@ -33,3 +33,8 @@ int main () { int 🌷 = 🌵(🌹); return 🌷; } + +int n; = 3; // expected-warning {{treating Unicode character <U+037E> as identifier character rather than as ';' symbol}} +int *n꞉꞉v = &n;; // expected-warning 2{{treating Unicode character <U+A789> as identifier character rather than as ':' symbol}} + // expected-warning@-1 {{treating Unicode character <U+037E> as identifier character rather than as ';' symbol}} +int v=[=](auto){return~x;}(); // expected-warning 12{{treating Unicode character}} |