]> granicus.if.org Git - clang/commitdiff
Place warnings related to incorrect "main()" declaration under "-Wmain".
authorTed Kremenek <kremenek@apple.com>
Fri, 12 Aug 2011 20:46:49 +0000 (20:46 +0000)
committerTed Kremenek <kremenek@apple.com>
Fri, 12 Aug 2011 20:46:49 +0000 (20:46 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@137506 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
test/Misc/warning-flags.c

index 86b5da788405e20bc3a9085c1f901c809f83c8ab..cb94c33e5856578f605954f3c8c581e9b9c8b691 100644 (file)
@@ -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">;
index e7b20144b4f8b15e752300916dc61db853660bb0..eed21b1194eb9fbeba0cf7c4e7067dfc482e089d 100644 (file)
@@ -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<Main>;
 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<Main>;
+def err_main_template_decl : Error<"'main' cannot be a template">,
+    InGroup<Main>;
+def err_main_returns_nonint : Error<"'main' must return 'int'">,
+    InGroup<Main>;
 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<Main>;
+def warn_main_one_arg : Warning<"only one parameter on 'main' declaration">,
+    InGroup<Main>;
 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<Main>;
 
 /// parser diagnostics
 def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">,
index 4a34792300e09186aa37f97702a73db370b9e325..5191892c00848527b802632179e4d7611d1c3db0 100644 (file)
@@ -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