]> granicus.if.org Git - clang/commit
Make octal constant lexing use AdvanceToTokenCharacter to give more
authorChris Lattner <sabre@nondot.org>
Mon, 16 Jul 2007 06:55:01 +0000 (06:55 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 16 Jul 2007 06:55:01 +0000 (06:55 +0000)
commit136f93a2b660fc780fc2dba82a6f42ca4dc9164a
tree90b265907d484bc450dbac896595d9e0a2ff4d85
parent97ba77cf09bf7b83b679165ce67ad7d49ffd568c
Make octal constant lexing use AdvanceToTokenCharacter to give more
accurate diagnostics.  For test/Lexer/comments.c we now emit:

int x = 000000080;  /* expected-error {{invalid digit}} */
               ^
constants.c:7:4: error: invalid digit '8' in octal constant
00080;             /* expected-error {{invalid digit}} */
   ^

The last line is due to an escaped newline.  The full line looks like:

int y = 0000\
00080;             /* expected-error {{invalid digit}} */

Previously, we emitted:
constants.c:4:9: error: invalid digit '8' in octal constant
int x = 000000080;  /* expected-error {{invalid digit}} */
        ^
constants.c:6:9: error: invalid digit '8' in octal constant
int y = 0000\
        ^

which isn't too bad, but the new way is better for the user,
regardless of whether there is an escaped newline or not.

All the other lexer-related diagnostics should switch over
to using AdvanceToTokenCharacter where appropriate.  Help
wanted :).

This implements test/Lexer/constants.c.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@39906 91177308-0d34-0410-b5e6-96231b3b80d8
Basic/SourceManager.cpp
Lex/LiteralSupport.cpp
TODO.txt
clang.xcodeproj/project.pbxproj
test/Lexer/constants.c [new file with mode: 0644]