mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-07 21:47:38 +08:00
New test case from Nathan Sidwell.
From-SVN: r25379
This commit is contained in:
parent
89d3d44249
commit
956662b2f5
46
gcc/testsuite/g++.old-deja/g++.eh/spec6.C
Normal file
46
gcc/testsuite/g++.old-deja/g++.eh/spec6.C
Normal file
@ -0,0 +1,46 @@
|
||||
// Build don't link:
|
||||
|
||||
// Copyright (C) 1999 Free Software Foundation, Inc.
|
||||
// Contributed by Nathan Sidwell 19 Jan 1999 <nathan@acm.org>
|
||||
|
||||
// Determine that throw specifiers are checked correctly.
|
||||
|
||||
// [except.spec] 1, a type in an exception specifier shall not be incomplete,
|
||||
// or pointer or ref to incomplete
|
||||
struct X; // ERROR - forward declaration
|
||||
void fn1() throw(X); // ERROR - incomplete type
|
||||
void fn2() throw(X *); // ERROR - incomplete type
|
||||
void fn3() throw(X &); // ERROR - incomplete type
|
||||
void fn4() throw(void); // ERROR - incomplete type
|
||||
// except for cv pointer to void
|
||||
void fn5() throw(void *);
|
||||
|
||||
// [except.spec] 2, exception specifiers must be the same set of types (but
|
||||
// can be reordered)
|
||||
void fn() throw(int, char);
|
||||
void fn() throw(char, int){}
|
||||
|
||||
// [except.spec] 3, virtual function overriders shall throw a subset of the
|
||||
// overridden function
|
||||
struct E {};
|
||||
struct F : public E {};
|
||||
struct A
|
||||
{
|
||||
virtual void foo() throw();
|
||||
virtual void baz() throw(double, int);
|
||||
virtual void bar();
|
||||
virtual void qux() throw(E);
|
||||
virtual void quux() throw(F);
|
||||
};
|
||||
|
||||
struct B : A
|
||||
{
|
||||
virtual void foo() throw(int); // ERROR - not in base function
|
||||
virtual void baz() throw(double);
|
||||
virtual void bar(int) throw(int);
|
||||
virtual void qux() throw(F);
|
||||
virtual void quux() throw(E); // ERROR - not in base function
|
||||
};
|
||||
|
||||
// [except.spec] 5, types shall not be defined in exception specifiers
|
||||
void fn6() throw(struct Z {}); // ERROR - types shall not be defined
|
Loading…
Reference in New Issue
Block a user