/ test / contracts / polymorphic_entrypoint.aes
polymorphic_entrypoint.aes
 1  include "String.aes"
 2  contract interface Remote =
 3    entrypoint upd     : ('k, 'v, map('k, 'v)) => map('k, 'v)
 4    entrypoint upd_bad : ('k, 'v, map('k, 'v)) => map('k, 'v)
 5  
 6  contract Test =
 7    entrypoint upd(k, v, m) = m{[k] = v}
 8  
 9    entrypoint upd_bad(k : 'a, v : 'a, m : map('a, 'a)) : map('a, map('a, 'a)) =
10      {[k] = m}
11  
12    entrypoint test(r : Remote, v, m) =
13      r.upd("", v, m)
14  
15    entrypoint test_bad(r : Remote, v : 'a, m : map(string, 'a)) : 'a =
16      let m' : map(string, 'a) = r.upd_bad("", v, m)
17      m'[""]
18  
19    entrypoint test_bad_mono(r : Remote, v : string, m : map(string, string)) : string =
20      String.concat("RESULT: ", test_bad(r, v, m))