diff options
Diffstat (limited to 'test/SemaCXX/struct-class-redecl.cpp')
-rw-r--r-- | test/SemaCXX/struct-class-redecl.cpp | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/test/SemaCXX/struct-class-redecl.cpp b/test/SemaCXX/struct-class-redecl.cpp index 7375319186a1d..622d5a0b652a7 100644 --- a/test/SemaCXX/struct-class-redecl.cpp +++ b/test/SemaCXX/struct-class-redecl.cpp @@ -47,14 +47,43 @@ class E; struct F; struct F; -struct F {}; +struct F {}; // expected-note {{previous use}} struct F; +class F; // expected-warning {{previously declared as a struct}} expected-note {{did you mean struct}} template<class U> class G; // expected-note{{previous use is here}}\ // expected-note{{did you mean struct here?}} template<class U> struct G; // expected-warning{{struct template 'G' was previously declared as a class template}} template<class U> struct G {}; // expected-warning{{'G' defined as a struct template here but previously declared as a class template}} +// Declarations from contexts where the warning is disabled are entirely +// ignored for the purpose of this warning. +struct J; +struct K; // expected-note {{previous use}} +struct L; +struct M; // expected-note {{previous use}} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmismatched-tags" +struct H; +class I {}; +class J; +class K; +class L; +class M {}; +#pragma clang diagnostic pop + +class H; // expected-note {{previous use}} +struct H; // expected-warning {{previously declared as a class}} + +struct I; // expected-note {{previous use}} +class I; // expected-warning {{previously declared as a struct}} + +struct J; +class K; // expected-warning {{previously declared as a struct}} +struct L; +class M; // expected-warning {{previously declared as a struct}} + /* *** 'X' messages *** CHECK: warning: struct 'X' was previously declared as a class |