llvm-project/clang/test/FixIt
Jordan Rose 7f43dddae0 Handle universal character names and Unicode characters outside of literals.
This is a missing piece for C99 conformance.

This patch handles UCNs by adding a '\\' case to LexTokenInternal and
LexIdentifier -- if we see a backslash, we tentatively try to read in a UCN.
If the UCN is not syntactically well-formed, we fall back to the old
treatment: a backslash followed by an identifier beginning with 'u' (or 'U').

Because the spelling of an identifier with UCNs still has the UCN in it, we
need to convert that to UTF-8 in Preprocessor::LookUpIdentifierInfo.

Of course, valid code that does *not* use UCNs will see only a very minimal
performance hit (checks after each identifier for non-ASCII characters,
checks when converting raw_identifiers to identifiers that they do not
contain UCNs, and checks when getting the spelling of an identifier that it
does not contain a UCN).

This patch also adds basic support for actual UTF-8 in the source. This is
treated almost exactly the same as UCNs except that we consider stray
Unicode characters to be mistakes and offer a fixit to remove them.

llvm-svn: 173369
2013-01-24 20:50:46 +00:00
..
atomic-property.m Test for my last patch. // rdar://10267155. 2012-02-29 22:21:36 +00:00
auto-fixit.m
bridge-in-non-arc.m Use some heuristics so that when a fixit removes a source range, we try 2012-12-20 21:05:53 +00:00
dereference-addressof.c Add */& mismatch fixit generation to the Sema::DiagnoseAssignmentResult(). 2011-07-28 19:51:27 +00:00
fixit-autoreleasepool.m objective-c: provide fixit hint for @autoreleasepool 2012-07-09 20:00:35 +00:00
fixit-c90.c
fixit-cxx0x.cpp DR1473: Do not require a space between operator"" and the ud-suffix in a 2012-10-20 08:41:10 +00:00
fixit-cxx11-attributes.cpp Add fixit hints for misplaced C++11 attributes around class specifiers. 2013-01-07 16:57:11 +00:00
fixit-cxx11-compat.cpp Implement C++11 [lex.ext]p10 for string and character literals: a ud-suffix not 2012-03-08 02:39:21 +00:00
fixit-errors-1.c
fixit-errors.c PR10867: Work around a bug in lit. Multiple RUN: lines are joined with &&, so: 2011-09-06 03:01:15 +00:00
fixit-function-call.cpp PR10867: Work around a bug in lit. Multiple RUN: lines are joined with &&, so: 2011-09-06 03:01:15 +00:00
fixit-include.c Per discussion in http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20120917/064551.html 2012-09-27 01:42:07 +00:00
fixit-include.h Adding a fixit for includes that cannot be found with angle brackets, but can be found with quoted strings instead. Implements PR13201. 2012-07-17 23:19:16 +00:00
fixit-interface-as-param.m objc: position of 'fixit' was off by one. 2012-05-29 21:52:45 +00:00
fixit-missing-method-return-type.m Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared. 2012-04-06 18:12:22 +00:00
fixit-missing-self-in-block.m objective-C arc: Warn under arc about a use of an ivar inside a block 2012-10-03 17:55:29 +00:00
fixit-newline-style.c Fix an assertion failure printing the unused-label fixit in files using CRLF line endings. <rdar://problem/12639047>. 2012-11-14 01:28:38 +00:00
fixit-objc-message-comma-separator.m objective-c: provide a useful 'fixit' suggestion when 2012-05-21 22:43:44 +00:00
fixit-objc-message.m PR10867: Work around a bug in lit. Multiple RUN: lines are joined with &&, so: 2011-09-06 03:01:15 +00:00
fixit-objc.m objective-C: remove use of 'ivar' in favor of 2012-09-24 22:00:36 +00:00
fixit-pmem.cpp
fixit-recompile.c Introduce 3 new fixit options: 2012-01-26 02:40:48 +00:00
fixit-recursive-block.c improve on diagnostic when block captures uninitialized 2012-03-08 00:52:24 +00:00
fixit-static-object-decl.m PR10867: Work around a bug in lit. Multiple RUN: lines are joined with &&, so: 2011-09-06 03:01:15 +00:00
fixit-suffix.c
fixit-unicode.c Handle universal character names and Unicode characters outside of literals. 2013-01-24 20:50:46 +00:00
fixit-unrecoverable.c Implement a new identifier-classification scheme where Sema 2011-04-24 05:37:28 +00:00
fixit-unrecoverable.cpp
fixit-vexing-parse-cxx0x.cpp Use character literals for vexing initialization fixit hints. 2012-03-18 02:56:47 +00:00
fixit-vexing-parse.cpp Improvements to vexing-parse warnings. Make the no-parameters case more 2012-07-30 21:30:52 +00:00
fixit.c If a comma operator is followed by a token which unambiguously indicates the 2012-09-18 00:52:05 +00:00
fixit.cpp Provide a fixit when taking the address of an unqualified member function. 2012-10-11 22:55:07 +00:00
format-darwin.m Format strings: correct signedness if already correcting width (%d,%u). 2013-01-17 18:47:16 +00:00
format-no-fixit.m Suggest '%@' for Objective-C objects in ObjC format strings. 2012-05-30 21:53:13 +00:00
format.m Format strings: don't ever convert %+d to %lu. 2013-01-17 22:34:10 +00:00
format.mm Format strings: offer a cast to 'unichar' for %C in Objective-C contexts. 2012-12-05 18:44:49 +00:00
messages.cpp Add a test for r158229 (overlapping fixits). This was PR10696! 2012-06-08 22:46:04 +00:00
no-fixit.cpp Provide a fixit when taking the address of an unqualified member function. 2012-10-11 22:55:07 +00:00
no-macro-fixit.c Issue the 2nd fixit even if fix-it hint is supressed. 2011-04-13 22:18:37 +00:00
no-typo.c
objc-literals.m Now that -Wobjc-literal-compare is a warning, put the fixit on a note. 2012-07-17 17:46:40 +00:00
typo-crash.cpp Replace the workaround from r153445 with a proper fix. 2012-04-03 18:20:11 +00:00
typo-crash.m
typo.c Modify how the -verify flag works. Currently, the verification string and 2011-12-15 00:38:15 +00:00
typo.cpp Fix typo correction of one qualified name to another. 2012-10-12 20:00:44 +00:00
typo.m Added a new attribute, objc_root_class, which informs the compiler when a root class is intentionally declared. 2012-04-06 18:12:22 +00:00