Fixed the type for ECall.
This commit is contained in:
parent
bb5dadca55
commit
fdf7704a7c
@ -203,7 +203,7 @@ and expr =
|
|||||||
| ERecord of record_expr
|
| ERecord of record_expr
|
||||||
| EProj of projection reg
|
| EProj of projection reg
|
||||||
| EVar of variable
|
| EVar of variable
|
||||||
| ECall of (expr * expr list) reg
|
| ECall of (expr * expr Utils.nseq) reg
|
||||||
| EBytes of (string * Hex.t) reg
|
| EBytes of (string * Hex.t) reg
|
||||||
| EUnit of the_unit reg
|
| EUnit of the_unit reg
|
||||||
| ETuple of (expr, comma) Utils.nsepseq reg
|
| ETuple of (expr, comma) Utils.nsepseq reg
|
||||||
@ -680,7 +680,7 @@ and print_expr undo = function
|
|||||||
| EString e -> print_string_expr undo e
|
| EString e -> print_string_expr undo e
|
||||||
|
|
||||||
| ECall {value=f,l; _} ->
|
| ECall {value=f,l; _} ->
|
||||||
print_expr undo f; List.iter (print_expr undo) l
|
print_expr undo f; Utils.nseq_iter (print_expr undo) l
|
||||||
| EVar v -> print_var v
|
| EVar v -> print_var v
|
||||||
| EProj p -> print_projection p
|
| EProj p -> print_projection p
|
||||||
| EUnit {value=lpar,rpar; _} ->
|
| EUnit {value=lpar,rpar; _} ->
|
||||||
|
@ -213,7 +213,7 @@ and expr =
|
|||||||
| ERecord of record_expr (* {f1=e1; ... } *)
|
| ERecord of record_expr (* {f1=e1; ... } *)
|
||||||
| EProj of projection reg (* x.y.z M.x.y *)
|
| EProj of projection reg (* x.y.z M.x.y *)
|
||||||
| EVar of variable (* x *)
|
| EVar of variable (* x *)
|
||||||
| ECall of (expr * expr list) reg (* e e1 ... en *)
|
| ECall of (expr * expr Utils.nseq) reg (* e e1 ... en *)
|
||||||
| EBytes of (string * Hex.t) reg (* 0xAEFF *)
|
| EBytes of (string * Hex.t) reg (* 0xAEFF *)
|
||||||
| EUnit of the_unit reg (* () *)
|
| EUnit of the_unit reg (* () *)
|
||||||
| ETuple of (expr, comma) Utils.nsepseq reg (* e1, e2, ... *)
|
| ETuple of (expr, comma) Utils.nsepseq reg (* e1, e2, ... *)
|
||||||
|
@ -375,7 +375,7 @@ match_expr(right_expr):
|
|||||||
let open Region in
|
let open Region in
|
||||||
let cases = Utils.nsepseq_rev $5.value in
|
let cases = Utils.nsepseq_rev $5.value in
|
||||||
let cast = EVar {region=ghost; value="assert_pos"} in
|
let cast = EVar {region=ghost; value="assert_pos"} in
|
||||||
let cast = ECall {region=ghost; value=cast,[$2]} in
|
let cast = ECall {region=ghost; value=cast,($2,[])} in
|
||||||
{kwd_match = $1; expr = cast; opening = With $3;
|
{kwd_match = $1; expr = cast; opening = With $3;
|
||||||
lead_vbar = $4; cases = {$5 with value=cases};
|
lead_vbar = $4; cases = {$5 with value=cases};
|
||||||
closing = End Region.ghost} }
|
closing = End Region.ghost} }
|
||||||
@ -509,7 +509,7 @@ constr_expr:
|
|||||||
constr core_expr? { $1,$2 }
|
constr core_expr? { $1,$2 }
|
||||||
|
|
||||||
call_expr:
|
call_expr:
|
||||||
core_expr core_expr+ { $1,$2 }
|
core_expr nseq(core_expr) { $1,$2 }
|
||||||
|
|
||||||
core_expr:
|
core_expr:
|
||||||
reg(Int) { EArith (Int $1) }
|
reg(Int) { EArith (Int $1) }
|
||||||
|
@ -2,6 +2,7 @@ open Trace
|
|||||||
|
|
||||||
module Pascaligo = Parser_pascaligo
|
module Pascaligo = Parser_pascaligo
|
||||||
module Camligo = Parser_camligo
|
module Camligo = Parser_camligo
|
||||||
|
module Ligodity = Parser_ligodity
|
||||||
|
|
||||||
open Parser_pascaligo
|
open Parser_pascaligo
|
||||||
module AST_Raw = Parser_pascaligo.AST
|
module AST_Raw = Parser_pascaligo.AST
|
||||||
|
@ -129,7 +129,7 @@ let rec simpl_expression :
|
|||||||
let (f, args) = x.value in
|
let (f, args) = x.value in
|
||||||
let%bind f' = simpl_expression f in
|
let%bind f' = simpl_expression f in
|
||||||
let%bind args' = bind_map_list simpl_expression args in
|
let%bind args' = bind_map_list simpl_expression args in
|
||||||
match List.assoc_opt f constants with
|
match List.assoc_opt f' constants with
|
||||||
| None ->
|
| None ->
|
||||||
let%bind arg = simpl_tuple_expression args' in
|
let%bind arg = simpl_tuple_expression args' in
|
||||||
return @@ E_application (make_e_a @@ E_variable f, arg)
|
return @@ E_application (make_e_a @@ E_variable f, arg)
|
||||||
|
Loading…
Reference in New Issue
Block a user