From ccb45302b2d3c90f1bbe4d752bf39bdff9e0fb53 Mon Sep 17 00:00:00 2001 From: dgregor <dgregor@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Tue, 21 Nov 2006 20:22:05 +0000 Subject: [PATCH] 2006-11-21 Douglas Gregor <doug.gregor@gmail.com> * g++.dg/cpp0x/static_assert1.C: New. * g++.dg/cpp0x/static_assert2.C: New. * g++.dg/cpp0x/static_assert3.C: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@119063 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 b6d5d4a11a1b..592794380a51 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-11-21 Douglas Gregor <doug.gregor@gmail.com> + + * 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 <rguenther@suse.de> * 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<int I> +struct accept_evens { + static_assert( I % 2 == 0, "I must be an even number"); // { dg-error "even number" } +}; + +template<int I> +struct accept_evens_ok { + static_assert( I % 2 == 0, "I must be an even number"); +}; + +template<int I> +void accept_odds() { + static_assert( I % 2 == 1, "I must be an odd number"); // { dg-error "odd number" } +} + +template<int I> +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 } -- GitLab