mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Java
		
	
	
	
// Check that NullPointerExceptions thrown from library code are
 | 
						|
// caught.  This detects a number of failures that can be caused by
 | 
						|
// libgcj being built incorrectly.  In particular, we ensure that a
 | 
						|
// SEGV in native (i.e. C++) code in libgcj is handled correctly.
 | 
						|
 | 
						|
// Regrettably, we cannot guarantee that Double.parseDouble() will
 | 
						|
// always be native code, or that it will never be inlined.  It could
 | 
						|
// be argued that we should add a method to libgcj that will be
 | 
						|
// guaranteed forever to be native, but I'm reluctant to add to the
 | 
						|
// library for the sole purpose of performing this test.
 | 
						|
 | 
						|
public class Throw_2
 | 
						|
{
 | 
						|
  public static Throwable obj()
 | 
						|
    {
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
 | 
						|
  public static String str()
 | 
						|
    {
 | 
						|
      return null;
 | 
						|
    }
 | 
						|
 | 
						|
  static double d;
 | 
						|
 | 
						|
  public static void main (String[] args)
 | 
						|
    {
 | 
						|
      // This NullPointerException will, at the time of writing, be
 | 
						|
      // thrown from Java code in libgcj.
 | 
						|
      try
 | 
						|
	{
 | 
						|
	  java.util.Vector v = new java.util.Vector (null);
 | 
						|
	  System.out.println ("fail: no exception thrown");
 | 
						|
	}
 | 
						|
      catch (NullPointerException _)
 | 
						|
	{
 | 
						|
	  System.out.println ("1");
 | 
						|
	}
 | 
						|
      catch (Throwable _)
 | 
						|
	{
 | 
						|
	  System.out.println ("fail: " + _);
 | 
						|
	}
 | 
						|
      // This one will, at the time of writing, be thrown from C++
 | 
						|
      // code in libgcj.
 | 
						|
      try
 | 
						|
	{
 | 
						|
	  d = Double.parseDouble(str());
 | 
						|
	  System.out.println ("fail: no exception thrown");
 | 
						|
	}
 | 
						|
      catch (NullPointerException _)
 | 
						|
	{
 | 
						|
	  System.out.println ("2");
 | 
						|
	}
 | 
						|
      catch (Throwable _)
 | 
						|
	{
 | 
						|
	  System.out.println ("fail: " + _);
 | 
						|
	}
 | 
						|
    }
 | 
						|
}
 |