diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-08 21:33:23 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-08 21:33:23 +0000 |
commit | cb821d045f5e445384f34d05a526955036073c4a (patch) | |
tree | df65855fc07b4d78aa1419c30edc2b9771644001 | |
parent | 7732cc9c0fdc97a2f8cce4e5933d8103213d1aef (diff) |
Downgrade the "declaration does not declare anything" error to a
warning. It's not harmful to have such pointless declarations, and GCC
does not diagnose this issue consistently.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@100814 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/DiagnosticCommonKinds.td | 2 | ||||
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 5 | ||||
-rw-r--r-- | test/Parser/cxx-class.cpp | 2 | ||||
-rw-r--r-- | test/Parser/cxx-template-decl.cpp | 2 | ||||
-rw-r--r-- | test/Sema/anonymous-struct-union.c | 10 | ||||
-rw-r--r-- | test/Sema/decl-invalid.c | 12 | ||||
-rw-r--r-- | test/Sema/declspec.c | 2 | ||||
-rw-r--r-- | test/SemaCXX/anonymous-union.cpp | 2 | ||||
-rw-r--r-- | test/SemaCXX/class.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/property-9.m | 4 | ||||
-rw-r--r-- | test/SemaTemplate/template-decl-fail.cpp | 2 |
11 files changed, 22 insertions, 23 deletions
diff --git a/include/clang/Basic/DiagnosticCommonKinds.td b/include/clang/Basic/DiagnosticCommonKinds.td index 1402e96ce0..5e28f49ade 100644 --- a/include/clang/Basic/DiagnosticCommonKinds.td +++ b/include/clang/Basic/DiagnosticCommonKinds.td @@ -41,7 +41,7 @@ def err_expected_colon_after_setter_name : Error< "must end with ':'">; // Parse && Sema -def err_no_declarators : Error<"declaration does not declare anything">; +def ext_no_declarators : ExtWarn<"declaration does not declare anything">; 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">; diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 82cecc3f4d..9d0d7ad133 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -1459,7 +1459,7 @@ Sema::DeclPtrTy Sema::ParsedFreeStandingDeclSpec(Scope *S, DeclSpec &DS) { Record->getDeclContext()->isRecord()) return BuildAnonymousStructOrUnion(S, DS, Record); - Diag(DS.getSourceRange().getBegin(), diag::err_no_declarators) + Diag(DS.getSourceRange().getBegin(), diag::ext_no_declarators) << DS.getSourceRange(); } @@ -1481,9 +1481,8 @@ Sema::DeclPtrTy Sema::ParsedFreeStandingDeclSpec(Scope *S, DeclSpec &DS) { return DeclPtrTy::make(Tag); } - Diag(DS.getSourceRange().getBegin(), diag::err_no_declarators) + Diag(DS.getSourceRange().getBegin(), diag::ext_no_declarators) << DS.getSourceRange(); - return DeclPtrTy(); } return DeclPtrTy::make(Tag); diff --git a/test/Parser/cxx-class.cpp b/test/Parser/cxx-class.cpp index 576e57d071..4abbbc5b9b 100644 --- a/test/Parser/cxx-class.cpp +++ b/test/Parser/cxx-class.cpp @@ -8,7 +8,7 @@ protected: struct S {}; enum {}; - int; // expected-error {{declaration does not declare anything}} + int; // expected-warning {{declaration does not declare anything}} int : 1, : 2; public: diff --git a/test/Parser/cxx-template-decl.cpp b/test/Parser/cxx-template-decl.cpp index 3f8f1ec9d0..3a97efac19 100644 --- a/test/Parser/cxx-template-decl.cpp +++ b/test/Parser/cxx-template-decl.cpp @@ -6,7 +6,7 @@ template x; // expected-error {{C++ requires a type specifier for al // expected-error {{does not refer}} export template x; // expected-error {{expected '<' after 'template'}} export template<class T> class x0; // expected-warning {{exported templates are unsupported}} -template < ; // expected-error {{parse error}} expected-error {{declaration does not declare anything}} +template < ; // expected-error {{parse error}} expected-warning {{declaration does not declare anything}} template <template X> struct Err1; // expected-error {{expected '<' after 'template'}} \ // expected-error{{extraneous}} template <template <typename> > struct Err2; // expected-error {{expected 'class' before '>'}} \ diff --git a/test/Sema/anonymous-struct-union.c b/test/Sema/anonymous-struct-union.c index 78995a993a..118854fd47 100644 --- a/test/Sema/anonymous-struct-union.c +++ b/test/Sema/anonymous-struct-union.c @@ -50,12 +50,12 @@ struct Redecl { void zz(); // expected-error{{duplicate member 'zz'}} }; -union { // expected-error{{declaration does not declare anything}} +union { // expected-warning{{declaration does not declare anything}} int int_val; float float_val; }; -static union { // expected-error{{declaration does not declare anything}} +static union { // expected-warning{{declaration does not declare anything}} int int_val2; float float_val2; }; @@ -66,7 +66,7 @@ void f() { } void g() { - union { // expected-error{{declaration does not declare anything}} + union { // expected-warning{{declaration does not declare anything}} int i; float f2; }; @@ -78,7 +78,7 @@ void g() { struct s0 { union { int f0; }; }; // <rdar://problem/6481130> -typedef struct { }; // expected-error{{declaration does not declare anything}} +typedef struct { }; // expected-warning{{declaration does not declare anything}} // PR3675 struct s1 { @@ -89,7 +89,7 @@ struct s1 { }; // PR3680 -struct {}; // expected-error{{declaration does not declare anything}} +struct {}; // expected-warning{{declaration does not declare anything}} struct s2 { union { diff --git a/test/Sema/decl-invalid.c b/test/Sema/decl-invalid.c index 815e6dd9ca..f6fed3c92d 100644 --- a/test/Sema/decl-invalid.c +++ b/test/Sema/decl-invalid.c @@ -1,7 +1,7 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify // See Sema::ParsedFreeStandingDeclSpec about the double diagnostic -typedef union <anonymous> __mbstate_t; // expected-error {{declaration of anonymous union must be a definition}} expected-error {{declaration does not declare anything}} +typedef union <anonymous> __mbstate_t; // expected-error {{declaration of anonymous union must be a definition}} expected-warning {{declaration does not declare anything}} // PR2017 @@ -13,12 +13,12 @@ int a() { expected-error{{expected identifier or '('}} } -int; // expected-error {{declaration does not declare anything}} -typedef int; // expected-error {{declaration does not declare anything}} -const int; // expected-error {{declaration does not declare anything}} -struct; // expected-error {{declaration of anonymous struct must be a definition}} // expected-error {{declaration does not declare anything}} +int; // expected-warning {{declaration does not declare anything}} +typedef int; // expected-warning {{declaration does not declare anything}} +const int; // expected-warning {{declaration does not declare anything}} +struct; // expected-error {{declaration of anonymous struct must be a definition}} // expected-warning {{declaration does not declare anything}} typedef int I; -I; // expected-error {{declaration does not declare anything}} +I; // expected-warning {{declaration does not declare anything}} diff --git a/test/Sema/declspec.c b/test/Sema/declspec.c index 1c87a0e21c..7354028cba 100644 --- a/test/Sema/declspec.c +++ b/test/Sema/declspec.c @@ -10,7 +10,7 @@ int typedef validTypeDecl() { } // expected-error {{function definition declared struct _zend_module_entry { } // expected-error {{expected ';' after struct}} int gv1; typedef struct _zend_function_entry { } // expected-error {{expected ';' after struct}} \ - // expected-error {{declaration does not declare anything}} + // expected-warning {{declaration does not declare anything}} int gv2; static void buggy(int *x) { } diff --git a/test/SemaCXX/anonymous-union.cpp b/test/SemaCXX/anonymous-union.cpp index 0590db28d8..5c34e016e5 100644 --- a/test/SemaCXX/anonymous-union.cpp +++ b/test/SemaCXX/anonymous-union.cpp @@ -110,7 +110,7 @@ struct BadMembers { }; // <rdar://problem/6481130> -typedef union { }; // expected-error{{declaration does not declare anything}} +typedef union { }; // expected-warning{{declaration does not declare anything}} // <rdar://problem/7562438> typedef struct objc_module *Foo ; diff --git a/test/SemaCXX/class.cpp b/test/SemaCXX/class.cpp index 508ca4d765..7eea67ad44 100644 --- a/test/SemaCXX/class.cpp +++ b/test/SemaCXX/class.cpp @@ -103,7 +103,7 @@ void ogfn() // PR3020: This used to crash due to double ownership of C4. struct C4; - C4; // expected-error {{declaration does not declare anything}} + C4; // expected-warning {{declaration does not declare anything}} } struct C4 { diff --git a/test/SemaObjC/property-9.m b/test/SemaObjC/property-9.m index d527a9c9f3..669f9c0e4b 100644 --- a/test/SemaObjC/property-9.m +++ b/test/SemaObjC/property-9.m @@ -43,9 +43,9 @@ typedef signed char BOOL; int _awesome; } -@property (readonly) int; // expected-error {{declaration does not declare anything}} +@property (readonly) int; // expected-warning {{declaration does not declare anything}} @property (readonly) ; // expected-error {{type name requires a specifier or qualifier}} \ - expected-error {{declaration does not declare anything}} + expected-warning {{declaration does not declare anything}} @property (readonly) int : 4; // expected-error {{property requires fields to be named}} diff --git a/test/SemaTemplate/template-decl-fail.cpp b/test/SemaTemplate/template-decl-fail.cpp index eca0f58831..7c04131eba 100644 --- a/test/SemaTemplate/template-decl-fail.cpp +++ b/test/SemaTemplate/template-decl-fail.cpp @@ -4,5 +4,5 @@ template<typename T> typedef T X; // expected-error{{typedef cannot be a templat template<typename T> enum t0 { A = T::x }; // expected-error{{enumeration cannot be a template}} \ - // expected-error{{declaration does not declare anything}} + // expected-warning{{declaration does not declare anything}} |