Proto/Michelson: fix `PAIR k` annots
Context
The PAIR k
instruction currently converts @
annotations on the
stack to %
annotations. For example, PAIR 2
works like
PAIR %@ %@
.
This causes troubles with typing, for example, this typechecks:
{ parameter unit;
storage unit;
code { SENDER @foo; SOURCE @bar; PAIR 2;
SOURCE @foo; SENDER @bar; PAIR 2;
COMPARE; DROP;
CDR; NIL operation; PAIR } }
but it fails to typecheck if the @foo
and @bar
annots are removed.
This makes it difficult to use PAIR k
in a compiler, because it may
cause type errors.
This change fixes the problem by merely removing the behavior.
PAIR k
will put no %
annotations at all on the result.
An alternative could be to allow the user to specify the field
annotations (allowing the user to opt in to the current behavior using
%@
) but this does not seem important.
Checklist
-
For new features and bug fixes, add an item in the appropriate changelog ( docs/protocols/alpha.rst
for the protocol and the environment, theDevelopment Version
section ofCHANGES.md
for everything else). -
Select suitable reviewers using the Reviewers
field below.
Edited by Tom Jack