aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorAndrew Sutton <asutton@lock3software.com>2019-10-23 13:05:32 +0000
committerAndrew Sutton <asutton@lock3software.com>2019-10-23 13:05:32 +0000
commitf5a21d68912014c4e4d9f4461fb5c9c525dd81bf (patch)
tree2b9aaf8e126d6b731f3379b23cc263f78ddbad94 /gcc/testsuite
parent516e07faa9cc6a8da2ccb26b36d4ecc319bcb879 (diff)
Fix a bug with type constraints in constructors.
gcc/cp/ * parser.c (cp_parser_constructor_declarator_p): Pass an empty decl-specifier-seq to make sure we parse type constraints as part of a type-specifier. gcc/testsuite/ * g++.dg/cpp2a/concepts5.C: New test. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@277323 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/cpp2a/concepts5.C24
2 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a9c44136a2c..2fd237bd8be 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -344,6 +344,10 @@
* gcc.dg/ipa/pr91089.c: Add sub-test for range analysis.
* g++.dg/tree-ssa/ivopts-3.C: Force a function to be noinline.
+2019-10-15 Andrew Sutton <asutton@lock3software.com>
+
+ * g++.dg/cpp2a/concepts5.C: New test.
+
2019-10-15 Andrew Pinski <apinski@marvell.com>
* gcc.c-torture/compile/20191015-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts5.C b/gcc/testsuite/g++.dg/cpp2a/concepts5.C
new file mode 100644
index 00000000000..24ac2aa4095
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts5.C
@@ -0,0 +1,24 @@
+// { dg-do compile { target c++2a } }
+
+
+template <typename T, typename U>
+concept same_as = __is_same_as(T, U);
+
+template<typename T>
+concept character = same_as<T, char>;
+
+struct T
+{
+ constexpr T(same_as<int> auto const x) : val(0) { }
+
+ constexpr T(character auto const x) : val(1) { }
+
+ int val;
+};
+
+void test()
+{
+ static_assert(T(0).val == 0);
+ static_assert(T('a').val == 1);
+}
+