@@ -201,6 +201,41 @@ fn bindgen_test_layout_C_with_incomplete_array() {
201
201
4usize ,
202
202
concat!( "Alignment of " , stringify!( C_with_incomplete_array ) )
203
203
) ;
204
+ assert_eq ! (
205
+ unsafe { & ( * ( :: std:: ptr:: null:: <C_with_incomplete_array >( ) ) ) . a as * const _ as usize } ,
206
+ 0usize ,
207
+ concat!(
208
+ "Offset of field: " ,
209
+ stringify!( C_with_incomplete_array ) ,
210
+ "::" ,
211
+ stringify!( a)
212
+ )
213
+ ) ;
214
+ assert_eq ! (
215
+ unsafe {
216
+ & ( * ( :: std:: ptr:: null:: <C_with_incomplete_array >( ) ) ) . big_array as * const _ as usize
217
+ } ,
218
+ 4usize ,
219
+ concat!(
220
+ "Offset of field: " ,
221
+ stringify!( C_with_incomplete_array ) ,
222
+ "::" ,
223
+ stringify!( big_array)
224
+ )
225
+ ) ;
226
+ assert_eq ! (
227
+ unsafe {
228
+ & ( * ( :: std:: ptr:: null:: <C_with_incomplete_array >( ) ) ) . incomplete_array as * const _
229
+ as usize
230
+ } ,
231
+ 37usize ,
232
+ concat!(
233
+ "Offset of field: " ,
234
+ stringify!( C_with_incomplete_array ) ,
235
+ "::" ,
236
+ stringify!( incomplete_array)
237
+ )
238
+ ) ;
204
239
}
205
240
impl Default for C_with_incomplete_array {
206
241
fn default ( ) -> Self {
@@ -225,6 +260,29 @@ fn bindgen_test_layout_C_with_incomplete_array_2() {
225
260
4usize ,
226
261
concat!( "Alignment of " , stringify!( C_with_incomplete_array_2 ) )
227
262
) ;
263
+ assert_eq ! (
264
+ unsafe { & ( * ( :: std:: ptr:: null:: <C_with_incomplete_array_2 >( ) ) ) . a as * const _ as usize } ,
265
+ 0usize ,
266
+ concat!(
267
+ "Offset of field: " ,
268
+ stringify!( C_with_incomplete_array_2 ) ,
269
+ "::" ,
270
+ stringify!( a)
271
+ )
272
+ ) ;
273
+ assert_eq ! (
274
+ unsafe {
275
+ & ( * ( :: std:: ptr:: null:: <C_with_incomplete_array_2 >( ) ) ) . incomplete_array as * const _
276
+ as usize
277
+ } ,
278
+ 4usize ,
279
+ concat!(
280
+ "Offset of field: " ,
281
+ stringify!( C_with_incomplete_array_2 ) ,
282
+ "::" ,
283
+ stringify!( incomplete_array)
284
+ )
285
+ ) ;
228
286
}
229
287
#[ repr( C ) ]
230
288
pub struct C_with_zero_length_array_and_incomplete_array {
@@ -251,6 +309,58 @@ fn bindgen_test_layout_C_with_zero_length_array_and_incomplete_array() {
251
309
stringify!( C_with_zero_length_array_and_incomplete_array )
252
310
)
253
311
) ;
312
+ assert_eq ! (
313
+ unsafe {
314
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array >( ) ) ) . a as * const _
315
+ as usize
316
+ } ,
317
+ 0usize ,
318
+ concat!(
319
+ "Offset of field: " ,
320
+ stringify!( C_with_zero_length_array_and_incomplete_array ) ,
321
+ "::" ,
322
+ stringify!( a)
323
+ )
324
+ ) ;
325
+ assert_eq ! (
326
+ unsafe {
327
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array >( ) ) ) . big_array
328
+ as * const _ as usize
329
+ } ,
330
+ 4usize ,
331
+ concat!(
332
+ "Offset of field: " ,
333
+ stringify!( C_with_zero_length_array_and_incomplete_array ) ,
334
+ "::" ,
335
+ stringify!( big_array)
336
+ )
337
+ ) ;
338
+ assert_eq ! (
339
+ unsafe {
340
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array >( ) ) )
341
+ . zero_length_array as * const _ as usize
342
+ } ,
343
+ 37usize ,
344
+ concat!(
345
+ "Offset of field: " ,
346
+ stringify!( C_with_zero_length_array_and_incomplete_array ) ,
347
+ "::" ,
348
+ stringify!( zero_length_array)
349
+ )
350
+ ) ;
351
+ assert_eq ! (
352
+ unsafe {
353
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array >( ) ) )
354
+ . incomplete_array as * const _ as usize
355
+ } ,
356
+ 37usize ,
357
+ concat!(
358
+ "Offset of field: " ,
359
+ stringify!( C_with_zero_length_array_and_incomplete_array ) ,
360
+ "::" ,
361
+ stringify!( incomplete_array)
362
+ )
363
+ ) ;
254
364
}
255
365
impl Default for C_with_zero_length_array_and_incomplete_array {
256
366
fn default ( ) -> Self {
@@ -282,6 +392,45 @@ fn bindgen_test_layout_C_with_zero_length_array_and_incomplete_array_2() {
282
392
stringify!( C_with_zero_length_array_and_incomplete_array_2 )
283
393
)
284
394
) ;
395
+ assert_eq ! (
396
+ unsafe {
397
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array_2 >( ) ) ) . a
398
+ as * const _ as usize
399
+ } ,
400
+ 0usize ,
401
+ concat!(
402
+ "Offset of field: " ,
403
+ stringify!( C_with_zero_length_array_and_incomplete_array_2 ) ,
404
+ "::" ,
405
+ stringify!( a)
406
+ )
407
+ ) ;
408
+ assert_eq ! (
409
+ unsafe {
410
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array_2 >( ) ) )
411
+ . zero_length_array as * const _ as usize
412
+ } ,
413
+ 4usize ,
414
+ concat!(
415
+ "Offset of field: " ,
416
+ stringify!( C_with_zero_length_array_and_incomplete_array_2 ) ,
417
+ "::" ,
418
+ stringify!( zero_length_array)
419
+ )
420
+ ) ;
421
+ assert_eq ! (
422
+ unsafe {
423
+ & ( * ( :: std:: ptr:: null:: <C_with_zero_length_array_and_incomplete_array_2 >( ) ) )
424
+ . incomplete_array as * const _ as usize
425
+ } ,
426
+ 4usize ,
427
+ concat!(
428
+ "Offset of field: " ,
429
+ stringify!( C_with_zero_length_array_and_incomplete_array_2 ) ,
430
+ "::" ,
431
+ stringify!( incomplete_array)
432
+ )
433
+ ) ;
285
434
}
286
435
#[ repr( C ) ]
287
436
#[ derive( Debug , Default , Hash , PartialOrd , Ord , PartialEq , Eq ) ]
@@ -328,6 +477,31 @@ fn bindgen_test_layout_IncompleteArrayNonCopiable() {
328
477
8usize ,
329
478
concat!( "Alignment of " , stringify!( IncompleteArrayNonCopiable ) )
330
479
) ;
480
+ assert_eq ! (
481
+ unsafe {
482
+ & ( * ( :: std:: ptr:: null:: <IncompleteArrayNonCopiable >( ) ) ) . whatever as * const _ as usize
483
+ } ,
484
+ 0usize ,
485
+ concat!(
486
+ "Offset of field: " ,
487
+ stringify!( IncompleteArrayNonCopiable ) ,
488
+ "::" ,
489
+ stringify!( whatever)
490
+ )
491
+ ) ;
492
+ assert_eq ! (
493
+ unsafe {
494
+ & ( * ( :: std:: ptr:: null:: <IncompleteArrayNonCopiable >( ) ) ) . incomplete_array as * const _
495
+ as usize
496
+ } ,
497
+ 8usize ,
498
+ concat!(
499
+ "Offset of field: " ,
500
+ stringify!( IncompleteArrayNonCopiable ) ,
501
+ "::" ,
502
+ stringify!( incomplete_array)
503
+ )
504
+ ) ;
331
505
}
332
506
impl Default for IncompleteArrayNonCopiable {
333
507
fn default ( ) -> Self {
0 commit comments