зеркало из https://github.com/microsoft/clang-1.git
Revert Microsoft-specific override of the "typedef requires a name"
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
This commit is contained in:
Родитель
0c99ec6d22
Коммит
a0ebd60bfd
|
@ -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">;
|
||||
|
|
|
@ -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">;
|
||||
|
|
|
@ -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">;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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)();
|
||||
|
|
Загрузка…
Ссылка в новой задаче