From: Ted Kremenek Date: Fri, 12 Aug 2011 20:46:49 +0000 (+0000) Subject: Place warnings related to incorrect "main()" declaration under "-Wmain". X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9d9eef9c56aa14117a7f2c83beb2d674eef3d1fa;p=clang Place warnings related to incorrect "main()" declaration under "-Wmain". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137506 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 86b5da7884..cb94c33e58 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -73,7 +73,7 @@ def : DiagGroup<"int-to-pointer-cast">; def : DiagGroup<"invalid-pch">; def LiteralRange : DiagGroup<"literal-range">; def LocalTypeTemplateArgs : DiagGroup<"local-type-template-args">; -def : DiagGroup<"main">; +def Main : DiagGroup<"main">; def MissingBraces : DiagGroup<"missing-braces">; def MissingDeclarations: DiagGroup<"missing-declarations">; def : DiagGroup<"missing-format-attribute">; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index e7b20144b4..eed21b1194 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -282,17 +282,24 @@ def warn_sizeof_pointer_type_memaccess : Warning< /// main() // static/inline main() are not errors in C, just in C++. def warn_unusual_main_decl : Warning<"'main' should not be declared " - "%select{static|inline|static or inline}0">; + "%select{static|inline|static or inline}0">, + InGroup
; def err_unusual_main_decl : Error<"'main' is not allowed to be declared " - "%select{static|inline|static or inline}0">; -def err_main_template_decl : Error<"'main' cannot be a template">; -def err_main_returns_nonint : Error<"'main' must return 'int'">; + "%select{static|inline|static or inline}0">, + InGroup
; +def err_main_template_decl : Error<"'main' cannot be a template">, + InGroup
; +def err_main_returns_nonint : Error<"'main' must return 'int'">, + InGroup
; def err_main_surplus_args : Error<"too many parameters (%0) for 'main': " - "must be 0, 2, or 3">; -def warn_main_one_arg : Warning<"only one parameter on 'main' declaration">; + "must be 0, 2, or 3">, + InGroup
; +def warn_main_one_arg : Warning<"only one parameter on 'main' declaration">, + InGroup
; def err_main_arg_wrong : Error<"%select{first|second|third|fourth}0 " "parameter of 'main' (%select{argument count|argument array|environment|" - "platform-specific data}0) must be of type %1">; + "platform-specific data}0) must be of type %1">, + InGroup
; /// parser diagnostics def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">, diff --git a/test/Misc/warning-flags.c b/test/Misc/warning-flags.c index 4a34792300..5191892c00 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 (316): +CHECK: Warnings without flags (314): CHECK-NEXT: auto_storage_class CHECK-NEXT: backslash_newline_space CHECK-NEXT: charize_microsoft_ext @@ -222,7 +222,6 @@ CHECK-NEXT: warn_integer_too_large_for_signed CHECK-NEXT: warn_invalid_asm_cast_lvalue CHECK-NEXT: warn_ivar_use_hidden CHECK-NEXT: warn_label_attribute_not_unused -CHECK-NEXT: warn_main_one_arg CHECK-NEXT: warn_many_braces_around_scalar_init CHECK-NEXT: warn_maynot_respond CHECK-NEXT: warn_member_extra_qualification @@ -330,7 +329,6 @@ CHECK-NEXT: warn_unknown_method_family CHECK-NEXT: warn_unkwown_analyzer_checker CHECK-NEXT: warn_unterminated_char CHECK-NEXT: warn_unterminated_string -CHECK-NEXT: warn_unusual_main_decl CHECK-NEXT: warn_use_out_of_scope_declaration CHECK-NEXT: warn_weak_identifier_undeclared CHECK-NEXT: warn_weak_import