82 lines
2.4 KiB
Plaintext
82 lines
2.4 KiB
Plaintext
program main
|
|
fn narrow(value: f64) -> (result i64 i32)
|
|
call std.num.f64_to_i64_result : (result i64 i32)
|
|
var value : f64
|
|
fn zero_ok() -> (result i64 i32)
|
|
call narrow : (result i64 i32)
|
|
binary - : f64
|
|
float 2.5 : f64
|
|
float 2.5 : f64
|
|
fn negative_ok() -> (result i64 i32)
|
|
call narrow : (result i64 i32)
|
|
binary - : f64
|
|
float 1 : f64
|
|
float 13 : f64
|
|
fn fractional_err() -> (result i64 i32)
|
|
call narrow : (result i64 i32)
|
|
binary / : f64
|
|
float 7 : f64
|
|
float 2 : f64
|
|
fn above_high_err() -> (result i64 i32)
|
|
call narrow : (result i64 i32)
|
|
float 9223372036854776000 : f64
|
|
fn main() -> i32
|
|
local let value : unit
|
|
call negative_ok : (result i64 i32)
|
|
if : i32
|
|
std.result.is_ok : bool
|
|
var value : (result i64 i32)
|
|
if : i32
|
|
binary = : bool
|
|
std.result.unwrap_ok : i64
|
|
var value : (result i64 i32)
|
|
i64 -12 : i64
|
|
int 0 : i32
|
|
int 1 : i32
|
|
std.result.unwrap_err : i32
|
|
var value : (result i64 i32)
|
|
test "f64 zero narrows to i64"
|
|
local let value : unit
|
|
call zero_ok : (result i64 i32)
|
|
if : bool
|
|
std.result.is_ok : bool
|
|
var value : (result i64 i32)
|
|
binary = : bool
|
|
std.result.unwrap_ok : i64
|
|
var value : (result i64 i32)
|
|
i64 0 : i64
|
|
bool false : bool
|
|
test "negative f64 narrows to i64"
|
|
local let value : unit
|
|
call negative_ok : (result i64 i32)
|
|
if : bool
|
|
std.result.is_ok : bool
|
|
var value : (result i64 i32)
|
|
binary = : bool
|
|
std.result.unwrap_ok : i64
|
|
var value : (result i64 i32)
|
|
i64 -12 : i64
|
|
bool false : bool
|
|
test "fractional f64 returns err for i64"
|
|
local let value : unit
|
|
call fractional_err : (result i64 i32)
|
|
if : bool
|
|
std.result.is_err : bool
|
|
var value : (result i64 i32)
|
|
binary = : bool
|
|
std.result.unwrap_err : i32
|
|
var value : (result i64 i32)
|
|
int 1 : i32
|
|
bool false : bool
|
|
test "above i64 range f64 returns err"
|
|
local let value : unit
|
|
call above_high_err : (result i64 i32)
|
|
if : bool
|
|
std.result.is_err : bool
|
|
var value : (result i64 i32)
|
|
binary = : bool
|
|
std.result.unwrap_err : i32
|
|
var value : (result i64 i32)
|
|
int 1 : i32
|
|
bool false : bool
|