41 lines
709 B
Plaintext
41 lines
709 B
Plaintext
use aiken/builtin
|
|
|
|
pub type Thing {
|
|
wow: Int,
|
|
}
|
|
|
|
test assert_1() {
|
|
assert thing: Thing = builtin.constr_data(0, [builtin.i_data(1)])
|
|
|
|
thing.wow == 1
|
|
}
|
|
|
|
fn cast_to_thing(x: Data) -> Thing {
|
|
assert x: Thing = x
|
|
|
|
x
|
|
}
|
|
|
|
test assert_2() {
|
|
let thing = Thing { wow: 1 }
|
|
|
|
let still_thing = cast_to_thing(thing)
|
|
|
|
still_thing.wow == 1
|
|
}
|
|
// should not typecheck
|
|
// test unlift_data_without_assert_1() {
|
|
// let thing: Thing = builtin.constr_data(0, [builtin.i_data(1)])
|
|
// thing.wow == 1
|
|
// }
|
|
|
|
// should not typecheck
|
|
// fn bad_cast(x: Thing) -> Int {
|
|
// x.wow
|
|
// }
|
|
|
|
// test unlift_data_without_assert_2() {
|
|
// let thing = builtin.constr_data(0, [builtin.i_data(1)])
|
|
// bad_cast(thing) == 1
|
|
// }
|