diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 17:59:23 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2019-08-20 17:59:23 +0000 |
commit | 9a83721404652cea39e9f02ae3e3b5c964602a5c (patch) | |
tree | 23e9541ce27049a103f6ed046be61592123e02c9 /test/Parser/cxx-class.cpp | |
parent | 676fbe8105eeb6ff4bb2ed261cb212fcfdbe7b63 (diff) |
Notes
Diffstat (limited to 'test/Parser/cxx-class.cpp')
-rw-r--r-- | test/Parser/cxx-class.cpp | 277 |
1 files changed, 0 insertions, 277 deletions
diff --git a/test/Parser/cxx-class.cpp b/test/Parser/cxx-class.cpp deleted file mode 100644 index 3cc006af23dc0..0000000000000 --- a/test/Parser/cxx-class.cpp +++ /dev/null @@ -1,277 +0,0 @@ -// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fcxx-exceptions %s -// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fcxx-exceptions -std=c++98 %s -// RUN: %clang_cc1 -fsyntax-only -verify -pedantic -fcxx-exceptions -std=c++11 %s - -class C; -class C { -public: -protected: - typedef int A,B; - static int sf(), u; - - struct S {}; - enum {}; // expected-warning{{declaration does not declare anything}} - int; // expected-warning {{declaration does not declare anything}} - int : 1, : 2; - -public: - void m0() {}; // ok, one extra ';' is permitted - void m1() {} - ; // ok, one extra ';' is permitted - void m() { - int l = 2; - };; // expected-warning{{extra ';' after member function definition}} - - template<typename T> void mt(T) { } - ; - ; // expected-warning{{extra ';' inside a class}} - - virtual int vf() const volatile = 0; - - virtual int vf0() = 0l; // expected-error {{does not look like a pure-specifier}} - virtual int vf1() = 1; // expected-error {{does not look like a pure-specifier}} - virtual int vf2() = 00; // expected-error {{does not look like a pure-specifier}} - virtual int vf3() = 0x0; // expected-error {{does not look like a pure-specifier}} - virtual int vf4() = 0.0; // expected-error {{does not look like a pure-specifier}} - virtual int vf5(){0}; // expected-error +{{}} expected-warning {{unused}} - virtual int vf5a(){0;}; // function definition, expected-warning {{unused}} - virtual int vf6()(0); // expected-error +{{}} expected-note +{{}} - virtual int vf7() = { 0 }; // expected-error {{does not look like a pure-specifier}} - -private: - int x,f(),y,g(); - inline int h(); - static const int sci = 10; - mutable int mi; -}; -void glo() -{ - struct local {}; -} - -// PR3177 -typedef union { - __extension__ union { - int a; - float b; - } y; -} bug3177; - -// check that we don't consume the token after the access specifier -// when it's not a colon -class D { -public // expected-error{{expected ':'}} - int i; -}; - -// consume the token after the access specifier if it's a semicolon -// that was meant to be a colon -class E { -public; // expected-error{{expected ':'}} - int i; -}; - -class F { - int F1 { return 1; } -#if __cplusplus <= 199711L - // expected-error@-2 {{function definition does not declare parameters}} -#else - // expected-error@-4 {{expected expression}} - // expected-error@-5 {{expected}} - // expected-note@-6 {{to match this '{'}} - // expected-error@-7 {{expected ';' after class}} -#endif - - void F2 {} -#if __cplusplus <= 199711L - // expected-error@-2 {{function definition does not declare parameters}} -#else - // expected-error@-4 {{variable has incomplete type 'void'}} - // expected-error@-5 {{expected ';' after top level declarator}} -#endif - - typedef int F3() { return 0; } // expected-error{{function definition declared 'typedef'}} - typedef void F4() {} // expected-error{{function definition declared 'typedef'}} -}; -#if __cplusplus >= 201103L -// expected-error@-2 {{extraneous closing brace}} -#endif - -namespace ctor_error { - class Foo {}; - // By [class.qual]p2, this is a constructor declaration. - Foo::Foo (F) = F(); // expected-error{{does not match any declaration in 'ctor_error::Foo'}} - - class Ctor { // expected-note{{not complete until the closing '}'}} - Ctor(f)(int); // ok - Ctor(g(int)); // ok - Ctor(x[5]); // expected-error{{incomplete type}} - - Ctor(UnknownType *); // expected-error{{unknown type name 'UnknownType'}} - void operator+(UnknownType*); // expected-error{{unknown type name 'UnknownType'}} - }; - - Ctor::Ctor (x) = { 0 }; // \ - // expected-error{{qualified reference to 'Ctor' is a constructor name}} - - Ctor::Ctor(UnknownType *) {} // \ - // expected-error{{unknown type name 'UnknownType'}} - void Ctor::operator+(UnknownType*) {} // \ - // expected-error{{unknown type name 'UnknownType'}} -} - -namespace nns_decl { - struct A { - struct B; - }; - namespace N { - union C; - } - struct A::B; // expected-error {{forward declaration of struct cannot have a nested name specifier}} - union N::C; // expected-error {{forward declaration of union cannot have a nested name specifier}} -} - -// PR13775: Don't assert here. -namespace PR13775 { - class bar - { - public: - void foo (); - void baz (); - }; - void bar::foo () - { - baz x(); // expected-error 3{{}} - } -} - -class pr16989 { - void tpl_mem(int *) { - return; - class C2 { - void f(); - }; - void C2::f() {} // expected-error{{function definition is not allowed here}} - }; -}; - -namespace CtorErrors { - struct A { - A(NonExistent); // expected-error {{unknown type name 'NonExistent'}} - }; - struct B { - B(NonExistent) : n(0) {} // expected-error {{unknown type name 'NonExistent'}} - int n; - }; - struct C { - C(NonExistent) try {} catch (...) {} // expected-error {{unknown type name 'NonExistent'}} - }; - struct D { - D(NonExistent) {} // expected-error {{unknown type name 'NonExistent'}} - }; -} - -namespace DtorErrors { - struct A { ~A(); int n; } a; - ~A::A() { n = 0; } // expected-error {{'~' in destructor name should be after nested name specifier}} expected-note {{previous}} - A::~A() {} // expected-error {{redefinition}} - - struct B { ~B(); } *b; - DtorErrors::~B::B() {} // expected-error {{'~' in destructor name should be after nested name specifier}} - - void f() { - a.~A::A(); // expected-error {{'~' in destructor name should be after nested name specifier}} - b->~DtorErrors::~B::B(); // expected-error {{'~' in destructor name should be after nested name specifier}} - } - - struct C; // expected-note {{forward decl}} - ~C::C() {} // expected-error {{incomplete}} expected-error {{'~' in destructor name should be after nested name specifier}} - - struct D { struct X {}; ~D() throw(X); }; - ~D::D() throw(X) {} // expected-error {{'~' in destructor name should be after nested name specifier}} - - ~Undeclared::Undeclared() {} // expected-error {{use of undeclared identifier 'Undeclared'}} expected-error {{'~' in destructor name should be after nested name specifier}} - ~Undeclared:: {} // expected-error {{expected identifier}} expected-error {{'~' in destructor name should be after nested name specifier}} - - struct S { - // For another struct's destructor, emit the same diagnostic like for - // A::~A() in addition to the "~ in the wrong place" one. - ~A::A() {} // expected-error {{'~' in destructor name should be after nested name specifier}} expected-error {{non-friend class member '~A' cannot have a qualified name}} - A::~A() {} // expected-error {{non-friend class member '~A' cannot have a qualified name}} - - // An inline destructor with a redundant class name should also get the - // same diagnostic as S::~S. - ~S::S() {} // expected-error {{'~' in destructor name should be after nested name specifier}} expected-error {{extra qualification on member '~S'}} - - // This just shouldn't crash. - int I; // expected-note {{declared here}} - ~I::I() {} // expected-error {{'I' is not a class, namespace, or enumeration}} expected-error {{'~' in destructor name should be after nested name specifier}} - }; - - struct T {}; - T t1 = t1.T::~T<int>; // expected-error {{destructor name 'T' does not refer to a template}} expected-error {{expected '(' for function-style cast or type construction}} expected-error {{expected expression}} - // Emit the same diagnostic as for the previous case, plus something about ~. - T t2 = t2.~T::T<int>; // expected-error {{'~' in destructor name should be after nested name specifier}} expected-error {{destructor name 'T' does not refer to a template}} expected-error {{expected '(' for function-style cast or type construction}} expected-error {{expected expression}} -} - -namespace BadFriend { - struct A { - friend int : 3; // expected-error {{friends can only be classes or functions}} - friend void f() = 123; // expected-error {{illegal initializer}} - friend virtual void f(); // expected-error {{'virtual' is invalid in friend declarations}} - friend void f() final; // expected-error {{'final' is invalid in friend declarations}} - friend void f() override; // expected-error {{'override' is invalid in friend declarations}} - }; -} - -class PR20760_a { - int a = ); // expected-error {{expected expression}} -#if __cplusplus <= 199711L - // expected-warning@-2 {{in-class initialization of non-static data member is a C++11 extension}} -#endif - - int b = }; // expected-error {{expected expression}} -#if __cplusplus <= 199711L - // expected-warning@-2 {{in-class initialization of non-static data member is a C++11 extension}} -#endif - - int c = ]; // expected-error {{expected expression}} -#if __cplusplus <= 199711L - // expected-warning@-2 {{in-class initialization of non-static data member is a C++11 extension}} -#endif - -}; -class PR20760_b { - int d = d); // expected-error {{expected ';'}} -#if __cplusplus <= 199711L - // expected-warning@-2 {{in-class initialization of non-static data member is a C++11 extension}} -#endif - - int e = d]; // expected-error {{expected ';'}} -#if __cplusplus <= 199711L - // expected-warning@-2 {{in-class initialization of non-static data member is a C++11 extension}} -#endif - - int f = d // expected-error {{expected ';'}} -#if __cplusplus <= 199711L - // expected-warning@-2 {{in-class initialization of non-static data member is a C++11 extension}} -#endif - -}; - -namespace PR20887 { -class X1 { a::operator=; }; // expected-error {{undeclared identifier 'a'}} -class X2 { a::a; }; // expected-error {{undeclared identifier 'a'}} -} - -class BadExceptionSpec { - void f() throw(int; // expected-error {{expected ')'}} expected-note {{to match}} - void g() throw( - int( - ; // expected-error {{unexpected ';' before ')'}} - )); -}; - -// PR11109 must appear at the end of the source file -class pr11109r3 { // expected-note{{to match this '{'}} - public // expected-error{{expected ':'}} expected-error{{expected '}'}} expected-error{{expected ';' after class}} |