Skip to content

feature request: better errors #11539

@mimoo

Description

@mimoo

Hello,

I'm trying to debug an issue I'm getting, and the error I'm getting is very verbose and seem to be the concatenation of a number of errors that are somewhat related. Feature request: it'd be nice to have errors that can be parsed by humans.

The error I'm getting, as example:

File "src/lib/mina_base/control.ml", lines 11-15, characters 4-51:
11 | ....type t = Mina_wire_types.Mina_base.Control.V2.t =
12 |       | Proof of Pickles.Side_loaded.Proof.Stable.V2.t
13 |       | Signature of Signature.Stable.V1.t
14 |       | None_given
15 |     [@@deriving sexp, equal, yojson, hash, compare]
Error: This variant or record definition does not match that of type
         Mina_wire_types.Mina_base.Control.V2.t
       Constructors do not match:
         Signature of Mina_wire_types.Mina_base_signature.V1.t
       is not the same as:
         Signature of Mina_base__.Signature.Stable.V1.t
       The type
         Mina_wire_types.Mina_base_signature.V1.t =
           Mina_wire_types.Snark_params.Tick.Field.t *
           Mina_wire_types.Snark_params.Tick.Inner_curve.Scalar.t
       is not equal to the type
         Mina_base__.Signature.Stable.V1.t =
           Snark_params.Tick.Field.t * Snark_params.Tick.Inner_curve.Scalar.t
       Type Mina_wire_types.Snark_params.Tick.Field.t = Pasta_bindings.Fp.t
       is not equal to type
         Snark_params.Tick.Field.t = Pasta_bindings.Fp256.t 
File "src/lib/mina_base/stake_delegation.ml", lines 9-14, characters 4-51:
 9 | ....type t = Mina_wire_types.Mina_base.Stake_delegation.V1.t =
10 |       | Set_delegate of
11 |           { delegator : Public_key.Compressed.Stable.V1.t
12 |           ; new_delegate : Public_key.Compressed.Stable.V1.t
13 |           }
14 |     [@@deriving compare, equal, sexp, hash, yojson]
Error: This variant or record definition does not match that of type
         Mina_wire_types.Mina_base.Stake_delegation.V1.t
       Constructors do not match:
         Set_delegate of {
           delegator : Mina_wire_types.Public_key.Compressed.V1.t;
           new_delegate : Mina_wire_types.Public_key.Compressed.V1.t;
         }
       is not the same as:
         Set_delegate of {
           delegator : Signature_lib.Public_key.Compressed.Stable.V1.t;
           new_delegate : Signature_lib.Public_key.Compressed.Stable.V1.t;
         }
       1. Fields do not match:
         delegator : Mina_wire_types.Public_key.Compressed.V1.t;
       is not the same as:
         delegator : Signature_lib.Public_key.Compressed.Stable.V1.t;
       The type
         Mina_wire_types.Public_key.Compressed.V1.t =
           (Mina_wire_types.Snark_params.Tick.Field.t, bool)
           Mina_wire_types.Public_key.Compressed.Poly.V1.t
       is not equal to the type
         Signature_lib.Public_key.Compressed.Stable.V1.t =
           (Snark_params.Tick.Field.t, bool)
           Mina_wire_types.Public_key.Compressed.Poly.V1.t
       Type Mina_wire_types.Snark_params.Tick.Field.t = Pasta_bindings.Fp.t
       is not equal to type
         Snark_params.Tick.Field.t = Pasta_bindings.Fp256.t 
       2. Fields do not match:
         new_delegate : Mina_wire_types.Public_key.Compressed.V1.t;
       is not the same as:
         new_delegate : Signature_lib.Public_key.Compressed.Stable.V1.t;
       The type
         Mina_wire_types.Public_key.Compressed.V1.t =
           (Mina_wire_types.Snark_params.Tick.Field.t, bool)
           Mina_wire_types.Public_key.Compressed.Poly.V1.t
       is not equal to the type
         Signature_lib.Public_key.Compressed.Stable.V1.t =
           (Snark_params.Tick.Field.t, bool)
           Mina_wire_types.Public_key.Compressed.Poly.V1.t
       Type Mina_wire_types.Snark_params.Tick.Field.t = Pasta_bindings.Fp.t
       is not equal to type
         Snark_params.Tick.Field.t = Pasta_bindings.Fp256.t 
File "src/lib/mina_base/fee_transfer.mli", lines 6-7, characters 9-56:
6 | .........type Single.Stable.V2.t =
7 |       Mina_wire_types.Mina_base.Fee_transfer.Single.V2.t
Error: This variant or record definition does not match that of type
         Mina_wire_types.Mina_base.Fee_transfer.Single.V2.t
       Fields do not match:
         receiver_pk : Mina_wire_types.Public_key.Compressed.V1.t;
       is not the same as:
         receiver_pk : Mina_base_import.Public_key.Compressed.Stable.V1.t;
       The type
         Mina_wire_types.Public_key.Compressed.V1.t =
           (Mina_wire_types.Snark_params.Tick.Field.t, bool)
           Mina_wire_types.Public_key.Compressed.Poly.V1.t
       is not equal to the type
         Mina_base_import.Public_key.Compressed.Stable.V1.t =
           (Snark_params.Tick.Field.t, bool)
           Mina_wire_types.Public_key.Compressed.Poly.V1.t
       Type Mina_wire_types.Snark_params.Tick.Field.t = Pasta_bindings.Fp.t
       is not equal to type
         Snark_params.Tick.Field.t = Pasta_bindings.Fp256.t 

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions