[#439] Carry annotations for typed LEFT and RIGHT

Description

The special filed annotations are not presented for LEFT and RIGHT instructions. However we support them for PAIR.

Under the assumption that carrying annotations for PAIR should be similar to carrying them for LEFT and RIGHT, the changes similar to "PAIR changes" were made. The main idea is that we add pattern LEFT to Michelson.Typed.Instr and change LEFT constructor to AnnLEFT that has two additional fields - TypeAnn and FieldAnn. It looks like LEFT :type %@ in Michelson (%@ takes the variable name from the stack to make it the left field name). After that all related usages of LEFT are being rewritten.

Related issue(s)

Resolves #439 (closed)

Checklist for your Merge Request

Related changes (conditional)

  • Tests (see short guidelines)

    • If I added new functionality, I added tests covering it.
    • If I fixed a bug, I added a regression test to prevent the bug from silently reappearing again.
  • Documentation

    • I checked whether I should update the docs and did so if necessary:
    • I updated changelog files of all affected packages released to Hackage if my changes are externally visible.

Stylistic guide (mandatory)

Edited by Alyona Antonova

Merge request reports

Loading