@@ -15,18 +15,21 @@ struct Base
15
15
{
16
16
virtual void f (const NTClass i ) post (check (i ));
17
17
virtual void f (const int i ) post (check (i ));
18
-
19
-
18
+ virtual void g (const NTClass i , int & j ) pre ( check (i )) post (check (j ));
20
19
} ;
21
20
22
21
struct Derived : Base
23
22
{
24
23
void f (NTClass i ); // { dg-error "used in a postcondition must be const" }
24
+
25
+ void g (NTClass i , int & j );
25
26
};
26
27
27
28
struct DerivedV : virtual Base
28
29
{
29
30
void f (NTClass i ); // { dg-error "used in a postcondition must be const" }
31
+
32
+ void g (NTClass i , int & j );
30
33
};
31
34
32
35
template < typename T >
@@ -35,6 +38,8 @@ struct DerivedT : Base
35
38
void f (NTClass i ) {};
36
39
37
40
void f (T i ) {};
41
+
42
+ void g (NTClass i , T & j );
38
43
};
39
44
40
45
template < typename T >
@@ -43,6 +48,8 @@ template<typename T>
43
48
void f (NTClass i ) {};
44
49
45
50
void f (T i ) {};
51
+
52
+ void g (NTClass i , T & j );
46
53
};
47
54
48
55
template < typename T >
@@ -51,6 +58,8 @@ struct BaseT
51
58
virtual void f (const NTClass i ) post (check (i ));
52
59
53
60
virtual void f (const T i ) post (check (i ));
61
+
62
+ virtual void g (const NTClass i , T & j ) pre ( check (i )) post (check (j ));
54
63
};
55
64
56
65
template < typename T >
@@ -59,6 +68,8 @@ struct DerivedTT : BaseT<T>
59
68
void f (NTClass i ) {};
60
69
61
70
void f (T i ) {};
71
+
72
+ void g (NTClass i , T & j );
62
73
};
63
74
64
75
template < typename T >
@@ -67,6 +78,8 @@ struct DerivedTVT : virtual BaseT<T>
67
78
void f (NTClass i ) {};
68
79
69
80
void f (T i ) {};
81
+
82
+ void g (NTClass i , T & j );
70
83
};
71
84
72
85
// adding DerivedT2 for diagnostic disambiguation purposes
@@ -76,6 +89,8 @@ struct DerivedT2 : Base
76
89
void f (NTClass i ) {};
77
90
78
91
void f (T i ) {};
92
+
93
+ void g (NTClass i , T & j );
79
94
};
80
95
81
96
// adding DerivedTV2 for diagnostic disambiguation purposes
@@ -85,6 +100,8 @@ struct DerivedTV2 : virtual Base
85
100
void f (NTClass i ) {};
86
101
87
102
void f (T i ) {};
103
+
104
+ void g (NTClass i , T & j );
88
105
};
89
106
90
107
template < typename T >
@@ -93,6 +110,8 @@ struct DerivedTT2 : BaseT<T>
93
110
void f (NTClass i ) {};
94
111
95
112
void f (int i ) {};
113
+
114
+ void g (NTClass i , T & j );
96
115
};
97
116
98
117
template < typename T >
@@ -101,39 +120,41 @@ struct DerivedTVT2 : virtual BaseT<T>
101
120
void f (NTClass i ) {};
102
121
103
122
void f (int i ) {};
123
+
124
+ void g (NTClass i , T & j );
104
125
};
105
126
106
127
107
128
int main ()
108
129
{
109
130
DerivedT < int > dt ;
110
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 35 }
111
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 37 }
131
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 38 }
132
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 40 }
112
133
113
134
DerivedTV < int > dvt ;
114
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 43 }
115
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 45 }
135
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 48 }
136
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 50 }
116
137
117
138
118
139
DerivedTT < int > dt2 ;
119
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 59 }
120
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 61 }
140
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 68 }
141
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 70 }
121
142
122
143
DerivedTVT < int > dvt2 ;
123
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 67 }
124
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 69 }
144
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 78 }
145
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 80 }
125
146
126
147
127
148
DerivedT2 < char > dtc ;
128
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 76 }
149
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 89 }
129
150
130
151
DerivedTV2 < char > dvtc ;
131
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 85 }
152
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 100 }
132
153
133
154
DerivedTT2 < char > dtc2 ;
134
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 93 }
155
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 110 }
135
156
136
157
DerivedTVT2 < char > dvtc2 ;
137
- // { dg-error {used in a postcondition must be const} "" { target *-*-* } 101 }
158
+ // { dg-error {used in a postcondition must be const} "" { target *-*-* } 120 }
138
159
139
160
}
0 commit comments