sophia/test/contracts/abort_test_int.aes
2018-12-22 01:23:40 +01:00

28 lines
781 B
Plaintext

contract Interface =
function do_abort : (int, string) => ()
function get_value : () => int
function put_value : (int) => ()
function get_values : () => list(int)
function put_values : (int) => ()
contract AbortTestInt =
record state = {r : Interface, value : int}
public function init(r : Interface, value : int) =
{r = r, value = value}
// Aborting
public function do_abort(v : int, s : string) =
put_value(v)
state.r.do_abort(v + 100, s)
// Accessing the value
public function put_value(v : int) = put(state{value = v})
public function get_value() = state.value
public function get_values() : list(int) =
state.value :: state.r.get_values()
public function put_values(v : int) =
put_value(v)
state.r.put_values(v + 1000)