Michelson: RENAME macro

This commit is contained in:
Alain Mebsout 2018-05-18 22:32:23 +02:00 committed by Benjamin Canou
parent 22bdea00c2
commit 68dcae1a11

View File

@ -487,6 +487,15 @@ let expand_if_right = function
error (Unexpected_macro_annotation "IF_RIGHT") error (Unexpected_macro_annotation "IF_RIGHT")
| _ -> ok @@ None | _ -> ok @@ None
let expand_rename = function
| Prim (loc, "RENAME", [], annot) ->
ok @@ Some (Seq (loc, [
Prim (loc, "DUP", [], annot) ;
Prim (loc, "SWAP", [], []) ;
Prim (loc, "DROP", [], []) ;
]))
| _ -> ok @@ None
let expand original = let expand original =
let rec try_expansions = function let rec try_expansions = function
| [] -> ok @@ original | [] -> ok @@ original
@ -505,7 +514,9 @@ let expand original =
expand_compare ; expand_compare ;
expand_asserts ; expand_asserts ;
expand_if_some ; expand_if_some ;
expand_if_right ] expand_if_right ;
expand_rename ;
]
let expand_rec expr = let expand_rec expr =
let rec error_map (expanded, errors) f = function let rec error_map (expanded, errors) f = function
@ -842,6 +853,15 @@ let unexpand_if_right = function
Some (Prim (loc, "IF_RIGHT", [ right ; left ], [])) Some (Prim (loc, "IF_RIGHT", [ right ; left ], []))
| _ -> None | _ -> None
let unexpand_rename = function
| Seq (loc, [
Prim (_, "DUP", [], annot) ;
Prim (_, "SWAP", [], []) ;
Prim (_, "DROP", [], []) ;
]) ->
Some (Prim (loc, "RENAME", [], annot))
| _ -> None
let unexpand original = let unexpand original =
let try_unexpansions unexpanders = let try_unexpansions unexpanders =
match match
@ -864,7 +884,8 @@ let unexpand original =
unexpand_duuuuup ; unexpand_duuuuup ;
unexpand_compare ; unexpand_compare ;
unexpand_if_some ; unexpand_if_some ;
unexpand_if_right ] unexpand_if_right ;
unexpand_rename ]
let rec unexpand_rec expr = let rec unexpand_rec expr =
match unexpand expr with match unexpand expr with