From 200d648149c0f505e0b1962e30f7f6975077fdbf Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 21 Nov 2006 20:22:05 +0000 Subject: [PATCH] static_assert1.C: New. 2006-11-21 Douglas Gregor * g++.dg/cpp0x/static_assert1.C: New. * g++.dg/cpp0x/static_assert2.C: New. * g++.dg/cpp0x/static_assert3.C: New. From-SVN: r119063 --- gcc/testsuite/ChangeLog | 6 ++++ gcc/testsuite/g++.dg/cpp0x/static_assert1.C | 14 +++++++++ gcc/testsuite/g++.dg/cpp0x/static_assert2.C | 35 +++++++++++++++++++++ gcc/testsuite/g++.dg/cpp0x/static_assert3.C | 3 ++ 4 files changed, 58 insertions(+) create mode 100644 gcc/testsuite/g++.dg/cpp0x/static_assert1.C create mode 100644 gcc/testsuite/g++.dg/cpp0x/static_assert2.C create mode 100644 gcc/testsuite/g++.dg/cpp0x/static_assert3.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b6d5d4a11a1..592794380a5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-11-21 Douglas Gregor + + * g++.dg/cpp0x/static_assert1.C: New. + * g++.dg/cpp0x/static_assert2.C: New. + * g++.dg/cpp0x/static_assert3.C: New. + 2006-11-21 Richard Guenther * gcc.dg/vect/vect-pow-1.c: New testcase. diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert1.C b/gcc/testsuite/g++.dg/cpp0x/static_assert1.C new file mode 100644 index 00000000000..a54617598fb --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/static_assert1.C @@ -0,0 +1,14 @@ +// { dg-options "-std=c++0x" } +void foo() +{ + static_assert(1, "okay"); + static_assert (0 == 1, "zero is never equal to one"); // { dg-error "never equal" } +} + +class X { + static_assert(1, "okay"); + static_assert (0 == 1, "zero is never equal to one"); // { dg-error "never equal" } +}; + +static_assert(1, "okay"); +static_assert (0 == 1, "zero is never equal to one"); // { dg-error "never equal" } diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert2.C b/gcc/testsuite/g++.dg/cpp0x/static_assert2.C new file mode 100644 index 00000000000..3e74bb1b480 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/static_assert2.C @@ -0,0 +1,35 @@ +// { dg-options "-std=c++0x" } +template +struct accept_evens { + static_assert( I % 2 == 0, "I must be an even number"); // { dg-error "even number" } +}; + +template +struct accept_evens_ok { + static_assert( I % 2 == 0, "I must be an even number"); +}; + +template +void accept_odds() { + static_assert( I % 2 == 1, "I must be an odd number"); // { dg-error "odd number" } +} + +template +void accept_odds_ok() { + static_assert( I % 2 == 1, "I must be an odd number"); +} + +void f() +{ + accept_odds<1>(); + accept_odds<2>(); + accept_odds<3>(); + accept_odds_ok<5>(); + accept_odds_ok<7>(); +} + +accept_evens<0> ok0; +accept_evens<1> error1; +accept_evens<2> ok2; +accept_evens_ok<4> ok4; +accept_evens_ok<6> ok6; diff --git a/gcc/testsuite/g++.dg/cpp0x/static_assert3.C b/gcc/testsuite/g++.dg/cpp0x/static_assert3.C new file mode 100644 index 00000000000..69f93ab1ab0 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/static_assert3.C @@ -0,0 +1,3 @@ +// { dg-options "-std=c++0x" } +static_assert(7 / 0, "X"); // { dg-error "non-constant condition" } +// { dg-warning "division by zero" "" { target *-*-* } 2 } -- 2.30.2