Nanopasses: preserve more info
Some nanopasses can't have a backwards nanopass, because some info is lost. We should add attributes in this case to preserve that info.
disc union pass should add attr that would allow us to distinguish { k: "X", b: int } | { k: "Y" } from [X, int] | Y and restore name of field k (which should be done in backwards nanopass)
named union pass should remember name of params and ideally allow us to distinguish (x : int) => ((a : int) => b) from (x : int, a : int) => b)
Corresponding tests should be added/fixed in decompiler_tests.ml
Edited by Sorokin-Anton