OSDN Git Service

* g++.dg/ext/case-range1.C, g++.dg/ext/case-range2.C,
authormatz <matz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Jan 2004 17:05:09 +0000 (17:05 +0000)
committermatz <matz@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 30 Jan 2004 17:05:09 +0000 (17:05 +0000)
       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
gcc/testsuite/g++.dg/ext/case-range1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/case-range2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/case-range3.C [new file with mode: 0644]

index d4138f7..979a045 100644 (file)
@@ -1,3 +1,8 @@
+2004-01-30  Michael Matz  <matz@suse.de>
+
+       * 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  <giovannibajo@gcc.gnu.org>
 
        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 (file)
index 0000000..0e313d6
--- /dev/null
@@ -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 <typename T>
+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 (file)
index 0000000..33befbd
--- /dev/null
@@ -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 <typename T>
+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 (file)
index 0000000..569ce62
--- /dev/null
@@ -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 <typename T>
+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 "" }
+  }
+}