From f190d6284359da8ae8694b2d2e14b01602a959ed Mon Sep 17 00:00:00 2001 From: Andrew Hsieh Date: Wed, 18 Jun 2014 13:00:04 -0700 Subject: Merge GCC 4.8.3 Change-Id: I0abe59f7705b3eccc6b2f123af75b2e30917696a --- gcc-4.8/gcc/testsuite/g++.dg/template/partial15.C | 19 +++++++++++++ gcc-4.8/gcc/testsuite/g++.dg/template/ref7.C | 16 +++++++++++ gcc-4.8/gcc/testsuite/g++.dg/template/shadow1.C | 4 +++ gcc-4.8/gcc/testsuite/g++.dg/template/using27.C | 33 +++++++++++++++++++++++ gcc-4.8/gcc/testsuite/g++.dg/template/using28.C | 17 ++++++++++++ gcc-4.8/gcc/testsuite/g++.dg/template/using29.C | 21 +++++++++++++++ 6 files changed, 110 insertions(+) create mode 100644 gcc-4.8/gcc/testsuite/g++.dg/template/partial15.C create mode 100644 gcc-4.8/gcc/testsuite/g++.dg/template/ref7.C create mode 100644 gcc-4.8/gcc/testsuite/g++.dg/template/shadow1.C create mode 100644 gcc-4.8/gcc/testsuite/g++.dg/template/using27.C create mode 100644 gcc-4.8/gcc/testsuite/g++.dg/template/using28.C create mode 100644 gcc-4.8/gcc/testsuite/g++.dg/template/using29.C (limited to 'gcc-4.8/gcc/testsuite/g++.dg/template') diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/partial15.C b/gcc-4.8/gcc/testsuite/g++.dg/template/partial15.C new file mode 100644 index 000000000..357bb05fa --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.dg/template/partial15.C @@ -0,0 +1,19 @@ +// PR c++/57043 +// { dg-do link } + +template struct complex { }; + +template +complex +pow(const complex& x, const complex& y) { return complex(); } + +template +struct promote_2 { typedef T type; }; + +template +complex::type> +pow(const complex& x, const complex& y); + +complex (*powcc)(const complex&, const complex&) = pow; + +int main() {} diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/ref7.C b/gcc-4.8/gcc/testsuite/g++.dg/template/ref7.C new file mode 100644 index 000000000..432929272 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.dg/template/ref7.C @@ -0,0 +1,16 @@ +// PR c++/60274 + +typedef const char *const& ProtocolIdType; + +template +struct C { + typedef int ProtocolVersion; + struct D { + ProtocolVersion GetProtocolVersion(); + }; +}; +template +typename C::ProtocolVersion C::D::GetProtocolVersion() +{ + return 1; +} diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/shadow1.C b/gcc-4.8/gcc/testsuite/g++.dg/template/shadow1.C new file mode 100644 index 000000000..6eb30d094 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.dg/template/shadow1.C @@ -0,0 +1,4 @@ +// PR c++/58632 + +template class A> // { dg-message "shadows" } +class A {}; // { dg-error "declaration" } diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/using27.C b/gcc-4.8/gcc/testsuite/g++.dg/template/using27.C new file mode 100644 index 000000000..f1835e171 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.dg/template/using27.C @@ -0,0 +1,33 @@ +// PR c++/37140 + +struct X +{ + typedef int nested_type; +}; + +template +struct A +{ + typedef X type; +}; + +template +struct B : A +{ + using typename A::type; + typename type::nested_type x; +}; + +template +struct C : B +{ + using typename B::type; + typename type::nested_type y; +}; + +struct D : C +{ + using C::type; + type::nested_type z; +}; + diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/using28.C b/gcc-4.8/gcc/testsuite/g++.dg/template/using28.C new file mode 100644 index 000000000..52f68cfe4 --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.dg/template/using28.C @@ -0,0 +1,17 @@ +// PR c++/37140 + +struct C +{ + static const int block_size = 1; +}; + +template struct A { + typedef C type; +}; + +template struct B : public A { + using typename A::type; + static const int block_size = type::block_size; +}; + +template class B; diff --git a/gcc-4.8/gcc/testsuite/g++.dg/template/using29.C b/gcc-4.8/gcc/testsuite/g++.dg/template/using29.C new file mode 100644 index 000000000..8726547ef --- /dev/null +++ b/gcc-4.8/gcc/testsuite/g++.dg/template/using29.C @@ -0,0 +1,21 @@ +// PR c++/58047 + +template +struct print_arg { }; + +struct const_holder { + static const int CONSTANT = 42; +}; + +template +struct identity { + typedef T type; +}; + +template +struct test_case : public identity { + using typename identity::type; + print_arg printer; +}; + +template struct test_case; -- cgit v1.2.3