summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 2f8ad805..17738426 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1106,19 +1106,16 @@ impl Bitfield {
quote_tokens!(ctx.ext_cx(), pub fn)
};
+ // Don't use variables or blocks because const function does not allow them.
quote_item!(
ctx.ext_cx(),
impl XxxUnused {
#[inline]
$fn_prefix $ctor_name($params $param_name : $bitfield_ty)
-> $unit_field_int_ty {
- let bitfield_unit_val = $body;
- let $param_name = $param_name
- as $bitfield_int_ty
- as $unit_field_int_ty;
- let mask = $mask as $unit_field_int_ty;
- let $param_name = ($param_name << $offset) & mask;
- bitfield_unit_val | $param_name
+ ($body |
+ (($param_name as $bitfield_int_ty as $unit_field_int_ty) << $offset) &
+ ($mask as $unit_field_int_ty))
}
}
).unwrap()