From 48ef529f41516b02d71d415a5b38ae8cb8e068cb Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Fri, 30 Jan 2004 17:05:09 +0000 Subject: [PATCH] case-range1.C, [...]: New tests. * g++.dg/ext/case-range1.C, g++.dg/ext/case-range2.C, g++.dg/ext/case-range3.C: New tests. From-SVN: r76973 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/ext/case-range1.C | 23 +++++++++++++++++++++++ gcc/testsuite/g++.dg/ext/case-range2.C | 27 +++++++++++++++++++++++++++ gcc/testsuite/g++.dg/ext/case-range3.C | 23 +++++++++++++++++++++++ 4 files changed, 78 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/case-range1.C create mode 100644 gcc/testsuite/g++.dg/ext/case-range2.C create mode 100644 gcc/testsuite/g++.dg/ext/case-range3.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d4138f7..979a0457 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2004-01-30 Michael Matz + + * g++.dg/ext/case-range1.C, g++.dg/ext/case-range2.C, + g++.dg/ext/case-range3.C: New tests. + 2004-01-30 Giovanni Bajo DR206 diff --git a/gcc/testsuite/g++.dg/ext/case-range1.C b/gcc/testsuite/g++.dg/ext/case-range1.C new file mode 100644 index 0000000..0e313d6 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/case-range1.C @@ -0,0 +1,23 @@ +// { dg-do compile } +// Tests if case ranges (a GNU extension) are accepted +// { dg-options "" } +const int low = -2; +const int high = 15; + +template +T f2 (T i) +{ + switch (i) + { + case low ... high : return i + 1; + default : return 0; + } +} + +int f (int i) +{ + switch (i) { + case 1 ... 10: return i + 1; + default: return f2 (i); + } +} diff --git a/gcc/testsuite/g++.dg/ext/case-range2.C b/gcc/testsuite/g++.dg/ext/case-range2.C new file mode 100644 index 0000000..33befbd --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/case-range2.C @@ -0,0 +1,27 @@ +// { dg-do compile } +// Tests if case ranges (a GNU extension) correctly emit messages +// about overlapping ranges. +// { dg-options "" } + +const int low = -2; +const int high = 15; + +template +T f2 (T i) +{ + switch (i) + { + case low ... high : return i + 1; // { dg-error "" } + case 5 : return i + 2; // { dg-error "duplicate" } + default : return 0; + } +} + +int f (int i) +{ + switch (i) { + case 1 ... 10: return i + 1; // { dg-error "" } + case 3 ... 5 : return i + 3; // { dg-error "duplicate" } + default: return f2 (i); // { dg-error "" } + } +} diff --git a/gcc/testsuite/g++.dg/ext/case-range3.C b/gcc/testsuite/g++.dg/ext/case-range3.C new file mode 100644 index 0000000..569ce62 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/case-range3.C @@ -0,0 +1,23 @@ +// { dg-do compile } +// Tests if case ranges (a GNU extension) emit errors in ISO mode +// { dg-options "-pedantic" } +const int low = -2; +const int high = 15; + +template +T f2 (T i) +{ + switch (i) + { + case low ... high : return i + 1; // { dg-error "non-standard" } + default : return 0; + } +} + +int f (int i) +{ + switch (i) { + case 1 ... 10: return i + 1; // { dg-error "non-standard" } + default: return f2 (i); // { dg-error "" } + } +} -- 2.7.4