diff options
author | Alexandre Oliva <oliva@dcc.unicamp.br> | 1999-07-17 14:26:13 +0000 |
---|---|---|
committer | Alexandre Oliva <oliva@gcc.gnu.org> | 1999-07-17 14:26:13 +0000 |
commit | 70ceca9bf0624ff620cafaf96a7330c1bce4bebb (patch) | |
tree | d3755f00fe3801f292e11d784f1df67d0ff98a28 /gcc | |
parent | bef10da0585c3fcd511ed8c3040022218f7ab24d (diff) | |
download | gcc-70ceca9bf0624ff620cafaf96a7330c1bce4bebb.zip gcc-70ceca9bf0624ff620cafaf96a7330c1bce4bebb.tar.gz gcc-70ceca9bf0624ff620cafaf96a7330c1bce4bebb.tar.bz2 |
* template6.C, delete1.C, template7.C: New test.
From-SVN: r28140
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/delete1.C | 31 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/template6.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/g++.old-deja/g++.oliva/template7.C | 16 |
4 files changed, 62 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog index 3a813b7..212d672 100644 --- a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog +++ b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog @@ -1,3 +1,7 @@ +1999-07-17 Alexandre Oliva <oliva@dcc.unicamp.br> + + * template6.C, delete1.C, template7.C: New test. + 1999-07-13 Alexandre Oliva <oliva@dcc.unicamp.br> * template5.C: New test. diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C b/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C new file mode 100644 index 0000000..dee7f21 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/delete1.C @@ -0,0 +1,31 @@ +// Build don't link: + +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva <oliva@dcc.unicamp.br> +// simplified from bug report by K. Haley <khaley@bigfoot.com> +// based on analysis by Martin v. Loewis + +// [class.dtor]/11: delete must be implicitly checked for +// accessibility only in the definition of virtual destructors, +// implicitly defined or not. + +struct foo { + foo() {} +private: + void operator delete(void *) {} // ERROR - private +} foo_; + +struct bar : foo { + ~bar() { + delete this; // ERROR - delete is private + // An implicit invocation of delete is emitted in destructors, but + // it should only be checked in virtual destructors + } // gets bogus error - not virtual - XFAIL *-*-* +} bar_; + +struct baz : foo { + virtual ~baz() {} // ERROR - delete is private in vdtor +} baz_; + +struct bad : baz {} bad_; // ERROR - delete is private in vdtor diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/template6.C b/gcc/testsuite/g++.old-deja/g++.oliva/template6.C new file mode 100644 index 0000000..3902d5d --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/template6.C @@ -0,0 +1,11 @@ +// Build don't link: + +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva <oliva@dcc.unicamp.br> +// simplified from bug report by Meenaradchagan Vishnu <mvishnu@fore.com> + +// crash test - XFAIL *-*-* + +template <typename> struct foo {}; +template <> void foo(); diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/template7.C b/gcc/testsuite/g++.old-deja/g++.oliva/template7.C new file mode 100644 index 0000000..90da431 --- /dev/null +++ b/gcc/testsuite/g++.old-deja/g++.oliva/template7.C @@ -0,0 +1,16 @@ +// Build don't link: + +// Copyright (C) 1999 Free Software Foundation + +// by Alexandre Oliva <oliva@dcc.unicamp.br> +// simplified from bug report by Paul Burchard <burchard@pobox.com> + +// crash test - XFAIL *-*-* + +template<class> struct A {}; +template<template<class> class T> struct B { + B() { + T<B>(); + } +}; +B<A> foo; |