aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/g++.dg')
-rw-r--r--gcc/testsuite/g++.dg/analyzer/fd-bind-pr107783.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/gen-attrs-33.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C1
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic164.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic17.C6
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/variadic28.C8
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/vt-65790.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp1z/fold10.C2
-rw-r--r--gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics3.C20
-rw-r--r--gcc/testsuite/g++.dg/cpp26/variadic-comma1.C18
-rw-r--r--gcc/testsuite/g++.dg/cpp26/variadic-comma2.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp26/variadic-comma3.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp26/variadic-comma4.C5
-rw-r--r--gcc/testsuite/g++.dg/cpp26/variadic-comma5.C19
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/lambda-generic10.C2
-rw-r--r--gcc/testsuite/g++.dg/ext/attrib33.C2
18 files changed, 93 insertions, 26 deletions
diff --git a/gcc/testsuite/g++.dg/analyzer/fd-bind-pr107783.C b/gcc/testsuite/g++.dg/analyzer/fd-bind-pr107783.C
index eb5e23c..318e148 100644
--- a/gcc/testsuite/g++.dg/analyzer/fd-bind-pr107783.C
+++ b/gcc/testsuite/g++.dg/analyzer/fd-bind-pr107783.C
@@ -7,5 +7,5 @@ struct _Bind {
_Bind(_Bind &);
};
template <typename _Func, typename _BoundArgs>
-_Bind bind(_Func, _BoundArgs &&...);
+_Bind bind(_Func, _BoundArgs &&, ...);
void test01() { bind(minus(), _2, _1); }
diff --git a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-33.C b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-33.C
index efb2a1a..485d349 100644
--- a/gcc/testsuite/g++.dg/cpp0x/gen-attrs-33.C
+++ b/gcc/testsuite/g++.dg/cpp0x/gen-attrs-33.C
@@ -5,7 +5,7 @@
template <int N>
struct T
{
- void foo [[gnu::format (printf,2,3)]] (char const * ...);
+ void foo [[gnu::format (printf,2,3)]] (char const * ...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
};
template struct T<3>;
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
index a1ffadd..1767dd7 100644
--- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
@@ -7,7 +7,7 @@ struct FF
{
template < class F, class ... Ts >
void
- operator () (F & ...)
+ operator () (F & ...) // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
{
const int n = sizeof ... (Ts) + 1;
void *mutexes[n];
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C b/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C
index 72cb4b4..2750888 100644
--- a/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C
+++ b/gcc/testsuite/g++.dg/cpp0x/udlit-args-neg.C
@@ -27,6 +27,7 @@ operator ""_Foo(const char16_t *); // { dg-error "1:.Foo operator\"\"_Foo\\(cons
Foo
operator ""_Foo(char...); // { dg-error "1:.Foo operator\"\"_Foo\\(char, \\.\\.\\.\\). has invalid argument list" }
+ // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } .-1 }
Foo
operator ""_Foo(unsigned long long int, char); // { dg-error "1:.Foo operator\"\"_Foo\\(long long unsigned int, char\\). has invalid argument list" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic164.C b/gcc/testsuite/g++.dg/cpp0x/variadic164.C
index 8f9cdb1..a385534 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic164.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic164.C
@@ -8,5 +8,5 @@ template <typename Tuple, typename... Tuples, int... ElementIndices,
typename =
typename tuple<slice_result<ElementIndices, Tuples...>,
slice_result<ElementIndices, Tuples...>...>::type> // { dg-error "parameter pack" }
-void zip_with(Tuple...);
+void zip_with(Tuple...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
decltype(zip_with(0)) d; // { dg-error "no match" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic17.C b/gcc/testsuite/g++.dg/cpp0x/variadic17.C
index d54022a..4791bb4 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic17.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic17.C
@@ -2,7 +2,7 @@
template<typename R, typename... ArgTypes>
struct make_function_type
{
- typedef R type(const ArgTypes&......);
+ typedef R type(const ArgTypes&......); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
};
template<typename T, typename U>
@@ -16,6 +16,6 @@ struct is_same<T, T> {
};
int a0[is_same<make_function_type<int>::type, int(...)>::value? 1 : -1];
-int a1[is_same<make_function_type<int, float>::type, int(const float&...)>::value? 1 : -1];
+int a1[is_same<make_function_type<int, float>::type, int(const float&...)>::value? 1 : -1]; // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
int a2[is_same<make_function_type<int, float>::type, int(const float&,...)>::value? 1 : -1];
-int a3[is_same<make_function_type<int, float, double>::type, int(const float&, double const&...)>::value? 1 : -1];
+int a3[is_same<make_function_type<int, float, double>::type, int(const float&, double const&...)>::value? 1 : -1]; // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/variadic28.C b/gcc/testsuite/g++.dg/cpp0x/variadic28.C
index b027861..57f6d23 100644
--- a/gcc/testsuite/g++.dg/cpp0x/variadic28.C
+++ b/gcc/testsuite/g++.dg/cpp0x/variadic28.C
@@ -3,7 +3,7 @@ template<typename Signature>
struct function_traits;
template<typename R, typename... ArgTypes>
-struct function_traits<R(ArgTypes......)> {
+struct function_traits<R(ArgTypes......)> { // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
typedef R result_type;
};
@@ -17,9 +17,9 @@ struct same_type<T, T> {
static const bool value = true;
};
-int a0[same_type<function_traits<int(double, char...)>::result_type, int>::value? 1 : -1];
+int a0[same_type<function_traits<int(double, char...)>::result_type, int>::value? 1 : -1]; // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
int a1[same_type<function_traits<int(double, char,...)>::result_type, int>::value? 1 : -1];
int a2[same_type<function_traits<int(char,...)>::result_type, int>::value? 1 : -1];
int a3[same_type<function_traits<int(...)>::result_type, int>::value? 1 : -1];
-int a4[same_type<function_traits<int(double x, char...)>::result_type, int>::value? 1 : -1];
-int a5[same_type<function_traits<int(double, char y...)>::result_type, int>::value? 1 : -1];
+int a4[same_type<function_traits<int(double x, char...)>::result_type, int>::value? 1 : -1]; // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
+int a5[same_type<function_traits<int(double, char y...)>::result_type, int>::value? 1 : -1]; // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
diff --git a/gcc/testsuite/g++.dg/cpp0x/vt-65790.C b/gcc/testsuite/g++.dg/cpp0x/vt-65790.C
index 477e988..4e89963 100644
--- a/gcc/testsuite/g++.dg/cpp0x/vt-65790.C
+++ b/gcc/testsuite/g++.dg/cpp0x/vt-65790.C
@@ -1,7 +1,7 @@
// PR c++/65790
// { dg-do compile { target c++11 } }
-extern "C" int printf(const char* ...);
+extern "C" int printf(const char*, ...);
namespace std
{
diff --git a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C
index e78677d..0fb873d 100644
--- a/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C
+++ b/gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic19.C
@@ -1,4 +1,4 @@
// PR c++/86728
// { dg-do compile { target c++14 } }
-auto c = [](auto x ...) { };
+auto c = [](auto x ...) { }; // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
diff --git a/gcc/testsuite/g++.dg/cpp1z/fold10.C b/gcc/testsuite/g++.dg/cpp1z/fold10.C
index 1bd39a0..87aee5b 100644
--- a/gcc/testsuite/g++.dg/cpp1z/fold10.C
+++ b/gcc/testsuite/g++.dg/cpp1z/fold10.C
@@ -4,7 +4,7 @@
template <int...> struct seq {};
template <bool> struct S {
template <typename Args>
- constexpr static void call(Args&&...) {}
+ constexpr static void call(Args&&...) {} // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
};
template <int ...Idx,typename ...Args>
diff --git a/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics3.C b/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics3.C
index f6a892e..4ff13af 100644
--- a/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics3.C
+++ b/gcc/testsuite/g++.dg/cpp23/explicit-obj-diagnostics3.C
@@ -24,7 +24,7 @@ void S::f12(this S s = {}) {} // { dg-error "an explicit object parameter may no
struct S0 {
template<typename Selves>
- void f(this Selves...) {}
+ void f(this Selves...) {} // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void g(this Selves... selves) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -37,7 +37,7 @@ struct S0 {
void k(this Selves...) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
template<typename Selves>
- void fd(this Selves...);
+ void fd(this Selves...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void gd(this Selves... selves); // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -52,7 +52,7 @@ struct S0 {
struct S1 {
template<typename Selves>
- void f(this Selves&...) {}
+ void f(this Selves&...) {} // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void g(this Selves&... selves) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -65,7 +65,7 @@ struct S1 {
void k(this Selves&...) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
template<typename Selves>
- void fd(this Selves&...);
+ void fd(this Selves&...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void gd(this Selves&... selves); // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -80,7 +80,7 @@ struct S1 {
struct S2 {
template<typename Selves>
- void f(this Selves&&...) {}
+ void f(this Selves&&...) {} // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void g(this Selves&&... selves) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -93,7 +93,7 @@ struct S2 {
void k(this Selves&&...) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
template<typename Selves>
- void fd(this Selves&&...);
+ void fd(this Selves&&...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void gd(this Selves&&... selves); // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -108,7 +108,7 @@ struct S2 {
struct S3 {
template<typename Selves>
- void f(this Selves const&...) {}
+ void f(this Selves const&...) {} // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void g(this Selves const&... selves) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -121,7 +121,7 @@ struct S3 {
void k(this Selves const&...) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
template<typename Selves>
- void fd(this Selves const&...);
+ void fd(this Selves const&...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void gd(this Selves const&... selves); // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -136,7 +136,7 @@ struct S3 {
struct S4 {
template<typename Selves>
- void f(this Selves const&&...) {}
+ void f(this Selves const&&...) {} // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void g(this Selves const&&... selves) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
@@ -149,7 +149,7 @@ struct S4 {
void k(this Selves const&&...) {} // { dg-error "an explicit object parameter cannot be a function parameter pack" }
template<typename Selves>
- void fd(this Selves const&&...);
+ void fd(this Selves const&&...); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
template<typename Selves>
void gd(this Selves const&&... selves); // { dg-error "an explicit object parameter cannot be a function parameter pack" }
diff --git a/gcc/testsuite/g++.dg/cpp26/variadic-comma1.C b/gcc/testsuite/g++.dg/cpp26/variadic-comma1.C
new file mode 100644
index 0000000..d5cf13f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp26/variadic-comma1.C
@@ -0,0 +1,18 @@
+// P3176R1 - The Oxford variadic comma
+// { dg-do compile { target c++11 } }
+
+void f1 (int...); // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++26 } }
+#if __cplusplus >= 202002L
+void f2 (auto...);
+void f3 (auto......); // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++26 } }
+#endif
+template <typename ...T>
+void f4 (T......); // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++26 } }
+template <typename ...T>
+void f5 (T...);
+template <typename ...T>
+void f6 (T..., int...); // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++26 } }
+void
+f7 (char...) // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++26 } }
+{
+}
diff --git a/gcc/testsuite/g++.dg/cpp26/variadic-comma2.C b/gcc/testsuite/g++.dg/cpp26/variadic-comma2.C
new file mode 100644
index 0000000..8d2e8f0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp26/variadic-comma2.C
@@ -0,0 +1,19 @@
+// P3176R1 - The Oxford variadic comma
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-Wdeprecated" }
+
+void f1 (int...); // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+#if __cplusplus >= 202002L
+void f2 (auto...);
+void f3 (auto......); // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++20 } }
+#endif
+template <typename ...T>
+void f4 (T......); // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+template <typename ...T>
+void f5 (T...);
+template <typename ...T>
+void f6 (T..., int...); // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+void
+f7 (char...) // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+{
+}
diff --git a/gcc/testsuite/g++.dg/cpp26/variadic-comma3.C b/gcc/testsuite/g++.dg/cpp26/variadic-comma3.C
new file mode 100644
index 0000000..6413478
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp26/variadic-comma3.C
@@ -0,0 +1,5 @@
+// P3176R1 - The Oxford variadic comma
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-Wno-deprecated-variadic-comma-omission" }
+
+#include "variadic-comma1.C"
diff --git a/gcc/testsuite/g++.dg/cpp26/variadic-comma4.C b/gcc/testsuite/g++.dg/cpp26/variadic-comma4.C
new file mode 100644
index 0000000..12f0d54
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp26/variadic-comma4.C
@@ -0,0 +1,5 @@
+// P3176R1 - The Oxford variadic comma
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-Wno-deprecated" }
+
+#include "variadic-comma1.C"
diff --git a/gcc/testsuite/g++.dg/cpp26/variadic-comma5.C b/gcc/testsuite/g++.dg/cpp26/variadic-comma5.C
new file mode 100644
index 0000000..ccf3ebc
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp26/variadic-comma5.C
@@ -0,0 +1,19 @@
+// P3176R1 - The Oxford variadic comma
+// { dg-do compile { target c++11 } }
+// { dg-additional-options "-Wdeprecated-variadic-comma-omission" }
+
+void f1 (int...); // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+#if __cplusplus >= 202002L
+void f2 (auto...);
+void f3 (auto......); // { dg-warning "omission of ',' before varargs '...' is deprecated in" "" { target c++20 } }
+#endif
+template <typename ...T>
+void f4 (T......); // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+template <typename ...T>
+void f5 (T...);
+template <typename ...T>
+void f6 (T..., int...); // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+void
+f7 (char...) // { dg-warning "omission of ',' before varargs '...' is deprecated in" }
+{
+}
diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-generic10.C b/gcc/testsuite/g++.dg/cpp2a/lambda-generic10.C
index 47a87bb..7329fa8 100644
--- a/gcc/testsuite/g++.dg/cpp2a/lambda-generic10.C
+++ b/gcc/testsuite/g++.dg/cpp2a/lambda-generic10.C
@@ -4,7 +4,7 @@
void sink(...);
template <int... args> void f()
{
- sink ([] <int T> (int...) { return 1; }
+ sink ([] <int T> (int...) { return 1; } // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
.operator()<args>(args...)...); // { dg-warning "-Wmissing-template-keyword" }
} // { dg-prune-output {expected '\)'} }
diff --git a/gcc/testsuite/g++.dg/ext/attrib33.C b/gcc/testsuite/g++.dg/ext/attrib33.C
index 55bfc4c..a244c1a 100644
--- a/gcc/testsuite/g++.dg/ext/attrib33.C
+++ b/gcc/testsuite/g++.dg/ext/attrib33.C
@@ -5,7 +5,7 @@
template <int N>
struct T
{
- void foo (char const * ...) __attribute__ ((format (printf,2,3)));
+ void foo (char const * ...) __attribute__ ((format (printf,2,3))); // { dg-warning "omission of ',' before varargs '...' is deprecated" "" { target c++26 } }
};
template struct T<3>;