@@ -7,6 +7,7 @@ use regex::Regex;
7
7
8
8
use bindgen:: callbacks:: {
9
9
DiscoveredItem , DiscoveredItemId , ParseCallbacks , SourceLocation ,
10
+ SpecialMemberKind , Visibility ,
10
11
} ;
11
12
use bindgen:: Builder ;
12
13
@@ -101,6 +102,7 @@ fn test_item_discovery_callback_c() {
101
102
DiscoveredItem :: Struct {
102
103
original_name : Some ( "NamedStruct" . to_string ( ) ) ,
103
104
final_name : "NamedStruct" . to_string ( ) ,
105
+ cpp_visibility : Visibility :: Public ,
104
106
} ,
105
107
4 ,
106
108
8 ,
@@ -127,6 +129,7 @@ fn test_item_discovery_callback_c() {
127
129
DiscoveredItem :: Union {
128
130
original_name : Some ( "NamedUnion" . to_string ( ) ) ,
129
131
final_name : "NamedUnion" . to_string ( ) ,
132
+ cpp_visibility : Visibility :: Public ,
130
133
} ,
131
134
13 ,
132
135
7 ,
@@ -165,6 +168,7 @@ fn test_item_discovery_callback_c() {
165
168
ItemExpectations :: new (
166
169
DiscoveredItem :: Enum {
167
170
final_name : "NamedEnum" . to_string ( ) ,
171
+ cpp_visibility : Visibility :: Public ,
168
172
} ,
169
173
24 ,
170
174
6 ,
@@ -178,6 +182,7 @@ fn test_item_discovery_callback_c() {
178
182
DiscoveredItem :: Struct {
179
183
original_name : None ,
180
184
final_name : "_bindgen_ty_*" . to_string ( ) ,
185
+ cpp_visibility : Visibility :: Public ,
181
186
} ,
182
187
2 ,
183
188
38 ,
@@ -191,6 +196,7 @@ fn test_item_discovery_callback_c() {
191
196
DiscoveredItem :: Union {
192
197
original_name : None ,
193
198
final_name : "_bindgen_ty_*" . to_string ( ) ,
199
+ cpp_visibility : Visibility :: Public ,
194
200
} ,
195
201
11 ,
196
202
37 ,
@@ -216,14 +222,15 @@ fn test_item_discovery_callback_c() {
216
222
}
217
223
218
224
#[ test]
219
- fn test_item_discovery_callback_cpp ( ) {
225
+ fn test_item_discovery_callback_cpp_features ( ) {
220
226
let expected = ExpectationMap :: from ( [
221
227
(
222
228
DiscoveredItemId :: new ( 1 ) ,
223
229
ItemExpectations :: new (
224
230
DiscoveredItem :: Struct {
225
231
original_name : Some ( "SomeClass" . to_string ( ) ) ,
226
232
final_name : "SomeClass" . to_string ( ) ,
233
+ cpp_visibility : Visibility :: Public ,
227
234
} ,
228
235
3 ,
229
236
7 ,
@@ -237,16 +244,57 @@ fn test_item_discovery_callback_cpp() {
237
244
DiscoveredItem :: Method {
238
245
final_name : "named_method" . to_string ( ) ,
239
246
parent : DiscoveredItemId :: new ( 1 ) ,
247
+ cpp_visibility : Visibility :: Public ,
248
+ cpp_special_member : None ,
249
+ cpp_virtual : None ,
250
+ cpp_explicit : None ,
240
251
} ,
241
- 5 ,
252
+ 8 ,
242
253
10 ,
243
- 47 ,
254
+ 144 ,
255
+ None ,
256
+ ) ,
257
+ ) ,
258
+ (
259
+ DiscoveredItemId :: new ( 48 ) ,
260
+ ItemExpectations :: new (
261
+ DiscoveredItem :: Method {
262
+ final_name : "protected_method" . to_string ( ) ,
263
+ parent : DiscoveredItemId :: new ( 1 ) ,
264
+ cpp_visibility : Visibility :: Protected ,
265
+ cpp_special_member : None ,
266
+ cpp_virtual : None ,
267
+ cpp_explicit : None ,
268
+ } ,
269
+ 14 ,
270
+ 10 ,
271
+ 295 ,
272
+ None ,
273
+ ) ,
274
+ ) ,
275
+ (
276
+ DiscoveredItemId :: new ( 19 ) ,
277
+ ItemExpectations :: new (
278
+ DiscoveredItem :: Method {
279
+ final_name : "new" . to_string ( ) ,
280
+ parent : DiscoveredItemId :: new ( 1 ) ,
281
+ cpp_visibility : Visibility :: Public ,
282
+ cpp_special_member : Some (
283
+ SpecialMemberKind :: MoveConstructor ,
284
+ ) ,
285
+ cpp_virtual : None ,
286
+ cpp_explicit : None ,
287
+ } ,
288
+ 7 ,
289
+ 5 ,
290
+ 111 ,
244
291
None ,
245
292
) ,
246
293
) ,
247
294
] ) ;
295
+
248
296
test_item_discovery_callback (
249
- "/tests/parse_callbacks/item_discovery_callback/header_item_discovery.hpp" , expected, identity ) ;
297
+ "/tests/parse_callbacks/item_discovery_callback/header_item_discovery.hpp" , expected, |b| b . clang_arg ( "--std=c++11" ) ) ;
250
298
}
251
299
252
300
/// Returns the expectations corresponding to header_item_discovery_with_namespaces.hpp,
@@ -361,6 +409,7 @@ fn cpp_expectation_map() -> ExpectationMap {
361
409
DiscoveredItem :: Struct {
362
410
final_name : "L" . to_string ( ) ,
363
411
original_name : Some ( "L" . to_string ( ) ) ,
412
+ cpp_visibility : Visibility :: Public ,
364
413
} ,
365
414
25 ,
366
415
12 ,
@@ -374,6 +423,7 @@ fn cpp_expectation_map() -> ExpectationMap {
374
423
DiscoveredItem :: Struct {
375
424
final_name : "L_M" . to_string ( ) ,
376
425
original_name : Some ( "M" . to_string ( ) ) ,
426
+ cpp_visibility : Visibility :: Public ,
377
427
} ,
378
428
26 ,
379
429
16 ,
@@ -597,6 +647,7 @@ pub fn compare_struct_info(
597
647
let DiscoveredItem :: Struct {
598
648
original_name : expected_original_name,
599
649
final_name : expected_final_name,
650
+ cpp_visibility : expected_cpp_visibility,
600
651
} = expected_item
601
652
else {
602
653
unreachable ! ( )
@@ -605,6 +656,7 @@ pub fn compare_struct_info(
605
656
let DiscoveredItem :: Struct {
606
657
original_name : generated_original_name,
607
658
final_name : generated_final_name,
659
+ cpp_visibility : generated_cpp_visibility,
608
660
} = generated_item
609
661
else {
610
662
unreachable ! ( )
@@ -614,6 +666,10 @@ pub fn compare_struct_info(
614
666
return false ;
615
667
}
616
668
669
+ if expected_cpp_visibility != generated_cpp_visibility {
670
+ return false ;
671
+ }
672
+
617
673
match ( expected_original_name, generated_original_name) {
618
674
( None , None ) => true ,
619
675
( Some ( expected_original_name) , Some ( generated_original_name) ) => {
@@ -630,6 +686,7 @@ pub fn compare_union_info(
630
686
let DiscoveredItem :: Union {
631
687
original_name : expected_original_name,
632
688
final_name : expected_final_name,
689
+ cpp_visibility : expected_cpp_visibility,
633
690
} = expected_item
634
691
else {
635
692
unreachable ! ( )
@@ -638,6 +695,7 @@ pub fn compare_union_info(
638
695
let DiscoveredItem :: Union {
639
696
original_name : generated_original_name,
640
697
final_name : generated_final_name,
698
+ cpp_visibility : generated_cpp_visibility,
641
699
} = generated_item
642
700
else {
643
701
unreachable ! ( )
@@ -647,6 +705,10 @@ pub fn compare_union_info(
647
705
return false ;
648
706
}
649
707
708
+ if expected_cpp_visibility != generated_cpp_visibility {
709
+ return false ;
710
+ }
711
+
650
712
match ( expected_original_name, generated_original_name) {
651
713
( None , None ) => true ,
652
714
( Some ( expected_original_name) , Some ( generated_original_name) ) => {
@@ -662,13 +724,15 @@ pub fn compare_enum_info(
662
724
) -> bool {
663
725
let DiscoveredItem :: Enum {
664
726
final_name : expected_final_name,
727
+ cpp_visibility : expected_cpp_visibility,
665
728
} = expected_item
666
729
else {
667
730
unreachable ! ( )
668
731
} ;
669
732
670
733
let DiscoveredItem :: Enum {
671
734
final_name : generated_final_name,
735
+ cpp_visibility : generated_cpp_visibility,
672
736
} = generated_item
673
737
else {
674
738
unreachable ! ( )
@@ -677,6 +741,11 @@ pub fn compare_enum_info(
677
741
if !compare_names ( expected_final_name, generated_final_name) {
678
742
return false ;
679
743
}
744
+
745
+ if expected_cpp_visibility != generated_cpp_visibility {
746
+ return false ;
747
+ }
748
+
680
749
true
681
750
}
682
751
@@ -755,6 +824,10 @@ pub fn compare_method_info(
755
824
let DiscoveredItem :: Method {
756
825
final_name : expected_final_name,
757
826
parent : expected_parent,
827
+ cpp_visibility : expected_cpp_visibility,
828
+ cpp_special_member : expected_cpp_special_member,
829
+ cpp_virtual : expected_cpp_virtual,
830
+ cpp_explicit : expected_cpp_explicit,
758
831
} = expected_item
759
832
else {
760
833
unreachable ! ( )
@@ -763,12 +836,21 @@ pub fn compare_method_info(
763
836
let DiscoveredItem :: Method {
764
837
final_name : generated_final_name,
765
838
parent : generated_parent,
839
+ cpp_visibility : generated_cpp_visibility,
840
+ cpp_special_member : generated_cpp_special_member,
841
+ cpp_virtual : generated_cpp_virtual,
842
+ cpp_explicit : generated_cpp_explicit,
766
843
} = generated_item
767
844
else {
768
845
unreachable ! ( )
769
846
} ;
770
847
771
- if expected_parent != generated_parent {
848
+ if expected_parent != generated_parent
849
+ || expected_cpp_explicit != generated_cpp_explicit
850
+ || expected_cpp_special_member != generated_cpp_special_member
851
+ || expected_cpp_virtual != generated_cpp_virtual
852
+ || expected_cpp_visibility != generated_cpp_visibility
853
+ {
772
854
return false ;
773
855
}
774
856
0 commit comments