add a macro for static assertions
This commit is contained in:
parent
4623d48893
commit
a332387b87
3 changed files with 13 additions and 7 deletions
|
|
@ -62,6 +62,16 @@ macro_rules! span_bug {
|
|||
})
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! static_assert {
|
||||
($name:ident: $test:expr) => {
|
||||
// Use the bool to access an array such that if the bool is false, the access
|
||||
// is out-of-bounds.
|
||||
#[allow(dead_code)]
|
||||
static $name: () = [()][!$test as usize];
|
||||
}
|
||||
}
|
||||
|
||||
#[macro_export]
|
||||
macro_rules! __impl_stable_hash_field {
|
||||
($field:ident, $ctx:expr, $hasher:expr) => ($field.hash_stable($ctx, $hasher));
|
||||
|
|
|
|||
|
|
@ -167,8 +167,7 @@ newtype_index! {
|
|||
impl_stable_hash_for!(struct ::middle::region::FirstStatementIndex { private });
|
||||
|
||||
// compilation error if size of `ScopeData` is not the same as a `u32`
|
||||
#[allow(dead_code)]
|
||||
static ASSERT: () = [()][!(mem::size_of::<ScopeData>() == 4) as usize];
|
||||
static_assert!(ASSERT_SCOPE_DATA: mem::size_of::<ScopeData>() == 4);
|
||||
|
||||
impl Scope {
|
||||
/// Returns a item-local id associated with this scope.
|
||||
|
|
|
|||
|
|
@ -827,12 +827,9 @@ impl<'tcx> CommonTypes<'tcx> {
|
|||
fn new(interners: &CtxtInterners<'tcx>) -> CommonTypes<'tcx> {
|
||||
// Ensure our type representation does not grow
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
#[allow(dead_code)]
|
||||
static ASSERT_TY_KIND: () =
|
||||
[()][!(::std::mem::size_of::<ty::TyKind<'_>>() <= 24) as usize];
|
||||
static_assert!(ASSERT_TY_KIND: ::std::mem::size_of::<ty::TyKind<'_>>() <= 24);
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
#[allow(dead_code)]
|
||||
static ASSERT_TYS: () = [()][!(::std::mem::size_of::<ty::TyS<'_>>() <= 32) as usize];
|
||||
static_assert!(ASSERT_TYS: ::std::mem::size_of::<ty::TyS<'_>>() <= 32);
|
||||
|
||||
let mk = |sty| CtxtInterners::intern_ty(interners, interners, sty);
|
||||
let mk_region = |r| {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue