From: Douglas Gregor Date: Tue, 21 Nov 2006 20:22:05 +0000 (+0000) Subject: static_assert1.C: New. X-Git-Tag: releases/gcc-4.3.0~8355 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=200d648149c0f505e0b1962e30f7f6975077fdbf;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b6d5d4a11a1b..592794380a51 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 000000000000..a54617598fb9 --- /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 000000000000..3e74bb1b480c --- /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 000000000000..69f93ab1ab02 --- /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 }