summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSeth Cantrell <seth.cantrell@gmail.com>2012-04-13 01:00:34 +0000
committerSeth Cantrell <seth.cantrell@gmail.com>2012-04-13 01:00:34 +0000
commitd55522287e217746996238c6ab206babeec336d5 (patch)
treebb7aa551372132db8ec48737e6ecb9d638616a79
parent2c39d71bb7cefdfe6116fa52454f3b3dc5abd517 (diff)
C++11 no longer requires files to end with a newline
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@154643 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Lex/Lexer.cpp3
-rw-r--r--test/Lexer/newline-eof-c++11.cpp4
-rw-r--r--test/Lexer/newline-eof.c4
3 files changed, 8 insertions, 3 deletions
diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp
index c817e3f105..f0c2c8e4f6 100644
--- a/lib/Lex/Lexer.cpp
+++ b/lib/Lex/Lexer.cpp
@@ -2375,7 +2375,8 @@ 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'))
+ if (CurPtr != BufferStart && (CurPtr[-1] != '\n' && CurPtr[-1] != '\r')
+ && !LangOpts.CPlusPlus0x) // C++11 [lex.phases] 2.2 p2
Diag(BufferEnd, diag::ext_no_newline_eof)
<< FixItHint::CreateInsertion(getSourceLocation(BufferEnd), "\n");
diff --git a/test/Lexer/newline-eof-c++11.cpp b/test/Lexer/newline-eof-c++11.cpp
new file mode 100644
index 0000000000..3c45f28336
--- /dev/null
+++ b/test/Lexer/newline-eof-c++11.cpp
@@ -0,0 +1,4 @@
+// RUN: %clang_cc1 -fsyntax-only -std=c++11 -Wnewline-eof -verify %s
+
+// The following line isn't terminated, don't fix it.
+void foo() {} \ No newline at end of file
diff --git a/test/Lexer/newline-eof.c b/test/Lexer/newline-eof.c
index 2f95dc7593..12087b2370 100644
--- a/test/Lexer/newline-eof.c
+++ b/test/Lexer/newline-eof.c
@@ -1,5 +1,5 @@
-// RUN: %clang -fsyntax-only -Wnewline-eof -verify %s
+// RUN: %clang -cc1 -fsyntax-only -Wnewline-eof -verify %s
// rdar://9133072
// The following line isn't terminated, don't fix it.
-void foo() {} // expected-warning{{No newline at end of file}} \ No newline at end of file
+void foo() {} // expected-warning{{no newline at end of file}} \ No newline at end of file