plutus
plutus copied to clipboard
[Epic] Sort out structural vs operational evaluation errors
We have two kinds of evaluation errors: structural ones and operational ones. More on that here. This issue is for dumping all the things that we could improve upon in this context.
- [x]
EvaluationError operational structuralis backwards,structuralshould come first as structural errors concern how the program is constructed, whiich obviously precedes evaluation, which is what operational errors are about. PR: #6439 - [x] there is no test like "evaluating a well-typed program never results in a structural error". In general there are no explicit tests on this whole structural vs operational distinction (we do have some implicit ones, but that's not nearly enough). PR: #6443
- [x] the content of an operational unlifting error is erased by the CK/CEK machine, so the error message never reaches the user. "Something went wrong" is a horrible thing to display to the user, we should do better (at least we print the offending term though). PR: #6181
- [x] builtin denotations don't distinguish between the two kinds of errors and just pretend that every builtin error is an operational one, which is not the case for
headListfor example: whileheadList []should give an operational error, the "ill-typed"headList Trueshould give a structural one. PR: #5926