Skip to content

investigate custom type as param #60

@marc0olo

Description

@marc0olo

it seems like the plugin cannot handle following code:

contract OracleDelegateContract =
    type fee = int
    type ttl = Chain.ttl
    stateful payable entrypoint signedRegisterOracle(acct : address,
                                                    sign : signature,
                                                    qfee : fee,
                                                    ttl  : ttl) : oracle(string, string) =
        Oracle.register(acct, qfee, ttl, signature = sign)

    stateful payable entrypoint signedExtendOracle(o    : oracle(string, string),
                                                sign : signature,   // Signed oracle address
                                                ttl  : ttl) : unit =
        Oracle.extend(o, signature = sign, ttl)

    payable stateful entrypoint createQuery(o    : oracle(string, string),
                                            q    : string,
                                            qfee : int,
                                            qttl : Chain.ttl,
                                            rttl : Chain.ttl) : oracle_query(string, string) =
        require(qfee =< Call.value, "insufficient value for qfee")
        require(Oracle.check(o), "oracle not valid")
        Oracle.query(o, q, qfee, qttl, rttl)
    
    entrypoint queryFee(o : oracle(string, int)) : int =
        Oracle.query_fee(o)

    stateful entrypoint respond(o    : oracle(string, string),
                                q    : oracle_query(string, string),
                                sign : signature,        // Signed oracle query id + contract address
                                r    : string) =
        Oracle.respond(o, q, signature = sign, r)

whereas following code works without problems

contract OracleDelegateContract =

    stateful payable entrypoint signedRegisterOracle(acct : address,
                                                     sign : signature,
                                                     qfee : int,
                                                     ttl  : Chain.ttl) : oracle(string, string) =
        Oracle.register(acct, qfee, ttl, signature = sign)

    stateful payable entrypoint signedExtendOracle(o    : oracle(string, string),
                                                   sign : signature,
                                                   ttl  : Chain.ttl) : unit =
        Oracle.extend(o, signature = sign, ttl)

    payable stateful entrypoint createQuery(o    : oracle(string, string),
                                            q    : string,
                                            qfee : int,
                                            qttl : Chain.ttl,
                                            rttl : Chain.ttl) : oracle_query(string, string) =
        require(qfee =< Call.value, "insufficient value for qfee")
        require(Oracle.check(o), "oracle not valid")
        Oracle.query(o, q, qfee, qttl, rttl)

    entrypoint queryFee(o : oracle(string, string)) : int =
        Oracle.query_fee(o)

    stateful entrypoint respond(o    : oracle(string, string),
                                q    : oracle_query(string, string),
                                sign : signature,
                                r    : string) =
        Oracle.respond(o, q, signature = sign, r)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingquestionFurther information is requested

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions