diff gcc/testsuite/g++.old-deja/g++.law/except3.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/g++.old-deja/g++.law/except3.C	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,50 @@
+// { dg-do assemble  }
+// { dg-options "-fexceptions" }
+// GROUPS passed exceptions
+// except file
+// Message-Id: <9211301118.AA09810@ss670mp.geco.slb.com>
+// From: willoch@ss670mp.oslo.sgp.slb.com (thorbjorn willoch)
+// Subject: -fansi-exceptions bug
+// Date: Mon, 30 Nov 92 11:18:05 GMT
+
+extern "C" int printf(const char *, ...);
+
+class Vector
+{
+    int* p;
+    int sz;
+  public:
+    Vector(int s) { p = new int[sz=s]; }
+    ~Vector() {delete [] p; }
+    int size() {return sz; }
+    class Range{};
+ 
+ 
+    int& operator[](int i);
+};
+ 
+int& Vector::operator[](int i)
+{
+    if(0<=i && i<sz) return p[i];
+    throw Range();
+}
+ 
+void do_something(Vector& v)
+{
+    int i = v[v.size()+10];
+}
+ 
+main()
+{
+    Vector v(10);
+ 
+    try
+    {
+        do_something(v);
+    }
+ 
+    catch (Vector::Range)
+    {
+        printf("Range error exception\n");
+    }
+}