@@ -198,54 +198,61 @@ class TestClass : public TestFixture {
198198 }
199199
200200 void explicitConstructors () {
201- checkExplicitConstructors (" class Class \n "
202- " { \n "
203- " Class() = delete; \n "
204- " Class(const Class& other) { } \n "
205- " Class(Class&& other) { } \n "
206- " explicit Class(int i) { } \n "
207- " explicit Class(const std::string&) { } \n "
208- " Class(int a, int b) { } \n "
201+ checkExplicitConstructors (" class Class {\n "
202+ " Class() = delete;\n "
203+ " Class(const Class& other) { }\n "
204+ " Class(Class&& other) { }\n "
205+ " explicit Class(int i) { }\n "
206+ " explicit Class(const std::string&) { }\n "
207+ " Class(int a, int b) { }\n "
209208 " };" );
210209 ASSERT_EQUALS (" " , errout.str ());
211210
212- checkExplicitConstructors (" class Class \n "
213- " { \n "
214- " Class() = delete; \n "
215- " explicit Class(const Class& other) { } \n "
216- " explicit Class(Class&& other) { } \n "
217- " virtual int i() = 0; \n "
211+ checkExplicitConstructors (" class Class {\n "
212+ " Class() = delete;\n "
213+ " explicit Class(const Class& other) { }\n "
214+ " explicit Class(Class&& other) { }\n "
215+ " virtual int i() = 0;\n "
218216 " };" );
219217 ASSERT_EQUALS (" " , errout.str ());
220218
221- checkExplicitConstructors (" class Class \n "
222- " { \n "
223- " Class() = delete; \n "
224- " Class(const Class& other) = delete; \n "
225- " Class(Class&& other) = delete; \n "
226- " virtual int i() = 0; \n "
219+ checkExplicitConstructors (" class Class {\n "
220+ " Class() = delete;\n "
221+ " Class(const Class& other) = delete;\n "
222+ " Class(Class&& other) = delete;\n "
223+ " virtual int i() = 0;\n "
227224 " };" );
228225 ASSERT_EQUALS (" " , errout.str ());
229226
230- checkExplicitConstructors (" class Class \n "
231- " { \n "
232- " Class(int i) { } \n "
227+ checkExplicitConstructors (" class Class {\n "
228+ " Class(int i) { }\n "
233229 " };" );
234- ASSERT_EQUALS (" [test.cpp:3 ]: (style) Class 'Class' has a constructor with 1 argument that is not explicit.\n " , errout.str ());
230+ ASSERT_EQUALS (" [test.cpp:2 ]: (style) Class 'Class' has a constructor with 1 argument that is not explicit.\n " , errout.str ());
235231
236- checkExplicitConstructors (" class Class \n "
237- " { \n "
238- " Class(const Class& other) { } \n "
239- " virtual int i() = 0; \n "
232+ checkExplicitConstructors (" class Class {\n "
233+ " Class(const Class& other) { }\n "
234+ " virtual int i() = 0;\n "
240235 " };" );
241- ASSERT_EQUALS (" [test.cpp:3 ]: (style) Abstract class 'Class' has a copy/move constructor that is not explicit.\n " , errout.str ());
236+ ASSERT_EQUALS (" [test.cpp:2 ]: (style) Abstract class 'Class' has a copy/move constructor that is not explicit.\n " , errout.str ());
242237
243- checkExplicitConstructors (" class Class \n "
244- " { \n "
245- " Class(Class&& other) { } \n "
246- " virtual int i() = 0; \n "
238+ checkExplicitConstructors (" class Class {\n "
239+ " Class(Class&& other) { }\n "
240+ " virtual int i() = 0;\n "
247241 " };" );
248- ASSERT_EQUALS (" [test.cpp:3]: (style) Abstract class 'Class' has a copy/move constructor that is not explicit.\n " , errout.str ());
242+ ASSERT_EQUALS (" [test.cpp:2]: (style) Abstract class 'Class' has a copy/move constructor that is not explicit.\n " , errout.str ());
243+
244+ // #6585
245+ checkExplicitConstructors (" class Class {\n "
246+ " private: Class(const Class&);\n "
247+ " virtual int i() = 0;\n "
248+ " };" );
249+ ASSERT_EQUALS (" " , errout.str ());
250+
251+ checkExplicitConstructors (" class Class {\n "
252+ " public: Class(const Class&);\n "
253+ " virtual int i() = 0;\n "
254+ " };" );
255+ ASSERT_EQUALS (" [test.cpp:2]: (style) Abstract class 'Class' has a copy/move constructor that is not explicit.\n " , errout.str ());
249256 }
250257
251258 void checkDuplInheritedMembers (const char code[]) {
0 commit comments