Skip to content

Contract pass: check entrypoint syntax in C_CONTRACT_ENTRYPOINT(_OPT)

E. Rivas requested to merge er433/pass/entrypoint into dev

As reported by Eduardo Rafael in #ligo, entrypoint format is not checked/enforced when calling get_entrypoint:

let main ((_, _) : (unit * unit)) : operation list * unit =
  let v = (Tezos.get_entrypoint_opt
           "foo"
           ("tz1fakefakefakefakefakefakefakcphLA5" : address) : unit contract option) in
  let u = match v with
          | None -> failwith "None"
          | Some _ -> failwith "Some" in
  ([] : operation list), u

gives:

ligo: internal error, uncaught exception:
      (Failure Michelson_v1_printer.unparse)
      Raised at file "stdlib.ml", line 29, characters 17-33
      Called from file "src/proto_008_PtEdo2Zk/lib_client/michelson_v1_error_reporter.ml", line 264, characters 14-66
      Called from file "src/proto_008_PtEdo2Zk/lib_client/michelson_v1_error_reporter.ml", line 753, characters 2-34
      Called from file "format.ml", line 1252, characters 4-20
      Called from file "format.ml", line 1313, characters 16-34
      Called from file "format.ml", line 1348, characters 4-22
      Called from file "src/main/api/api_helpers.ml", line 20, characters 26-56
      Called from file "src/bin/cli.ml", line 230, characters 4-136
      Called from file "cmdliner_term.ml", line 25, characters 19-24
      Called from file "cmdliner.ml", line 26, characters 27-34
      Called from file "cmdliner.ml", line 117, characters 32-39

when compiling.

  • has a changelog entry
Edited by E. Rivas

Merge request reports