diff options
-rw-r--r-- | include/clang/Basic/DiagnosticGroups.td | 1 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticLexKinds.td | 9 | ||||
-rw-r--r-- | lib/Lex/Lexer.cpp | 6 | ||||
-rw-r--r-- | test/Misc/warning-flags-enabled.c | 2 | ||||
-rw-r--r-- | test/Misc/warning-flags.c | 4 |
5 files changed, 12 insertions, 10 deletions
diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index c98dfae6bc..a99eb1d486 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -217,6 +217,7 @@ def ImplicitFallthroughPerFunction : DiagGroup<"implicit-fallthrough-per-function">; def ImplicitFallthrough : DiagGroup<"implicit-fallthrough", [ImplicitFallthroughPerFunction]>; +def InvalidPPToken : DiagGroup<"invalid-pp-token">; def Trigraphs : DiagGroup<"trigraphs">; def : DiagGroup<"type-limits">; diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td index 464699fb91..77b7f42872 100644 --- a/include/clang/Basic/DiagnosticLexKinds.td +++ b/include/clang/Basic/DiagnosticLexKinds.td @@ -64,9 +64,12 @@ def ext_token_used : Extension<"extension used">, def warn_cxx11_keyword : Warning<"'%0' is a keyword in C++11">, InGroup<CXX11Compat>, DefaultIgnore; -def warn_unterminated_string : ExtWarn<"missing terminating '\"' character">; -def warn_unterminated_char : ExtWarn<"missing terminating ' character">; -def err_empty_character : Error<"empty character constant">; +def ext_unterminated_string : ExtWarn<"missing terminating '\"' character">, + InGroup<InvalidPPToken>; +def ext_unterminated_char : ExtWarn<"missing terminating ' character">, + InGroup<InvalidPPToken>; +def ext_empty_character : ExtWarn<"empty character constant">, + InGroup<InvalidPPToken>; def err_unterminated_block_comment : Error<"unterminated /* comment">; def err_invalid_character_to_charify : Error< "invalid argument to convert to character">; diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index dedf320013..52a094af7f 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -1649,7 +1649,7 @@ void Lexer::LexStringLiteral(Token &Result, const char *CurPtr, if (C == '\n' || C == '\r' || // Newline. (C == 0 && CurPtr-1 == BufferEnd)) { // End of file. if (!isLexingRawMode() && !LangOpts.AsmPreprocessor) - Diag(BufferPtr, diag::warn_unterminated_string); + Diag(BufferPtr, diag::ext_unterminated_string); FormTokenWithChars(Result, CurPtr-1, tok::unknown); return; } @@ -1807,7 +1807,7 @@ void Lexer::LexCharConstant(Token &Result, const char *CurPtr, char C = getAndAdvanceChar(CurPtr, Result); if (C == '\'') { if (!isLexingRawMode() && !LangOpts.AsmPreprocessor) - Diag(BufferPtr, diag::err_empty_character); + Diag(BufferPtr, diag::ext_empty_character); FormTokenWithChars(Result, CurPtr, tok::unknown); return; } @@ -1821,7 +1821,7 @@ void Lexer::LexCharConstant(Token &Result, const char *CurPtr, } else if (C == '\n' || C == '\r' || // Newline. (C == 0 && CurPtr-1 == BufferEnd)) { // End of file. if (!isLexingRawMode() && !LangOpts.AsmPreprocessor) - Diag(BufferPtr, diag::warn_unterminated_char); + Diag(BufferPtr, diag::ext_unterminated_char); FormTokenWithChars(Result, CurPtr-1, tok::unknown); return; } else if (C == 0) { diff --git a/test/Misc/warning-flags-enabled.c b/test/Misc/warning-flags-enabled.c index 1c1c38f864..7ef5c94dbc 100644 --- a/test/Misc/warning-flags-enabled.c +++ b/test/Misc/warning-flags-enabled.c @@ -3,9 +3,9 @@ // This shows warnings which are on by default. // We just check a few to make sure it's doing something sensible. // +// CHECK: ext_unterminated_string // CHECK: warn_condition_is_assignment // CHECK: warn_null_arg -// CHECK: warn_unterminated_string // RUN: diagtool show-enabled -Wno-everything %s | count 0 diff --git a/test/Misc/warning-flags.c b/test/Misc/warning-flags.c index 2799de584c..3b28fd85d7 100644 --- a/test/Misc/warning-flags.c +++ b/test/Misc/warning-flags.c @@ -17,7 +17,7 @@ This test serves two purposes: The list of warnings below should NEVER grow. It should gradually shrink to 0. -CHECK: Warnings without flags (232): +CHECK: Warnings without flags (230): CHECK-NEXT: ext_anonymous_struct_union_qualified CHECK-NEXT: ext_binary_literal CHECK-NEXT: ext_cast_fn_obj @@ -245,8 +245,6 @@ CHECK-NEXT: warn_undef_protocolref CHECK-NEXT: warn_undefined_internal CHECK-NEXT: warn_unknown_analyzer_checker CHECK-NEXT: warn_unknown_method_family -CHECK-NEXT: warn_unterminated_char -CHECK-NEXT: warn_unterminated_string CHECK-NEXT: warn_use_out_of_scope_declaration CHECK-NEXT: warn_weak_identifier_undeclared CHECK-NEXT: warn_weak_import |