aeternity / aesophia

Stand alone compiler for the Sophia smart contract language
https://docs.aeternity.com/aesophia
ISC License
51 stars 19 forks source link

Inability to pattern match a datatype from a remote contract #471

Open ghallak opened 1 year ago

ghallak commented 1 year ago
contract C2 =
  datatype dt = Zero | One(int)

main contract C =
  entrypoint foo(d : Cx.dt) =
    switch (d)
      Cx.Zero => 0
      Cx.One(_) => 1

The above code fails with the following error message:

type_error:7:7: Invalid call to contract entrypoint `Cx.Zero`. (It must be called as `c.Zero` for some `c : Cx`.)
type_error:8:7: Invalid call to contract entrypoint `Cx.One`. (It must be called as `c.One` for some `c : Cx`.)

This issue is realted to the commit https://github.com/aeternity/aesophia/commit/5adeb6c93ee8a78feb6663578216021c4a61baef that banned using contracts as namespaces.

marc0olo commented 1 year ago

I am now also using a namespace as "workaround" as suggested by @radrow and @hanssv.

I think this is the core issue I ran into which I didn't dig into too deep. because of this issue I used a "solution" which was obviously a bug that has recently been fixed with https://github.com/aeternity/aesophia/pull/469.

IMO this issue should be prioritized if there is nothing more "urgent" on the list.