From b987c7e73488d44e7e196a316c7b9b222fa4701f Mon Sep 17 00:00:00 2001 From: matz Date: Fri, 30 Jan 2004 17:05:09 +0000 Subject: [PATCH] * g++.dg/ext/case-range1.C, g++.dg/ext/case-range2.C, g++.dg/ext/case-range3.C: New tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@76973 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 d4138f7dcac..979a0457759 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 00000000000..0e313d6b602 --- /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 00000000000..33befbd588a --- /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 00000000000..569ce627455 --- /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.11.0