Skip to content

Commit 3584a15

Browse files
committed
Add some cases
1 parent 057e33b commit 3584a15

1 file changed

Lines changed: 78 additions & 21 deletions

File tree

  • cpp/misra/test/rules/RULE-15-0-1

cpp/misra/test/rules/RULE-15-0-1/test.cpp

Lines changed: 78 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ void f();
4040
// special member function.
4141
#define DEFAULTED = default;
4242
#define DELETED = delete;
43+
#define NOT_DECLARED ; // null statement
4344
#define CUSTOMIZED { helpers::f(); }
4445
// clang-format on
4546

@@ -154,118 +155,174 @@ class PrivateMoveAssign { // NON_COMPLIANT
154155
namespace additional_requirements {
155156

156157
// A class with a customized copy constructor requires a customized destructor
157-
class CustomizedMoveCtorCompliant { // COMPLIANT
158+
class CustomizedMoveCtorCompliant { // COMPLIANT: move-only (1)
158159
public:
159160
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedMoveCtorCompliant, DELETED, CUSTOMIZED,
160161
DELETED, DELETED, CUSTOMIZED)
161162
};
162163

163-
class CustomizedCtorsCompliant { // COMPLIANT
164+
class CustomizedCtorsCompliant { // COMPLIANT: copy-enabled (1)
164165
public:
165166
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedCtorsCompliant, CUSTOMIZED, CUSTOMIZED,
166167
DELETED, DELETED, CUSTOMIZED)
167168
};
168169

169-
class CustomizedMoveAssignCompliant { // COMPLIANT
170+
class CustomizedMoveAssignCompliant { // COMPLIANT: move-only (2)
170171
public:
171172
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedMoveAssignCompliant, DELETED, CUSTOMIZED,
172173
DELETED, CUSTOMIZED, CUSTOMIZED)
173174
};
174175

175-
class CustomizedAssignsCompliant { // COMPLIANT
176+
class CustomizedAssignsCompliant { // COMPLIANT: copy-enabled (2)
176177
public:
177178
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedAssignsCompliant, CUSTOMIZED, CUSTOMIZED,
178179
CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
179180
};
180181

181-
class CustomizedCopyCtorDefaultedNonCompliant { // NON_COMPLIANT
182+
class CustomizedCopyCtorDefaultedNonCompliant { // NON_COMPLIANT: copy-enabled (2)
182183
public:
183184
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedCopyCtorDefaultedNonCompliant,
184185
CUSTOMIZED, DEFAULTED, DEFAULTED, DEFAULTED,
185186
DEFAULTED)
186187
};
187188

188-
class CustomizedCopyCtorDeletedNonCompliant { // NON_COMPLIANT
189+
class CustomizedCopyCtorDeletedNonCompliant { // NON_COMPLIANT: copy-enabled (2)
189190
public:
190191
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedCopyCtorDeletedNonCompliant, CUSTOMIZED,
191192
DEFAULTED, DEFAULTED, DEFAULTED, DELETED)
192193
};
193194

194-
class CustomizedMoveCtorNonCompliant { // NON_COMPLIANT
195+
class CustomizedMoveCtorNonCompliant { // NON_COMPLIANT: copy-enabled (2)
195196
public:
196197
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedMoveCtorNonCompliant, DEFAULTED,
197198
CUSTOMIZED, DEFAULTED, DEFAULTED, DEFAULTED)
198199
};
199200

200-
class CustomizedCopyAssignNonCompliant { // NON_COMPLIANT
201+
class CustomizedCopyAssignNonCompliant { // NON_COMPLIANT: copy-enabled (2)
201202
public:
202203
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedCopyAssignNonCompliant, DEFAULTED,
203204
DEFAULTED, CUSTOMIZED, DEFAULTED, DEFAULTED)
204205
};
205206

206-
class CustomizedMoveAssignNonCompliant { // NON_COMPLIANT
207+
class CustomizedMoveAssignNonCompliant { // NON_COMPLIANT: copy-enabled (2)
207208
public:
208209
DEFINE_ALL_SPECIAL_MEMBERS(CustomizedMoveAssignNonCompliant, CUSTOMIZED,
209210
CUSTOMIZED, DEFAULTED, CUSTOMIZED, DEFAULTED)
210211
};
211212

212-
// Move-only with a customized dtor requires customized move operations.
213-
class MoveOnlyNotCustomizedNonCompliant { // NON_COMPLIANT
213+
// Move-only with a customized dtor requires customized move constructor.
214+
class MoveOnlyNotCustomizedNonCompliant { // NON_COMPLIANT: move-only (1)
214215
public:
215216
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyNotCustomizedNonCompliant, DELETED,
216217
DEFAULTED, DELETED, DELETED, CUSTOMIZED)
217218
};
218219

219-
// Move-only with a customized dtor requires customized move operations.
220-
class MoveOnlyAssignableNotCustomizedNonCompliant { // NON_COMPLIANT
220+
// Move-only with a customized dtor requires customized move assignment
221+
// operator.
222+
class MoveOnlyAssignableNotCustomizedNonCompliant { // NON_COMPLIANT: move-only (2)
221223
public:
222224
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyAssignableNotCustomizedNonCompliant,
223225
DELETED, DEFAULTED, DELETED, DEFAULTED, CUSTOMIZED)
224226
};
225227

226-
class MoveOnlyCustomizedCompliant { // COMPLIANT -- customized move
228+
class MoveOnlyCustomizedCompliant { // COMPLIANT -- customized move: move-only (1)
227229
public:
228230
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyCustomizedCompliant, DELETED, CUSTOMIZED,
229231
DELETED, DELETED, CUSTOMIZED)
230232
};
231233

232-
class MoveOnlyAssignableCustomizedCompliant { // COMPLIANT -- customized move
234+
class MoveOnlyAssignableCustomizedCompliant { // COMPLIANT -- customized move: move-only (2)
233235
public:
234236
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyAssignableCustomizedCompliant, DELETED,
235237
CUSTOMIZED, DELETED, CUSTOMIZED, CUSTOMIZED)
236238
};
237239

238-
class MoveOnlyNotCustomizedCompliant { // COMPLIANT -- default dtor
240+
class MoveOnlyNotCustomizedCompliant { // COMPLIANT -- default dtor: move-only (1)
239241
public:
240242
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyNotCustomizedCompliant, DELETED, DEFAULTED,
241243
DELETED, DELETED, DEFAULTED)
242244
};
243245

244-
class MoveOnlyAssignableNotCustomizedCompliant { // COMPLIANT -- default dtor
246+
class MoveOnlyAssignableNotCustomizedCompliant { // COMPLIANT -- default dtor: move-only (2)
245247
public:
246248
DEFINE_ALL_SPECIAL_MEMBERS(MoveOnlyAssignableNotCustomizedCompliant, DELETED,
247249
DEFAULTED, DELETED, DEFAULTED, DEFAULTED)
248250
};
249251

250252
// Copy-enabled with customized dtor requires customized copy and move
251-
class CopyEnabledCustomizedDtorNonCompliant { // NON_COMPLIANT
253+
class CopyEnabledCustomizedDtorNonCompliant { // NON_COMPLIANT: copy-enabled (2)
252254
public:
253255
DEFINE_ALL_SPECIAL_MEMBERS(CopyEnabledCustomizedDtorNonCompliant, DEFAULTED,
254256
DEFAULTED, DEFAULTED, DEFAULTED, CUSTOMIZED)
255257
};
256258

257-
class CopyEnabledNonCustomizedDtorCompliant { // COMPLIANT
259+
class CopyEnabledNonCustomizedDtorCompliant { // COMPLIANT: copy-enabled (2)
258260
public:
259261
DEFINE_ALL_SPECIAL_MEMBERS(CopyEnabledNonCustomizedDtorCompliant, DEFAULTED,
260262
DEFAULTED, DEFAULTED, DEFAULTED, DEFAULTED)
261263
};
262264

263-
class CopyEnabledCustomizedDtorCompliant { // COMPLIANT
265+
class CopyEnabledCustomizedDtorCompliant1 { // COMPLIANT: copy-enabled (2)
264266
public:
265-
DEFINE_ALL_SPECIAL_MEMBERS(CopyEnabledCustomizedDtorCompliant, CUSTOMIZED,
267+
DEFINE_ALL_SPECIAL_MEMBERS(CopyEnabledCustomizedDtorCompliant1, CUSTOMIZED,
266268
CUSTOMIZED, CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
267269
};
268270

271+
class CopyEnabledCustomizedDtorCompliant2 { // COMPLIANT: copy-enabled (2)
272+
public:
273+
DEFINE_ALL_SPECIAL_MEMBERS(CopyEnabledCustomizedDtorCompliant2, CUSTOMIZED,
274+
DEFAULTED, CUSTOMIZED, DEFAULTED, CUSTOMIZED)
275+
};
276+
277+
class CopyAssignableCustomizedDtorCompliant1 { // COMPLIANT: copy-assignable class with both move operations customized
278+
public:
279+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorCompliant1, DEFAULTED,
280+
CUSTOMIZED, CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
281+
};
282+
283+
class CopyAssignableCustomizedDtorCompliant2 { // COMPLIANT: copy-assignable class with both move operations not declared
284+
public:
285+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorCompliant2, DEFAULTED,
286+
NOT_DECLARED, CUSTOMIZED, NOT_DECLARED, CUSTOMIZED)
287+
};
288+
289+
class CopyAssignableCustomizedDtorNonCompliant1 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
290+
public:
291+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorNonCompliant1, CUSTOMIZED,
292+
CUSTOMIZED, CUSTOMIZED, NOT_DECLARED, CUSTOMIZED)
293+
};
294+
295+
class CopyAssignableCustomizedDtorNonCompliant2 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
296+
public:
297+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorNonCompliant2, CUSTOMIZED,
298+
NOT_DECLARED, CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
299+
};
300+
301+
class CopyAssignableCustomizedDtorNonCompliant3 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
302+
public:
303+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorNonCompliant3, CUSTOMIZED,
304+
CUSTOMIZED, CUSTOMIZED, NOT_DECLARED, CUSTOMIZED)
305+
};
306+
307+
class CopyAssignableCustomizedDtorNonCompliant4 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
308+
public:
309+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorNonCompliant4, CUSTOMIZED,
310+
NOT_DECLARED, CUSTOMIZED, CUSTOMIZED, CUSTOMIZED)
311+
};
312+
313+
class CopyAssignableCustomizedDtorNonCompliant5 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
314+
public:
315+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorNonCompliant5, CUSTOMIZED,
316+
DEFAULTED, CUSTOMIZED, NOT_DECLARED, CUSTOMIZED)
317+
};
318+
319+
class CopyAssignableCustomizedDtorNonCompliant6 { // NON_COMPLIANT: copy-assignable class with only one of move operations not declared
320+
public:
321+
DEFINE_ALL_SPECIAL_MEMBERS(CopyAssignableCustomizedDtorNonCompliant6, CUSTOMIZED,
322+
NOT_DECLARED, CUSTOMIZED, DEFAULTED, CUSTOMIZED)
323+
};
324+
325+
269326
// A public unmovable base class shall have a public virtual destructor
270327
class UnmovableBaseNonvirtualDtor { // NON_COMPLIANT
271328
public:

0 commit comments

Comments
 (0)