Home | History | Annotate | Download | only in jni
      1 // PR 3719
      2 // Test that an unexpected handler can rethrow to categorize.
      3 // { dg-do run }
      4 
      5 #include <exception>
      6 
      7 extern "C" void abort ();
      8 
      9 struct One { };
     10 struct Two { };
     11 
     12 static void
     13 handle_unexpected ()
     14 {
     15   try
     16   {
     17     throw;
     18   }
     19   catch (One &)
     20   {
     21     throw Two ();
     22   }
     23 }
     24 
     25 static void
     26 doit () throw (Two)
     27 {
     28   throw One ();
     29 }
     30 
     31 int main ()
     32 {
     33   std::set_unexpected (handle_unexpected);
     34 
     35   try
     36   {
     37     doit ();
     38   }
     39   catch (Two &)
     40   {
     41   }
     42   catch (...)
     43   {
     44     abort ();
     45   }
     46 }
     47