Mercurial > hg > CbC > CbC_gcc
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"); + } +}