blob: af3e04cae6b2bb25935241e1129593935158d6d1 [file] [log] [blame] [edit]
// Part of the Crubit project, under the Apache License v2.0 with LLVM
// Exceptions. See /LICENSE for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
use ffi_11::*;
use static_assertions::assert_impl_all;
const _: () = {
assert_impl_all!(c_char: From<i8>, From<u8>);
assert_impl_all!(c_short: From<i8>, From<u8>, From<i16>, From<c_schar>);
assert_impl_all!(c_ushort: From<u8>, From<u16>, From<c_uchar>);
assert_impl_all!(c_int: From<i8>, From<u8>, From<i16>, From<c_schar>, From<c_short>);
assert_impl_all!(c_uint: From<u8>, From<u16>, From<c_uchar>, From<c_ushort>);
assert_impl_all!(c_long: From<i8>, From<u8>, From<i16>, From<i32>, From<c_schar>, From<c_short>, From<c_int>);
assert_impl_all!(c_ulong: From<u8>, From<u16>, From<u32>, From<c_uchar>, From<c_ushort>, From<c_uint>);
// TODO(jeanpierreda): uncomment when long long is supported.
// assert_impl_all!(c_longlong: From<i8>, From<u8>, From<i16>, From<i32>, From<i64>, From<c_schar>, From<c_short>, From<c_int>, From<c_long>);
// assert_impl_all!(c_ulonglong: From<u8>, From<u16>, From<u32>, From<u64>, From<c_uchar>, From<c_ushort>, From<c_uint>, From<c_ulong>);
};
const _: () = {
assert_impl_all!(u8: From<c_uchar>, From<c_char>);
assert_impl_all!(i8: From<c_schar>, From<c_char>);
// ffi_11 types are always convertible to any correctly signed type of equal or greater size.
// The simplest cross-platform test is: they're always convertible to the equivalent core::ffi
// type!
assert_impl_all!(core::ffi::c_short: From<c_short>);
assert_impl_all!(core::ffi::c_ushort: From<c_ushort>);
assert_impl_all!(core::ffi::c_int: From<c_int>);
assert_impl_all!(core::ffi::c_uint: From<c_uint>);
assert_impl_all!(core::ffi::c_long: From<c_long>);
assert_impl_all!(core::ffi::c_ulong: From<c_ulong>);
// TODO(jeanpierreda): uncomment when long long is supported.
// assert_impl_all!(core::ffi::c_longlong: From<c_longlong>);
// assert_impl_all!(core::ffi::c_ulonglong: From<c_ulonglong>);
// assert_impl_all!(c_longlong: From<i8>, From<u8>, From<i16>, From<i32>, From<i64>, From<c_schar>, From<c_short>, From<c_int>, From<c_long>);
// assert_impl_all!(c_ulonglong: From<u8>, From<u16>, From<u32>, From<u64>, From<c_uchar>, From<c_ushort>, From<c_uint>, From<c_ulong>);
};