From 70ceca9bf0624ff620cafaf96a7330c1bce4bebb Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Sat, 17 Jul 1999 14:26:13 +0000 Subject: [PATCH] * template6.C, delete1.C, template7.C: New test. From-SVN: r28140 --- .../g++.old-deja/g++.oliva/ChangeLog | 4 +++ .../g++.old-deja/g++.oliva/delete1.C | 31 +++++++++++++++++++ .../g++.old-deja/g++.oliva/template6.C | 11 +++++++ .../g++.old-deja/g++.oliva/template7.C | 16 ++++++++++ 4 files changed, 62 insertions(+) create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/delete1.C create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/template6.C create mode 100644 gcc/testsuite/g++.old-deja/g++.oliva/template7.C diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog b/gcc/testsuite/g++.old-deja/g++.oliva/ChangeLog index 3a813b789ea..212d672ca04 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 + + * template6.C, delete1.C, template7.C: New test. + 1999-07-13 Alexandre Oliva * 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 00000000000..dee7f219f2e --- /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 +// simplified from bug report by K. Haley +// 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 00000000000..3902d5d6b59 --- /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 +// simplified from bug report by Meenaradchagan Vishnu + +// crash test - XFAIL *-*-* + +template 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 00000000000..90da43178cc --- /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 +// simplified from bug report by Paul Burchard + +// crash test - XFAIL *-*-* + +template struct A {}; +template class T> struct B { + B() { + T(); + } +}; +B foo; -- 2.30.2