Skip to content
  • Chris Lattner's avatar
    Make octal constant lexing use AdvanceToTokenCharacter to give more · bb1b44f0
    Chris Lattner authored
    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.
    
    llvm-svn: 39906
    bb1b44f0
Loading