diff options
author | Ted Kremenek <kremenek@apple.com> | 2011-10-17 21:47:53 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2011-10-17 21:47:53 +0000 |
commit | 66d5ce11b9426f6a59f61a03cbd8dbf047cc9350 (patch) | |
tree | 442f8dc651384ede75ec807a5c005bc659584325 | |
parent | 454b57ac42c9ce0bed9b7a99c2ed5a18fbcd286b (diff) | |
download | clang-66d5ce11b9426f6a59f61a03cbd8dbf047cc9350.tar.gz |
Move about 20 random diagnostics under -W flags. Patch by Ahmed Charles!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@142284 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/DiagnosticGroups.td | 7 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticLexKinds.td | 23 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticParseKinds.td | 6 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 17 | ||||
-rw-r--r-- | lib/Lex/Lexer.cpp | 4 | ||||
-rw-r--r-- | test/Misc/warning-flags.c | 20 |
6 files changed, 38 insertions, 39 deletions
diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 49603eb69e..343ffdab1a 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -29,6 +29,7 @@ def BoolConversions : DiagGroup<"bool-conversions">; def CXXCompat: DiagGroup<"c++-compat">; def CastAlign : DiagGroup<"cast-align">; def : DiagGroup<"cast-qual">; +def CatchIncompleteExtension : DiagGroup<"catch-incomplete-type-extensions">; def : DiagGroup<"char-align">; def Comment : DiagGroup<"comment">; def : DiagGroup<"ctor-dtor-privacy">; @@ -66,6 +67,7 @@ def : DiagGroup<"c++0x-compat", [CXX11Compat]>; def : DiagGroup<"effc++">; def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; +def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; def FourByteMultiChar : DiagGroup<"four-char-constants">; def GlobalConstructors : DiagGroup<"global-constructors">; def : DiagGroup<"idiomatic-parentheses">; @@ -94,6 +96,7 @@ def LongLong : DiagGroup<"long-long">; def MismatchedTags : DiagGroup<"mismatched-tags">; def MissingFieldInitializers : DiagGroup<"missing-field-initializers">; def ModuleBuild : DiagGroup<"module-build">; +def NullCharacter : DiagGroup<"null-character">; def NullDereference : DiagGroup<"null-dereference">; def InitializerOverrides : DiagGroup<"initializer-overrides">; def NonNull : DiagGroup<"nonnull">; @@ -161,6 +164,7 @@ def Switch : DiagGroup<"switch", [SwitchEnum]>; def Trigraphs : DiagGroup<"trigraphs">; def : DiagGroup<"type-limits">; +def Unicode : DiagGroup<"unicode">; def Uninitialized : DiagGroup<"uninitialized">; def UninitializedMaybe : DiagGroup<"conditional-uninitialized">; def UnknownPragmas : DiagGroup<"unknown-pragmas">; @@ -320,6 +324,9 @@ def DelegatingCtorCycles : // A warning group for warnings about using C1X features as extensions. def C1X : DiagGroup<"c1x-extensions">; +// A warning group for warnings about using C99 features as extensions. +def C99 : DiagGroup<"c99-extensions">; + // A warning group for warnings about GCC extensions. def GNU : DiagGroup<"gnu", [GNUDesignator, VLA]>; diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td index 664d390ac7..0254074de2 100644 --- a/include/clang/Basic/DiagnosticLexKinds.td +++ b/include/clang/Basic/DiagnosticLexKinds.td @@ -13,16 +13,19 @@ let Component = "Lex", CategoryName = "Lexical or Preprocessor Issue" in { -def null_in_string : Warning<"null character(s) preserved in string literal">; -def null_in_char : Warning<"null character(s) preserved in character literal">; -def null_in_file : Warning<"null character ignored">; +def null_in_string : Warning<"null character(s) preserved in string literal">, + InGroup<NullCharacter>; +def null_in_char : Warning<"null character(s) preserved in character literal">, + InGroup<NullCharacter>; +def null_in_file : Warning<"null character ignored">, InGroup<NullCharacter>; def warn_nested_block_comment : Warning<"'/*' within block comment">, InGroup<Comment>; def escaped_newline_block_comment_end : Warning< "escaped newline between */ characters at block comment end">, InGroup<Comment>; def backslash_newline_space : Warning< - "backslash and newline separated by space">; + "backslash and newline separated by space">, + InGroup<DiagGroup<"backslash-newline-escape">>; // Digraphs. def warn_cxx98_compat_less_colon_colon : Warning< @@ -45,8 +48,10 @@ def ext_bcpl_comment : Extension< InGroup<Comment>; def ext_no_newline_eof : Extension<"no newline at end of file">, InGroup<DiagGroup<"newline-eof">>; -def ext_dollar_in_identifier : Extension<"'$' in identifier">; -def charize_microsoft_ext : Extension<"@# is a microsoft extension">; +def ext_dollar_in_identifier : Extension<"'$' in identifier">, + InGroup<DiagGroup<"dollar-in-identifier-extension">>; +def ext_charize_microsoft : Extension<"@# is a microsoft extension">, + InGroup<Microsoft>; def ext_token_used : Extension<"extension used">, InGroup<DiagGroup<"language-extension-token">>; @@ -117,9 +122,9 @@ def ext_string_too_long : Extension<"string literal of length %0 exceeds " "maximum length %1 that %select{C90|ISO C99|C++}2 compilers are required to " "support">, InGroup<OverlengthStrings>; def warn_ucn_escape_too_large : ExtWarn< - "character unicode escape sequence too long for its type">; + "character unicode escape sequence too long for its type">, InGroup<Unicode>; def warn_ucn_not_valid_in_c89 : ExtWarn< - "unicode escape sequences are only valid in C99 or C++">; + "unicode escape sequences are only valid in C99 or C++">, InGroup<Unicode>; def warn_cxx98_compat_unicode_literal : Warning< "unicode literals are incompatible with C++98">, InGroup<CXX98Compat>, DefaultIgnore; @@ -145,7 +150,7 @@ def pp_include_macros_out_of_predefines : Error< "the #__include_macros directive is only for internal use by -imacros">; def pp_include_next_absolute_path : Warning<"#include_next with absolute path">; def ext_c99_whitespace_required_after_macro_name : ExtWarn< - "ISO C99 requires whitespace after the macro name">; + "ISO C99 requires whitespace after the macro name">, InGroup<C99>; def ext_missing_whitespace_after_macro_name : ExtWarn< "whitespace required after macro name">; def warn_missing_whitespace_after_macro_name : Warning< diff --git a/include/clang/Basic/DiagnosticParseKinds.td b/include/clang/Basic/DiagnosticParseKinds.td index bd4970f98d..91220e4b5d 100644 --- a/include/clang/Basic/DiagnosticParseKinds.td +++ b/include/clang/Basic/DiagnosticParseKinds.td @@ -52,9 +52,9 @@ def err_friend_storage_spec : Error<"'%0' is invalid in friend declarations">; def ext_ident_list_in_param : Extension< "type-less parameter names in function declaration">; def ext_c99_variable_decl_in_for_loop : Extension< - "variable declaration in for loop is a C99-specific feature">; + "variable declaration in for loop is a C99-specific feature">, InGroup<C99>; def ext_c99_compound_literal : Extension< - "compound literals are a C99-specific feature">; + "compound literals are a C99-specific feature">, InGroup<C99>; def ext_enumerator_list_comma : Extension< "commas at the end of enumerator lists are a %select{C99|C++11}0-specific " "feature">; @@ -228,7 +228,7 @@ def warn_auto_storage_class : Warning< InGroup<CXX11Compat>; def ext_auto_storage_class : ExtWarn< "'auto' storage class specifier is not permitted in C++11, and will not " - "be supported in future releases">; + "be supported in future releases">, InGroup<DiagGroup<"auto-storage-class">>; def ext_for_range : ExtWarn< "range-based for loop is a C++11 extension">, InGroup<CXX11>; def warn_cxx98_compat_for_range : Warning< diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 9590debd74..2b9cf406d2 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -2899,9 +2899,11 @@ def err_flexible_array_empty_struct : Error< def err_flexible_array_has_nonpod_type : Error< "flexible array member %0 of non-POD element type %1">; def ext_flexible_array_in_struct : Extension< - "%0 may not be nested in a struct due to flexible array member">; + "%0 may not be nested in a struct due to flexible array member">, + InGroup<FlexibleArrayExtensions>; def ext_flexible_array_in_array : Extension< - "%0 may not be used as an array element due to flexible array member">; + "%0 may not be used as an array element due to flexible array member">, + InGroup<FlexibleArrayExtensions>; def err_flexible_array_init : Error< "initialization of flexible array member is not allowed">; def ext_flexible_array_empty_aggregate_ms : Extension< @@ -3707,7 +3709,8 @@ def ext_delete_void_ptr_operand : ExtWarn< def err_ambiguous_delete_operand : Error<"ambiguous conversion of delete " "expression of type %0 to a pointer">; def warn_delete_incomplete : Warning< - "deleting pointer to incomplete type %0 may cause undefined behaviour">; + "deleting pointer to incomplete type %0 may cause undefined behaviour">, + InGroup<DiagGroup<"delete-incomplete">>; def err_delete_incomplete_class_type : Error< "deleting incomplete class type %0; no conversions to pointer type">; def warn_delete_array_type : Warning< @@ -3722,9 +3725,11 @@ def err_decrement_bool : Error<"cannot decrement expression of type bool">; def warn_increment_bool : Warning< "incrementing expression of type bool is deprecated">, InGroup<Deprecated>; def ext_catch_incomplete_ptr : ExtWarn< - "ISO C++ forbids catching a pointer to incomplete type %0">; + "ISO C++ forbids catching a pointer to incomplete type %0">, + InGroup<CatchIncompleteExtension>; def ext_catch_incomplete_ref : ExtWarn< - "ISO C++ forbids catching a reference to incomplete type %0">; + "ISO C++ forbids catching a reference to incomplete type %0">, + InGroup<CatchIncompleteExtension>; def err_catch_incomplete : Error<"cannot catch incomplete type %0">; def err_catch_rvalue_ref : Error<"cannot catch exceptions by rvalue reference">; def err_qualified_catch_declarator : Error< @@ -4789,7 +4794,7 @@ def err_missing_param_declspec : Error< def err_objc_array_of_interfaces : Error< "array of interface %0 is invalid (probably should be an array of pointers)">; def ext_c99_array_usage : Extension< - "use of C99-specific array features, accepted as an extension">; + "use of C99-specific array features, accepted as an extension">, InGroup<C99>; def err_c99_array_usage_cxx : Error< "C99-specific array features are not permitted in C++">; def err_double_requires_fp64 : Error< diff --git a/lib/Lex/Lexer.cpp b/lib/Lex/Lexer.cpp index a98d889dbc..796110a34f 100644 --- a/lib/Lex/Lexer.cpp +++ b/lib/Lex/Lexer.cpp @@ -2737,7 +2737,7 @@ LexNextToken: } else if (Char == '@' && Features.MicrosoftExt) {// %:@ -> #@ -> Charize CurPtr = ConsumeChar(CurPtr, SizeTmp, Result); if (!isLexingRawMode()) - Diag(BufferPtr, diag::charize_microsoft_ext); + Diag(BufferPtr, diag::ext_charize_microsoft); Kind = tok::hashat; } else { // '%:' -> '#' // We parsed a # character. If this occurs at the start of the line, @@ -2921,7 +2921,7 @@ LexNextToken: } else if (Char == '@' && Features.MicrosoftExt) { // #@ -> Charize Kind = tok::hashat; if (!isLexingRawMode()) - Diag(BufferPtr, diag::charize_microsoft_ext); + Diag(BufferPtr, diag::ext_charize_microsoft); CurPtr = ConsumeChar(CurPtr, SizeTmp, Result); } else { // We parsed a # character. If this occurs at the start of the line, diff --git a/test/Misc/warning-flags.c b/test/Misc/warning-flags.c index 2f7103ab1c..9fc4832554 100644 --- a/test/Misc/warning-flags.c +++ b/test/Misc/warning-flags.c @@ -17,25 +17,15 @@ This test serves two purposes: The list of warnings below should NEVER grow. It should gradually shrink to 0. -CHECK: Warnings without flags (297): -CHECK-NEXT: backslash_newline_space -CHECK-NEXT: charize_microsoft_ext +CHECK: Warnings without flags (279): CHECK-NEXT: ext_anon_param_requires_type_specifier CHECK-NEXT: ext_anonymous_struct_union_qualified CHECK-NEXT: ext_array_init_copy -CHECK-NEXT: ext_auto_storage_class CHECK-NEXT: ext_binary_literal -CHECK-NEXT: ext_c99_array_usage -CHECK-NEXT: ext_c99_compound_literal -CHECK-NEXT: ext_c99_variable_decl_in_for_loop -CHECK-NEXT: ext_c99_whitespace_required_after_macro_name CHECK-NEXT: ext_cast_fn_obj -CHECK-NEXT: ext_catch_incomplete_ptr -CHECK-NEXT: ext_catch_incomplete_ref CHECK-NEXT: ext_delete_void_ptr_operand CHECK-NEXT: ext_designated_init CHECK-NEXT: ext_designated_init_cxx -CHECK-NEXT: ext_dollar_in_identifier CHECK-NEXT: ext_duplicate_declspec CHECK-NEXT: ext_ellipsis_exception_spec CHECK-NEXT: ext_embedded_directive @@ -50,8 +40,6 @@ CHECK-NEXT: ext_explicit_specialization_storage_class CHECK-NEXT: ext_expr_not_ice CHECK-NEXT: ext_extra_ivar_semi CHECK-NEXT: ext_extra_struct_semi -CHECK-NEXT: ext_flexible_array_in_array -CHECK-NEXT: ext_flexible_array_in_struct CHECK-NEXT: ext_forward_ref_enum CHECK-NEXT: ext_freestanding_complex CHECK-NEXT: ext_hexconstant_invalid @@ -106,9 +94,6 @@ CHECK-NEXT: ext_typecheck_zero_array_size CHECK-NEXT: ext_unknown_escape CHECK-NEXT: ext_using_undefined_std CHECK-NEXT: ext_vla_folded_to_constant -CHECK-NEXT: null_in_char -CHECK-NEXT: null_in_file -CHECK-NEXT: null_in_string CHECK-NEXT: pp_include_next_absolute_path CHECK-NEXT: pp_include_next_in_primary CHECK-NEXT: pp_invalid_string_literal @@ -163,7 +148,6 @@ CHECK-NEXT: warn_conv_to_void_not_used CHECK-NEXT: warn_cxx0x_right_shift_in_template_arg CHECK-NEXT: warn_decl_in_param_list CHECK-NEXT: warn_delete_array_type -CHECK-NEXT: warn_delete_incomplete CHECK-NEXT: warn_division_by_zero CHECK-NEXT: warn_double_const_requires_fp64 CHECK-NEXT: warn_drv_assuming_mfloat_abi_is @@ -300,8 +284,6 @@ CHECK-NEXT: warn_transparent_union_attribute_not_definition CHECK-NEXT: warn_transparent_union_attribute_zero_fields CHECK-NEXT: warn_transparent_union_nonpointer CHECK-NEXT: warn_typecheck_function_qualifiers -CHECK-NEXT: warn_ucn_escape_too_large -CHECK-NEXT: warn_ucn_not_valid_in_c89 CHECK-NEXT: warn_unavailable_fwdclass_message CHECK-NEXT: warn_undef_interface CHECK-NEXT: warn_undef_interface_suggest |