Skip to content

Commit ae135ac

Browse files
committed
C++: Improve special members test by printing more function details
Without this it is very hard to see what specifically is defaulted/deleted.
1 parent 6713436 commit ae135ac

File tree

2 files changed

+96
-95
lines changed

2 files changed

+96
-95
lines changed
Lines changed: 94 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,94 @@
1-
| copy.cpp:5:5:5:5 | C | | defaulted |
2-
| copy.cpp:6:8:6:16 | operator= | | defaulted |
3-
| copy.cpp:9:9:9:9 | Sub1 | | |
4-
| copy.cpp:9:9:9:9 | Sub1 | | |
5-
| copy.cpp:9:9:9:9 | Sub1 | deleted | |
6-
| copy.cpp:9:9:9:9 | operator= | | |
7-
| copy.cpp:9:9:9:9 | operator= | | |
8-
| copy.cpp:13:9:13:9 | Sub2 | | |
9-
| copy.cpp:13:9:13:9 | Sub2 | | |
10-
| copy.cpp:13:9:13:9 | Sub2 | deleted | |
11-
| copy.cpp:13:9:13:9 | operator= | | |
12-
| copy.cpp:13:9:13:9 | operator= | | |
13-
| copy.cpp:17:9:17:9 | HasMember | | |
14-
| copy.cpp:17:9:17:9 | HasMember | | |
15-
| copy.cpp:17:9:17:9 | HasMember | deleted | |
16-
| copy.cpp:17:9:17:9 | operator= | | |
17-
| copy.cpp:17:9:17:9 | operator= | | |
18-
| copy.cpp:25:5:25:5 | C | deleted | |
19-
| copy.cpp:26:8:26:16 | operator= | deleted | |
20-
| copy.cpp:29:9:29:9 | Sub | deleted | |
21-
| copy.cpp:29:9:29:9 | Sub | deleted | |
22-
| copy.cpp:29:9:29:9 | operator= | deleted | |
23-
| copy.cpp:37:5:37:5 | C | | defaulted |
24-
| copy.cpp:38:8:38:16 | operator= | | defaulted |
25-
| copy.cpp:41:9:41:9 | operator= | | |
26-
| copy.cpp:46:5:46:7 | Sub | deleted | defaulted |
27-
| copy.cpp:49:9:49:9 | HasPointer | | |
28-
| copy.cpp:49:9:49:9 | operator= | | |
29-
| copy.cpp:49:9:49:9 | operator= | | |
30-
| copy.cpp:54:9:54:9 | HasArray | deleted | |
31-
| copy.cpp:54:9:54:9 | HasArray | deleted | |
32-
| copy.cpp:54:9:54:9 | operator= | | |
33-
| copy.cpp:54:9:54:9 | operator= | | |
34-
| copy.cpp:59:9:59:9 | HasArray2D | deleted | |
35-
| copy.cpp:59:9:59:9 | HasArray2D | deleted | |
36-
| copy.cpp:59:9:59:9 | operator= | | |
37-
| copy.cpp:59:9:59:9 | operator= | | |
38-
| copy.cpp:67:9:67:9 | Wrapper | | |
39-
| copy.cpp:67:9:67:9 | Wrapper | | |
40-
| copy.cpp:67:9:67:9 | Wrapper | deleted | |
41-
| copy.cpp:67:9:67:9 | Wrapper | deleted | |
42-
| copy.cpp:67:9:67:9 | operator= | | |
43-
| copy.cpp:67:9:67:9 | operator= | | |
44-
| copy.cpp:67:9:67:9 | operator= | deleted | |
45-
| copy.cpp:71:9:71:9 | operator= | | |
46-
| copy.cpp:71:9:71:9 | operator= | | |
47-
| copy.cpp:72:9:72:9 | NotCopyable | | |
48-
| copy.cpp:72:9:72:9 | NotCopyable | deleted | |
49-
| copy.cpp:72:9:72:9 | NotCopyable | deleted | |
50-
| copy.cpp:72:9:72:9 | operator= | deleted | |
51-
| copy.cpp:76:9:76:9 | CopyableComposition | | |
52-
| copy.cpp:76:9:76:9 | operator= | | |
53-
| copy.cpp:76:9:76:9 | operator= | | |
54-
| copy.cpp:80:9:80:9 | NotCopyableComposition | | |
55-
| copy.cpp:80:9:80:9 | NotCopyableComposition | deleted | |
56-
| copy.cpp:80:9:80:9 | NotCopyableComposition | deleted | |
57-
| copy.cpp:80:9:80:9 | operator= | deleted | |
58-
| copy.cpp:84:9:84:9 | CopyableInheritance | | |
59-
| copy.cpp:84:9:84:9 | operator= | | |
60-
| copy.cpp:84:9:84:9 | operator= | | |
61-
| copy.cpp:86:9:86:9 | NotCopyableInheritance | | |
62-
| copy.cpp:86:9:86:9 | NotCopyableInheritance | deleted | |
63-
| copy.cpp:86:9:86:9 | NotCopyableInheritance | deleted | |
64-
| copy.cpp:86:9:86:9 | operator= | deleted | |
65-
| copy.cpp:90:9:90:9 | operator= | | |
66-
| copy.cpp:90:9:90:9 | operator= | | |
67-
| copy.cpp:91:11:91:11 | operator= | | |
68-
| copy.cpp:91:11:91:11 | operator= | | |
69-
| copy.cpp:95:9:95:9 | operator= | | |
70-
| copy.cpp:95:9:95:9 | operator= | | |
71-
| copy.cpp:100:9:100:9 | Derived | | |
72-
| copy.cpp:100:9:100:9 | operator= | | |
73-
| copy.cpp:100:9:100:9 | operator= | | |
74-
| copy.cpp:106:9:106:9 | MoveCtor | deleted | |
75-
| copy.cpp:106:9:106:9 | operator= | deleted | |
76-
| copy.cpp:108:5:108:12 | MoveCtor | | |
77-
| copy.cpp:111:9:111:9 | MoveAssign | | |
78-
| copy.cpp:111:9:111:9 | MoveAssign | deleted | |
79-
| copy.cpp:111:9:111:9 | operator= | deleted | |
80-
| copy.cpp:113:17:113:25 | operator= | | |
81-
| copy.cpp:120:9:120:9 | OnlyCtor | deleted | |
82-
| copy.cpp:120:9:120:9 | operator= | deleted | |
83-
| copy.cpp:126:11:126:19 | operator= | | |
84-
| copy.cpp:128:5:128:8 | Base | | |
85-
| copy.cpp:131:9:131:9 | OnlyAssign | deleted | |
86-
| copy.cpp:131:9:131:9 | OnlyAssign | deleted | |
87-
| copy.cpp:131:9:131:9 | operator= | | |
88-
| copy.cpp:131:9:131:9 | operator= | | |
89-
| copy.cpp:137:9:137:9 | operator= | | |
90-
| copy.cpp:139:5:139:11 | Wrapper | | |
91-
| copy.cpp:143:5:143:5 | Wrapper | | |
92-
| copy.cpp:143:5:143:11 | Wrapper | | |
93-
| file://:0:0:0:0 | operator= | | |
94-
| file://:0:0:0:0 | operator= | | |
1+
| copy.cpp:5:5:5:5 | C | void protected_cc::C::C(protected_cc::C const&) | | defaulted |
2+
| copy.cpp:6:8:6:16 | operator= | protected_cc::C& protected_cc::C::operator=(protected_cc::C const&) | | defaulted |
3+
| copy.cpp:9:9:9:9 | Sub1 | void protected_cc::Sub1::Sub1() | deleted | |
4+
| copy.cpp:9:9:9:9 | Sub1 | void protected_cc::Sub1::Sub1(protected_cc::Sub1 const&) | | |
5+
| copy.cpp:9:9:9:9 | Sub1 | void protected_cc::Sub1::Sub1(protected_cc::Sub1&&) | | |
6+
| copy.cpp:9:9:9:9 | operator= | protected_cc::Sub1& protected_cc::Sub1::operator=(protected_cc::Sub1 const&) | | |
7+
| copy.cpp:9:9:9:9 | operator= | protected_cc::Sub1& protected_cc::Sub1::operator=(protected_cc::Sub1&&) | | |
8+
| copy.cpp:13:9:13:9 | Sub2 | void protected_cc::Sub2::Sub2() | deleted | |
9+
| copy.cpp:13:9:13:9 | Sub2 | void protected_cc::Sub2::Sub2(protected_cc::Sub2 const&) | | |
10+
| copy.cpp:13:9:13:9 | Sub2 | void protected_cc::Sub2::Sub2(protected_cc::Sub2&&) | | |
11+
| copy.cpp:13:9:13:9 | operator= | protected_cc::Sub2& protected_cc::Sub2::operator=(protected_cc::Sub2 const&) | | |
12+
| copy.cpp:13:9:13:9 | operator= | protected_cc::Sub2& protected_cc::Sub2::operator=(protected_cc::Sub2&&) | | |
13+
| copy.cpp:17:9:17:9 | HasMember | void protected_cc::HasMember::HasMember() | deleted | |
14+
| copy.cpp:17:9:17:9 | HasMember | void protected_cc::HasMember::HasMember(protected_cc::HasMember const&) | | |
15+
| copy.cpp:17:9:17:9 | HasMember | void protected_cc::HasMember::HasMember(protected_cc::HasMember&&) | | |
16+
| copy.cpp:17:9:17:9 | operator= | protected_cc::HasMember& protected_cc::HasMember::operator=(protected_cc::HasMember const&) | | |
17+
| copy.cpp:17:9:17:9 | operator= | protected_cc::HasMember& protected_cc::HasMember::operator=(protected_cc::HasMember&&) | | |
18+
| copy.cpp:25:5:25:5 | C | void deleted_cc::C::C(deleted_cc::C const&) | deleted | |
19+
| copy.cpp:26:8:26:16 | operator= | deleted_cc::C& deleted_cc::C::operator=(deleted_cc::C const&) | deleted | |
20+
| copy.cpp:29:9:29:9 | Sub | void deleted_cc::Sub::Sub() | deleted | |
21+
| copy.cpp:29:9:29:9 | Sub | void deleted_cc::Sub::Sub(deleted_cc::Sub const&) | deleted | |
22+
| copy.cpp:29:9:29:9 | operator= | deleted_cc::Sub& deleted_cc::Sub::operator=(deleted_cc::Sub const&) | deleted | |
23+
| copy.cpp:37:5:37:5 | C | void private_cc::C::C(private_cc::C&) | | defaulted |
24+
| copy.cpp:38:8:38:16 | operator= | private_cc::C& private_cc::C::operator=(private_cc::C const&) | | defaulted |
25+
| copy.cpp:41:9:41:9 | operator= | private_cc::Sub& private_cc::Sub::operator=(private_cc::Sub const&) | | |
26+
| copy.cpp:46:5:46:7 | Sub | void private_cc::Sub::Sub(private_cc::Sub&) | deleted | defaulted |
27+
| copy.cpp:49:9:49:9 | HasPointer | void private_cc::HasPointer::HasPointer() | | |
28+
| copy.cpp:49:9:49:9 | operator= | private_cc::HasPointer& private_cc::HasPointer::operator=(private_cc::HasPointer const&) | | |
29+
| copy.cpp:49:9:49:9 | operator= | private_cc::HasPointer& private_cc::HasPointer::operator=(private_cc::HasPointer&&) | | |
30+
| copy.cpp:54:9:54:9 | HasArray | void private_cc::HasArray::HasArray() | deleted | |
31+
| copy.cpp:54:9:54:9 | HasArray | void private_cc::HasArray::HasArray(private_cc::HasArray&) | deleted | |
32+
| copy.cpp:54:9:54:9 | operator= | private_cc::HasArray& private_cc::HasArray::operator=(private_cc::HasArray const&) | | |
33+
| copy.cpp:54:9:54:9 | operator= | private_cc::HasArray& private_cc::HasArray::operator=(private_cc::HasArray&&) | | |
34+
| copy.cpp:59:9:59:9 | HasArray2D | void private_cc::HasArray2D::HasArray2D() | deleted | |
35+
| copy.cpp:59:9:59:9 | HasArray2D | void private_cc::HasArray2D::HasArray2D(private_cc::HasArray2D&) | deleted | |
36+
| copy.cpp:59:9:59:9 | operator= | private_cc::HasArray2D& private_cc::HasArray2D::operator=(private_cc::HasArray2D const&) | | |
37+
| copy.cpp:59:9:59:9 | operator= | private_cc::HasArray2D& private_cc::HasArray2D::operator=(private_cc::HasArray2D&&) | | |
38+
| copy.cpp:67:9:67:9 | Wrapper | void container::Wrapper<container::Copyable>::Wrapper() | | |
39+
| copy.cpp:67:9:67:9 | Wrapper | void container::Wrapper<container::NotCopyable>::Wrapper() | deleted | |
40+
| copy.cpp:67:9:67:9 | Wrapper | void container::Wrapper<container::NotCopyable>::Wrapper(container::Wrapper<container::NotCopyable> const&) | deleted | |
41+
| copy.cpp:67:9:67:9 | Wrapper | void container::Wrapper<container::NotCopyable>::Wrapper(container::Wrapper<container::NotCopyable>&&) | | |
42+
| copy.cpp:67:9:67:9 | operator= | container::Wrapper<container::Copyable>& container::Wrapper<container::Copyable>::operator=(container::Wrapper<container::Copyable> const&) | | |
43+
| copy.cpp:67:9:67:9 | operator= | container::Wrapper<container::Copyable>& container::Wrapper<container::Copyable>::operator=(container::Wrapper<container::Copyable>&&) | | |
44+
| copy.cpp:67:9:67:9 | operator= | container::Wrapper<container::NotCopyable>& container::Wrapper<container::NotCopyable>::operator=(container::Wrapper<container::NotCopyable> const&) | deleted | |
45+
| copy.cpp:71:9:71:9 | operator= | container::Copyable& container::Copyable::operator=(container::Copyable const&) | | |
46+
| copy.cpp:71:9:71:9 | operator= | container::Copyable& container::Copyable::operator=(container::Copyable&&) | | |
47+
| copy.cpp:72:9:72:9 | NotCopyable | void container::NotCopyable::NotCopyable() | deleted | |
48+
| copy.cpp:72:9:72:9 | NotCopyable | void container::NotCopyable::NotCopyable(container::NotCopyable const&) | deleted | |
49+
| copy.cpp:72:9:72:9 | NotCopyable | void container::NotCopyable::NotCopyable(container::NotCopyable&&) | | |
50+
| copy.cpp:72:9:72:9 | operator= | container::NotCopyable& container::NotCopyable::operator=(container::NotCopyable const&) | deleted | |
51+
| copy.cpp:76:9:76:9 | CopyableComposition | void container::CopyableComposition::CopyableComposition() | | |
52+
| copy.cpp:76:9:76:9 | operator= | container::CopyableComposition& container::CopyableComposition::operator=(container::CopyableComposition const&) | | |
53+
| copy.cpp:76:9:76:9 | operator= | container::CopyableComposition& container::CopyableComposition::operator=(container::CopyableComposition&&) | | |
54+
| copy.cpp:80:9:80:9 | NotCopyableComposition | void container::NotCopyableComposition::NotCopyableComposition() | deleted | |
55+
| copy.cpp:80:9:80:9 | NotCopyableComposition | void container::NotCopyableComposition::NotCopyableComposition(container::NotCopyableComposition const&) | deleted | |
56+
| copy.cpp:80:9:80:9 | NotCopyableComposition | void container::NotCopyableComposition::NotCopyableComposition(container::NotCopyableComposition&&) | | |
57+
| copy.cpp:80:9:80:9 | operator= | container::NotCopyableComposition& container::NotCopyableComposition::operator=(container::NotCopyableComposition const&) | deleted | |
58+
| copy.cpp:84:9:84:9 | CopyableInheritance | void container::CopyableInheritance::CopyableInheritance() | | |
59+
| copy.cpp:84:9:84:9 | operator= | container::CopyableInheritance& container::CopyableInheritance::operator=(container::CopyableInheritance const&) | | |
60+
| copy.cpp:84:9:84:9 | operator= | container::CopyableInheritance& container::CopyableInheritance::operator=(container::CopyableInheritance&&) | | |
61+
| copy.cpp:86:9:86:9 | NotCopyableInheritance | void container::NotCopyableInheritance::NotCopyableInheritance() | deleted | |
62+
| copy.cpp:86:9:86:9 | NotCopyableInheritance | void container::NotCopyableInheritance::NotCopyableInheritance(container::NotCopyableInheritance const&) | deleted | |
63+
| copy.cpp:86:9:86:9 | NotCopyableInheritance | void container::NotCopyableInheritance::NotCopyableInheritance(container::NotCopyableInheritance&&) | | |
64+
| copy.cpp:86:9:86:9 | operator= | container::NotCopyableInheritance& container::NotCopyableInheritance::operator=(container::NotCopyableInheritance const&) | deleted | |
65+
| copy.cpp:90:9:90:9 | operator= | typedefs::A& typedefs::A::operator=(typedefs::A const&) | | |
66+
| copy.cpp:90:9:90:9 | operator= | typedefs::A& typedefs::A::operator=(typedefs::A&&) | | |
67+
| copy.cpp:91:11:91:11 | operator= | typedefs::A::B& typedefs::A::B::operator=(typedefs::A::B const private&) | | |
68+
| copy.cpp:91:11:91:11 | operator= | typedefs::A::B& typedefs::A::B::operator=(typedefs::A::B&&) | | |
69+
| copy.cpp:95:9:95:9 | operator= | typedefs::C& typedefs::C::operator=(typedefs::C const&) | | |
70+
| copy.cpp:95:9:95:9 | operator= | typedefs::C& typedefs::C::operator=(typedefs::C&&) | | |
71+
| copy.cpp:100:9:100:9 | Derived | void typedefs::Derived::Derived() | | |
72+
| copy.cpp:100:9:100:9 | operator= | typedefs::Derived& typedefs::Derived::operator=(typedefs::Derived const&) | | |
73+
| copy.cpp:100:9:100:9 | operator= | typedefs::Derived& typedefs::Derived::operator=(typedefs::Derived&&) | | |
74+
| copy.cpp:106:9:106:9 | MoveCtor | void moves::MoveCtor::MoveCtor(moves::MoveCtor const&) | deleted | |
75+
| copy.cpp:106:9:106:9 | operator= | moves::MoveCtor& moves::MoveCtor::operator=(moves::MoveCtor const&) | deleted | |
76+
| copy.cpp:108:5:108:12 | MoveCtor | void moves::MoveCtor::MoveCtor(moves::MoveCtor&&) | | |
77+
| copy.cpp:111:9:111:9 | MoveAssign | void moves::MoveAssign::MoveAssign() | | |
78+
| copy.cpp:111:9:111:9 | MoveAssign | void moves::MoveAssign::MoveAssign(moves::MoveAssign const&) | deleted | |
79+
| copy.cpp:111:9:111:9 | operator= | moves::MoveAssign& moves::MoveAssign::operator=(moves::MoveAssign const&) | deleted | |
80+
| copy.cpp:113:17:113:25 | operator= | moves::MoveAssign& moves::MoveAssign::operator=(moves::MoveAssign&&) | | |
81+
| copy.cpp:120:9:120:9 | OnlyCtor | void difference::OnlyCtor::OnlyCtor() | deleted | |
82+
| copy.cpp:120:9:120:9 | operator= | difference::OnlyCtor& difference::OnlyCtor::operator=(difference::OnlyCtor const&) | deleted | |
83+
| copy.cpp:126:11:126:19 | operator= | difference::Base& difference::Base::operator=(difference::Base const&) | | |
84+
| copy.cpp:128:5:128:8 | Base | void difference::Base::Base(difference::Base const&) | | |
85+
| copy.cpp:131:9:131:9 | OnlyAssign | void difference::OnlyAssign::OnlyAssign() | deleted | |
86+
| copy.cpp:131:9:131:9 | OnlyAssign | void difference::OnlyAssign::OnlyAssign(difference::OnlyAssign const&) | deleted | |
87+
| copy.cpp:131:9:131:9 | operator= | difference::OnlyAssign& difference::OnlyAssign::operator=(difference::OnlyAssign const&) | | |
88+
| copy.cpp:131:9:131:9 | operator= | difference::OnlyAssign& difference::OnlyAssign::operator=(difference::OnlyAssign&&) | | |
89+
| copy.cpp:137:9:137:9 | operator= | instantiated_explicit_ctor::Wrapper<int>& instantiated_explicit_ctor::Wrapper<int>::operator=(instantiated_explicit_ctor::Wrapper<int> const&) | | |
90+
| copy.cpp:139:5:139:11 | Wrapper | void instantiated_explicit_ctor::Wrapper<T>::Wrapper(instantiated_explicit_ctor::Wrapper<T>&) | | |
91+
| copy.cpp:143:5:143:5 | Wrapper | void instantiated_explicit_ctor::Wrapper<int>::Wrapper() | | |
92+
| copy.cpp:143:5:143:11 | Wrapper | void instantiated_explicit_ctor::Wrapper<T>::Wrapper() | | |
93+
| file://:0:0:0:0 | operator= | __va_list_tag& __va_list_tag::operator=(__va_list_tag const&) | | |
94+
| file://:0:0:0:0 | operator= | __va_list_tag& __va_list_tag::operator=(__va_list_tag&&) | | |
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import cpp
2+
import semmle.code.cpp.Print
23

34
from Function f, string deleted, string defaulted
45
where
56
(if f.isDeleted() then deleted = "deleted" else deleted = "") and
67
if f.isDefaulted() then defaulted = "defaulted" else defaulted = ""
7-
select f, deleted, defaulted
8+
select f, getIdentityString(f), deleted, defaulted

0 commit comments

Comments
 (0)