Home | History | Annotate | Download | only in jni
      1 // { dg-do run  }
      2 
      3 // Copyright (C) 2000 Free Software Foundation, Inc.
      4 // Contributed by Nathan Sidwell 8 Mar 2000 <nathan (at) codesourcery.com>
      5 
      6 // Derived from PR#7
      7 
      8 // We need to destroy the thrown object when exiting the catch
      9 // clause. That needs to destroy the original thrown object, not
     10 // the caught one (which might be a base).
     11 
     12 static int ok = 0;
     13 
     14 struct A
     15 {
     16   A (){}
     17   virtual ~A () {}
     18 };
     19 
     20 struct B : virtual A
     21 {
     22   int value;
     23   B ()
     24     :value(10)
     25     {}
     26   ~B()
     27   {
     28     if (value == 10)
     29       ok = 1;
     30   }
     31 };
     32 
     33 int main()
     34 {
     35   try {
     36     throw B ();
     37   } catch (A & e) {
     38   }
     39   return !ok;
     40 }
     41