]> granicus.if.org Git - clang/commitdiff
Revert Microsoft-specific override of the "typedef requires a name"
authorDouglas Gregor <dgregor@apple.com>
Fri, 16 Jul 2010 15:40:40 +0000 (15:40 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 16 Jul 2010 15:40:40 +0000 (15:40 +0000)
diagnostic. Instead, put it and the "declaration does not declare
anything" warning into -Wmissing-declarations.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108527 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticCommonKinds.td
include/clang/Basic/DiagnosticGroups.td
include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaDecl.cpp
test/Parser/MicrosoftExtensions.c

index 4b0bf57bef63701ab0c304230a9004cba4dff26b..98ea9d4bd6d9f5cf0e379b0fcb8bea39fc5d5923 100644 (file)
@@ -41,7 +41,8 @@ def err_expected_colon_after_setter_name : Error<
   "must end with ':'">;
 
 // Parse && Sema
-def ext_no_declarators : ExtWarn<"declaration does not declare anything">;
+def ext_no_declarators : ExtWarn<"declaration does not declare anything">,
+  InGroup<MissingDeclarations>;
 def err_param_redefinition : Error<"redefinition of parameter %0">;
 def err_invalid_storage_class_in_func_decl : Error<
   "invalid storage class specifier in function declarator">;
index 8e4a389f4afdeaa9917984f0f08c2f3d9300e114..566072978cec91822d1c43ff7326b6fc957b5844 100644 (file)
@@ -35,7 +35,7 @@ def : DiagGroup<"declaration-after-statement">;
 def GNUDesignator : DiagGroup<"gnu-designator">;
 def Deprecated : DiagGroup<"deprecated">;
 def : DiagGroup<"disabled-optimization">;
-def : DiagGroup<"discard-qual">;
+def : DiagGroup<"discard-qualgnu">;
 def : DiagGroup<"div-by-zero">;
 def EmptyBody : DiagGroup<"empty-body">;
 def ExtraTokens : DiagGroup<"extra-tokens">;
@@ -57,7 +57,7 @@ def : DiagGroup<"invalid-pch">;
 def LiteralRange : DiagGroup<"literal-range">;
 def : DiagGroup<"main">;
 def MissingBraces : DiagGroup<"missing-braces">;
-def : DiagGroup<"missing-declarations">;
+def MissingDeclarations: DiagGroup<"missing-declarations">;
 def : DiagGroup<"missing-format-attribute">;
 def : DiagGroup<"missing-include-dirs">;
 def : DiagGroup<"missing-noreturn">;
index 018a3a1e6255f171c47ca0035fb92d68a8681d0c..38c8b6747252f3a9db0c8c80c1b733a1503048b1 100644 (file)
@@ -227,7 +227,8 @@ def err_main_arg_wrong : Error<"%select{first|second|third|fourth}0 "
     "platform-specific data}0) must be of type %1">;
 
 /// parser diagnostics
-def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">;
+def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">,
+  InGroup<MissingDeclarations>;
 def err_typedef_not_identifier : Error<"typedef name must be an identifier">;
 def err_statically_allocated_object : Error<
   "interface type cannot be statically allocated">;
index 12c60d2e9019f2cb42b40119ad7978a759b4622a..f2f9a342151aa5ae43afc45af9e755c672f88371 100644 (file)
@@ -1550,12 +1550,11 @@ Sema::DeclPtrTy Sema::ParsedFreeStandingDeclSpec(Scope *S, AccessSpecifier AS,
   if (!DS.isMissingDeclaratorOk() &&
       DS.getTypeSpecType() != DeclSpec::TST_error) {
     // Warn about typedefs of enums without names, since this is an
-    // extension in both Microsoft an GNU.
+    // extension in both Microsoft and GNU.
     if (DS.getStorageClassSpec() == DeclSpec::SCS_typedef &&
         Tag && isa<EnumDecl>(Tag)) {
-      if (!getLangOptions().Microsoft)
-        Diag(DS.getSourceRange().getBegin(), diag::ext_typedef_without_a_name)
-          << DS.getSourceRange();
+      Diag(DS.getSourceRange().getBegin(), diag::ext_typedef_without_a_name)
+        << DS.getSourceRange();
       return DeclPtrTy::make(Tag);
     }
 
index 4a52e8b636402f01328d9e784e424a02cbfa5e0a..7b6e60faa498e973cb1dfd93c04b8e3fde21b155 100644 (file)
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify -fms-extensions -x objective-c++ %s
+// RUN: %clang_cc1 -triple i386-mingw32 -fsyntax-only -verify -fms-extensions -Wno-missing-declarations -x objective-c++ %s
 __stdcall int func0();
 int __stdcall func();
 typedef int (__cdecl *tptr)();