mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-27 13:59:08 +00:00
WIP: Start adding new Int.toInt builtins
This commit is contained in:
parent
1760db2a0c
commit
e12d98af98
4 changed files with 720 additions and 0 deletions
|
@ -445,6 +445,156 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
||||||
// maxI128 : I128
|
// maxI128 : I128
|
||||||
add_type!(Symbol::NUM_MAX_I128, i128_type());
|
add_type!(Symbol::NUM_MAX_I128, i128_type());
|
||||||
|
|
||||||
|
// toI8 : Int * -> I8
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I8,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(i8_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
let out_of_bounds = SolvedType::TagUnion(
|
||||||
|
vec![(TagName::Global("OutOfBounds".into()), vec![])],
|
||||||
|
Box::new(SolvedType::Wildcard),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI8Checked : Int * -> Result I8 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I8_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(i8_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI16 : Int * -> I16
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I16,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(i16_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI16Checked : Int * -> Result I16 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I16_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(i16_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI32 : Int * -> I32
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I32,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(i32_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI32Checked : Int * -> Result I32 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I32_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(i32_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI64 : Int * -> I64
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I64,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(i64_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI64Checked : Int * -> Result I64 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I64_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(i64_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI128 : Int * -> I128
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I128,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(i128_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toI128Checked : Int * -> Result I128 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_I128_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(i128_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU8 : Int * -> U8
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U8,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(u8_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
let out_of_bounds = SolvedType::TagUnion(
|
||||||
|
vec![(TagName::Global("OutOfBounds".into()), vec![])],
|
||||||
|
Box::new(SolvedType::Wildcard),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU8Checked : Int * -> Result U8 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U8_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(u8_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU16 : Int * -> U16
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U16,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(u16_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU16Checked : Int * -> Result U16 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U16_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(u16_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU32 : Int * -> U32
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U32,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(u32_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU32Checked : Int * -> Result U32 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U32_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(u32_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU64 : Int * -> U64
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U64,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(u64_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU64Checked : Int * -> Result U64 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U64_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(u64_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU128 : Int * -> U128
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U128,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(u128_type()),
|
||||||
|
);
|
||||||
|
|
||||||
|
// toU128Checked : Int * -> Result U128 [ OutOfBounds ]*
|
||||||
|
add_top_level_function_type!(
|
||||||
|
Symbol::NUM_TO_U128_CHECKED,
|
||||||
|
vec![int_type(flex(TVAR1))],
|
||||||
|
Box::new(result_type(u128_type(), out_of_bounds.clone())),
|
||||||
|
);
|
||||||
|
|
||||||
// toStr : Num a -> Str
|
// toStr : Num a -> Str
|
||||||
add_top_level_function_type!(
|
add_top_level_function_type!(
|
||||||
Symbol::NUM_TO_STR,
|
Symbol::NUM_TO_STR,
|
||||||
|
|
|
@ -242,6 +242,26 @@ pub fn builtin_defs_map(symbol: Symbol, var_store: &mut VarStore) -> Option<Def>
|
||||||
NUM_MAX_U64=> num_max_u64,
|
NUM_MAX_U64=> num_max_u64,
|
||||||
NUM_MIN_I128=> num_min_i128,
|
NUM_MIN_I128=> num_min_i128,
|
||||||
NUM_MAX_I128=> num_max_i128,
|
NUM_MAX_I128=> num_max_i128,
|
||||||
|
NUM_TO_I8 => num_to_i8,
|
||||||
|
NUM_TO_I8_CHECKED => num_to_i8_checked,
|
||||||
|
NUM_TO_I16 => num_to_i16,
|
||||||
|
NUM_TO_I16_CHECKED => num_to_i16_checked,
|
||||||
|
NUM_TO_I32 => num_to_i32,
|
||||||
|
NUM_TO_I32_CHECKED => num_to_i32_checked,
|
||||||
|
NUM_TO_I64 => num_to_i64,
|
||||||
|
NUM_TO_I64_CHECKED => num_to_i64_checked,
|
||||||
|
NUM_TO_I128 => num_to_i128,
|
||||||
|
NUM_TO_I128_CHECKED => num_to_i128_checked,
|
||||||
|
NUM_TO_U8 => num_to_u8,
|
||||||
|
NUM_TO_U8_CHECKED => num_to_u8_checked,
|
||||||
|
NUM_TO_U16 => num_to_u16,
|
||||||
|
NUM_TO_U16_CHECKED => num_to_u16_checked,
|
||||||
|
NUM_TO_U32 => num_to_u32,
|
||||||
|
NUM_TO_U32_CHECKED => num_to_u32_checked,
|
||||||
|
NUM_TO_U64 => num_to_u64,
|
||||||
|
NUM_TO_U64_CHECKED => num_to_u64_checked,
|
||||||
|
NUM_TO_U128 => num_to_u128,
|
||||||
|
NUM_TO_U128_CHECKED => num_to_u128_checked,
|
||||||
NUM_TO_STR => num_to_str,
|
NUM_TO_STR => num_to_str,
|
||||||
RESULT_MAP => result_map,
|
RESULT_MAP => result_map,
|
||||||
RESULT_MAP_ERR => result_map_err,
|
RESULT_MAP_ERR => result_map_err,
|
||||||
|
@ -390,6 +410,256 @@ fn lowlevel_5(symbol: Symbol, op: LowLevel, var_store: &mut VarStore) -> Def {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Num.toI8 : Int * -> I8
|
||||||
|
fn num_to_i8(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let i8_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: i8_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
i8_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI8Checked : Int * -> Result I8 [ OutOfBounds ]*
|
||||||
|
fn num_to_i8_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI16 : Int * -> I16
|
||||||
|
fn num_to_i16(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let i16_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: i16_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
i16_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI16Checked : Int * -> Result I16 [ OutOfBounds ]*
|
||||||
|
fn num_to_i16_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI32 : Int * -> I32
|
||||||
|
fn num_to_i32(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let i32_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: i32_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
i32_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI32Checked : Int * -> Result I32 [ OutOfBounds ]*
|
||||||
|
fn num_to_i32_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI64 : Int * -> I64
|
||||||
|
fn num_to_i64(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let i64_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: i64_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
i64_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI64Checked : Int * -> Result I64 [ OutOfBounds ]*
|
||||||
|
fn num_to_i64_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI128 : Int * -> I128
|
||||||
|
fn num_to_i128(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let i128_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: i128_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
i128_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toI128Checked : Int * -> Result I128 [ OutOfBounds ]*
|
||||||
|
fn num_to_i128_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU8 : Int * -> U8
|
||||||
|
fn num_to_u8(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let u8_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: u8_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
u8_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU8Checked : Int * -> Result U8 [ OutOfBounds ]*
|
||||||
|
fn num_to_u8_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU16 : Int * -> U16
|
||||||
|
fn num_to_u16(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let u16_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: u16_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
u16_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU16Checked : Int * -> Result U16 [ OutOfBounds ]*
|
||||||
|
fn num_to_u16_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU32 : Int * -> U32
|
||||||
|
fn num_to_u32(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let u32_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: u32_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
u32_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU32Checked : Int * -> Result U32 [ OutOfBounds ]*
|
||||||
|
fn num_to_u32_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU64 : Int * -> U64
|
||||||
|
fn num_to_u64(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let u64_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: u64_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
u64_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU64Checked : Int * -> Result U64 [ OutOfBounds ]*
|
||||||
|
fn num_to_u64_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU128 : Int * -> U128
|
||||||
|
fn num_to_u128(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
let int_var = var_store.fresh();
|
||||||
|
let u128_var = var_store.fresh();
|
||||||
|
|
||||||
|
let body = RunLowLevel {
|
||||||
|
op: LowLevel::NumToStr,
|
||||||
|
args: vec![(int_var, Var(Symbol::ARG_1))],
|
||||||
|
ret_var: u128_var,
|
||||||
|
};
|
||||||
|
|
||||||
|
defn(
|
||||||
|
symbol,
|
||||||
|
vec![(int_var, Symbol::ARG_1)],
|
||||||
|
var_store,
|
||||||
|
body,
|
||||||
|
u128_var,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Num.toU128Checked : Int * -> Result U128 [ OutOfBounds ]*
|
||||||
|
fn num_to_u128_checked(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
// Num.toStr : Num a -> Str
|
// Num.toStr : Num a -> Str
|
||||||
fn num_to_str(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
fn num_to_str(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
let num_var = var_store.fresh();
|
let num_var = var_store.fresh();
|
||||||
|
|
|
@ -1010,6 +1010,26 @@ define_builtins! {
|
||||||
122 NUM_MAX_U64: "maxU64"
|
122 NUM_MAX_U64: "maxU64"
|
||||||
123 NUM_MIN_I128: "minI128"
|
123 NUM_MIN_I128: "minI128"
|
||||||
124 NUM_MAX_I128: "maxI128"
|
124 NUM_MAX_I128: "maxI128"
|
||||||
|
125 NUM_TO_I8: "toI8"
|
||||||
|
126 NUM_TO_I8_CHECKED: "toI8Checked"
|
||||||
|
127 NUM_TO_I16: "toI16"
|
||||||
|
128 NUM_TO_I16_CHECKED: "toI16Checked"
|
||||||
|
129 NUM_TO_I32: "toI32"
|
||||||
|
130 NUM_TO_I32_CHECKED: "toI32Checked"
|
||||||
|
131 NUM_TO_I64: "toI64"
|
||||||
|
132 NUM_TO_I64_CHECKED: "toI64Checked"
|
||||||
|
133 NUM_TO_I128: "toI128"
|
||||||
|
134 NUM_TO_I128_CHECKED: "toI128Checked"
|
||||||
|
135 NUM_TO_U8: "toU8"
|
||||||
|
136 NUM_TO_U8_CHECKED: "toU8Checked"
|
||||||
|
137 NUM_TO_U16: "toU16"
|
||||||
|
138 NUM_TO_U16_CHECKED: "toU16Checked"
|
||||||
|
139 NUM_TO_U32: "toU32"
|
||||||
|
140 NUM_TO_U32_CHECKED: "toU32Checked"
|
||||||
|
141 NUM_TO_U64: "toU64"
|
||||||
|
142 NUM_TO_U64_CHECKED: "toU64Checked"
|
||||||
|
143 NUM_TO_U128: "toU128"
|
||||||
|
144 NUM_TO_U128_CHECKED: "toU128Checked"
|
||||||
}
|
}
|
||||||
2 BOOL: "Bool" => {
|
2 BOOL: "Bool" => {
|
||||||
0 BOOL_BOOL: "Bool" imported // the Bool.Bool type alias
|
0 BOOL_BOOL: "Bool" imported // the Bool.Bool type alias
|
||||||
|
|
|
@ -2053,6 +2053,286 @@ fn max_u8() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i8() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI8 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i8::MAX, // TODO
|
||||||
|
i8
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i8_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI8Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i8::MAX, // TODO
|
||||||
|
i8
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i16() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI16 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i16::MAX, // TODO
|
||||||
|
i16
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i16_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI16Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i16::MAX, // TODO
|
||||||
|
i16
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i32() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI32 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i32::MAX, // TODO
|
||||||
|
i32
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i32_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI32Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i32::MAX, // TODO
|
||||||
|
i32
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i64() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI64 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i64::MAX, // TODO
|
||||||
|
i64
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i64_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI64Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i64::MAX, // TODO
|
||||||
|
i64
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i128() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI128 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i128::MAX, // TODO
|
||||||
|
i128
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_i128_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toI128Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
i128::MAX, // TODO
|
||||||
|
i128
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u8() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU8 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u8::MAX, // TODO
|
||||||
|
u8
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u8_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU8Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u8::MAX, // TODO
|
||||||
|
u8
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u16() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU16 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u16::MAX, // TODO
|
||||||
|
u16
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u16_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU16Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u16::MAX, // TODO
|
||||||
|
u16
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u32() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU32 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u32::MAX, // TODO
|
||||||
|
u32
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u32_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU32Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u32::MAX, // TODO
|
||||||
|
u32
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u64() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU64 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u64::MAX, // TODO
|
||||||
|
u64
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u64_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU64Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u64::MAX, // TODO
|
||||||
|
u64
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u128() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU128 TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u128::MAX, // TODO
|
||||||
|
u128
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[cfg(any(feature = "gen-llvm", feature = "gen-wasm"))]
|
||||||
|
fn to_u128_checked() {
|
||||||
|
assert_evals_to!(
|
||||||
|
indoc!(
|
||||||
|
r#"
|
||||||
|
Num.toU128Checked TODO
|
||||||
|
"#
|
||||||
|
),
|
||||||
|
u128::MAX, // TODO
|
||||||
|
u128
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[cfg(any(feature = "gen-llvm"))]
|
#[cfg(any(feature = "gen-llvm"))]
|
||||||
fn is_multiple_of() {
|
fn is_multiple_of() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue