From 1c7fe126ee16857243738ebc1dbaea69caffefb1 Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Mon, 14 Nov 2016 18:22:19 +0000 Subject: Fixes for LWG 2598, 2686, 2739, 2742, 2747, and 2759, which were adopted last week in Issaquah llvm-svn: 286858 --- .../numeric.ops/numeric.ops.gcd/gcd.bool1.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops/numeric.ops.gcd/gcd.bool2.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops/numeric.ops.gcd/gcd.bool3.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops/numeric.ops.gcd/gcd.bool4.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops.gcd/gcd.not_integral1.fail.cpp | 3 ++- .../numeric.ops.gcd/gcd.not_integral2.fail.cpp | 3 ++- .../numeric.ops/numeric.ops.lcm/lcm.bool1.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops/numeric.ops.lcm/lcm.bool2.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops/numeric.ops.lcm/lcm.bool3.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops/numeric.ops.lcm/lcm.bool4.fail.cpp | 25 ++++++++++++++++++++++ .../numeric.ops.lcm/lcm.not_integral1.fail.cpp | 3 ++- .../numeric.ops.lcm/lcm.not_integral2.fail.cpp | 3 ++- 12 files changed, 208 insertions(+), 4 deletions(-) create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool1.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool2.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool3.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool4.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool1.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool2.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool3.fail.cpp create mode 100644 libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool4.fail.cpp (limited to 'libcxx/test/std/numerics') diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool1.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool1.fail.cpp new file mode 100644 index 00000000000..cc821e1d8fc --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool1.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> gcd(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::gcd(false, 4); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool2.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool2.fail.cpp new file mode 100644 index 00000000000..1e5ee25655c --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool2.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> gcd(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::gcd(2, true); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool3.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool3.fail.cpp new file mode 100644 index 00000000000..76d1030d83a --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool3.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> gcd(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::gcd(false, 4); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool4.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool4.fail.cpp new file mode 100644 index 00000000000..2c685c94b37 --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.bool4.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> gcd(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::gcd(2, true); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral1.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral1.fail.cpp index 585e40bac8a..0707eca1e70 100644 --- a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral1.fail.cpp +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral1.fail.cpp @@ -13,7 +13,8 @@ // template // constexpr common_type_t<_M,_N> gcd(_M __m, _N __n) -// Remarks: If either M or N is not an integer type, the program is ill-formed. +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. #include diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral2.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral2.fail.cpp index 7a2709aa93b..113dd3d426a 100644 --- a/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral2.fail.cpp +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.gcd/gcd.not_integral2.fail.cpp @@ -13,7 +13,8 @@ // template // constexpr common_type_t<_M,_N> gcd(_M __m, _N __n) -// Remarks: If either M or N is not an integer type, the program is ill-formed. +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. #include diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool1.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool1.fail.cpp new file mode 100644 index 00000000000..79c5f62db16 --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool1.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> lcm(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::lcm(false, 4); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool2.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool2.fail.cpp new file mode 100644 index 00000000000..c34efea176a --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool2.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> lcm(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::lcm(2, true); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool3.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool3.fail.cpp new file mode 100644 index 00000000000..8cb38eb2ada --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool3.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> lcm(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::lcm(false, 4); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool4.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool4.fail.cpp new file mode 100644 index 00000000000..464eb03beb2 --- /dev/null +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.bool4.fail.cpp @@ -0,0 +1,25 @@ +//===----------------------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// UNSUPPORTED: c++98, c++03, c++11, c++14 +// + +// template +// constexpr common_type_t<_M,_N> lcm(_M __m, _N __n) + +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. + +#include + + +int main() +{ + std::lcm(2, true); +} diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral1.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral1.fail.cpp index 1e69b25b190..ce6bcf88b30 100644 --- a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral1.fail.cpp +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral1.fail.cpp @@ -13,7 +13,8 @@ // template // constexpr common_type_t<_M,_N> lcm(_M __m, _N __n) -// Remarks: If either M or N is not an integer type, the program is ill-formed. +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. #include diff --git a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral2.fail.cpp b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral2.fail.cpp index d58d903a23c..a9100989bf4 100644 --- a/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral2.fail.cpp +++ b/libcxx/test/std/numerics/numeric.ops/numeric.ops.lcm/lcm.not_integral2.fail.cpp @@ -13,7 +13,8 @@ // template // constexpr common_type_t<_M,_N> lcm(_M __m, _N __n) -// Remarks: If either M or N is not an integer type, the program is ill-formed. +// Remarks: If either M or N is not an integer type, +// or if either is (a possibly cv-qualified) bool, the program is ill-formed. #include -- cgit v1.2.3