Merge branch 'rinderknecht-dev' into 'dev'
Fixed a regression when removing sub-blocks See merge request ligolang/ligo!153
This commit is contained in:
commit
150ad6bc38
@ -284,7 +284,7 @@ and var_decl = {
|
|||||||
|
|
||||||
and instruction =
|
and instruction =
|
||||||
Cond of conditional reg
|
Cond of conditional reg
|
||||||
| CaseInstr of instruction case reg
|
| CaseInstr of if_clause case reg
|
||||||
| Assign of assignment reg
|
| Assign of assignment reg
|
||||||
| Loop of loop
|
| Loop of loop
|
||||||
| ProcCall of fun_call
|
| ProcCall of fun_call
|
||||||
|
@ -275,7 +275,7 @@ and var_decl = {
|
|||||||
|
|
||||||
and instruction =
|
and instruction =
|
||||||
Cond of conditional reg
|
Cond of conditional reg
|
||||||
| CaseInstr of instruction case reg
|
| CaseInstr of if_clause case reg
|
||||||
| Assign of assignment reg
|
| Assign of assignment reg
|
||||||
| Loop of loop
|
| Loop of loop
|
||||||
| ProcCall of fun_call
|
| ProcCall of fun_call
|
||||||
|
@ -566,7 +566,7 @@ clause_block:
|
|||||||
ShortBlock {value; region} }
|
ShortBlock {value; region} }
|
||||||
|
|
||||||
case_instr:
|
case_instr:
|
||||||
case(instruction) { $1 instr_to_region }
|
case(if_clause) { $1 if_clause_to_region }
|
||||||
|
|
||||||
case(rhs):
|
case(rhs):
|
||||||
Case expr Of option(VBAR) cases(rhs) End {
|
Case expr Of option(VBAR) cases(rhs) End {
|
||||||
|
@ -295,7 +295,7 @@ and print_clause_block buffer = function
|
|||||||
print_terminator buffer terminator;
|
print_terminator buffer terminator;
|
||||||
print_token buffer rbrace "}"
|
print_token buffer rbrace "}"
|
||||||
|
|
||||||
and print_case_instr buffer (node : instruction case) =
|
and print_case_instr buffer (node : if_clause case) =
|
||||||
let {kwd_case; expr; opening;
|
let {kwd_case; expr; opening;
|
||||||
lead_vbar; cases; closing} = node in
|
lead_vbar; cases; closing} = node in
|
||||||
print_token buffer kwd_case "case";
|
print_token buffer kwd_case "case";
|
||||||
@ -314,9 +314,9 @@ and print_cases_instr buffer {value; _} =
|
|||||||
|
|
||||||
and print_case_clause_instr buffer {value; _} =
|
and print_case_clause_instr buffer {value; _} =
|
||||||
let {pattern; arrow; rhs} = value in
|
let {pattern; arrow; rhs} = value in
|
||||||
print_pattern buffer pattern;
|
print_pattern buffer pattern;
|
||||||
print_token buffer arrow "->";
|
print_token buffer arrow "->";
|
||||||
print_instruction buffer rhs
|
print_if_clause buffer rhs
|
||||||
|
|
||||||
and print_assignment buffer {value; _} =
|
and print_assignment buffer {value; _} =
|
||||||
let {lhs; assign; rhs} = value in
|
let {lhs; assign; rhs} = value in
|
||||||
@ -921,7 +921,7 @@ and pp_instruction buffer ~pad:(_,pc as pad) = function
|
|||||||
pp_conditional buffer ~pad value
|
pp_conditional buffer ~pad value
|
||||||
| CaseInstr {value; _} ->
|
| CaseInstr {value; _} ->
|
||||||
pp_node buffer ~pad "CaseInstr";
|
pp_node buffer ~pad "CaseInstr";
|
||||||
pp_case pp_instruction buffer ~pad value
|
pp_case pp_if_clause buffer ~pad value
|
||||||
| Assign {value; _} ->
|
| Assign {value; _} ->
|
||||||
pp_node buffer ~pad "Assign";
|
pp_node buffer ~pad "Assign";
|
||||||
pp_assignment buffer ~pad value
|
pp_assignment buffer ~pad value
|
||||||
|
@ -708,10 +708,19 @@ and simpl_single_instruction : Raw.instruction -> (_ -> expression result) resul
|
|||||||
let (c , loc) = r_split c in
|
let (c , loc) = r_split c in
|
||||||
let%bind expr = simpl_expression c.expr in
|
let%bind expr = simpl_expression c.expr in
|
||||||
let%bind cases =
|
let%bind cases =
|
||||||
let aux (x : Raw.instruction Raw.case_clause Raw.reg) =
|
let aux (x : Raw.if_clause Raw.case_clause Raw.reg) =
|
||||||
let%bind i = simpl_instruction x.value.rhs in
|
let%bind case_clause =
|
||||||
let%bind i = i None in
|
match x.value.rhs with
|
||||||
ok (x.value.pattern, i) in
|
ClauseInstr i ->
|
||||||
|
simpl_single_instruction i
|
||||||
|
| ClauseBlock b ->
|
||||||
|
match b with
|
||||||
|
LongBlock {value; _} ->
|
||||||
|
simpl_block value
|
||||||
|
| ShortBlock {value; _} ->
|
||||||
|
simpl_statements @@ fst value.inside in
|
||||||
|
let%bind case_clause = case_clause None in
|
||||||
|
ok (x.value.pattern, case_clause) in
|
||||||
bind_list
|
bind_list
|
||||||
@@ List.map aux
|
@@ List.map aux
|
||||||
@@ npseq_to_list c.cases.value in
|
@@ npseq_to_list c.cases.value in
|
||||||
|
Loading…
Reference in New Issue
Block a user