annotate gcc/testsuite/g++.dg/cpp0x/noexcept16.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR c++/50972
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
3 // Ignore all errors, we're just testing that this doesn't ICE
kono
parents:
diff changeset
4 // { dg-prune-output "error" }
kono
parents:
diff changeset
5
kono
parents:
diff changeset
6 namespace std
kono
parents:
diff changeset
7 typedef long unsigned int size_t;
kono
parents:
diff changeset
8 template<typename...>
kono
parents:
diff changeset
9 struct __and_;
kono
parents:
diff changeset
10 template<typename _Tp>
kono
parents:
diff changeset
11 struct is_nothrow_move_constructible
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 };
kono
parents:
diff changeset
14 template<typename _Tp>
kono
parents:
diff changeset
15 struct is_nothrow_move_assignable
kono
parents:
diff changeset
16 struct __add_rvalue_reference_helper<_Tp, true>
kono
parents:
diff changeset
17 { typedef _Tp&& type; };
kono
parents:
diff changeset
18 template<typename _Tp>
kono
parents:
diff changeset
19 struct add_rvalue_reference
kono
parents:
diff changeset
20 : public __add_rvalue_reference_helper<_Tp>
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 };
kono
parents:
diff changeset
23 template<typename _Tp>
kono
parents:
diff changeset
24 inline typename add_rvalue_reference<_Tp>::type
kono
parents:
diff changeset
25 declval() noexcept
kono
parents:
diff changeset
26 {
kono
parents:
diff changeset
27 }
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
kono
parents:
diff changeset
30 template<typename _Tp>
kono
parents:
diff changeset
31 class new_allocator
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 };
kono
parents:
diff changeset
34 }
kono
parents:
diff changeset
35 namespace std __attribute__ ((__visibility__ ("default")))
kono
parents:
diff changeset
36 class allocator: public __gnu_cxx::new_allocator<_Tp>
kono
parents:
diff changeset
37 {
kono
parents:
diff changeset
38 template<typename _Tp1>
kono
parents:
diff changeset
39 struct rebind
kono
parents:
diff changeset
40 { typedef allocator<_Tp1> other; };
kono
parents:
diff changeset
41 };
kono
parents:
diff changeset
42 }
kono
parents:
diff changeset
43 namespace std __attribute__ ((__visibility__ ("default")))
kono
parents:
diff changeset
44 template<typename _Alloc, typename _Tp>
kono
parents:
diff changeset
45 struct __alloctr_rebind<_Alloc, _Tp, true>
kono
parents:
diff changeset
46 {
kono
parents:
diff changeset
47 typedef typename _Alloc::template rebind<_Tp>::other __type;
kono
parents:
diff changeset
48 };
kono
parents:
diff changeset
49 template<typename _Alloc>
kono
parents:
diff changeset
50 struct allocator_traits
kono
parents:
diff changeset
51 {
kono
parents:
diff changeset
52 template<typename _Tp>
kono
parents:
diff changeset
53 struct __rebind_alloc
kono
parents:
diff changeset
54 {
kono
parents:
diff changeset
55 typedef typename __alloctr_rebind<_Alloc, _Tp>::__type __type;
kono
parents:
diff changeset
56 };
kono
parents:
diff changeset
57 }
kono
parents:
diff changeset
58 }
kono
parents:
diff changeset
59 namespace __gnu_cxx __attribute__ ((__visibility__ ("default")))
kono
parents:
diff changeset
60 template<typename _Alloc>
kono
parents:
diff changeset
61 struct __alloc_traits
kono
parents:
diff changeset
62 {
kono
parents:
diff changeset
63 typedef std::allocator_traits<_Alloc> _Base_type;
kono
parents:
diff changeset
64 static constexpr bool _S_nothrow_swap()
kono
parents:
diff changeset
65 {
kono
parents:
diff changeset
66 return !_S_propagate_on_swap()
kono
parents:
diff changeset
67 || noexcept(swap(std::declval<_Alloc&>(), std::declval<_Alloc&>()));
kono
parents:
diff changeset
68 }
kono
parents:
diff changeset
69 template<typename _Tp>
kono
parents:
diff changeset
70 struct rebind
kono
parents:
diff changeset
71 { typedef typename _Base_type::template __rebind_alloc<_Tp>::__type other; };
kono
parents:
diff changeset
72 };
kono
parents:
diff changeset
73 }
kono
parents:
diff changeset
74 namespace std __attribute__ ((__visibility__ ("default")))
kono
parents:
diff changeset
75 template<typename _Tp, typename _Alloc>
kono
parents:
diff changeset
76 struct _Vector_base
kono
parents:
diff changeset
77 {
kono
parents:
diff changeset
78 typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template
kono
parents:
diff changeset
79 rebind<_Tp>::other _Tp_alloc_type;
kono
parents:
diff changeset
80 };
kono
parents:
diff changeset
81 template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
kono
parents:
diff changeset
82 class vector : protected _Vector_base<_Tp, _Alloc>
kono
parents:
diff changeset
83 {
kono
parents:
diff changeset
84 typedef _Vector_base<_Tp, _Alloc> _Base;
kono
parents:
diff changeset
85 typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
kono
parents:
diff changeset
86 typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits;
kono
parents:
diff changeset
87 swap(vector& __x)
kono
parents:
diff changeset
88 noexcept(_Alloc_traits::_S_nothrow_swap());
kono
parents:
diff changeset
89 };
kono
parents:
diff changeset
90 }
kono
parents:
diff changeset
91 namespace lexertl
kono
parents:
diff changeset
92 namespace detail
kono
parents:
diff changeset
93 }
kono
parents:
diff changeset
94 namespace detail
kono
parents:
diff changeset
95 template<typename id_type>
kono
parents:
diff changeset
96 struct basic_internals
kono
parents:
diff changeset
97 {
kono
parents:
diff changeset
98 typedef std::vector<id_type> id_type_vector;
kono
parents:
diff changeset
99 };
kono
parents:
diff changeset
100 };
kono
parents:
diff changeset
101 template<typename char_type, typename id_type = std::size_t>
kono
parents:
diff changeset
102 class basic_state_machine
kono
parents:
diff changeset
103 {
kono
parents:
diff changeset
104 typedef detail::basic_internals<id_type> internals;
kono
parents:
diff changeset
105 void minimise ()
kono
parents:
diff changeset
106 {
kono
parents:
diff changeset
107 minimise_dfa (dfa_alphabet_, *dfa_, size_);
kono
parents:
diff changeset
108 }
kono
parents:
diff changeset
109 typedef typename internals::id_type_vector id_type_vector;
kono
parents:
diff changeset
110 void minimise_dfa (const id_type dfa_alphabet_,
kono
parents:
diff changeset
111 id_type_vector &dfa_, std::size_t size_)
kono
parents:
diff changeset
112 {
kono
parents:
diff changeset
113 id_type_vector new_dfa_ (front_, front_ + dfa_alphabet_);
kono
parents:
diff changeset
114 dfa_.swap (new_dfa_);
kono
parents:
diff changeset
115 }
kono
parents:
diff changeset
116 }
kono
parents:
diff changeset
117 }
kono
parents:
diff changeset
118 namespace std __attribute__ ((__visibility__ ("default")))
kono
parents:
diff changeset
119 template<typename _Tp>
kono
parents:
diff changeset
120 void
kono
parents:
diff changeset
121 swap(_Tp&, _Tp&)
kono
parents:
diff changeset
122 noexcept(__and_<is_nothrow_move_constructible<_Tp>,
kono
parents:
diff changeset
123 is_nothrow_move_assignable<_Tp>>::value)
kono
parents:
diff changeset
124 ;
kono
parents:
diff changeset
125 typedef lexertl::basic_state_machine<char32_t> lexstate;
kono
parents:
diff changeset
126 lexstate m_state_machine;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
127 void GenerateLexer()
111
kono
parents:
diff changeset
128 {
kono
parents:
diff changeset
129 m_state_machine.minimise();
kono
parents:
diff changeset
130 }