diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-02-15 23:45:31 +0000 |
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-02-15 23:45:31 +0000 |
| commit | c541ade850cef39e4e815618fd205b5feedf7260 (patch) | |
| tree | ec91fb11323ac880cbde7e469fad1033674be5d3 | |
| parent | 49e3348e568059bd5597a42c2ab760adc801bc64 (diff) | |
| download | bcm5719-llvm-c541ade850cef39e4e815618fd205b5feedf7260.tar.gz bcm5719-llvm-c541ade850cef39e4e815618fd205b5feedf7260.zip | |
Warn for missing terminating " or ' instead of error for gcc compatibility. Fixed rdar://8914293.
llvm-svn: 125616
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticLexKinds.td | 4 | ||||
| -rw-r--r-- | clang/lib/Lex/Lexer.cpp | 4 | ||||
| -rw-r--r-- | clang/test/Lexer/rdar-8914293.c | 7 |
3 files changed, 11 insertions, 4 deletions
diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td index 85573de02cf..813e2983ef7 100644 --- a/clang/include/clang/Basic/DiagnosticLexKinds.td +++ b/clang/include/clang/Basic/DiagnosticLexKinds.td @@ -45,8 +45,8 @@ def charize_microsoft_ext : Extension<"@# is a microsoft extension">; def ext_token_used : Extension<"extension used">; -def err_unterminated_string : Error<"missing terminating '\"' character">; -def err_unterminated_char : Error<"missing terminating ' character">; +def warn_unterminated_string : Warning<"missing terminating '\"' character">; +def warn_unterminated_char : Warning<"missing terminating ' character">; def err_empty_character : Error<"empty character constant">; def err_unterminated_block_comment : Error<"unterminated /* comment">; def err_invalid_character_to_charify : Error< diff --git a/clang/lib/Lex/Lexer.cpp b/clang/lib/Lex/Lexer.cpp index fd5bb617a08..b17198b2198 100644 --- a/clang/lib/Lex/Lexer.cpp +++ b/clang/lib/Lex/Lexer.cpp @@ -1162,7 +1162,7 @@ void Lexer::LexStringLiteral(Token &Result, const char *CurPtr, bool Wide) { if (C == 0 && PP && PP->isCodeCompletionFile(FileLoc)) PP->CodeCompleteNaturalLanguage(); else if (!isLexingRawMode() && !Features.AsmPreprocessor) - Diag(BufferPtr, diag::err_unterminated_string); + Diag(BufferPtr, diag::warn_unterminated_string); FormTokenWithChars(Result, CurPtr-1, tok::unknown); return; } @@ -1241,7 +1241,7 @@ void Lexer::LexCharConstant(Token &Result, const char *CurPtr) { if (C == 0 && PP && PP->isCodeCompletionFile(FileLoc)) PP->CodeCompleteNaturalLanguage(); else if (!isLexingRawMode() && !Features.AsmPreprocessor) - Diag(BufferPtr, diag::err_unterminated_char); + Diag(BufferPtr, diag::warn_unterminated_char); FormTokenWithChars(Result, CurPtr-1, tok::unknown); return; } else if (C == 0) { diff --git a/clang/test/Lexer/rdar-8914293.c b/clang/test/Lexer/rdar-8914293.c new file mode 100644 index 00000000000..e39e4f1904c --- /dev/null +++ b/clang/test/Lexer/rdar-8914293.c @@ -0,0 +1,7 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s + +// rdar://8914293 +// We want be compatible with gcc and warn, not error. + +/* expected-warning {{missing terminating}} */ #define FOO "foo +/* expected-warning {{missing terminating}} */ #define KOO 'k |

