diff options
author | Mike Stump <mrs@apple.com> | 2009-04-02 02:29:42 +0000 |
---|---|---|
committer | Mike Stump <mrs@apple.com> | 2009-04-02 02:29:42 +0000 |
commit | 20d0ee5d23c0f0e879ce1711d11df3118b3fb033 (patch) | |
tree | 1a2856f4bd6a6791cb67fe051ca8ddd71ff1c4c3 | |
parent | 75ae2f14f164b44ad6da3e91eb93cd813f8061ce (diff) |
A code modification hint for files that don't end in a newline.
Eventually, would be nice to be able to run these modifications even
when we don't want the warning or errors for the actual diagnostic.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68272 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Lex/Lexer.cpp | 4 | ||||
-rw-r--r-- | test/Lexer/fixit-errors.c | 13 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index a8a22ebc35..3a3e86a3cf 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -1224,7 +1224,9 @@ bool Lexer::LexEndOfFile(Token &Result, const char *CurPtr) { // C99 5.1.1.2p2: If the file is non-empty and didn't end in a newline, issue // a pedwarn. if (CurPtr != BufferStart && (CurPtr[-1] != '\n' && CurPtr[-1] != '\r')) - Diag(BufferEnd, diag::ext_no_newline_eof); + Diag(BufferEnd, diag::ext_no_newline_eof) + << CodeModificationHint::CreateInsertion(getSourceLocation(BufferEnd), + "\n"); BufferPtr = CurPtr; diff --git a/test/Lexer/fixit-errors.c b/test/Lexer/fixit-errors.c new file mode 100644 index 0000000000..13b4243195 --- /dev/null +++ b/test/Lexer/fixit-errors.c @@ -0,0 +1,13 @@ +// RUN: clang-cc -fsyntax-only -pedantic -fixit %s -o - | clang-cc -pedantic -Werror -x c - + +/* This is a test of the various code modification hints that are + provided as part of warning or extension diagnostics. Eventually, + we would like to actually try to perform the suggested + modifications and compile the result to test that no warnings + remain. */ +// FIXME: If you put a space at the end of the line, it doesn't work yet! +char *s = "hi\ +there"; + +// The following line isn't terminated, don't fix it. +int i; // expected-error{{no newline at end of file}} |