diff options
author | David Hotham <david.hotham@blueyonder.co.uk> | 2017-04-14 17:03:23 +0100 |
---|---|---|
committer | David Hotham <david.hotham@blueyonder.co.uk> | 2017-04-14 17:03:23 +0100 |
commit | b8dd5c91bc65489f58894649b64e328eb7df8057 (patch) | |
tree | ffb3ac3881686a12b47f7cba3bda6bbec193f3b3 | |
parent | 451ba0d12b1602e19a0800ec19bd77833c894e83 (diff) |
code review
-rw-r--r-- | src/codegen/mod.rs | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs index bae2f7b0..20151fe3 100644 --- a/src/codegen/mod.rs +++ b/src/codegen/mod.rs @@ -986,40 +986,41 @@ impl CodeGenerator for TemplateInstantiation { // Although uses of instantiations don't need code generation, and are // just converted to rust types in fields, vars, etc, we take this // opportunity to generate tests for their layout here. + if !ctx.options().layout_tests { + return + } - if ctx.options().layout_tests { - let layout = item.kind().expect_type().layout(ctx); + let layout = item.kind().expect_type().layout(ctx); - if let Some(layout) = layout { - let size = layout.size; - let align = layout.align; + if let Some(layout) = layout { + let size = layout.size; + let align = layout.align; - let name = item.canonical_name(ctx); - let fn_name = format!("__bindgen_test_layout_{}_instantiation_{}", - name, - item.id().as_usize()); - let fn_name = ctx.rust_ident_raw(&fn_name); + let name = item.canonical_name(ctx); + let fn_name = format!("__bindgen_test_layout_{}_instantiation_{}", + name, + item.id().as_usize()); + let fn_name = ctx.rust_ident_raw(&fn_name); - let prefix = ctx.trait_prefix(); - let ident = item.to_rust_ty_or_opaque(ctx, &()); - let size_of_expr = quote_expr!(ctx.ext_cx(), - ::$prefix::mem::size_of::<$ident>()); - let align_of_expr = quote_expr!(ctx.ext_cx(), - ::$prefix::mem::align_of::<$ident>()); - - let item = quote_item!( - ctx.ext_cx(), - #[test] - fn $fn_name() { - assert_eq!($size_of_expr, $size, - concat!("Size of template specialization: ", stringify!($ident))); - assert_eq!($align_of_expr, $align, - concat!("Alignment of template specialization: ", stringify!($ident))); - }) - .unwrap(); + let prefix = ctx.trait_prefix(); + let ident = item.to_rust_ty_or_opaque(ctx, &()); + let size_of_expr = quote_expr!(ctx.ext_cx(), + ::$prefix::mem::size_of::<$ident>()); + let align_of_expr = quote_expr!(ctx.ext_cx(), + ::$prefix::mem::align_of::<$ident>()); + + let item = quote_item!( + ctx.ext_cx(), + #[test] + fn $fn_name() { + assert_eq!($size_of_expr, $size, + concat!("Size of template specialization: ", stringify!($ident))); + assert_eq!($align_of_expr, $align, + concat!("Alignment of template specialization: ", stringify!($ident))); + }) + .unwrap(); - result.push(item); - } + result.push(item); } } } |