From 2667c109909aada7ad650233700f163fa77fdfe4 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Fri, 1 May 2020 20:32:48 +0200 Subject: [PATCH 01/67] * Renamed [TStringLiteral] as [TString]. * LexToken.mll for CameLIGO: Fixed printing of "Str" into "String". * Added CLI option --pretty to call the pretty-printer from ParserMain. * Use the package Terminal_size to try to determine the width of the terminal where the source is pretty-printed. --- src/passes/1-parser/cameligo/AST.ml | 9 ++++--- src/passes/1-parser/cameligo/LexToken.mll | 17 ++++++------- src/passes/1-parser/cameligo/Parser.mly | 27 ++++++++++----------- src/passes/1-parser/cameligo/ParserLog.ml | 19 +++++++-------- src/passes/1-parser/cameligo/ParserMain.ml | 23 +++++++++++++++--- src/passes/1-parser/cameligo/Tests/pp.mligo | 17 +++++++------ src/passes/1-parser/shared/EvalOpt.ml | 14 ++++++++--- src/passes/1-parser/shared/EvalOpt.mli | 9 +++++-- src/passes/1-parser/shared/ParserUnit.ml | 3 ++- src/passes/1-parser/shared/ParserUnit.mli | 3 ++- 10 files changed, 87 insertions(+), 54 deletions(-) diff --git a/src/passes/1-parser/cameligo/AST.ml b/src/passes/1-parser/cameligo/AST.ml index df94dc783..bb05f4dbe 100644 --- a/src/passes/1-parser/cameligo/AST.ml +++ b/src/passes/1-parser/cameligo/AST.ml @@ -137,11 +137,14 @@ and ast = t and attributes = attribute list and declaration = - Let of (kwd_let * kwd_rec option * let_binding * attributes) reg + Let of let_decl | TypeDecl of type_decl reg (* Non-recursive values *) +and let_decl = + (kwd_let * kwd_rec option * let_binding * attributes) reg + and let_binding = { binders : pattern nseq; lhs_type : (colon * type_expr) option; @@ -166,7 +169,7 @@ and type_expr = | TFun of (type_expr * arrow * type_expr) reg | TPar of type_expr par reg | TVar of variable -| TStringLiteral of Lexer.lexeme reg +| TString of Lexer.lexeme reg and cartesian = (type_expr, times) nsepseq reg @@ -408,7 +411,7 @@ let type_expr_to_region = function | TApp {region; _} | TFun {region; _} | TPar {region; _} -| TStringLiteral {region; _} +| TString {region; _} | TVar {region; _} -> region let list_pattern_to_region = function diff --git a/src/passes/1-parser/cameligo/LexToken.mll b/src/passes/1-parser/cameligo/LexToken.mll index a87150cf7..823acb754 100644 --- a/src/passes/1-parser/cameligo/LexToken.mll +++ b/src/passes/1-parser/cameligo/LexToken.mll @@ -111,7 +111,7 @@ let proj_token = function (* Literals *) String Region.{region; value} -> - region, sprintf "Str %s" value + region, sprintf "String %s" value | Bytes Region.{region; value = s,b} -> region, sprintf "Bytes (\"%s\", \"0x%s\")" s (Hex.show b) @@ -424,21 +424,20 @@ type nat_err = | Non_canonical_zero_nat let mk_nat lexeme region = - match (String.index_opt lexeme 'n') with + match String.index_opt lexeme 'n' with None -> Error Invalid_natural | Some _ -> let z = - Str.(global_replace (regexp "_") "" lexeme) |> - Str.(global_replace (regexp "n") "") |> - Z.of_string in + Str.(global_replace (regexp "_") "" lexeme) |> + Str.(global_replace (regexp "n") "") |> + Z.of_string in if Z.equal z Z.zero && lexeme <> "0n" then Error Non_canonical_zero_nat else Ok (Nat Region.{region; value = lexeme,z}) let mk_mutez lexeme region = - let z = - Str.(global_replace (regexp "_") "" lexeme) |> - Str.(global_replace (regexp "mutez") "") |> - Z.of_string in + let z = Str.(global_replace (regexp "_") "" lexeme) |> + Str.(global_replace (regexp "mutez") "") |> + Z.of_string in if Z.equal z Z.zero && lexeme <> "0mutez" then Error Non_canonical_zero else Ok (Mutez Region.{region; value = lexeme, z}) diff --git a/src/passes/1-parser/cameligo/Parser.mly b/src/passes/1-parser/cameligo/Parser.mly index 12352480d..2aa57aad3 100644 --- a/src/passes/1-parser/cameligo/Parser.mly +++ b/src/passes/1-parser/cameligo/Parser.mly @@ -149,7 +149,7 @@ cartesian: core_type: type_name { TVar $1 } | par(type_expr) { TPar $1 } -| "" { TStringLiteral $1 } +| "" { TString $1 } | module_name "." type_name { let module_name = $1.value in let type_name = $3.value in @@ -456,15 +456,14 @@ case_clause(right_expr): let_expr(right_expr): "let" ioption("rec") let_binding seq(Attr) "in" right_expr { - let kwd_let = $1 - and kwd_rec = $2 - and binding = $3 - and attributes = $4 - and kwd_in = $5 - and body = $6 in - let stop = expr_to_region body in - let region = cover kwd_let stop - and value = {kwd_let; kwd_rec; binding; kwd_in; body; attributes} + let stop = expr_to_region $6 in + let region = cover $1 stop + and value = {kwd_let = $1; + kwd_rec = $2; + binding = $3; + attributes = $4; + kwd_in = $5; + body = $6} in ELetIn {region; value} } fun_expr(right_expr): @@ -475,8 +474,7 @@ fun_expr(right_expr): binders = $2; lhs_type = None; arrow = $3; - body = $4 - } + body = $4} in EFun {region; value} } disj_expr_level: @@ -651,7 +649,8 @@ update_record: field_path_assignment : nsepseq(field_name,".") "=" expr { - let region = cover (nsepseq_to_region (fun x -> x.region) $1) (expr_to_region $3) in + let start = nsepseq_to_region (fun x -> x.region) $1 in + let region = cover start (expr_to_region $3) in let value = {field_path = $1; assignment = $2; field_expr = $3} @@ -675,7 +674,7 @@ sequence: match $2 with None -> None, None | Some (ne_elements, terminator) -> - Some ne_elements, terminator in + Some ne_elements, terminator in let value = {compound; elements; terminator} in {region; value} } diff --git a/src/passes/1-parser/cameligo/ParserLog.ml b/src/passes/1-parser/cameligo/ParserLog.ml index 6ebe07c73..0c89ba266 100644 --- a/src/passes/1-parser/cameligo/ParserLog.ml +++ b/src/passes/1-parser/cameligo/ParserLog.ml @@ -130,11 +130,10 @@ let rec print_tokens state {decl;eof} = print_token state eof "EOF" and print_attributes state attributes = - List.iter ( - fun ({value = attribute; region}) -> - let attribute_formatted = sprintf "[@@%s]" attribute in - print_token state region attribute_formatted - ) attributes + let apply {value = attribute; region} = + let attribute_formatted = sprintf "[@@%s]" attribute in + print_token state region attribute_formatted + in List.iter apply attributes and print_statement state = function Let {value=kwd_let, kwd_rec, let_binding, attributes; _} -> @@ -156,7 +155,7 @@ and print_type_expr state = function | TPar par -> print_type_par state par | TVar var -> print_var state var | TFun t -> print_fun_type state t -| TStringLiteral s -> print_string state s +| TString s -> print_string state s and print_fun_type state {value; _} = let domain, arrow, range = value in @@ -1119,14 +1118,14 @@ and pp_type_expr state = function pp_type_expr (state#pad len rank) in let domain, _, range = value in List.iteri (apply 2) [domain; range] - | TPar {value={inside;_}; region} -> +| TPar {value={inside;_}; region} -> pp_loc_node state "TPar" region; pp_type_expr (state#pad 1 0) inside - | TVar v -> +| TVar v -> pp_node state "TVar"; pp_ident (state#pad 1 0) v - | TStringLiteral s -> - pp_node state "String"; +| TString s -> + pp_node state "TString"; pp_string (state#pad 1 0) s and pp_type_tuple state {value; _} = diff --git a/src/passes/1-parser/cameligo/ParserMain.ml b/src/passes/1-parser/cameligo/ParserMain.ml index a3d13f3cc..60b89c7c3 100644 --- a/src/passes/1-parser/cameligo/ParserMain.ml +++ b/src/passes/1-parser/cameligo/ParserMain.ml @@ -22,7 +22,8 @@ module SubIO = ext : string; mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > let options : options = @@ -36,6 +37,7 @@ module SubIO = method mode = IO.options#mode method cmd = IO.options#cmd method mono = IO.options#mono + method pretty = IO.options#pretty end let make = @@ -48,6 +50,7 @@ module SubIO = ~mode:options#mode ~cmd:options#cmd ~mono:options#mono + ~pretty:options#pretty end module Parser = @@ -72,9 +75,23 @@ module Unit = (* Main *) let wrap = function - Stdlib.Ok _ -> flush_all () + Stdlib.Ok ast -> + if IO.options#pretty then + begin + let doc = Pretty.make ast in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + PPrint.ToChannel.pretty 1.0 width stdout doc; + print_newline () + end; + flush_all () | Error msg -> - (flush_all (); Printf.eprintf "\027[31m%s\027[0m%!" msg.Region.value) + begin + flush_all (); + Printf.eprintf "\027[31m%s\027[0m%!" msg.Region.value + end let () = match IO.options#input with diff --git a/src/passes/1-parser/cameligo/Tests/pp.mligo b/src/passes/1-parser/cameligo/Tests/pp.mligo index d84c270aa..ca4236e8f 100644 --- a/src/passes/1-parser/cameligo/Tests/pp.mligo +++ b/src/passes/1-parser/cameligo/Tests/pp.mligo @@ -1,20 +1,21 @@ -type q = {a: int; b: {c: string}} type r = int list -type s = (int, address) map type t = int -type u = {a: int; b: t * char} +type s = (int,address) map +type w = timestamp * nat -> (string, address) map -> t type v = int * (string * address) -type w = timestamp * nat -> (string, address) map +type u = {a: int; b: t * char} +type q = {a: int; b: {c: string}} type x = A | B of t * int | C of int -> (string -> int) - -let x = 4 -let y : t = (if true then -3 + f x x else 0) - 1 -let f (x: int) y = (x : int) +type y = "foo" +let x (_, (y: char)) = 4 +let y {x=(_,y); z=3} = x let z : (t) = y let w = match f 3 with None -> [] | Some (1::[2;3]) -> [4;5]::[] +let y : t = (if true then -3 + f x x else 0) - 1 +let f (x: int) y = (x : int) let n : nat = 0n let a = A let b = B a diff --git a/src/passes/1-parser/shared/EvalOpt.ml b/src/passes/1-parser/shared/EvalOpt.ml index 8cb22608d..314b04bb9 100644 --- a/src/passes/1-parser/shared/EvalOpt.ml +++ b/src/passes/1-parser/shared/EvalOpt.ml @@ -29,11 +29,12 @@ type options = < mode : [`Byte | `Point]; cmd : command; mono : bool; - expr : bool + expr : bool; + pretty : bool > let make ~input ~libs ~verbose ~offsets ?block - ?line ~ext ~mode ~cmd ~mono ~expr : options = + ?line ~ext ~mode ~cmd ~mono ~expr ~pretty : options = object method input = input method libs = libs @@ -46,6 +47,7 @@ let make ~input ~libs ~verbose ~offsets ?block method cmd = cmd method mono = mono method expr = expr + method pretty = pretty end (* Auxiliary functions *) @@ -77,6 +79,7 @@ let help extension () = print " --bytes Bytes for source locations"; print " --mono Use Menhir monolithic API"; print " --expr Parse an expression"; + print " --pretty Pretty-print the input"; print " --verbose= cli, preproc, ast-tokens, ast (colon-separated)"; print " --version Commit hash on stdout"; print " -h, --help This help"; @@ -100,6 +103,7 @@ and libs = ref [] and verb_str = ref "" and mono = ref false and expr = ref false +and pretty = ref false let split_at_colon = Str.(split (regexp ":")) @@ -121,6 +125,7 @@ let specs extension = noshort, "bytes", set bytes true, None; noshort, "mono", set mono true, None; noshort, "expr", set expr true, None; + noshort, "pretty", set pretty true, None; noshort, "verbose", None, Some add_verbose; 'h', "help", Some (help extension), None; noshort, "version", Some version, None @@ -156,6 +161,7 @@ let print_opt () = printf "bytes = %b\n" !bytes; printf "mono = %b\n" !mono; printf "expr = %b\n" !expr; + printf "pretty = %b\n" !pretty; printf "verbose = %s\n" !verb_str; printf "input = %s\n" (string_of quote !input); printf "libs = %s\n" (string_of_path !libs) @@ -185,6 +191,7 @@ let check ?block ?line ~ext = and mono = !mono and expr = !expr and verbose = !verbose + and pretty = !pretty and libs = !libs in let () = @@ -199,6 +206,7 @@ let check ?block ?line ~ext = printf "mode = %s\n" (if mode = `Byte then "`Byte" else "`Point"); printf "mono = %b\n" mono; printf "expr = %b\n" expr; + printf "pretty = %b\n" pretty; printf "verbose = %s\n" !verb_str; printf "input = %s\n" (string_of quote input); printf "libs = %s\n" (string_of_path libs) @@ -214,7 +222,7 @@ let check ?block ?line ~ext = | _ -> abort "Choose one of -q, -c, -u, -t." in make ~input ~libs ~verbose ~offsets ~mode - ~cmd ~mono ~expr ?block ?line ~ext + ~cmd ~mono ~expr ?block ?line ~ext ~pretty (* Parsing the command-line options *) diff --git a/src/passes/1-parser/shared/EvalOpt.mli b/src/passes/1-parser/shared/EvalOpt.mli index 2e7e7f3cd..098726fba 100644 --- a/src/passes/1-parser/shared/EvalOpt.mli +++ b/src/passes/1-parser/shared/EvalOpt.mli @@ -47,7 +47,10 @@ type command = Quiet | Copy | Units | Tokens {li If the field [expr] is [true], then the parser for expressions is used, otherwise a full-fledged contract is expected.} -} *) + + {li If the field [pretty] is [true], then the source is + pretty-printed on the standard out.} + } *) module SSet : Set.S with type elt = string and type t = Set.Make(String).t @@ -67,7 +70,8 @@ type options = < mode : [`Byte | `Point]; cmd : command; mono : bool; - expr : bool + expr : bool; + pretty : bool > val make : @@ -82,6 +86,7 @@ val make : cmd:command -> mono:bool -> expr:bool -> + pretty:bool -> options (** Parsing the command-line options on stdin. *) diff --git a/src/passes/1-parser/shared/ParserUnit.ml b/src/passes/1-parser/shared/ParserUnit.ml index dfaa888c7..0e7f4eb88 100644 --- a/src/passes/1-parser/shared/ParserUnit.ml +++ b/src/passes/1-parser/shared/ParserUnit.ml @@ -15,7 +15,8 @@ module type SubIO = ext : string; mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > val options : options diff --git a/src/passes/1-parser/shared/ParserUnit.mli b/src/passes/1-parser/shared/ParserUnit.mli index a9456ab8c..a2199ec4e 100644 --- a/src/passes/1-parser/shared/ParserUnit.mli +++ b/src/passes/1-parser/shared/ParserUnit.mli @@ -17,7 +17,8 @@ module type SubIO = ext : string; mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > val options : options From 0aa69ed35b29845c6d044768c98c75571561d093 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Sun, 3 May 2020 10:40:11 +0200 Subject: [PATCH 02/67] Fixed last commit (renaming of TStringLiteral, adding --pretty) --- src/passes/1-parser/cameligo.ml | 5 +- src/passes/1-parser/cameligo/Pretty.ml | 187 ++++++++++++++++++ src/passes/1-parser/pascaligo.ml | 5 +- src/passes/1-parser/pascaligo/AST.ml | 4 +- src/passes/1-parser/pascaligo/Parser.mly | 6 +- src/passes/1-parser/pascaligo/ParserLog.ml | 10 +- src/passes/1-parser/reasonligo.ml | 5 +- src/passes/1-parser/reasonligo/Parser.mly | 10 +- .../2-concrete_to_imperative/cameligo.ml | 6 +- .../2-concrete_to_imperative/pascaligo.ml | 30 +-- 10 files changed, 232 insertions(+), 36 deletions(-) create mode 100644 src/passes/1-parser/cameligo/Pretty.ml diff --git a/src/passes/1-parser/cameligo.ml b/src/passes/1-parser/cameligo.ml index 79093af97..1413108a8 100644 --- a/src/passes/1-parser/cameligo.ml +++ b/src/passes/1-parser/cameligo.ml @@ -19,7 +19,8 @@ module SubIO = ext : string; (* ".mligo" *) mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > let options : options = @@ -34,6 +35,7 @@ module SubIO = method mode = `Point method cmd = EvalOpt.Quiet method mono = false + method pretty = false end let make = @@ -46,6 +48,7 @@ module SubIO = ~mode:options#mode ~cmd:options#cmd ~mono:options#mono + ~pretty:options#mono end module Parser = diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml new file mode 100644 index 000000000..02aa37da8 --- /dev/null +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -0,0 +1,187 @@ +[@@@warning "-42"] + +open AST +module Region = Simple_utils.Region +open! Region +open! PPrint + +let paragraph (s : string) = flow (break 1) (words s) + +let rec make ast = + let app decl = group (pp_declaration decl) in + separate_map hardline app (Utils.nseq_to_list ast.decl) + +and pp_declaration = function + Let decl -> pp_let_decl decl +| TypeDecl decl -> pp_type_decl decl + +and pp_let_decl Region.{value; _} = + let _, rec_opt, binding, attr = value in + let rec_str = + match rec_opt with + None -> "" + | Some _ -> " rec" in + string "let" ^^ string rec_str + ^/^ pp_let_binding binding ^/^ pp_attributes attr + +and pp_attributes attr = + let sep = string ";" ^^ break 1 in + let make s = string "[@@" ^^ string s.value ^^ string "]" + in separate_map sep make attr + +and pp_string Region.{value; _} = string value + +and pp_let_binding (binding : let_binding) = + let {binders; lhs_type; let_rhs; _} = binding in + let patterns = Utils.nseq_to_list binders in + let patterns = flow (break 1) (List.map pp_pattern patterns) in + let lhs_type = + match lhs_type with + None -> string "" + | Some (_, t_expr) -> string " :" ^/^ pp_type_expr t_expr in + let let_rhs = pp_expr let_rhs in + patterns ^^ lhs_type ^^ string " =" ^/^ let_rhs + +and pp_pattern = function + PConstr p -> pp_pconstr p +| PUnit _ -> string "()" +| PFalse _ -> string "false" +| PTrue _ -> string "true" +| PVar v -> pp_string v +| PInt i -> pp_int i +| PNat n -> pp_nat n +| PBytes b -> pp_bytes b +| PString s -> pp_string s +| PWild _ -> string "_" +| PList l -> pp_plist l +| PTuple t -> pp_ptuple t +| PPar p -> pp_ppar p +| PRecord r -> pp_precord r +| PTyped t -> pp_ptyped t + +and pp_pconstr = function + PNone _ -> string "None" +| PSomeApp p -> pp_some p +| PConstrApp a -> pp_c_app a + +and pp_c_app Region.{value; _} = + match value with + constr, None -> pp_string constr + | constr, Some pat -> pp_string constr ^/^ pp_pattern pat + +and pp_some Region.{value; _} = + string "Some" ^/^ pp_pattern (snd value) + +and pp_int Region.{value; _} = string (fst value) +and pp_nat Region.{value; _} = string (fst value) +and pp_bytes Region.{value; _} = string (fst value) + +and pp_ppar Region.{value; _} = + let {lpar; inside; rpar} = value in + string "(" ^^ pp_pattern inside ^^ string ")" + +and pp_plist = function + PListComp cmp -> pp_list_comp cmp +| PCons cons -> pp_cons cons + +and pp_list_comp Region.{value; _} = + let items = Utils.sepseq_to_list value.elements in + let sep = string ";" ^^ break 1 in + let items = separate_map sep pp_pattern items + in string "[" ^^ items ^^ string "]" + +and pp_cons Region.{value; _} = + let patt1, _, patt2 = value in + pp_pattern patt1 ^^ string " ::" ^/^ pp_pattern patt2 + +and pp_ptuple Region.{value; _} = + let cmp = Utils.nsepseq_to_list value in + let sep = string "," ^^ break 1 in + separate_map sep pp_pattern cmp + +and pp_precord Region.{value; _} = + let fields = value.ne_elements in + let fields = Utils.nsepseq_to_list fields in + let sep = string ";" ^^ break 1 in + let fields = separate_map sep pp_field_pattern fields + in string "{" ^^ fields ^^ string "}" + +and pp_field_pattern Region.{value; _} = + let {field_name; pattern; _} = value in + pp_string field_name ^^ string " =" ^/^ pp_pattern pattern + +and pp_ptyped Region.{value; _} = + let {pattern; type_expr; _} = value in + pp_pattern pattern ^^ string " :" ^/^ pp_type_expr type_expr + +and pp_type_decl decl = + let {name; type_expr; _} = decl.value in + string "type" ^/^ string name.value + ^/^ string "=" ^/^ pp_type_expr type_expr + +and pp_expr expr = + string "TODO:pp_expr" + +and pp_type_expr = function + TProd cartesian -> pp_cartesian cartesian +| TSum sum -> pp_variants sum +| TRecord fields -> pp_fields fields +| TApp t_app -> pp_type_app t_app +| TFun fun_type -> pp_fun_type fun_type +| TPar par -> pp_type_par par +| TVar var -> pp_string var +| TString s -> pp_string s + +and pp_cartesian Region.{value; _} = + let cmp = Utils.nsepseq_to_list value in + let sep = string " *" ^^ break 1 in + separate_map sep pp_type_expr cmp + +and pp_variants Region.{value; _} = + let variants = Utils.nsepseq_to_list value + and sep = string " |" ^^ break 1 in + separate_map sep pp_variant variants + +and pp_variant Region.{value; _} = + let {constr; arg} = value in + match arg with + None -> pp_string constr + | Some (_, t_expr) -> + pp_string constr ^^ string " of" ^/^ pp_type_expr t_expr + +and pp_fields Region.{value; _} = + let fields = value.ne_elements in + let fields = Utils.nsepseq_to_list fields in + let sep = string ";" ^^ break 1 in + let fields = separate_map sep pp_field_decl fields + in string "{" ^^ fields ^^ string "}" + +and pp_field_decl Region.{value; _} = + let {field_name; field_type; _} = value in + let name = pp_string field_name in + let t_expr = pp_type_expr field_type + in name ^^ string " :" ^/^ t_expr + +and pp_type_app Region.{value; _} = + let ctor, tuple = value + in pp_type_tuple tuple ^/^ pp_type_constr ctor + +and pp_type_tuple Region.{value; _} = + let {lpar; inside; rpar} = value in + match inside with + t_expr, [] -> pp_type_expr t_expr + | seq -> let sep = string "," ^^ break 1 in + let lst = Utils.nsepseq_to_list seq in + let cmp = separate_map sep pp_type_expr lst + in string "(" ^^ cmp ^^ string ")" + +and pp_type_constr ctor = + string ctor.value + +and pp_fun_type Region.{value; _} = + let lhs, _, rhs = value in + pp_type_expr lhs ^^ string " ->" ^/^ pp_type_expr rhs + +and pp_type_par Region.{value; _} = + let {lpar; inside; rpar} = value in + string "(" ^^ pp_type_expr inside ^^ string ")" diff --git a/src/passes/1-parser/pascaligo.ml b/src/passes/1-parser/pascaligo.ml index 02b8f462e..b2c6ab9f4 100644 --- a/src/passes/1-parser/pascaligo.ml +++ b/src/passes/1-parser/pascaligo.ml @@ -19,7 +19,8 @@ module SubIO = ext : string; (* ".ligo" *) mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > let options : options = @@ -34,6 +35,7 @@ module SubIO = method mode = `Point method cmd = EvalOpt.Quiet method mono = false + method pretty = false end let make = @@ -46,6 +48,7 @@ module SubIO = ~mode:options#mode ~cmd:options#cmd ~mono:options#mono + ~pretty:options#pretty end module Parser = diff --git a/src/passes/1-parser/pascaligo/AST.ml b/src/passes/1-parser/pascaligo/AST.ml index fa22a7b25..070fbde68 100644 --- a/src/passes/1-parser/pascaligo/AST.ml +++ b/src/passes/1-parser/pascaligo/AST.ml @@ -185,7 +185,7 @@ and type_expr = | TFun of (type_expr * arrow * type_expr) reg | TPar of type_expr par reg | TVar of variable -| TStringLiteral of Lexer.lexeme reg +| TString of Lexer.lexeme reg and cartesian = (type_expr, times) nsepseq reg @@ -659,7 +659,7 @@ let type_expr_to_region = function | TApp {region; _} | TFun {region; _} | TPar {region; _} -| TStringLiteral {region; _} +| TString {region; _} | TVar {region; _} -> region let rec expr_to_region = function diff --git a/src/passes/1-parser/pascaligo/Parser.mly b/src/passes/1-parser/pascaligo/Parser.mly index 21d9420b7..4ac48d253 100644 --- a/src/passes/1-parser/pascaligo/Parser.mly +++ b/src/passes/1-parser/pascaligo/Parser.mly @@ -160,9 +160,9 @@ cartesian: in TProd {region; value} } core_type: - type_name { TVar $1 } -| "" { TStringLiteral $1 } -| par(type_expr) { TPar $1 } + type_name { TVar $1 } +| "" { TString $1 } +| par(type_expr) { TPar $1 } | type_name type_tuple { let region = cover $1.region $2.region in TApp {region; value = $1,$2} diff --git a/src/passes/1-parser/pascaligo/ParserLog.ml b/src/passes/1-parser/pascaligo/ParserLog.ml index 6347b07f7..c319dc8b0 100644 --- a/src/passes/1-parser/pascaligo/ParserLog.ml +++ b/src/passes/1-parser/pascaligo/ParserLog.ml @@ -153,7 +153,7 @@ and print_type_expr state = function | TFun type_fun -> print_type_fun state type_fun | TPar par_type -> print_par_type state par_type | TVar type_var -> print_var state type_var -| TStringLiteral s -> print_string state s +| TString str -> print_string state str and print_cartesian state {value; _} = print_nsepseq state "*" print_type_expr value @@ -398,9 +398,9 @@ and print_for_int state ({value; _} : for_int reg) = print_var_assign state assign; print_token state kwd_to "to"; print_expr state bound; - match kwd_step with + match kwd_step with | None -> (); - | Some kwd_step -> + | Some kwd_step -> print_token state kwd_step "step"; match step with | None -> (); @@ -941,8 +941,8 @@ and pp_type_expr state = function field_decl.value in let fields = Utils.nsepseq_to_list value.ne_elements in List.iteri (List.length fields |> apply) fields -| TStringLiteral s -> - pp_node state "String"; +| TString s -> + pp_node state "TString"; pp_string (state#pad 1 0) s and pp_cartesian state {value; _} = diff --git a/src/passes/1-parser/reasonligo.ml b/src/passes/1-parser/reasonligo.ml index 1af70c927..d8cc66424 100644 --- a/src/passes/1-parser/reasonligo.ml +++ b/src/passes/1-parser/reasonligo.ml @@ -22,7 +22,8 @@ module SubIO = ext : string; (* ".religo" *) mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > let options : options = @@ -37,6 +38,7 @@ module SubIO = method mode = `Point method cmd = EvalOpt.Quiet method mono = false + method pretty = false end let make = @@ -49,6 +51,7 @@ module SubIO = ~mode:options#mode ~cmd:options#cmd ~mono:options#mono + ~pretty:options#pretty end module Parser = diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 702094ecd..65753b004 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -205,9 +205,9 @@ type_args: | fun_type { $1, [] } core_type: - type_name { TVar $1 } -| "" { TStringLiteral $1 } -| par(fun_type) { TPar $1 } + type_name { TVar $1 } +| "" { TString $1 } +| par(fun_type) { TPar $1 } | module_name "." type_name { let module_name = $1.value in let type_name = $3.value in @@ -938,10 +938,10 @@ sequence_or_record_in: field_name = $1; assignment = ghost; field_expr = EVar $1 } - in + in let field_name = {$1 with value} in let (comma, elts) = $2 in - let r_elts = Utils.nsepseq_cons field_name comma elts in + let r_elts = Utils.nsepseq_cons field_name comma elts in PaRecord {r_elts; r_terminator = None} } diff --git a/src/passes/2-concrete_to_imperative/cameligo.ml b/src/passes/2-concrete_to_imperative/cameligo.ml index 33d8cca21..a9543da3c 100644 --- a/src/passes/2-concrete_to_imperative/cameligo.ml +++ b/src/passes/2-concrete_to_imperative/cameligo.ml @@ -169,7 +169,7 @@ open Operators.Concrete_to_imperative.Cameligo let r_split = Location.r_split let get_t_string_singleton_opt = function - | Raw.TStringLiteral s -> Some (String.(sub s.value 1 ((length s.value)-2))) + | Raw.TString s -> Some (String.(sub s.value 1 (length s.value - 2))) | _ -> None let rec pattern_to_var : Raw.pattern -> _ = fun p -> @@ -249,7 +249,7 @@ and compile_type_expression : Raw.type_expr -> type_expression result = fun te - let (x,loc) = r_split x in let (name, tuple) = x in ( match name.value with - | "michelson_or" -> + | "michelson_or" -> let lst = npseq_to_list tuple.value.inside in (match lst with | [a ; b ; c ; d ] -> ( @@ -318,7 +318,7 @@ and compile_type_expression : Raw.type_expr -> type_expression result = fun te - @@ npseq_to_list s in let m = List.fold_left (fun m (x, y) -> CMap.add (Constructor x) y m) CMap.empty lst in ok @@ make_t ~loc @@ T_sum m - | TStringLiteral _s -> simple_fail "we don't support singleton string type" + | TString _s -> simple_fail "we don't support singleton string type" and compile_list_type_expression (lst:Raw.type_expr list) : type_expression result = match lst with diff --git a/src/passes/2-concrete_to_imperative/pascaligo.ml b/src/passes/2-concrete_to_imperative/pascaligo.ml index 4ebef1559..d76910c18 100644 --- a/src/passes/2-concrete_to_imperative/pascaligo.ml +++ b/src/passes/2-concrete_to_imperative/pascaligo.ml @@ -152,7 +152,7 @@ let return_statement expr = ok @@ fun expr'_opt -> | Some expr' -> ok @@ e_sequence expr expr' let get_t_string_singleton_opt = function - | Raw.TStringLiteral s -> Some (String.(sub s.value 1 ((length s.value)-2))) + | Raw.TString s -> Some (String.(sub s.value 1 (length s.value -2))) | _ -> None @@ -176,7 +176,7 @@ let rec compile_type_expression (t:Raw.type_expr) : type_expression result = let (x, loc) = r_split x in let (name, tuple) = x in (match name.value with - | "michelson_or" -> + | "michelson_or" -> let lst = npseq_to_list tuple.value.inside in (match lst with | [a ; b ; c ; d ] -> ( @@ -248,7 +248,7 @@ let rec compile_type_expression (t:Raw.type_expr) : type_expression result = @@ npseq_to_list s in let m = List.fold_left (fun m (x, y) -> CMap.add (Constructor x) y m) CMap.empty lst in ok @@ make_t ~loc @@ T_sum m - | TStringLiteral _s -> simple_fail "we don't support singleton string type" + | TString _s -> simple_fail "we don't support singleton string type" and compile_list_type_expression (lst:Raw.type_expr list) : type_expression result = match lst with @@ -461,7 +461,7 @@ and compile_update = fun (u:Raw.update Region.reg) -> let (name, path) = compile_path u.record in let record = match path with | [] -> e_variable (Var.of_name name) - | _ -> e_accessor_list (e_variable (Var.of_name name)) path in + | _ -> e_accessor_list (e_variable (Var.of_name name)) path in let updates = u.updates.value.ne_elements in let%bind updates' = let aux (f:Raw.field_path_assign Raw.reg) = @@ -471,13 +471,13 @@ and compile_update = fun (u:Raw.update Region.reg) -> in bind_map_list aux @@ npseq_to_list updates in - let aux ur (path, expr) = + let aux ur (path, expr) = let rec aux record = function | [] -> failwith "error in parsing" | hd :: [] -> ok @@ e_record_update ~loc record hd expr - | hd :: tl -> + | hd :: tl -> let%bind expr = (aux (e_record_accessor ~loc record hd) tl) in - ok @@ e_record_update ~loc record hd expr + ok @@ e_record_update ~loc record hd expr in aux ur path in bind_fold_list aux record updates' @@ -645,11 +645,11 @@ and compile_fun_decl : let binder = Var.of_name binder in let fun_name = Var.of_name fun_name.value in let fun_type = t_function input_type output_type in - let expression : expression = + let expression : expression = e_lambda ~loc binder (Some input_type)(Some output_type) result in let%bind expression = match kwd_recursive with None -> ok @@ expression | - Some _ -> ok @@ e_recursive ~loc fun_name fun_type + Some _ -> ok @@ e_recursive ~loc fun_name fun_type @@ {binder;input_type=Some input_type; output_type= Some output_type; result} in ok ((fun_name, Some fun_type), expression) @@ -680,11 +680,11 @@ and compile_fun_decl : bind_fold_right_list aux result body in let fun_name = Var.of_name fun_name.value in let fun_type = t_function input_type output_type in - let expression : expression = + let expression : expression = e_lambda ~loc binder (Some input_type)(Some output_type) result in let%bind expression = match kwd_recursive with None -> ok @@ expression | - Some _ -> ok @@ e_recursive ~loc fun_name fun_type + Some _ -> ok @@ e_recursive ~loc fun_name fun_type @@ {binder;input_type=Some input_type; output_type= Some output_type; result} in ok ((fun_name, Some fun_type), expression) @@ -713,7 +713,7 @@ and compile_fun_expression : let fun_type = t_function input_type output_type in let expression = match kwd_recursive with | None -> e_lambda ~loc binder (Some input_type)(Some output_type) result - | Some _ -> e_recursive ~loc binder fun_type + | Some _ -> e_recursive ~loc binder fun_type @@ {binder;input_type=Some input_type; output_type= Some output_type; result} in ok (Some fun_type , expression) @@ -744,7 +744,7 @@ and compile_fun_expression : let fun_type = t_function input_type output_type in let expression = match kwd_recursive with | None -> e_lambda ~loc binder (Some input_type)(Some output_type) result - | Some _ -> e_recursive ~loc binder fun_type + | Some _ -> e_recursive ~loc binder fun_type @@ {binder;input_type=Some input_type; output_type= Some output_type; result} in ok (Some fun_type , expression) @@ -857,7 +857,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res compile_block value | ShortBlock {value; _} -> compile_statements @@ fst value.inside in - + let%bind match_true = match_true None in let%bind match_false = match_false None in return_statement @@ e_cond ~loc expr match_true match_false @@ -943,7 +943,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res (fun (key, value) map -> (e_map_add key value map)) inj (e_accessor_list ~loc (e_variable (Var.of_name name)) access_path) - in + in return_statement @@ e_ez_assign ~loc name access_path assigns ) | SetPatch patch -> ( From 66aea1b8d15fcff1b4db2612920a21ab85005dae Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 4 May 2020 12:34:42 +0200 Subject: [PATCH 03/67] Added more cases. --- src/passes/1-parser/cameligo/Pretty.ml | 57 +++++++++++++++++++++----- 1 file changed, 47 insertions(+), 10 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index 02aa37da8..5e634ab6b 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -119,18 +119,55 @@ and pp_type_decl decl = string "type" ^/^ string name.value ^/^ string "=" ^/^ pp_type_expr type_expr -and pp_expr expr = - string "TODO:pp_expr" +and pp_expr = function + ECase e -> pp_case_expr e +| ECond e -> pp_cond_expr e +| EAnnot e -> pp_annot_expr e +| ELogic e -> pp_logic_expr e +| EArith e -> pp_arith_expr e +| EString e -> pp_string_expr e +| EList e -> pp_list_expr e +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record_expr e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EVar v -> pp_string v +| ECall e -> pp_call_expr e +| EBytes e -> pp_bytes e +| EUnit _ -> string "()" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par_expr e +| ELetIn e -> pp_let_in e +| EFun e -> pp_fun e +| ESeq e -> pp_seq e + +and pp_case_expr _ = string "TODO:pp_case_expr" +and pp_cond_expr _ = string "TODO:pp_cond_expr" +and pp_annot_expr _ = string "TODO:pp_annot_expr" +and pp_logic_expr _ = string "TODO:pp_logic_expr" +and pp_arith_expr _ = string "TODO:pp_arith_expr" +and pp_string_expr _ = string "TODO:pp_string_expr" +and pp_list_expr _ = string "TODO:pp_list_expr" +and pp_constr_expr _ = string "TODO:pp_constr_expr" +and pp_record_expr _ = string "TODO:pp_record_expr" +and pp_projection _ = string "TODO:pp_projection" +and pp_update _ = string "TODO:pp_update" +and pp_call_expr _ = string "TODO:pp_call_expr" +and pp_tuple_expr _ = string "TODO:pp_tuple_expr" +and pp_par_expr _ = string "TODO:pp_par_expr" +and pp_let_in _ = string "TODO:pp_let_in" +and pp_fun _ = string "TODO:pp_fun_expr" +and pp_seq _ = string "TODO:pp_seq" and pp_type_expr = function - TProd cartesian -> pp_cartesian cartesian -| TSum sum -> pp_variants sum -| TRecord fields -> pp_fields fields -| TApp t_app -> pp_type_app t_app -| TFun fun_type -> pp_fun_type fun_type -| TPar par -> pp_type_par par -| TVar var -> pp_string var -| TString s -> pp_string s + TProd t -> pp_cartesian t +| TSum t -> pp_variants t +| TRecord t -> pp_fields t +| TApp t -> pp_type_app t +| TFun t -> pp_fun_type t +| TPar t -> pp_type_par t +| TVar t -> pp_string t +| TString s -> pp_string s and pp_cartesian Region.{value; _} = let cmp = Utils.nsepseq_to_list value in From a1c5b471fe8dbcd3ffd490f37e5934a03b08f8ad Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 7 May 2020 11:11:16 +0200 Subject: [PATCH 04/67] More cases added. --- src/passes/1-parser/cameligo/Pretty.ml | 116 ++++++++++++++++++++++--- 1 file changed, 104 insertions(+), 12 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index 5e634ab6b..9d44afdcc 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -72,9 +72,14 @@ and pp_c_app Region.{value; _} = and pp_some Region.{value; _} = string "Some" ^/^ pp_pattern (snd value) -and pp_int Region.{value; _} = string (fst value) -and pp_nat Region.{value; _} = string (fst value) -and pp_bytes Region.{value; _} = string (fst value) +and pp_int Region.{value; _} = + string (Z.to_string (snd value)) + +and pp_nat Region.{value; _} = + string (Z.to_string (snd value) ^ "n") + +and pp_bytes Region.{value; _} = + string ("0x" ^ Hex.show (snd value)) and pp_ppar Region.{value; _} = let {lpar; inside; rpar} = value in @@ -141,13 +146,100 @@ and pp_expr = function | EFun e -> pp_fun e | ESeq e -> pp_seq e -and pp_case_expr _ = string "TODO:pp_case_expr" -and pp_cond_expr _ = string "TODO:pp_cond_expr" -and pp_annot_expr _ = string "TODO:pp_annot_expr" -and pp_logic_expr _ = string "TODO:pp_logic_expr" -and pp_arith_expr _ = string "TODO:pp_arith_expr" -and pp_string_expr _ = string "TODO:pp_string_expr" -and pp_list_expr _ = string "TODO:pp_list_expr" +and pp_case_expr Region.{value; _} = + let {expr; cases; _} = value in + string "match " ^^ pp_expr expr ^/^ string "with" ^/^ pp_cases cases + +and pp_cases Region.{value; _} = + let cases = Utils.nsepseq_to_list value + and sep = break 1 ^^ string "| " + in separate_map sep pp_clause cases + +and pp_clause Region.{value; _} = + let {pattern; rhs; _} = value in + pp_pattern pattern ^^ string " ->" ^/^ pp_expr rhs + +and pp_cond_expr Region.{value; _} = + let {test; ifso; kwd_else; ifnot; _} = value in + let if_then = string "if " ^^ pp_expr test + ^/^ string "then " ^^ pp_expr ifso in + if kwd_else#is_ghost then if_then + else if_then ^/^ string "else " ^^ pp_expr ifnot + +and pp_annot_expr Region.{value; _} = + let expr, _, type_expr = value.inside in + string "(" ^^ pp_expr expr ^^ string " :" + ^/^ pp_type_expr type_expr ^^ string ")" + +and pp_logic_expr = function + BoolExpr e -> pp_bool_expr e +| CompExpr e -> pp_comp_expr e + +and pp_bool_expr = function + Or e -> pp_bin_op "||" e +| And e -> pp_bin_op "&&" e +| Not e -> pp_un_op "not" e +| True _ -> string "true" +| False _ -> string "false" + +and pp_bin_op op Region.{value; _} = + let {arg1; arg2; _} = value + in pp_expr arg1 ^/^ string (op ^ " ") ^^ pp_expr arg2 + +and pp_un_op op Region.{value; _} = + string (op ^ " ") ^^ pp_expr value.arg + +and pp_comp_expr = function + Lt e -> pp_bin_op "<" e +| Leq e -> pp_bin_op "<=" e +| Gt e -> pp_bin_op ">" e +| Geq e -> pp_bin_op ">=" e +| Equal e -> pp_bin_op "=" e +| Neq e -> pp_bin_op "<>" e + +and pp_arith_expr = function + Add e -> pp_bin_op "+" e +| Sub e -> pp_bin_op "-" e +| Mult e -> pp_bin_op "*" e +| Div e -> pp_bin_op "/" e +| Mod e -> pp_bin_op "mod" e +| Neg e -> pp_un_op "-" e +| Int e -> pp_int e +| Nat e -> pp_nat e +| Mutez e -> pp_mutez e + +and pp_mutez Region.{value; _} = + string (Z.to_string (snd value) ^ "mutez") + +and pp_string_expr = function + Cat e -> pp_bin_op "^" e +| String e -> pp_string e + +and pp_list_expr = function + ECons e -> pp_bin_op "::" e +| EListComp e -> pp_injection pp_expr e + +and pp_injection printer Region.{value; _} = + let {compound; elements; _} = value in + let elements = pp_sepseq ";" elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ elements ^^ string closing + +and pp_compound = function + BeginEnd (start, _) -> + if start#is_ghost then None + else Some ("begin", "end") +| Braces _ -> Some ("{","}") +| Brackets _ -> Some ("[","]") + +and pp_sepseq sep elements = + let exprs = Utils.sepseq_to_list elements + and sep = string ";" ^/^ break 1 + in separate_map sep pp_expr exprs + + and pp_constr_expr _ = string "TODO:pp_constr_expr" and pp_record_expr _ = string "TODO:pp_record_expr" and pp_projection _ = string "TODO:pp_projection" @@ -176,7 +268,7 @@ and pp_cartesian Region.{value; _} = and pp_variants Region.{value; _} = let variants = Utils.nsepseq_to_list value - and sep = string " |" ^^ break 1 in + and sep = break 1 ^^ string "| " in separate_map sep pp_variant variants and pp_variant Region.{value; _} = @@ -184,7 +276,7 @@ and pp_variant Region.{value; _} = match arg with None -> pp_string constr | Some (_, t_expr) -> - pp_string constr ^^ string " of" ^/^ pp_type_expr t_expr + pp_string constr ^^ string " of" ^/^ pp_type_expr t_expr and pp_fields Region.{value; _} = let fields = value.ne_elements in From f1c444da227ff522615c1644c71d3fd2bbf5b56b Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 7 May 2020 20:26:47 +0200 Subject: [PATCH 05/67] A bit more nodes added. --- src/passes/1-parser/cameligo/Pretty.ml | 61 +++++++++++++++++++++----- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index 9d44afdcc..ac6ce07cc 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -61,15 +61,15 @@ and pp_pattern = function and pp_pconstr = function PNone _ -> string "None" -| PSomeApp p -> pp_some p -| PConstrApp a -> pp_c_app a +| PSomeApp p -> pp_patt_some p +| PConstrApp a -> pp_patt_c_app a -and pp_c_app Region.{value; _} = +and pp_patt_c_app Region.{value; _} = match value with constr, None -> pp_string constr - | constr, Some pat -> pp_string constr ^/^ pp_pattern pat + | constr, Some pat -> pp_string constr ^^ pp_pattern pat -and pp_some Region.{value; _} = +and pp_patt_some Region.{value; _} = string "Some" ^/^ pp_pattern (snd value) and pp_int Region.{value; _} = @@ -220,12 +220,16 @@ and pp_list_expr = function | EListComp e -> pp_injection pp_expr e and pp_injection printer Region.{value; _} = - let {compound; elements; _} = value in + let {compound; elements; terminator} = value in let elements = pp_sepseq ";" elements in - match pp_compound compound with - None -> elements - | Some (opening, closing) -> - string opening ^^ elements ^^ string closing + let doc = + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ elements ^^ string closing + in match terminator with + None -> doc + | Some _ -> doc ^^ string ";" and pp_compound = function BeginEnd (start, _) -> @@ -239,9 +243,42 @@ and pp_sepseq sep elements = and sep = string ";" ^/^ break 1 in separate_map sep pp_expr exprs +and pp_constr_expr = function + ENone _ -> string "None" +| ESomeApp a -> pp_some a +| EConstrApp a -> pp_constr_app a + +and pp_some Region.{value=_, e; _} = string "Some" ^^ pp_expr e + +and pp_constr_app Region.{value; _} = + let constr, arg = value in + let constr = string constr.value in + match arg with + None -> constr + | Some e -> constr ^^ pp_expr e + +and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj + +and pp_field_assign e = + string "TODO:pp_field_assign" + +and pp_ne_injection printer Region.{value; _} = + let {compound; ne_elements; terminator} = value in + let elements = pp_nsepseq printer ";" ne_elements in + let doc = + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ elements ^^ string closing + in match terminator with + None -> doc + | Some _ -> doc ^^ string ";" + +and pp_nsepseq printer sep elements = + let elems = Utils.nsepseq_to_list elements + and sep = string ";" ^/^ break 1 + in separate_map sep printer elems -and pp_constr_expr _ = string "TODO:pp_constr_expr" -and pp_record_expr _ = string "TODO:pp_record_expr" and pp_projection _ = string "TODO:pp_projection" and pp_update _ = string "TODO:pp_update" and pp_call_expr _ = string "TODO:pp_call_expr" From 546856e14a76c7b06202ed6edc7d3830f77fc729 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Fri, 8 May 2020 19:01:51 +0200 Subject: [PATCH 06/67] Fixed ParserLog. First complete version of the pretty-printer. --- src/passes/1-parser/cameligo/AST.ml | 9 +- src/passes/1-parser/cameligo/ParserLog.ml | 4 +- src/passes/1-parser/cameligo/Pretty.ml | 225 ++++++++++++++-------- 3 files changed, 151 insertions(+), 87 deletions(-) diff --git a/src/passes/1-parser/cameligo/AST.ml b/src/passes/1-parser/cameligo/AST.ml index bb05f4dbe..35d60056a 100644 --- a/src/passes/1-parser/cameligo/AST.ml +++ b/src/passes/1-parser/cameligo/AST.ml @@ -337,11 +337,11 @@ and field_assign = { } and update = { - lbrace : lbrace; - record : path; + lbrace : lbrace; + record : path; kwd_with : kwd_with; - updates : field_path_assign reg ne_injection reg; - rbrace : rbrace; + updates : field_path_assign reg ne_injection reg; + rbrace : rbrace } and field_path_assign = { @@ -349,6 +349,7 @@ and field_path_assign = { assignment : equal; field_expr : expr } + and path = Name of variable | Path of projection reg diff --git a/src/passes/1-parser/cameligo/ParserLog.ml b/src/passes/1-parser/cameligo/ParserLog.ml index 0c89ba266..2a6535aa6 100644 --- a/src/passes/1-parser/cameligo/ParserLog.ml +++ b/src/passes/1-parser/cameligo/ParserLog.ml @@ -974,11 +974,11 @@ and pp_constr_app_expr state (constr, expr_opt) = and pp_list_expr state = function ECons {value; region} -> - pp_loc_node state "Cons" region; + pp_loc_node state "ECons" region; pp_expr (state#pad 2 0) value.arg1; pp_expr (state#pad 2 1) value.arg2 | EListComp {value; region} -> - pp_loc_node state "List" region; + pp_loc_node state "EListComp" region; if value.elements = None then pp_node (state#pad 1 0) "" else pp_injection pp_expr state value diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index ac6ce07cc..f0552c382 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -17,19 +17,22 @@ and pp_declaration = function and pp_let_decl Region.{value; _} = let _, rec_opt, binding, attr = value in - let rec_str = + let rec_doc = match rec_opt with - None -> "" - | Some _ -> " rec" in - string "let" ^^ string rec_str - ^/^ pp_let_binding binding ^/^ pp_attributes attr + None -> empty + | Some _ -> string " rec" in + let binding = pp_let_binding binding + and attr = pp_attributes attr + in string "let" ^^ rec_doc ^/^ binding ^/^ attr and pp_attributes attr = - let sep = string ";" ^^ break 1 in + let sep = string ";" ^^ break 1 in let make s = string "[@@" ^^ string s.value ^^ string "]" in separate_map sep make attr -and pp_string Region.{value; _} = string value +and pp_ident Region.{value; _} = string value + +and pp_string s = pp_ident s and pp_let_binding (binding : let_binding) = let {binders; lhs_type; let_rhs; _} = binding in @@ -37,7 +40,7 @@ and pp_let_binding (binding : let_binding) = let patterns = flow (break 1) (List.map pp_pattern patterns) in let lhs_type = match lhs_type with - None -> string "" + None -> empty | Some (_, t_expr) -> string " :" ^/^ pp_type_expr t_expr in let let_rhs = pp_expr let_rhs in patterns ^^ lhs_type ^^ string " =" ^/^ let_rhs @@ -47,7 +50,7 @@ and pp_pattern = function | PUnit _ -> string "()" | PFalse _ -> string "false" | PTrue _ -> string "true" -| PVar v -> pp_string v +| PVar v -> pp_ident v | PInt i -> pp_int i | PNat n -> pp_nat n | PBytes b -> pp_bytes b @@ -66,8 +69,8 @@ and pp_pconstr = function and pp_patt_c_app Region.{value; _} = match value with - constr, None -> pp_string constr - | constr, Some pat -> pp_string constr ^^ pp_pattern pat + constr, None -> pp_ident constr + | constr, Some pat -> pp_ident constr ^^ pp_pattern pat and pp_patt_some Region.{value; _} = string "Some" ^/^ pp_pattern (snd value) @@ -82,18 +85,22 @@ and pp_bytes Region.{value; _} = string ("0x" ^ Hex.show (snd value)) and pp_ppar Region.{value; _} = - let {lpar; inside; rpar} = value in + let {inside; _} = value in string "(" ^^ pp_pattern inside ^^ string ")" and pp_plist = function PListComp cmp -> pp_list_comp cmp | PCons cons -> pp_cons cons -and pp_list_comp Region.{value; _} = +and pp_list_comp e = + string "[" ^^ pp_injection pp_pattern e ^^ string "]" + +(* let items = Utils.sepseq_to_list value.elements in let sep = string ";" ^^ break 1 in let items = separate_map sep pp_pattern items in string "[" ^^ items ^^ string "]" + *) and pp_cons Region.{value; _} = let patt1, _, patt2 = value in @@ -113,7 +120,7 @@ and pp_precord Region.{value; _} = and pp_field_pattern Region.{value; _} = let {field_name; pattern; _} = value in - pp_string field_name ^^ string " =" ^/^ pp_pattern pattern + pp_ident field_name ^^ string " =" ^/^ pp_pattern pattern and pp_ptyped Region.{value; _} = let {pattern; type_expr; _} = value in @@ -136,7 +143,7 @@ and pp_expr = function | ERecord e -> pp_record_expr e | EProj e -> pp_projection e | EUpdate e -> pp_update e -| EVar v -> pp_string v +| EVar v -> pp_ident v | ECall e -> pp_call_expr e | EBytes e -> pp_bytes e | EUnit _ -> string "()" @@ -203,13 +210,13 @@ and pp_arith_expr = function | Mult e -> pp_bin_op "*" e | Div e -> pp_bin_op "/" e | Mod e -> pp_bin_op "mod" e -| Neg e -> pp_un_op "-" e +| Neg e -> string "-" ^^ pp_expr e.value.arg | Int e -> pp_int e | Nat e -> pp_nat e | Mutez e -> pp_mutez e and pp_mutez Region.{value; _} = - string (Z.to_string (snd value) ^ "mutez") + Z.to_string (snd value) ^ "mutez" |> string and pp_string_expr = function Cat e -> pp_bin_op "^" e @@ -219,74 +226,136 @@ and pp_list_expr = function ECons e -> pp_bin_op "::" e | EListComp e -> pp_injection pp_expr e -and pp_injection printer Region.{value; _} = - let {compound; elements; terminator} = value in - let elements = pp_sepseq ";" elements in - let doc = - match pp_compound compound with - None -> elements - | Some (opening, closing) -> - string opening ^^ elements ^^ string closing - in match terminator with - None -> doc - | Some _ -> doc ^^ string ";" +and pp_injection : + 'a.('a -> document) -> 'a injection Region.reg -> document = + fun printer Region.{value; _} -> + let {compound; elements; terminator} = value in + let sep = ";" in + let sep_doc = string sep ^^ break 1 in + let elements = Utils.sepseq_to_list elements in + let elements = separate_map sep_doc printer elements in + let doc = + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ elements ^^ string closing + in match terminator with + None -> doc + | Some _ -> doc ^^ string sep and pp_compound = function BeginEnd (start, _) -> - if start#is_ghost then None - else Some ("begin", "end") -| Braces _ -> Some ("{","}") -| Brackets _ -> Some ("[","]") - -and pp_sepseq sep elements = - let exprs = Utils.sepseq_to_list elements - and sep = string ";" ^/^ break 1 - in separate_map sep pp_expr exprs + if start#is_ghost then None else Some ("begin","end") +| Braces (start, _) -> + if start#is_ghost then None else Some ("{","}") +| Brackets (start, _) -> + if start#is_ghost then None else Some ("[","]") and pp_constr_expr = function ENone _ -> string "None" | ESomeApp a -> pp_some a | EConstrApp a -> pp_constr_app a -and pp_some Region.{value=_, e; _} = string "Some" ^^ pp_expr e +and pp_some Region.{value=_, e; _} = string "Some" ^/^ pp_expr e and pp_constr_app Region.{value; _} = let constr, arg = value in let constr = string constr.value in match arg with None -> constr - | Some e -> constr ^^ pp_expr e + | Some e -> constr ^/^ pp_expr e and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj -and pp_field_assign e = - string "TODO:pp_field_assign" +and pp_field_assign Region.{value; _} = + let {field_name; field_expr; _} = value in + pp_ident field_name ^^ string " =" ^/^ pp_expr field_expr -and pp_ne_injection printer Region.{value; _} = - let {compound; ne_elements; terminator} = value in - let elements = pp_nsepseq printer ";" ne_elements in - let doc = - match pp_compound compound with - None -> elements - | Some (opening, closing) -> - string opening ^^ elements ^^ string closing - in match terminator with - None -> doc - | Some _ -> doc ^^ string ";" +and pp_ne_injection : + 'a.('a -> document) -> 'a ne_injection Region.reg -> document = + fun printer Region.{value; _} -> + let {compound; ne_elements; terminator} = value in + let elements = pp_nsepseq ";" printer ne_elements in + let doc = + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ elements ^^ string closing + in match terminator with + None -> doc + | Some _ -> doc ^^ string ";" -and pp_nsepseq printer sep elements = - let elems = Utils.nsepseq_to_list elements - and sep = string ";" ^/^ break 1 - in separate_map sep printer elems +and pp_nsepseq : + 'a.string -> + ('a -> document) -> + ('a, Region.t) Utils.nsepseq -> + document = + fun sep printer elements -> + let elems = Utils.nsepseq_to_list elements + and sep = string sep ^^ break 1 + in separate_map sep printer elems -and pp_projection _ = string "TODO:pp_projection" -and pp_update _ = string "TODO:pp_update" -and pp_call_expr _ = string "TODO:pp_call_expr" -and pp_tuple_expr _ = string "TODO:pp_tuple_expr" -and pp_par_expr _ = string "TODO:pp_par_expr" -and pp_let_in _ = string "TODO:pp_let_in" -and pp_fun _ = string "TODO:pp_fun_expr" -and pp_seq _ = string "TODO:pp_seq" +and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = + fun printer (head, tail) -> + separate_map (break 1) printer (head::tail) + +and pp_projection Region.{value; _} = + let {struct_name; field_path; _} = value in + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let fields = separate_map sep pp_selection fields in + pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields + +and pp_selection = function + FieldName v -> string v.value +| Component cmp -> cmp.value |> snd |> Z.to_string |> string + +and pp_update Region.{value; _} = + let {record; updates; _} = value in + let updates = pp_ne_injection pp_field_path_assign updates + and record = pp_path record in + string "{" ^^ record ^/^ string "with" ^/^ updates ^^ string "}" + +and pp_field_path_assign Region.{value; _} = + let {field_path; field_expr; _} = value in + let path = pp_nsepseq "." pp_ident field_path + in path ^^ string " =" ^/^ pp_expr field_expr + +and pp_path = function + Name v -> pp_ident v +| Path p -> pp_projection p + +and pp_call_expr Region.{value; _} = + let lambda, arguments = value in + pp_expr lambda ^/^ pp_nseq pp_expr arguments + +and pp_tuple_expr Region.{value; _} = + pp_nsepseq "," pp_expr value + +and pp_par_expr Region.{value; _} = + string "(" ^^ pp_expr value.inside ^^ string ")" + +and pp_let_in Region.{value; _} = + let {binding; kwd_rec; body; attributes; _} = value in + let binding = pp_let_binding binding + and body = pp_expr body + and attr = pp_attributes attributes in + let rec_doc = match kwd_rec with + None -> empty + | Some _ -> string " rec" + in string "let" ^^ rec_doc ^/^ binding + ^/^ string "in" ^/^ body ^/^ attr + +and pp_fun Region.{value; _} = + let {binders; lhs_type; body; _} = value in + let binders = pp_nseq pp_pattern binders + and annot = match lhs_type with + None -> empty + | Some (_,e) -> string ": " ^/^ pp_type_expr e + and body = pp_expr body in + string "fun " ^^ binders ^^ annot ^^ string " ->" ^/^ body + +and pp_seq e = pp_injection pp_expr e and pp_type_expr = function TProd t -> pp_cartesian t @@ -295,36 +364,31 @@ and pp_type_expr = function | TApp t -> pp_type_app t | TFun t -> pp_fun_type t | TPar t -> pp_type_par t -| TVar t -> pp_string t +| TVar t -> pp_ident t | TString s -> pp_string s and pp_cartesian Region.{value; _} = - let cmp = Utils.nsepseq_to_list value in - let sep = string " *" ^^ break 1 in - separate_map sep pp_type_expr cmp + pp_nsepseq " *" pp_type_expr value and pp_variants Region.{value; _} = let variants = Utils.nsepseq_to_list value - and sep = break 1 ^^ string "| " in - separate_map sep pp_variant variants + and sep = break 1 ^^ string "| " + in separate_map sep pp_variant variants and pp_variant Region.{value; _} = let {constr; arg} = value in match arg with - None -> pp_string constr + None -> pp_ident constr | Some (_, t_expr) -> - pp_string constr ^^ string " of" ^/^ pp_type_expr t_expr + pp_ident constr ^^ string " of" ^/^ pp_type_expr t_expr -and pp_fields Region.{value; _} = - let fields = value.ne_elements in - let fields = Utils.nsepseq_to_list fields in - let sep = string ";" ^^ break 1 in - let fields = separate_map sep pp_field_decl fields +and pp_fields fields = + let fields = pp_ne_injection pp_field_decl fields in string "{" ^^ fields ^^ string "}" and pp_field_decl Region.{value; _} = let {field_name; field_type; _} = value in - let name = pp_string field_name in + let name = pp_ident field_name in let t_expr = pp_type_expr field_type in name ^^ string " :" ^/^ t_expr @@ -333,7 +397,7 @@ and pp_type_app Region.{value; _} = in pp_type_tuple tuple ^/^ pp_type_constr ctor and pp_type_tuple Region.{value; _} = - let {lpar; inside; rpar} = value in + let {inside; _} = value in match inside with t_expr, [] -> pp_type_expr t_expr | seq -> let sep = string "," ^^ break 1 in @@ -349,5 +413,4 @@ and pp_fun_type Region.{value; _} = pp_type_expr lhs ^^ string " ->" ^/^ pp_type_expr rhs and pp_type_par Region.{value; _} = - let {lpar; inside; rpar} = value in - string "(" ^^ pp_type_expr inside ^^ string ")" + string "(" ^^ pp_type_expr value.inside ^^ string ")" From 8c0275b42c8d312ddefc911bad7aada4c38bea7e Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Tue, 12 May 2020 19:25:02 +0200 Subject: [PATCH 07/67] Tuples of types are pretty-printed now. --- src/passes/1-parser/cameligo/Pretty.ml | 37 +++++++++++++------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index f0552c382..00c4c33bb 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -9,7 +9,7 @@ let paragraph (s : string) = flow (break 1) (words s) let rec make ast = let app decl = group (pp_declaration decl) in - separate_map hardline app (Utils.nseq_to_list ast.decl) + separate_map (hardline ^^ hardline) app (Utils.nseq_to_list ast.decl) and pp_declaration = function Let decl -> pp_let_decl decl @@ -95,13 +95,6 @@ and pp_plist = function and pp_list_comp e = string "[" ^^ pp_injection pp_pattern e ^^ string "]" -(* - let items = Utils.sepseq_to_list value.elements in - let sep = string ";" ^^ break 1 in - let items = separate_map sep pp_pattern items - in string "[" ^^ items ^^ string "]" - *) - and pp_cons Region.{value; _} = let patt1, _, patt2 = value in pp_pattern patt1 ^^ string " ::" ^/^ pp_pattern patt2 @@ -128,8 +121,8 @@ and pp_ptyped Region.{value; _} = and pp_type_decl decl = let {name; type_expr; _} = decl.value in - string "type" ^/^ string name.value - ^/^ string "=" ^/^ pp_type_expr type_expr + string "type " ^^ string name.value ^^ string " =" + ^^ group (nest 2 (break 1 ^^ pp_type_expr type_expr)) and pp_expr = function ECase e -> pp_case_expr e @@ -368,19 +361,25 @@ and pp_type_expr = function | TString s -> pp_string s and pp_cartesian Region.{value; _} = - pp_nsepseq " *" pp_type_expr value + let head, tail = value in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string " *") ^^ app items + in pp_type_expr head ^^ string " *" ^^ app (List.map snd tail) and pp_variants Region.{value; _} = let variants = Utils.nsepseq_to_list value - and sep = break 1 ^^ string "| " - in separate_map sep pp_variant variants + in separate_map (break 1) pp_variant variants and pp_variant Region.{value; _} = let {constr; arg} = value in + string "| " ^^ match arg with None -> pp_ident constr | Some (_, t_expr) -> - pp_ident constr ^^ string " of" ^/^ pp_type_expr t_expr + prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr t_expr) and pp_fields fields = let fields = pp_ne_injection pp_field_decl fields @@ -393,14 +392,14 @@ and pp_field_decl Region.{value; _} = in name ^^ string " :" ^/^ t_expr and pp_type_app Region.{value; _} = - let ctor, tuple = value - in pp_type_tuple tuple ^/^ pp_type_constr ctor + let ctor, tuple = value in + pp_type_tuple tuple ^^ string " " ^^ pp_type_constr ctor and pp_type_tuple Region.{value; _} = let {inside; _} = value in match inside with t_expr, [] -> pp_type_expr t_expr - | seq -> let sep = string "," ^^ break 1 in + | seq -> let sep = group (string "," ^^ break 1) in let lst = Utils.nsepseq_to_list seq in let cmp = separate_map sep pp_type_expr lst in string "(" ^^ cmp ^^ string ")" @@ -410,7 +409,7 @@ and pp_type_constr ctor = and pp_fun_type Region.{value; _} = let lhs, _, rhs = value in - pp_type_expr lhs ^^ string " ->" ^/^ pp_type_expr rhs + group (pp_type_expr lhs ^^ string " ->") ^/^ pp_type_expr rhs and pp_type_par Region.{value; _} = - string "(" ^^ pp_type_expr value.inside ^^ string ")" + string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") From 85aa1a21d1ccb1aa85499fcb34f45f28fbfb0ba4 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Wed, 13 May 2020 21:01:27 +0200 Subject: [PATCH 08/67] Some expressions remain to be pretty-printed. Fixed a bug in the semantic action of the parser for record updates. --- src/passes/1-parser/cameligo/Parser.mly | 2 +- src/passes/1-parser/cameligo/Pretty.ml | 827 ++++++++++++------------ 2 files changed, 413 insertions(+), 416 deletions(-) diff --git a/src/passes/1-parser/cameligo/Parser.mly b/src/passes/1-parser/cameligo/Parser.mly index 2aa57aad3..b9c2214e8 100644 --- a/src/passes/1-parser/cameligo/Parser.mly +++ b/src/passes/1-parser/cameligo/Parser.mly @@ -640,7 +640,7 @@ update_record: lbrace = $1; record = $2; kwd_with = $3; - updates = {value = {compound = Braces($1,$5); + updates = {value = {compound = Braces (ghost, ghost); ne_elements; terminator}; region = cover $3 $5}; diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index 00c4c33bb..d9be6b9e3 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -1,415 +1,412 @@ -[@@@warning "-42"] - -open AST -module Region = Simple_utils.Region -open! Region -open! PPrint - -let paragraph (s : string) = flow (break 1) (words s) - -let rec make ast = - let app decl = group (pp_declaration decl) in - separate_map (hardline ^^ hardline) app (Utils.nseq_to_list ast.decl) - -and pp_declaration = function - Let decl -> pp_let_decl decl -| TypeDecl decl -> pp_type_decl decl - -and pp_let_decl Region.{value; _} = - let _, rec_opt, binding, attr = value in - let rec_doc = - match rec_opt with - None -> empty - | Some _ -> string " rec" in - let binding = pp_let_binding binding - and attr = pp_attributes attr - in string "let" ^^ rec_doc ^/^ binding ^/^ attr - -and pp_attributes attr = - let sep = string ";" ^^ break 1 in - let make s = string "[@@" ^^ string s.value ^^ string "]" - in separate_map sep make attr - -and pp_ident Region.{value; _} = string value - -and pp_string s = pp_ident s - -and pp_let_binding (binding : let_binding) = - let {binders; lhs_type; let_rhs; _} = binding in - let patterns = Utils.nseq_to_list binders in - let patterns = flow (break 1) (List.map pp_pattern patterns) in - let lhs_type = - match lhs_type with - None -> empty - | Some (_, t_expr) -> string " :" ^/^ pp_type_expr t_expr in - let let_rhs = pp_expr let_rhs in - patterns ^^ lhs_type ^^ string " =" ^/^ let_rhs - -and pp_pattern = function - PConstr p -> pp_pconstr p -| PUnit _ -> string "()" -| PFalse _ -> string "false" -| PTrue _ -> string "true" -| PVar v -> pp_ident v -| PInt i -> pp_int i -| PNat n -> pp_nat n -| PBytes b -> pp_bytes b -| PString s -> pp_string s -| PWild _ -> string "_" -| PList l -> pp_plist l -| PTuple t -> pp_ptuple t -| PPar p -> pp_ppar p -| PRecord r -> pp_precord r -| PTyped t -> pp_ptyped t - -and pp_pconstr = function - PNone _ -> string "None" -| PSomeApp p -> pp_patt_some p -| PConstrApp a -> pp_patt_c_app a - -and pp_patt_c_app Region.{value; _} = - match value with - constr, None -> pp_ident constr - | constr, Some pat -> pp_ident constr ^^ pp_pattern pat - -and pp_patt_some Region.{value; _} = - string "Some" ^/^ pp_pattern (snd value) - -and pp_int Region.{value; _} = - string (Z.to_string (snd value)) - -and pp_nat Region.{value; _} = - string (Z.to_string (snd value) ^ "n") - -and pp_bytes Region.{value; _} = - string ("0x" ^ Hex.show (snd value)) - -and pp_ppar Region.{value; _} = - let {inside; _} = value in - string "(" ^^ pp_pattern inside ^^ string ")" - -and pp_plist = function - PListComp cmp -> pp_list_comp cmp -| PCons cons -> pp_cons cons - -and pp_list_comp e = - string "[" ^^ pp_injection pp_pattern e ^^ string "]" - -and pp_cons Region.{value; _} = - let patt1, _, patt2 = value in - pp_pattern patt1 ^^ string " ::" ^/^ pp_pattern patt2 - -and pp_ptuple Region.{value; _} = - let cmp = Utils.nsepseq_to_list value in - let sep = string "," ^^ break 1 in - separate_map sep pp_pattern cmp - -and pp_precord Region.{value; _} = - let fields = value.ne_elements in - let fields = Utils.nsepseq_to_list fields in - let sep = string ";" ^^ break 1 in - let fields = separate_map sep pp_field_pattern fields - in string "{" ^^ fields ^^ string "}" - -and pp_field_pattern Region.{value; _} = - let {field_name; pattern; _} = value in - pp_ident field_name ^^ string " =" ^/^ pp_pattern pattern - -and pp_ptyped Region.{value; _} = - let {pattern; type_expr; _} = value in - pp_pattern pattern ^^ string " :" ^/^ pp_type_expr type_expr - -and pp_type_decl decl = - let {name; type_expr; _} = decl.value in - string "type " ^^ string name.value ^^ string " =" - ^^ group (nest 2 (break 1 ^^ pp_type_expr type_expr)) - -and pp_expr = function - ECase e -> pp_case_expr e -| ECond e -> pp_cond_expr e -| EAnnot e -> pp_annot_expr e -| ELogic e -> pp_logic_expr e -| EArith e -> pp_arith_expr e -| EString e -> pp_string_expr e -| EList e -> pp_list_expr e -| EConstr e -> pp_constr_expr e -| ERecord e -> pp_record_expr e -| EProj e -> pp_projection e -| EUpdate e -> pp_update e -| EVar v -> pp_ident v -| ECall e -> pp_call_expr e -| EBytes e -> pp_bytes e -| EUnit _ -> string "()" -| ETuple e -> pp_tuple_expr e -| EPar e -> pp_par_expr e -| ELetIn e -> pp_let_in e -| EFun e -> pp_fun e -| ESeq e -> pp_seq e - -and pp_case_expr Region.{value; _} = - let {expr; cases; _} = value in - string "match " ^^ pp_expr expr ^/^ string "with" ^/^ pp_cases cases - -and pp_cases Region.{value; _} = - let cases = Utils.nsepseq_to_list value - and sep = break 1 ^^ string "| " - in separate_map sep pp_clause cases - -and pp_clause Region.{value; _} = - let {pattern; rhs; _} = value in - pp_pattern pattern ^^ string " ->" ^/^ pp_expr rhs - -and pp_cond_expr Region.{value; _} = - let {test; ifso; kwd_else; ifnot; _} = value in - let if_then = string "if " ^^ pp_expr test - ^/^ string "then " ^^ pp_expr ifso in - if kwd_else#is_ghost then if_then - else if_then ^/^ string "else " ^^ pp_expr ifnot - -and pp_annot_expr Region.{value; _} = - let expr, _, type_expr = value.inside in - string "(" ^^ pp_expr expr ^^ string " :" - ^/^ pp_type_expr type_expr ^^ string ")" - -and pp_logic_expr = function - BoolExpr e -> pp_bool_expr e -| CompExpr e -> pp_comp_expr e - -and pp_bool_expr = function - Or e -> pp_bin_op "||" e -| And e -> pp_bin_op "&&" e -| Not e -> pp_un_op "not" e -| True _ -> string "true" -| False _ -> string "false" - -and pp_bin_op op Region.{value; _} = - let {arg1; arg2; _} = value - in pp_expr arg1 ^/^ string (op ^ " ") ^^ pp_expr arg2 - -and pp_un_op op Region.{value; _} = - string (op ^ " ") ^^ pp_expr value.arg - -and pp_comp_expr = function - Lt e -> pp_bin_op "<" e -| Leq e -> pp_bin_op "<=" e -| Gt e -> pp_bin_op ">" e -| Geq e -> pp_bin_op ">=" e -| Equal e -> pp_bin_op "=" e -| Neq e -> pp_bin_op "<>" e - -and pp_arith_expr = function - Add e -> pp_bin_op "+" e -| Sub e -> pp_bin_op "-" e -| Mult e -> pp_bin_op "*" e -| Div e -> pp_bin_op "/" e -| Mod e -> pp_bin_op "mod" e -| Neg e -> string "-" ^^ pp_expr e.value.arg -| Int e -> pp_int e -| Nat e -> pp_nat e -| Mutez e -> pp_mutez e - -and pp_mutez Region.{value; _} = - Z.to_string (snd value) ^ "mutez" |> string - -and pp_string_expr = function - Cat e -> pp_bin_op "^" e -| String e -> pp_string e - -and pp_list_expr = function - ECons e -> pp_bin_op "::" e -| EListComp e -> pp_injection pp_expr e - -and pp_injection : - 'a.('a -> document) -> 'a injection Region.reg -> document = - fun printer Region.{value; _} -> - let {compound; elements; terminator} = value in - let sep = ";" in - let sep_doc = string sep ^^ break 1 in - let elements = Utils.sepseq_to_list elements in - let elements = separate_map sep_doc printer elements in - let doc = - match pp_compound compound with - None -> elements - | Some (opening, closing) -> - string opening ^^ elements ^^ string closing - in match terminator with - None -> doc - | Some _ -> doc ^^ string sep - -and pp_compound = function - BeginEnd (start, _) -> - if start#is_ghost then None else Some ("begin","end") -| Braces (start, _) -> - if start#is_ghost then None else Some ("{","}") -| Brackets (start, _) -> - if start#is_ghost then None else Some ("[","]") - -and pp_constr_expr = function - ENone _ -> string "None" -| ESomeApp a -> pp_some a -| EConstrApp a -> pp_constr_app a - -and pp_some Region.{value=_, e; _} = string "Some" ^/^ pp_expr e - -and pp_constr_app Region.{value; _} = - let constr, arg = value in - let constr = string constr.value in - match arg with - None -> constr - | Some e -> constr ^/^ pp_expr e - -and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj - -and pp_field_assign Region.{value; _} = - let {field_name; field_expr; _} = value in - pp_ident field_name ^^ string " =" ^/^ pp_expr field_expr - -and pp_ne_injection : - 'a.('a -> document) -> 'a ne_injection Region.reg -> document = - fun printer Region.{value; _} -> - let {compound; ne_elements; terminator} = value in - let elements = pp_nsepseq ";" printer ne_elements in - let doc = - match pp_compound compound with - None -> elements - | Some (opening, closing) -> - string opening ^^ elements ^^ string closing - in match terminator with - None -> doc - | Some _ -> doc ^^ string ";" - -and pp_nsepseq : - 'a.string -> - ('a -> document) -> - ('a, Region.t) Utils.nsepseq -> - document = - fun sep printer elements -> - let elems = Utils.nsepseq_to_list elements - and sep = string sep ^^ break 1 - in separate_map sep printer elems - -and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = - fun printer (head, tail) -> - separate_map (break 1) printer (head::tail) - -and pp_projection Region.{value; _} = - let {struct_name; field_path; _} = value in - let fields = Utils.nsepseq_to_list field_path - and sep = string "." ^^ break 0 in - let fields = separate_map sep pp_selection fields in - pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields - -and pp_selection = function - FieldName v -> string v.value -| Component cmp -> cmp.value |> snd |> Z.to_string |> string - -and pp_update Region.{value; _} = - let {record; updates; _} = value in - let updates = pp_ne_injection pp_field_path_assign updates - and record = pp_path record in - string "{" ^^ record ^/^ string "with" ^/^ updates ^^ string "}" - -and pp_field_path_assign Region.{value; _} = - let {field_path; field_expr; _} = value in - let path = pp_nsepseq "." pp_ident field_path - in path ^^ string " =" ^/^ pp_expr field_expr - -and pp_path = function - Name v -> pp_ident v -| Path p -> pp_projection p - -and pp_call_expr Region.{value; _} = - let lambda, arguments = value in - pp_expr lambda ^/^ pp_nseq pp_expr arguments - -and pp_tuple_expr Region.{value; _} = - pp_nsepseq "," pp_expr value - -and pp_par_expr Region.{value; _} = - string "(" ^^ pp_expr value.inside ^^ string ")" - -and pp_let_in Region.{value; _} = - let {binding; kwd_rec; body; attributes; _} = value in - let binding = pp_let_binding binding - and body = pp_expr body - and attr = pp_attributes attributes in - let rec_doc = match kwd_rec with - None -> empty - | Some _ -> string " rec" - in string "let" ^^ rec_doc ^/^ binding - ^/^ string "in" ^/^ body ^/^ attr - -and pp_fun Region.{value; _} = - let {binders; lhs_type; body; _} = value in - let binders = pp_nseq pp_pattern binders - and annot = match lhs_type with - None -> empty - | Some (_,e) -> string ": " ^/^ pp_type_expr e - and body = pp_expr body in - string "fun " ^^ binders ^^ annot ^^ string " ->" ^/^ body - -and pp_seq e = pp_injection pp_expr e - -and pp_type_expr = function - TProd t -> pp_cartesian t -| TSum t -> pp_variants t -| TRecord t -> pp_fields t -| TApp t -> pp_type_app t -| TFun t -> pp_fun_type t -| TPar t -> pp_type_par t -| TVar t -> pp_ident t -| TString s -> pp_string s - -and pp_cartesian Region.{value; _} = - let head, tail = value in - let rec app = function - [] -> empty - | [e] -> group (break 1 ^^ pp_type_expr e) - | e::items -> - group (break 1 ^^ pp_type_expr e ^^ string " *") ^^ app items - in pp_type_expr head ^^ string " *" ^^ app (List.map snd tail) - -and pp_variants Region.{value; _} = - let variants = Utils.nsepseq_to_list value - in separate_map (break 1) pp_variant variants - -and pp_variant Region.{value; _} = - let {constr; arg} = value in - string "| " ^^ - match arg with - None -> pp_ident constr - | Some (_, t_expr) -> - prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr t_expr) - -and pp_fields fields = - let fields = pp_ne_injection pp_field_decl fields - in string "{" ^^ fields ^^ string "}" - -and pp_field_decl Region.{value; _} = - let {field_name; field_type; _} = value in - let name = pp_ident field_name in - let t_expr = pp_type_expr field_type - in name ^^ string " :" ^/^ t_expr - -and pp_type_app Region.{value; _} = - let ctor, tuple = value in - pp_type_tuple tuple ^^ string " " ^^ pp_type_constr ctor - -and pp_type_tuple Region.{value; _} = - let {inside; _} = value in - match inside with - t_expr, [] -> pp_type_expr t_expr - | seq -> let sep = group (string "," ^^ break 1) in - let lst = Utils.nsepseq_to_list seq in - let cmp = separate_map sep pp_type_expr lst - in string "(" ^^ cmp ^^ string ")" - -and pp_type_constr ctor = - string ctor.value - -and pp_fun_type Region.{value; _} = - let lhs, _, rhs = value in - group (pp_type_expr lhs ^^ string " ->") ^/^ pp_type_expr rhs - -and pp_type_par Region.{value; _} = - string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") +[@@@warning "-42"] + +open AST +module Region = Simple_utils.Region +open! Region +open! PPrint + +let paragraph (s : string) = flow (break 1) (words s) + +let rec make ast = + let app decl = group (pp_declaration decl) in + separate_map (hardline ^^ hardline) app (Utils.nseq_to_list ast.decl) + +and pp_declaration = function + Let decl -> pp_let_decl decl +| TypeDecl decl -> pp_type_decl decl + +and pp_let_decl Region.{value; _} = + let _, rec_opt, binding, attr = value in + let rec_doc = + match rec_opt with + None -> empty + | Some _ -> string "rec " in + let binding = pp_let_binding binding + and attr = pp_attributes attr + in string "let " ^^ rec_doc ^^ binding ^/^ attr + +and pp_attributes attr = + let sep = string ";" ^^ break 1 in + let make s = string "[@@" ^^ string s.value ^^ string "]" + in separate_map sep make attr + +and pp_ident Region.{value; _} = string value + +and pp_string s = pp_ident s + +and pp_let_binding (binding : let_binding) = + let {binders; lhs_type; let_rhs; _} = binding in + let patterns = Utils.nseq_to_list binders in + let patterns = nest 2 (separate_map (break 1) pp_pattern patterns) in + let lhs_type = + match lhs_type with + None -> empty + | Some (_,e) -> prefix 2 1 (string " :") (pp_type_expr e) + in patterns ^^ lhs_type ^^ string " =" + ^^ group (nest 2 (break 1 ^^ pp_expr let_rhs)) + +and pp_pattern = function + PConstr p -> pp_pconstr p +| PUnit _ -> string "()" +| PFalse _ -> string "false" +| PTrue _ -> string "true" +| PVar v -> pp_ident v +| PInt i -> pp_int i +| PNat n -> pp_nat n +| PBytes b -> pp_bytes b +| PString s -> pp_string s +| PWild _ -> string "_" +| PList l -> pp_plist l +| PTuple t -> pp_ptuple t +| PPar p -> pp_ppar p +| PRecord r -> pp_precord r +| PTyped t -> pp_ptyped t + +and pp_pconstr = function + PNone _ -> string "None" +| PSomeApp p -> pp_patt_some p +| PConstrApp a -> pp_patt_c_app a + +and pp_patt_c_app Region.{value; _} = + match value with + constr, None -> pp_ident constr + | constr, Some pat -> pp_ident constr ^^ pp_pattern pat + +and pp_patt_some Region.{value; _} = + string "Some" ^/^ pp_pattern (snd value) + +and pp_int Region.{value; _} = + string (Z.to_string (snd value)) + +and pp_nat Region.{value; _} = + string (Z.to_string (snd value) ^ "n") + +and pp_bytes Region.{value; _} = + string ("0x" ^ Hex.show (snd value)) + +and pp_ppar Region.{value; _} = + string "(" ^^ nest 1 (pp_pattern value.inside ^^ string ")") + +and pp_plist = function + PListComp cmp -> pp_list_comp cmp +| PCons cons -> pp_cons cons + +and pp_list_comp e = + string "[" ^^ pp_injection pp_pattern e ^^ string "]" + +and pp_cons Region.{value; _} = + let patt1, _, patt2 = value in + pp_pattern patt1 ^^ string " ::" ^/^ pp_pattern patt2 + +and pp_ptuple Region.{value; _} = + let cmp = Utils.nsepseq_to_list value in + let sep = string "," ^^ break 1 in + separate_map sep pp_pattern cmp + +and pp_precord fields = pp_ne_injection pp_field_pattern fields + +and pp_field_pattern Region.{value; _} = + let {field_name; pattern; _} = value in + prefix 2 1 (pp_ident field_name ^^ string " =") (pp_pattern pattern) + +and pp_ptyped Region.{value; _} = + let {pattern; type_expr; _} = value in + group (pp_pattern pattern ^^ string " :" ^/^ pp_type_expr type_expr) + +and pp_type_decl decl = + let {name; type_expr; _} = decl.value in + (* let padding = match type_expr with TSum _ -> 0 | _ -> 1 in*) + string "type " ^^ string name.value ^^ string " =" + ^^ group (nest 2 (break 1 ^^ pp_type_expr type_expr)) + +and pp_expr = function + ECase e -> pp_case_expr e +| ECond e -> pp_cond_expr e +| EAnnot e -> pp_annot_expr e +| ELogic e -> pp_logic_expr e +| EArith e -> pp_arith_expr e +| EString e -> pp_string_expr e +| EList e -> pp_list_expr e +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record_expr e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EVar v -> pp_ident v +| ECall e -> pp_call_expr e +| EBytes e -> pp_bytes e +| EUnit _ -> string "()" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par_expr e +| ELetIn e -> pp_let_in e +| EFun e -> pp_fun e +| ESeq e -> pp_seq e + +and pp_case_expr Region.{value; _} = + let {expr; cases; _} = value in + string "match " ^^ pp_expr expr ^/^ string "with" ^/^ pp_cases cases + +and pp_cases Region.{value; _} = + let cases = Utils.nsepseq_to_list value + and sep = break 1 ^^ string "| " + in separate_map sep pp_clause cases + +and pp_clause Region.{value; _} = + let {pattern; rhs; _} = value in + pp_pattern pattern ^^ string " ->" ^/^ pp_expr rhs + +and pp_cond_expr Region.{value; _} = + let {test; ifso; kwd_else; ifnot; _} = value in + let if_then = string "if " ^^ pp_expr test + ^/^ string "then " ^^ pp_expr ifso in + if kwd_else#is_ghost then if_then + else if_then ^/^ string "else " ^^ pp_expr ifnot + +and pp_annot_expr Region.{value; _} = + let expr, _, type_expr = value.inside in + string "(" ^^ pp_expr expr ^^ string " :" + ^/^ pp_type_expr type_expr ^^ string ")" + +and pp_logic_expr = function + BoolExpr e -> pp_bool_expr e +| CompExpr e -> pp_comp_expr e + +and pp_bool_expr = function + Or e -> pp_bin_op "||" e +| And e -> pp_bin_op "&&" e +| Not e -> pp_un_op "not" e +| True _ -> string "true" +| False _ -> string "false" + +and pp_bin_op op Region.{value; _} = + let {arg1; arg2; _} = value + in pp_expr arg1 ^/^ string (op ^ " ") ^^ pp_expr arg2 + +and pp_un_op op Region.{value; _} = + string (op ^ " ") ^^ pp_expr value.arg + +and pp_comp_expr = function + Lt e -> pp_bin_op "<" e +| Leq e -> pp_bin_op "<=" e +| Gt e -> pp_bin_op ">" e +| Geq e -> pp_bin_op ">=" e +| Equal e -> pp_bin_op "=" e +| Neq e -> pp_bin_op "<>" e + +and pp_arith_expr = function + Add e -> pp_bin_op "+" e +| Sub e -> pp_bin_op "-" e +| Mult e -> pp_bin_op "*" e +| Div e -> pp_bin_op "/" e +| Mod e -> pp_bin_op "mod" e +| Neg e -> string "-" ^^ pp_expr e.value.arg +| Int e -> pp_int e +| Nat e -> pp_nat e +| Mutez e -> pp_mutez e + +and pp_mutez Region.{value; _} = + Z.to_string (snd value) ^ "mutez" |> string + +and pp_string_expr = function + Cat e -> pp_bin_op "^" e +| String e -> pp_string e + +and pp_list_expr = function + ECons e -> pp_bin_op "::" e +| EListComp e -> pp_injection pp_expr e + +and pp_injection : + 'a.('a -> document) -> 'a injection Region.reg -> document = + fun printer Region.{value; _} -> + let {compound; elements; terminator} = value in + let sep = ";" in + let sep_doc = string sep ^^ break 1 in + let elements = Utils.sepseq_to_list elements in + let elements = separate_map sep_doc printer elements in + let doc = + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ elements ^^ string closing + in match terminator with + None -> doc + | Some _ -> doc ^^ string sep + +and pp_compound = function + BeginEnd (start, _) -> + if start#is_ghost then None else Some ("begin","end") +| Braces (start, _) -> + if start#is_ghost then None else Some ("{","}") +| Brackets (start, _) -> + if start#is_ghost then None else Some ("[","]") + +and pp_constr_expr = function + ENone _ -> string "None" +| ESomeApp a -> pp_some a +| EConstrApp a -> pp_constr_app a + +and pp_some Region.{value=_, e; _} = string "Some" ^/^ pp_expr e + +and pp_constr_app Region.{value; _} = + let constr, arg = value in + let constr = string constr.value in + match arg with + None -> constr + | Some e -> constr ^/^ pp_expr e + +and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj + +and pp_field_assign Region.{value; _} = + let {field_name; field_expr; _} = value in + prefix 2 1 (pp_ident field_name ^^ string " =") (pp_expr field_expr) + +and pp_ne_injection : + 'a.('a -> document) -> 'a ne_injection Region.reg -> document = + fun printer Region.{value; _} -> + let {compound; ne_elements; _} = value in + let elements = pp_nsepseq ";" printer ne_elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ nest 1 elements ^^ string closing + +and pp_nsepseq : + 'a.string -> + ('a -> document) -> + ('a, Region.t) Utils.nsepseq -> + document = + fun sep printer elements -> + let elems = Utils.nsepseq_to_list elements + and sep = string sep ^^ break 1 + in separate_map sep printer elems + +and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = + fun printer (head, tail) -> + separate_map (break 1) printer (head::tail) + +and pp_projection Region.{value; _} = + let {struct_name; field_path; _} = value in + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let fields = separate_map sep pp_selection fields in + pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields + +and pp_selection = function + FieldName v -> string v.value +| Component cmp -> cmp.value |> snd |> Z.to_string |> string + +and pp_update Region.{value; _} = + let {record; updates; _} = value in + let updates = pp_ne_injection pp_field_path_assign updates + and record = pp_path record in + string "{" ^^ record ^^ string " with" + ^^ nest 2 (break 1 ^^ updates ^^ string "}") + +and pp_field_path_assign Region.{value; _} = + let {field_path; field_expr; _} = value in + let path = pp_nsepseq "." pp_ident field_path + in prefix 2 1 (path ^^ string " =") (pp_expr field_expr) + +and pp_path = function + Name v -> pp_ident v +| Path p -> pp_projection p + +and pp_call_expr Region.{value; _} = + let lambda, arguments = value in + pp_expr lambda ^/^ pp_nseq pp_expr arguments + +and pp_tuple_expr Region.{value; _} = + pp_nsepseq "," pp_expr value + +and pp_par_expr Region.{value; _} = + string "(" ^^ pp_expr value.inside ^^ string ")" + +and pp_let_in Region.{value; _} = + let {binding; kwd_rec; body; attributes; _} = value in + let binding = pp_let_binding binding + and body = pp_expr body + and attr = pp_attributes attributes in + let rec_doc = match kwd_rec with + None -> empty + | Some _ -> string " rec" + in string "let" ^^ rec_doc ^/^ binding + ^/^ string "in" ^/^ body ^/^ attr + +and pp_fun Region.{value; _} = + let {binders; lhs_type; body; _} = value in + let binders = pp_nseq pp_pattern binders + and annot = match lhs_type with + None -> empty + | Some (_,e) -> string ": " ^/^ pp_type_expr e + and body = pp_expr body in + string "fun " ^^ binders ^^ annot ^^ string " ->" ^/^ body + +and pp_seq e = pp_injection pp_expr e + +and pp_type_expr = function + TProd t -> pp_cartesian t +| TSum t -> pp_variants t +| TRecord t -> pp_fields t +| TApp t -> pp_type_app t +| TFun t -> pp_fun_type t +| TPar t -> pp_type_par t +| TVar t -> pp_ident t +| TString s -> pp_string s + +and pp_cartesian Region.{value; _} = + let head, tail = value in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string " *") ^^ app items + in pp_type_expr head ^^ string " *" ^^ app (List.map snd tail) + +and pp_variants Region.{value; _} = + let head, tail = value in + let head = pp_variant head in + let rest = List.map snd tail in + let app variant = break 1 ^^ string "| " ^^ pp_variant variant + in ifflat head (string " " ^^ head) + ^^ concat_map app rest + +and pp_variant Region.{value; _} = + let {constr; arg} = value in + match arg with + None -> pp_ident constr + | Some (_, t_expr) -> + prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr t_expr) + +and pp_fields fields = pp_ne_injection pp_field_decl fields + +and pp_field_decl Region.{value; _} = + let {field_name; field_type; _} = value in + let name = pp_ident field_name in + let t_expr = pp_type_expr field_type + in prefix 2 1 (name ^^ string " :") t_expr + +and pp_type_app Region.{value; _} = + let ctor, tuple = value in + pp_type_tuple tuple ^^ string " " ^^ pp_type_constr ctor + +and pp_type_tuple Region.{value; _} = + let {inside; _} = value in + let head, tail = inside in + if tail = [] then pp_type_expr head + else + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in + let components = + pp_type_expr head ^^ string "," ^^ app (List.map snd tail) + in string "(" ^^ nest 1 components ^^ string ")" + +and pp_type_constr ctor = string ctor.value + +and pp_fun_type Region.{value; _} = + let lhs, _, rhs = value in + group (pp_type_expr lhs ^^ string " ->") ^/^ pp_type_expr rhs + +and pp_type_par Region.{value; _} = + string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") From ec0a0dbd016cf5fa3e494dcbd78871fc263c0582 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 14 May 2020 21:09:14 +0200 Subject: [PATCH 09/67] More pretty-printing. --- src/passes/1-parser/cameligo/Pretty.ml | 99 +- .../cameligo/error.messages.checked-in | 1670 ++++++++--------- 2 files changed, 890 insertions(+), 879 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index d9be6b9e3..ff2dfdc09 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -19,16 +19,16 @@ and pp_let_decl Region.{value; _} = let _, rec_opt, binding, attr = value in let rec_doc = match rec_opt with - None -> empty + None -> empty | Some _ -> string "rec " in let binding = pp_let_binding binding and attr = pp_attributes attr - in string "let " ^^ rec_doc ^^ binding ^/^ attr + in string "let " ^^ rec_doc ^^ binding + ^^ group (nest 2 (break 1 ^^ attr)) and pp_attributes attr = - let sep = string ";" ^^ break 1 in let make s = string "[@@" ^^ string s.value ^^ string "]" - in separate_map sep make attr + in separate_map (break 0) make attr and pp_ident Region.{value; _} = string value @@ -37,13 +37,14 @@ and pp_string s = pp_ident s and pp_let_binding (binding : let_binding) = let {binders; lhs_type; let_rhs; _} = binding in let patterns = Utils.nseq_to_list binders in - let patterns = nest 2 (separate_map (break 1) pp_pattern patterns) in + let patterns = + group (nest 2 (separate_map (break 1) pp_pattern patterns)) in let lhs_type = match lhs_type with None -> empty | Some (_,e) -> prefix 2 1 (string " :") (pp_type_expr e) in patterns ^^ lhs_type ^^ string " =" - ^^ group (nest 2 (break 1 ^^ pp_expr let_rhs)) + ^^ group (nest 2 (break 1 ^^ group (pp_expr let_rhs))) and pp_pattern = function PConstr p -> pp_pconstr p @@ -73,7 +74,7 @@ and pp_patt_c_app Region.{value; _} = | constr, Some pat -> pp_ident constr ^^ pp_pattern pat and pp_patt_some Region.{value; _} = - string "Some" ^/^ pp_pattern (snd value) + prefix 4 1 (string "Some") (pp_pattern (snd value)) and pp_int Region.{value; _} = string (Z.to_string (snd value)) @@ -91,12 +92,11 @@ and pp_plist = function PListComp cmp -> pp_list_comp cmp | PCons cons -> pp_cons cons -and pp_list_comp e = - string "[" ^^ pp_injection pp_pattern e ^^ string "]" +and pp_list_comp e = pp_injection pp_pattern e and pp_cons Region.{value; _} = let patt1, _, patt2 = value in - pp_pattern patt1 ^^ string " ::" ^/^ pp_pattern patt2 + prefix 2 1 (pp_pattern patt1 ^^ string " ::") (pp_pattern patt2) and pp_ptuple Region.{value; _} = let cmp = Utils.nsepseq_to_list value in @@ -115,16 +115,15 @@ and pp_ptyped Region.{value; _} = and pp_type_decl decl = let {name; type_expr; _} = decl.value in - (* let padding = match type_expr with TSum _ -> 0 | _ -> 1 in*) string "type " ^^ string name.value ^^ string " =" ^^ group (nest 2 (break 1 ^^ pp_type_expr type_expr)) and pp_expr = function ECase e -> pp_case_expr e -| ECond e -> pp_cond_expr e +| ECond e -> group (pp_cond_expr e) | EAnnot e -> pp_annot_expr e | ELogic e -> pp_logic_expr e -| EArith e -> pp_arith_expr e +| EArith e -> group (pp_arith_expr e) | EString e -> pp_string_expr e | EList e -> pp_list_expr e | EConstr e -> pp_constr_expr e @@ -143,28 +142,36 @@ and pp_expr = function and pp_case_expr Region.{value; _} = let {expr; cases; _} = value in - string "match " ^^ pp_expr expr ^/^ string "with" ^/^ pp_cases cases + group (string "match " ^^ pp_expr expr ^/^ string "with") + ^^ group (nest 2 (break 1 ^^ pp_cases cases)) and pp_cases Region.{value; _} = - let cases = Utils.nsepseq_to_list value - and sep = break 1 ^^ string "| " - in separate_map sep pp_clause cases + let head, tail = value in + let head = pp_clause head in + let rest = List.map snd tail in + let app clause = break 1 ^^ string "| " ^^ pp_clause clause + in ifflat head (string " " ^^ head) + ^^ concat_map app rest and pp_clause Region.{value; _} = let {pattern; rhs; _} = value in - pp_pattern pattern ^^ string " ->" ^/^ pp_expr rhs + prefix 4 1 (pp_pattern pattern ^^ string " ->") (pp_expr rhs) and pp_cond_expr Region.{value; _} = let {test; ifso; kwd_else; ifnot; _} = value in - let if_then = string "if " ^^ pp_expr test - ^/^ string "then " ^^ pp_expr ifso in + let if_then = + string "if " ^^ pp_expr test + ^/^ string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) in if kwd_else#is_ghost then if_then - else if_then ^/^ string "else " ^^ pp_expr ifnot + else let else_ = + string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) + in if_then ^/^ else_ and pp_annot_expr Region.{value; _} = let expr, _, type_expr = value.inside in - string "(" ^^ pp_expr expr ^^ string " :" - ^/^ pp_type_expr type_expr ^^ string ")" + string "(" ^^ + nest 1 (pp_expr expr ^^ string " :" + ^/^ pp_type_expr type_expr ^^ string ")") and pp_logic_expr = function BoolExpr e -> pp_bool_expr e @@ -217,19 +224,14 @@ and pp_list_expr = function and pp_injection : 'a.('a -> document) -> 'a injection Region.reg -> document = fun printer Region.{value; _} -> - let {compound; elements; terminator} = value in - let sep = ";" in - let sep_doc = string sep ^^ break 1 in + let {compound; elements; _} = value in + let sep = string ";" ^^ break 1 in let elements = Utils.sepseq_to_list elements in - let elements = separate_map sep_doc printer elements in - let doc = - match pp_compound compound with - None -> elements - | Some (opening, closing) -> - string opening ^^ elements ^^ string closing - in match terminator with - None -> doc - | Some _ -> doc ^^ string sep + let elements = separate_map sep printer elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ nest 1 elements ^^ string closing and pp_compound = function BeginEnd (start, _) -> @@ -312,24 +314,33 @@ and pp_path = function and pp_call_expr Region.{value; _} = let lambda, arguments = value in - pp_expr lambda ^/^ pp_nseq pp_expr arguments + group (pp_expr lambda ^^ nest 2 (break 1 ^^ pp_nseq pp_expr arguments)) and pp_tuple_expr Region.{value; _} = - pp_nsepseq "," pp_expr value + let head, tail = value in + if tail = [] then pp_expr head + else + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_expr e) + | e::items -> + group (break 1 ^^ pp_expr e ^^ string ",") ^^ app items + in pp_expr head ^^ string "," ^^ app (List.map snd tail) and pp_par_expr Region.{value; _} = - string "(" ^^ pp_expr value.inside ^^ string ")" + string "(" ^^ nest 1 (pp_expr value.inside) ^^ string ")" and pp_let_in Region.{value; _} = let {binding; kwd_rec; body; attributes; _} = value in let binding = pp_let_binding binding - and body = pp_expr body and attr = pp_attributes attributes in let rec_doc = match kwd_rec with None -> empty - | Some _ -> string " rec" - in string "let" ^^ rec_doc ^/^ binding - ^/^ string "in" ^/^ body ^/^ attr + | Some _ -> string "rec " + in group (string "let " ^^ rec_doc ^^ binding + ^^ group (nest 2 (break 1 ^^ attr)) + ^/^ string "in" + ^^ group (nest 2 (break 1 ^^ pp_expr body))) and pp_fun Region.{value; _} = let {binders; lhs_type; body; _} = value in @@ -337,8 +348,8 @@ and pp_fun Region.{value; _} = and annot = match lhs_type with None -> empty | Some (_,e) -> string ": " ^/^ pp_type_expr e - and body = pp_expr body in - string "fun " ^^ binders ^^ annot ^^ string " ->" ^/^ body + in string "fun " ^^ nest 4 binders ^^ annot + ^^ string " ->" ^^ nest 2 (break 1 ^^ pp_expr body) and pp_seq e = pp_injection pp_expr e diff --git a/src/passes/1-parser/cameligo/error.messages.checked-in b/src/passes/1-parser/cameligo/error.messages.checked-in index 270e55960..629edb9e2 100644 --- a/src/passes/1-parser/cameligo/error.messages.checked-in +++ b/src/passes/1-parser/cameligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: Begin True RBRACKET ## -## Ends in an error in state: 218. +## Ends in an error in state: 219. ## ## sequence -> Begin option(sep_or_term_list(expr,SEMI)) . End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -11,28 +11,28 @@ interactive_expr: Begin True RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 243, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 221, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) -## In state 217, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 244, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 222, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 218, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) ## interactive_expr: Begin With ## -## Ends in an error in state: 201. +## Ends in an error in state: 202. ## ## sequence -> Begin . option(sep_or_term_list(expr,SEMI)) End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -44,7 +44,7 @@ interactive_expr: Begin With interactive_expr: C_None WILD ## -## Ends in an error in state: 222. +## Ends in an error in state: 223. ## ## add_expr_level -> mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -59,7 +59,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some With ## -## Ends in an error in state: 202. +## Ends in an error in state: 203. ## ## constr_expr -> C_Some . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -71,7 +71,7 @@ interactive_expr: C_Some With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 196. +## Ends in an error in state: 197. ## ## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -83,7 +83,7 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 195. +## Ends in an error in state: 196. ## ## module_fun -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -96,7 +96,7 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT With ## -## Ends in an error in state: 193. +## Ends in an error in state: 194. ## ## module_field -> Constr DOT . module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -109,7 +109,7 @@ interactive_expr: Constr DOT With interactive_expr: Constr WILD ## -## Ends in an error in state: 192. +## Ends in an error in state: 193. ## ## constr_expr -> Constr . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## constr_expr -> Constr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -124,7 +124,7 @@ interactive_expr: Constr WILD interactive_expr: Fun WILD ARROW With ## -## Ends in an error in state: 190. +## Ends in an error in state: 191. ## ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -136,7 +136,7 @@ interactive_expr: Fun WILD ARROW With interactive_expr: Fun WILD RPAR ## -## Ends in an error in state: 308. +## Ends in an error in state: 309. ## ## nseq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -147,14 +147,14 @@ interactive_expr: Fun WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production irrefutable -> sub_irrefutable +## In state 135, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun WILD WILD RPAR ## -## Ends in an error in state: 310. +## Ends in an error in state: 311. ## ## seq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -165,14 +165,14 @@ interactive_expr: Fun WILD WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production irrefutable -> sub_irrefutable +## In state 135, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun With ## -## Ends in an error in state: 188. +## Ends in an error in state: 189. ## ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -184,7 +184,7 @@ interactive_expr: Fun With interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 185. +## Ends in an error in state: 186. ## ## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -196,7 +196,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int WILD ## -## Ends in an error in state: 184. +## Ends in an error in state: 185. ## ## nsepseq(selection,DOT) -> selection . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -209,7 +209,7 @@ interactive_expr: Ident DOT Int WILD interactive_expr: Ident DOT With ## -## Ends in an error in state: 181. +## Ends in an error in state: 182. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -221,7 +221,7 @@ interactive_expr: Ident DOT With interactive_expr: Ident WILD ## -## Ends in an error in state: 180. +## Ends in an error in state: 181. ## ## core_expr -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -234,7 +234,7 @@ interactive_expr: Ident WILD interactive_expr: If True Then Fun WILD ARROW With ## -## Ends in an error in state: 426. +## Ends in an error in state: 427. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -247,7 +247,7 @@ interactive_expr: If True Then Fun WILD ARROW With interactive_expr: If True Then Fun With ## -## Ends in an error in state: 424. +## Ends in an error in state: 425. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -260,7 +260,7 @@ interactive_expr: If True Then Fun With interactive_expr: If True Then If True Then True Else With ## -## Ends in an error in state: 431. +## Ends in an error in state: 432. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -273,7 +273,7 @@ interactive_expr: If True Then If True Then True Else With interactive_expr: If True Then If True Then With ## -## Ends in an error in state: 423. +## Ends in an error in state: 424. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] @@ -287,7 +287,7 @@ interactive_expr: If True Then If True Then With interactive_expr: If True Then If True With ## -## Ends in an error in state: 422. +## Ends in an error in state: 423. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] @@ -300,25 +300,25 @@ interactive_expr: If True Then If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If True Then If With ## -## Ends in an error in state: 421. +## Ends in an error in state: 422. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] @@ -332,7 +332,7 @@ interactive_expr: If True Then If With interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 419. +## Ends in an error in state: 420. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -344,15 +344,15 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: If True Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 420. +## Ends in an error in state: 421. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -365,7 +365,7 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes In With interactive_expr: If True Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 418. +## Ends in an error in state: 419. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -377,26 +377,26 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If True Then Let Rec With ## -## Ends in an error in state: 417. +## Ends in an error in state: 418. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -409,7 +409,7 @@ interactive_expr: If True Then Let Rec With interactive_expr: If True Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 435. +## Ends in an error in state: 436. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -421,15 +421,15 @@ interactive_expr: If True Then Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: If True Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 436. +## Ends in an error in state: 437. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -442,7 +442,7 @@ interactive_expr: If True Then Let WILD EQ Bytes In With interactive_expr: If True Then Let WILD EQ Bytes With ## -## Ends in an error in state: 434. +## Ends in an error in state: 435. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -454,26 +454,26 @@ interactive_expr: If True Then Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If True Then Let With ## -## Ends in an error in state: 416. +## Ends in an error in state: 417. ## ## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ] @@ -488,7 +488,7 @@ interactive_expr: If True Then Let With interactive_expr: If True Then Match True Type ## -## Ends in an error in state: 315. +## Ends in an error in state: 316. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] @@ -500,25 +500,25 @@ interactive_expr: If True Then Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If True Then Match True With VBAR Begin ## -## Ends in an error in state: 318. +## Ends in an error in state: 319. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] @@ -531,7 +531,7 @@ interactive_expr: If True Then Match True With VBAR Begin interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 345. +## Ends in an error in state: 346. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## cases(base_if_then_else) -> cases(base_cond) VBAR . case_clause(base_if_then_else) [ Else ] @@ -544,7 +544,7 @@ interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 398. +## Ends in an error in state: 399. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun nseq(irrefutable) ARROW . base_if_then_else [ Else ] @@ -557,7 +557,7 @@ interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With interactive_expr: If True Then Match True With WILD ARROW Fun With ## -## Ends in an error in state: 396. +## Ends in an error in state: 397. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun . nseq(irrefutable) ARROW base_if_then_else [ Else ] @@ -570,7 +570,7 @@ interactive_expr: If True Then Match True With WILD ARROW Fun With interactive_expr: If True Then Match True With WILD ARROW If True Then True Else With ## -## Ends in an error in state: 395. +## Ends in an error in state: 396. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr Then closed_if Else . base_if_then_else [ Else ] @@ -583,7 +583,7 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then True Else interactive_expr: If True Then Match True With WILD ARROW If True Then With ## -## Ends in an error in state: 337. +## Ends in an error in state: 338. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -597,7 +597,7 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then With interactive_expr: If True Then Match True With WILD ARROW If True With ## -## Ends in an error in state: 336. +## Ends in an error in state: 337. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -610,25 +610,25 @@ interactive_expr: If True Then Match True With WILD ARROW If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If True Then Match True With WILD ARROW If With ## -## Ends in an error in state: 335. +## Ends in an error in state: 336. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -642,7 +642,7 @@ interactive_expr: If True Then Match True With WILD ARROW If With interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 333. +## Ends in an error in state: 334. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -654,15 +654,15 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 334. +## Ends in an error in state: 335. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -675,7 +675,7 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 332. +## Ends in an error in state: 333. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -687,26 +687,26 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If True Then Match True With WILD ARROW Let Rec With ## -## Ends in an error in state: 331. +## Ends in an error in state: 332. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec . let_binding seq(Attr) In base_if_then_else [ Else ] @@ -719,7 +719,7 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec With interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 410. +## Ends in an error in state: 411. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -731,15 +731,15 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 411. +## Ends in an error in state: 412. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -752,7 +752,7 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In W interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 409. +## Ends in an error in state: 410. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -764,26 +764,26 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: If True Then Match True With WILD ARROW Let With ## -## Ends in an error in state: 330. +## Ends in an error in state: 331. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -798,7 +798,7 @@ interactive_expr: If True Then Match True With WILD ARROW Let With interactive_expr: If True Then Match True With WILD ARROW With ## -## Ends in an error in state: 329. +## Ends in an error in state: 330. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern ARROW . base_if_then_else [ Else ] @@ -811,7 +811,7 @@ interactive_expr: If True Then Match True With WILD ARROW With interactive_expr: If True Then Match True With WILD CONS Bytes SEMI ## -## Ends in an error in state: 328. +## Ends in an error in state: 329. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern . ARROW base_if_then_else [ Else ] @@ -823,15 +823,15 @@ interactive_expr: If True Then Match True With WILD CONS Bytes SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 95, spurious reduction of production tail -> sub_pattern -## In state 322, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 96, spurious reduction of production tail -> sub_pattern +## In state 323, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: If True Then Match True With With ## -## Ends in an error in state: 316. +## Ends in an error in state: 317. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] @@ -844,7 +844,7 @@ interactive_expr: If True Then Match True With With interactive_expr: If True Then Match With ## -## Ends in an error in state: 314. +## Ends in an error in state: 315. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] @@ -857,7 +857,7 @@ interactive_expr: If True Then Match With interactive_expr: If True Then True COMMA Bytes VBAR ## -## Ends in an error in state: 427. +## Ends in an error in state: 428. ## ## base_expr(closed_if) -> tuple_expr . [ Else ] ## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -869,25 +869,25 @@ interactive_expr: If True Then True COMMA Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 295, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 294, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 216, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 296, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 295, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 217, spurious reduction of production tuple_expr -> tuple(disj_expr_level) ## interactive_expr: If True Then True Else With ## -## Ends in an error in state: 439. +## Ends in an error in state: 440. ## ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -899,7 +899,7 @@ interactive_expr: If True Then True Else With interactive_expr: If True Then True VBAR ## -## Ends in an error in state: 428. +## Ends in an error in state: 429. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -914,22 +914,22 @@ interactive_expr: If True Then True VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If True Then With ## -## Ends in an error in state: 313. +## Ends in an error in state: 314. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -942,7 +942,7 @@ interactive_expr: If True Then With interactive_expr: If True With ## -## Ends in an error in state: 312. +## Ends in an error in state: 313. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -954,25 +954,25 @@ interactive_expr: If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If With ## -## Ends in an error in state: 179. +## Ends in an error in state: 180. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -985,7 +985,7 @@ interactive_expr: If With interactive_expr: LBRACE Constr DOT Ident With ## -## Ends in an error in state: 443. +## Ends in an error in state: 444. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With ] ## @@ -997,7 +997,7 @@ interactive_expr: LBRACE Constr DOT Ident With interactive_expr: LBRACE Constr DOT With ## -## Ends in an error in state: 442. +## Ends in an error in state: 443. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -1009,7 +1009,7 @@ interactive_expr: LBRACE Constr DOT With interactive_expr: LBRACE Constr With ## -## Ends in an error in state: 441. +## Ends in an error in state: 442. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -1021,7 +1021,7 @@ interactive_expr: LBRACE Constr With interactive_expr: LBRACE Ident DOT Ident VBAR ## -## Ends in an error in state: 447. +## Ends in an error in state: 448. ## ## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1032,16 +1032,16 @@ interactive_expr: LBRACE Ident DOT Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 184, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 187, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 446, spurious reduction of production path -> projection +## In state 185, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 188, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 447, spurious reduction of production path -> projection ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 474. +## Ends in an error in state: 475. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -1054,7 +1054,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 473. +## Ends in an error in state: 474. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -1067,26 +1067,26 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 440, spurious reduction of production field_assignment -> Ident EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 441, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 470. +## Ends in an error in state: 471. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -1098,7 +1098,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 469. +## Ends in an error in state: 470. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -1111,7 +1111,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 468. +## Ends in an error in state: 469. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -1124,26 +1124,26 @@ interactive_expr: LBRACE Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 440, spurious reduction of production field_assignment -> Ident EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 441, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ With ## -## Ends in an error in state: 177. +## Ends in an error in state: 178. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACE ] ## @@ -1155,7 +1155,7 @@ interactive_expr: LBRACE Ident EQ With interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 176. +## Ends in an error in state: 177. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## path -> Ident . [ With ] @@ -1169,7 +1169,7 @@ interactive_expr: LBRACE Ident WILD interactive_expr: LBRACE Ident With Ident DOT With ## -## Ends in an error in state: 450. +## Ends in an error in state: 451. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] ## @@ -1181,7 +1181,7 @@ interactive_expr: LBRACE Ident With Ident DOT With interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 464. +## Ends in an error in state: 465. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -1194,7 +1194,7 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 463. +## Ends in an error in state: 464. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -1207,26 +1207,26 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 458, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 459, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With ## -## Ends in an error in state: 460. +## Ends in an error in state: 461. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -1239,7 +1239,7 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident With Ident EQ Bytes With ## -## Ends in an error in state: 459. +## Ends in an error in state: 460. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -1252,26 +1252,26 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 458, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 459, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: LBRACE Ident With Ident EQ With ## -## Ends in an error in state: 457. +## Ends in an error in state: 458. ## ## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ] ## @@ -1283,7 +1283,7 @@ interactive_expr: LBRACE Ident With Ident EQ With interactive_expr: LBRACE Ident With Ident With ## -## Ends in an error in state: 449. +## Ends in an error in state: 450. ## ## nsepseq(field_name,DOT) -> Ident . [ EQ ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] @@ -1296,7 +1296,7 @@ interactive_expr: LBRACE Ident With Ident With interactive_expr: LBRACE Ident With With ## -## Ends in an error in state: 448. +## Ends in an error in state: 449. ## ## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1308,7 +1308,7 @@ interactive_expr: LBRACE Ident With With interactive_expr: LBRACE With ## -## Ends in an error in state: 175. +## Ends in an error in state: 176. ## ## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1321,7 +1321,7 @@ interactive_expr: LBRACE With interactive_expr: LBRACKET True End ## -## Ends in an error in state: 479. +## Ends in an error in state: 480. ## ## list__(expr) -> LBRACKET option(sep_or_term_list(expr,SEMI)) . RBRACKET [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1332,28 +1332,28 @@ interactive_expr: LBRACKET True End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 243, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 221, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) -## In state 217, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 244, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 222, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 218, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) ## interactive_expr: LBRACKET True SEMI True SEMI With ## -## Ends in an error in state: 248. +## Ends in an error in state: 249. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -1366,7 +1366,7 @@ interactive_expr: LBRACKET True SEMI True SEMI With interactive_expr: LBRACKET True SEMI True With ## -## Ends in an error in state: 247. +## Ends in an error in state: 248. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -1379,25 +1379,25 @@ interactive_expr: LBRACKET True SEMI True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET True SEMI With ## -## Ends in an error in state: 244. +## Ends in an error in state: 245. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -1410,7 +1410,7 @@ interactive_expr: LBRACKET True SEMI With interactive_expr: LBRACKET True With ## -## Ends in an error in state: 243. +## Ends in an error in state: 244. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -1423,25 +1423,25 @@ interactive_expr: LBRACKET True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET With ## -## Ends in an error in state: 167. +## Ends in an error in state: 168. ## ## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1451,9 +1451,9 @@ interactive_expr: LBRACKET With -interactive_expr: LPAR True COLON Ident VBAR +interactive_expr: LPAR True COLON String VBAR ## -## Ends in an error in state: 510. +## Ends in an error in state: 511. ## ## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1464,16 +1464,16 @@ interactive_expr: LPAR True COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type ## interactive_expr: LPAR True COLON With ## -## Ends in an error in state: 509. +## Ends in an error in state: 510. ## ## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -1485,7 +1485,7 @@ interactive_expr: LPAR True COLON With interactive_expr: LPAR True With ## -## Ends in an error in state: 507. +## Ends in an error in state: 508. ## ## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## par(expr) -> LPAR expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1497,25 +1497,25 @@ interactive_expr: LPAR True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LPAR With ## -## Ends in an error in state: 164. +## Ends in an error in state: 165. ## ## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## par(expr) -> LPAR . expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -1529,7 +1529,7 @@ interactive_expr: LPAR With interactive_expr: Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 173. +## Ends in an error in state: 174. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1540,15 +1540,15 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 174. +## Ends in an error in state: 175. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1560,7 +1560,7 @@ interactive_expr: Let Rec WILD EQ Bytes In With interactive_expr: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 170. +## Ends in an error in state: 171. ## ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1571,26 +1571,26 @@ interactive_expr: Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let Rec With ## -## Ends in an error in state: 169. +## Ends in an error in state: 170. ## ## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1602,7 +1602,7 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 477. +## Ends in an error in state: 478. ## ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1613,15 +1613,15 @@ interactive_expr: Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 478. +## Ends in an error in state: 479. ## ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1633,7 +1633,7 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 476. +## Ends in an error in state: 477. ## ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1644,26 +1644,26 @@ interactive_expr: Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let With ## -## Ends in an error in state: 168. +## Ends in an error in state: 169. ## ## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -1676,7 +1676,7 @@ interactive_expr: Let With interactive_expr: MINUS With ## -## Ends in an error in state: 166. +## Ends in an error in state: 167. ## ## unary_expr_level -> MINUS . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -1688,7 +1688,7 @@ interactive_expr: MINUS With interactive_expr: Match True Type ## -## Ends in an error in state: 482. +## Ends in an error in state: 483. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1699,25 +1699,25 @@ interactive_expr: Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With LPAR Bytes RPAR With ## -## Ends in an error in state: 320. +## Ends in an error in state: 321. ## ## pattern -> sub_pattern . CONS tail [ ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -1730,7 +1730,7 @@ interactive_expr: Match True With LPAR Bytes RPAR With interactive_expr: Match True With VBAR Begin ## -## Ends in an error in state: 484. +## Ends in an error in state: 485. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1742,7 +1742,7 @@ interactive_expr: Match True With VBAR Begin interactive_expr: Match True With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 506. +## Ends in an error in state: 507. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1754,7 +1754,7 @@ interactive_expr: Match True With WILD ARROW Bytes VBAR With interactive_expr: Match True With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 499. +## Ends in an error in state: 500. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1766,7 +1766,7 @@ interactive_expr: Match True With WILD ARROW Fun WILD ARROW With interactive_expr: Match True With WILD ARROW Fun With ## -## Ends in an error in state: 497. +## Ends in an error in state: 498. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -1778,7 +1778,7 @@ interactive_expr: Match True With WILD ARROW Fun With interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With ## -## Ends in an error in state: 360. +## Ends in an error in state: 361. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] @@ -1791,7 +1791,7 @@ interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With interactive_expr: Match True With WILD ARROW If True Then Fun With ## -## Ends in an error in state: 358. +## Ends in an error in state: 359. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] @@ -1804,7 +1804,7 @@ interactive_expr: Match True With WILD ARROW If True Then Fun With interactive_expr: Match True With WILD ARROW If True Then If True Then True Else With ## -## Ends in an error in state: 379. +## Ends in an error in state: 380. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] @@ -1817,7 +1817,7 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then True Else interactive_expr: Match True With WILD ARROW If True Then If True Then With ## -## Ends in an error in state: 357. +## Ends in an error in state: 358. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -1831,7 +1831,7 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then With interactive_expr: Match True With WILD ARROW If True Then If True With ## -## Ends in an error in state: 356. +## Ends in an error in state: 357. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -1844,25 +1844,25 @@ interactive_expr: Match True With WILD ARROW If True Then If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With WILD ARROW If True Then If With ## -## Ends in an error in state: 355. +## Ends in an error in state: 356. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -1876,7 +1876,7 @@ interactive_expr: Match True With WILD ARROW If True Then If With interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 353. +## Ends in an error in state: 354. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] @@ -1888,15 +1888,15 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 354. +## Ends in an error in state: 355. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] @@ -1909,7 +1909,7 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 352. +## Ends in an error in state: 353. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] @@ -1921,26 +1921,26 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match True With WILD ARROW If True Then Let Rec With ## -## Ends in an error in state: 351. +## Ends in an error in state: 352. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] @@ -1953,7 +1953,7 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec With interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 390. +## Ends in an error in state: 391. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] @@ -1965,15 +1965,15 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 391. +## Ends in an error in state: 392. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] @@ -1986,7 +1986,7 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In W interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With ## -## Ends in an error in state: 389. +## Ends in an error in state: 390. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] @@ -1998,26 +1998,26 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match True With WILD ARROW If True Then Let With ## -## Ends in an error in state: 350. +## Ends in an error in state: 351. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -2032,7 +2032,7 @@ interactive_expr: Match True With WILD ARROW If True Then Let With interactive_expr: Match True With WILD ARROW If True Then Match True Type ## -## Ends in an error in state: 339. +## Ends in an error in state: 340. ## ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -2043,25 +2043,25 @@ interactive_expr: Match True With WILD ARROW If True Then Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With WILD ARROW If True Then Match True With VBAR Begin ## -## Ends in an error in state: 341. +## Ends in an error in state: 342. ## ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## @@ -2073,7 +2073,7 @@ interactive_expr: Match True With WILD ARROW If True Then Match True With VBAR B interactive_expr: Match True With WILD ARROW If True Then Match True With WILD ARROW Bytes With ## -## Ends in an error in state: 344. +## Ends in an error in state: 345. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(base_if_then_else) -> cases(base_cond) . VBAR case_clause(base_if_then_else) [ Else ] @@ -2085,27 +2085,27 @@ interactive_expr: Match True With WILD ARROW If True Then Match True With WILD A ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 403, spurious reduction of production base_expr(base_cond) -> disj_expr_level -## In state 375, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 376, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 414, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 349, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 404, spurious reduction of production base_expr(base_cond) -> disj_expr_level +## In state 376, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 377, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 415, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 350, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Match True With WILD ARROW If True Then Match True With With ## -## Ends in an error in state: 340. +## Ends in an error in state: 341. ## ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -2117,7 +2117,7 @@ interactive_expr: Match True With WILD ARROW If True Then Match True With With interactive_expr: Match True With WILD ARROW If True Then Match With ## -## Ends in an error in state: 338. +## Ends in an error in state: 339. ## ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -2129,7 +2129,7 @@ interactive_expr: Match True With WILD ARROW If True Then Match With interactive_expr: Match True With WILD ARROW If True Then True Else With ## -## Ends in an error in state: 496. +## Ends in an error in state: 497. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2141,7 +2141,7 @@ interactive_expr: Match True With WILD ARROW If True Then True Else With interactive_expr: Match True With WILD ARROW If True Then With ## -## Ends in an error in state: 494. +## Ends in an error in state: 495. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -2154,7 +2154,7 @@ interactive_expr: Match True With WILD ARROW If True Then With interactive_expr: Match True With WILD ARROW If True With ## -## Ends in an error in state: 493. +## Ends in an error in state: 494. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -2166,25 +2166,25 @@ interactive_expr: Match True With WILD ARROW If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Match True With WILD ARROW If With ## -## Ends in an error in state: 492. +## Ends in an error in state: 493. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -2197,7 +2197,7 @@ interactive_expr: Match True With WILD ARROW If With interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 490. +## Ends in an error in state: 491. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2208,15 +2208,15 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 491. +## Ends in an error in state: 492. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2228,7 +2228,7 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 489. +## Ends in an error in state: 490. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2239,26 +2239,26 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match True With WILD ARROW Let Rec With ## -## Ends in an error in state: 488. +## Ends in an error in state: 489. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2270,7 +2270,7 @@ interactive_expr: Match True With WILD ARROW Let Rec With interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 503. +## Ends in an error in state: 504. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2281,15 +2281,15 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 171, spurious reduction of production seq(Attr) -> -## In state 172, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 172, spurious reduction of production seq(Attr) -> +## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 504. +## Ends in an error in state: 505. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2301,7 +2301,7 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 502. +## Ends in an error in state: 503. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2312,26 +2312,26 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Match True With WILD ARROW Let With ## -## Ends in an error in state: 487. +## Ends in an error in state: 488. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -2344,7 +2344,7 @@ interactive_expr: Match True With WILD ARROW Let With interactive_expr: Match True With WILD ARROW True COMMA Bytes Else ## -## Ends in an error in state: 505. +## Ends in an error in state: 506. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] @@ -2356,30 +2356,30 @@ interactive_expr: Match True With WILD ARROW True COMMA Bytes Else ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 295, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 294, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 216, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 500, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 375, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 376, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 414, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 349, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 296, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 295, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 217, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 501, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 376, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 377, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 415, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 350, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## interactive_expr: Match True With WILD ARROW True Else ## -## Ends in an error in state: 501. +## Ends in an error in state: 502. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End EOF COMMA COLON BOOL_OR Attr ] @@ -2393,22 +2393,22 @@ interactive_expr: Match True With WILD ARROW True Else ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Match True With WILD ARROW With ## -## Ends in an error in state: 486. +## Ends in an error in state: 487. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2420,7 +2420,7 @@ interactive_expr: Match True With WILD ARROW With interactive_expr: Match True With WILD COMMA WILD COMMA With ## -## Ends in an error in state: 325. +## Ends in an error in state: 326. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2432,7 +2432,7 @@ interactive_expr: Match True With WILD COMMA WILD COMMA With interactive_expr: Match True With WILD COMMA WILD With ## -## Ends in an error in state: 324. +## Ends in an error in state: 325. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -2445,7 +2445,7 @@ interactive_expr: Match True With WILD COMMA WILD With interactive_expr: Match True With WILD COMMA With ## -## Ends in an error in state: 323. +## Ends in an error in state: 324. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2457,7 +2457,7 @@ interactive_expr: Match True With WILD COMMA With interactive_expr: Match True With WILD CONS Bytes SEMI ## -## Ends in an error in state: 485. +## Ends in an error in state: 486. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2468,15 +2468,15 @@ interactive_expr: Match True With WILD CONS Bytes SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 95, spurious reduction of production tail -> sub_pattern -## In state 322, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 96, spurious reduction of production tail -> sub_pattern +## In state 323, spurious reduction of production pattern -> sub_pattern CONS tail ## interactive_expr: Match True With WILD CONS With ## -## Ends in an error in state: 321. +## Ends in an error in state: 322. ## ## pattern -> sub_pattern CONS . tail [ ARROW ] ## @@ -2488,7 +2488,7 @@ interactive_expr: Match True With WILD CONS With interactive_expr: Match True With WILD With ## -## Ends in an error in state: 342. +## Ends in an error in state: 343. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ CONS COMMA ] @@ -2501,7 +2501,7 @@ interactive_expr: Match True With WILD With interactive_expr: Match True With With ## -## Ends in an error in state: 483. +## Ends in an error in state: 484. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2513,7 +2513,7 @@ interactive_expr: Match True With With interactive_expr: Match With ## -## Ends in an error in state: 165. +## Ends in an error in state: 166. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## @@ -2525,7 +2525,7 @@ interactive_expr: Match With interactive_expr: Not With ## -## Ends in an error in state: 161. +## Ends in an error in state: 162. ## ## unary_expr_level -> Not . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2537,7 +2537,7 @@ interactive_expr: Not With interactive_expr: True BOOL_AND With ## -## Ends in an error in state: 270. +## Ends in an error in state: 271. ## ## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2549,7 +2549,7 @@ interactive_expr: True BOOL_AND With interactive_expr: True BOOL_OR With ## -## Ends in an error in state: 301. +## Ends in an error in state: 302. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] ## @@ -2561,7 +2561,7 @@ interactive_expr: True BOOL_OR With interactive_expr: True CAT With ## -## Ends in an error in state: 253. +## Ends in an error in state: 254. ## ## bin_op(cons_expr_level,CAT,cat_expr_level) -> cons_expr_level CAT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2573,7 +2573,7 @@ interactive_expr: True CAT With interactive_expr: True COMMA True COMMA With ## -## Ends in an error in state: 296. +## Ends in an error in state: 297. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ] ## @@ -2585,7 +2585,7 @@ interactive_expr: True COMMA True COMMA With interactive_expr: True COMMA With ## -## Ends in an error in state: 293. +## Ends in an error in state: 294. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ] ## @@ -2597,7 +2597,7 @@ interactive_expr: True COMMA With interactive_expr: True CONS With ## -## Ends in an error in state: 267. +## Ends in an error in state: 268. ## ## bin_op(add_expr_level,CONS,cons_expr_level) -> add_expr_level CONS . cons_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2609,7 +2609,7 @@ interactive_expr: True CONS With interactive_expr: True Constr With ## -## Ends in an error in state: 199. +## Ends in an error in state: 200. ## ## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -2622,7 +2622,7 @@ interactive_expr: True Constr With interactive_expr: True EQ With ## -## Ends in an error in state: 282. +## Ends in an error in state: 283. ## ## bin_op(comp_expr_level,EQ,cat_expr_level) -> comp_expr_level EQ . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2634,7 +2634,7 @@ interactive_expr: True EQ With interactive_expr: True GE With ## -## Ends in an error in state: 280. +## Ends in an error in state: 281. ## ## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2646,7 +2646,7 @@ interactive_expr: True GE With interactive_expr: True GT With ## -## Ends in an error in state: 278. +## Ends in an error in state: 279. ## ## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2658,7 +2658,7 @@ interactive_expr: True GT With interactive_expr: True LE With ## -## Ends in an error in state: 276. +## Ends in an error in state: 277. ## ## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2670,7 +2670,7 @@ interactive_expr: True LE With interactive_expr: True LT With ## -## Ends in an error in state: 274. +## Ends in an error in state: 275. ## ## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2682,7 +2682,7 @@ interactive_expr: True LT With interactive_expr: True MINUS C_None WILD ## -## Ends in an error in state: 266. +## Ends in an error in state: 267. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -2697,7 +2697,7 @@ interactive_expr: True MINUS C_None WILD interactive_expr: True MINUS With ## -## Ends in an error in state: 265. +## Ends in an error in state: 266. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2709,7 +2709,7 @@ interactive_expr: True MINUS With interactive_expr: True Mod With ## -## Ends in an error in state: 236. +## Ends in an error in state: 237. ## ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2721,7 +2721,7 @@ interactive_expr: True Mod With interactive_expr: True NE With ## -## Ends in an error in state: 272. +## Ends in an error in state: 273. ## ## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -2733,7 +2733,7 @@ interactive_expr: True NE With interactive_expr: True Or With ## -## Ends in an error in state: 251. +## Ends in an error in state: 252. ## ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] ## @@ -2745,7 +2745,7 @@ interactive_expr: True Or With interactive_expr: True PLUS C_None WILD ## -## Ends in an error in state: 264. +## Ends in an error in state: 265. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -2760,7 +2760,7 @@ interactive_expr: True PLUS C_None WILD interactive_expr: True PLUS With ## -## Ends in an error in state: 263. +## Ends in an error in state: 264. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2772,7 +2772,7 @@ interactive_expr: True PLUS With interactive_expr: True SLASH With ## -## Ends in an error in state: 234. +## Ends in an error in state: 235. ## ## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2784,7 +2784,7 @@ interactive_expr: True SLASH With interactive_expr: True TIMES With ## -## Ends in an error in state: 223. +## Ends in an error in state: 224. ## ## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2796,7 +2796,7 @@ interactive_expr: True TIMES With interactive_expr: True True True WILD ## -## Ends in an error in state: 229. +## Ends in an error in state: 230. ## ## seq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2808,7 +2808,7 @@ interactive_expr: True True True WILD interactive_expr: True True WILD ## -## Ends in an error in state: 227. +## Ends in an error in state: 228. ## ## nseq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2820,7 +2820,7 @@ interactive_expr: True True WILD interactive_expr: True VBAR ## -## Ends in an error in state: 250. +## Ends in an error in state: 251. ## ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End EOF COMMA COLON BOOL_OR Attr ] @@ -2834,22 +2834,22 @@ interactive_expr: True VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: True WILD ## -## Ends in an error in state: 225. +## Ends in an error in state: 226. ## ## call_expr -> core_expr . nseq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## call_expr_level -> core_expr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -2862,7 +2862,7 @@ interactive_expr: True WILD interactive_expr: True With ## -## Ends in an error in state: 527. +## Ends in an error in state: 528. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2873,25 +2873,25 @@ interactive_expr: True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: With ## -## Ends in an error in state: 525. +## Ends in an error in state: 526. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2901,9 +2901,9 @@ interactive_expr: With -contract: Let Ident WILD COLON Ident VBAR +contract: Let Ident WILD COLON String VBAR ## -## Ends in an error in state: 157. +## Ends in an error in state: 158. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -2914,18 +2914,18 @@ contract: Let Ident WILD COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type -## In state 155, spurious reduction of production type_annotation -> COLON type_expr -## In state 156, spurious reduction of production option(type_annotation) -> type_annotation +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type +## In state 156, spurious reduction of production type_annotation -> COLON type_expr +## In state 157, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let Ident WILD EQ With ## -## Ends in an error in state: 158. +## Ends in an error in state: 159. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -2937,7 +2937,7 @@ contract: Let Ident WILD EQ With contract: Let Ident WILD WILD With ## -## Ends in an error in state: 150. +## Ends in an error in state: 151. ## ## seq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -2949,7 +2949,7 @@ contract: Let Ident WILD WILD With contract: Let Ident WILD With ## -## Ends in an error in state: 149. +## Ends in an error in state: 150. ## ## nseq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -2961,7 +2961,7 @@ contract: Let Ident WILD With contract: Let Ident With ## -## Ends in an error in state: 148. +## Ends in an error in state: 149. ## ## let_binding -> Ident . nseq(sub_irrefutable) option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## sub_irrefutable -> Ident . [ EQ COMMA COLON ] @@ -2974,7 +2974,7 @@ contract: Let Ident With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 126. +## Ends in an error in state: 127. ## ## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ] @@ -2987,7 +2987,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 125. +## Ends in an error in state: 126. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -3001,7 +3001,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With contract: Let LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 122. +## Ends in an error in state: 123. ## ## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ] @@ -3014,7 +3014,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 121. +## Ends in an error in state: 122. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -3028,7 +3028,7 @@ contract: Let LBRACE Ident EQ Bytes With contract: Let LBRACE Ident EQ With ## -## Ends in an error in state: 68. +## Ends in an error in state: 69. ## ## field_pattern -> Ident EQ . sub_pattern [ SEMI RBRACE ] ## @@ -3040,7 +3040,7 @@ contract: Let LBRACE Ident EQ With contract: Let LBRACE Ident With ## -## Ends in an error in state: 67. +## Ends in an error in state: 68. ## ## field_pattern -> Ident . EQ sub_pattern [ SEMI RBRACE ] ## @@ -3052,7 +3052,7 @@ contract: Let LBRACE Ident With contract: Let LBRACE With ## -## Ends in an error in state: 66. +## Ends in an error in state: 67. ## ## record_pattern -> LBRACE . sep_or_term_list(field_pattern,SEMI) RBRACE [ WILD SEMI RPAR RBRACKET RBRACE LPAR LBRACE Ident EQ Constr CONS COMMA COLON ARROW ] ## @@ -3064,7 +3064,7 @@ contract: Let LBRACE With contract: Let LPAR Constr C_Some With ## -## Ends in an error in state: 79. +## Ends in an error in state: 80. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -3076,7 +3076,7 @@ contract: Let LPAR Constr C_Some With contract: Let LPAR Constr Constr With ## -## Ends in an error in state: 78. +## Ends in an error in state: 79. ## ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -3089,7 +3089,7 @@ contract: Let LPAR Constr Constr With contract: Let LPAR Constr LBRACKET WILD RPAR ## -## Ends in an error in state: 91. +## Ends in an error in state: 92. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -3102,14 +3102,14 @@ contract: Let LPAR Constr LBRACKET WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 95, spurious reduction of production tail -> sub_pattern +## In state 96, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR ## -## Ends in an error in state: 93. +## Ends in an error in state: 94. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -3122,14 +3122,14 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 95, spurious reduction of production tail -> sub_pattern +## In state 96, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With ## -## Ends in an error in state: 94. +## Ends in an error in state: 95. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## seq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -3142,7 +3142,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With contract: Let LPAR Constr LBRACKET WILD SEMI With ## -## Ends in an error in state: 92. +## Ends in an error in state: 93. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -3155,7 +3155,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI With contract: Let LPAR Constr LBRACKET With ## -## Ends in an error in state: 74. +## Ends in an error in state: 75. ## ## list__(tail) -> LBRACKET . option(sep_or_term_list(tail,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -3167,7 +3167,7 @@ contract: Let LPAR Constr LBRACKET With contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With ## -## Ends in an error in state: 111. +## Ends in an error in state: 112. ## ## nsepseq(tail,COMMA) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -3179,7 +3179,7 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## ## nsepseq(tail,COMMA) -> tail . [ RPAR ] ## nsepseq(tail,COMMA) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -3191,14 +3191,14 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 95, spurious reduction of production tail -> sub_pattern +## In state 96, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD COMMA With ## -## Ends in an error in state: 109. +## Ends in an error in state: 110. ## ## tuple(tail) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -3210,7 +3210,7 @@ contract: Let LPAR Constr LPAR WILD COMMA With contract: Let LPAR Constr LPAR WILD CONS With ## -## Ends in an error in state: 96. +## Ends in an error in state: 97. ## ## tail -> sub_pattern CONS . tail [ SEMI RPAR RBRACKET COMMA ARROW ] ## @@ -3222,7 +3222,7 @@ contract: Let LPAR Constr LPAR WILD CONS With contract: Let LPAR Constr LPAR WILD SEMI ## -## Ends in an error in state: 107. +## Ends in an error in state: 108. ## ## par(tail) -> LPAR tail . RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## tuple(tail) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -3234,14 +3234,14 @@ contract: Let LPAR Constr LPAR WILD SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 95, spurious reduction of production tail -> sub_pattern +## In state 96, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD With ## -## Ends in an error in state: 95. +## Ends in an error in state: 96. ## ## tail -> sub_pattern . [ SEMI RPAR RBRACKET COMMA ARROW ] ## tail -> sub_pattern . CONS tail [ SEMI RPAR RBRACKET COMMA ARROW ] @@ -3254,7 +3254,7 @@ contract: Let LPAR Constr LPAR WILD With contract: Let LPAR Constr LPAR With ## -## Ends in an error in state: 73. +## Ends in an error in state: 74. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## par(tail) -> LPAR . tail RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -3268,7 +3268,7 @@ contract: Let LPAR Constr LPAR With contract: Let LPAR Constr WILD With ## -## Ends in an error in state: 146. +## Ends in an error in state: 147. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] ## @@ -3280,7 +3280,7 @@ contract: Let LPAR Constr WILD With contract: Let LPAR Constr With ## -## Ends in an error in state: 129. +## Ends in an error in state: 130. ## ## closed_irrefutable -> Constr . sub_pattern [ RPAR ] ## sub_irrefutable -> Constr . [ RPAR COMMA COLON ] @@ -3293,7 +3293,7 @@ contract: Let LPAR Constr With contract: Let LPAR WILD COLON With ## -## Ends in an error in state: 144. +## Ends in an error in state: 145. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -3305,7 +3305,7 @@ contract: Let LPAR WILD COLON With contract: Let LPAR WILD WILD ## -## Ends in an error in state: 143. +## Ends in an error in state: 144. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -3317,14 +3317,14 @@ contract: Let LPAR WILD WILD ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production irrefutable -> sub_irrefutable +## In state 135, spurious reduction of production irrefutable -> sub_irrefutable ## contract: Let LPAR With ## -## Ends in an error in state: 64. +## Ends in an error in state: 65. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] ## unit -> LPAR . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] @@ -3337,7 +3337,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 514. +## Ends in an error in state: 515. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -3348,26 +3348,26 @@ contract: Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## contract: Let Rec With ## -## Ends in an error in state: 63. +## Ends in an error in state: 64. ## ## let_declaration -> Let Rec . let_binding seq(Attr) [ Type Let EOF ] ## @@ -3379,7 +3379,7 @@ contract: Let Rec With contract: Let WILD COLON Ident VBAR ## -## Ends in an error in state: 386. +## Ends in an error in state: 387. ## ## let_binding -> irrefutable option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -3390,18 +3390,18 @@ contract: Let WILD COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type -## In state 155, spurious reduction of production type_annotation -> COLON type_expr -## In state 156, spurious reduction of production option(type_annotation) -> type_annotation +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type +## In state 156, spurious reduction of production type_annotation -> COLON type_expr +## In state 157, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let WILD COLON With ## -## Ends in an error in state: 154. +## Ends in an error in state: 155. ## ## type_annotation -> COLON . type_expr [ EQ ] ## @@ -3413,7 +3413,7 @@ contract: Let WILD COLON With contract: Let WILD COMMA WILD COMMA With ## -## Ends in an error in state: 138. +## Ends in an error in state: 139. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -3425,7 +3425,7 @@ contract: Let WILD COMMA WILD COMMA With contract: Let WILD COMMA WILD With ## -## Ends in an error in state: 137. +## Ends in an error in state: 138. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] @@ -3438,7 +3438,7 @@ contract: Let WILD COMMA WILD With contract: Let WILD COMMA With ## -## Ends in an error in state: 135. +## Ends in an error in state: 136. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -3450,7 +3450,7 @@ contract: Let WILD COMMA With contract: Let WILD EQ Bytes Attr With ## -## Ends in an error in state: 171. +## Ends in an error in state: 172. ## ## seq(Attr) -> Attr . seq(Attr) [ Type Let In EOF ] ## @@ -3462,7 +3462,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 516. +## Ends in an error in state: 517. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -3473,26 +3473,26 @@ contract: Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 225, spurious reduction of production call_expr_level -> core_expr -## In state 232, spurious reduction of production unary_expr_level -> call_expr_level -## In state 214, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 222, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cons_expr_level -> add_expr_level -## In state 252, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 284, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 291, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 298, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 250, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 304, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 305, spurious reduction of production expr -> base_cond__open(expr) -## In state 388, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 226, spurious reduction of production call_expr_level -> core_expr +## In state 233, spurious reduction of production unary_expr_level -> call_expr_level +## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 223, spurious reduction of production add_expr_level -> mult_expr_level +## In state 263, spurious reduction of production cons_expr_level -> add_expr_level +## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 306, spurious reduction of production expr -> base_cond__open(expr) +## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## contract: Let WILD EQ With ## -## Ends in an error in state: 387. +## Ends in an error in state: 388. ## ## let_binding -> irrefutable option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -3504,7 +3504,7 @@ contract: Let WILD EQ With contract: Let WILD WILD ## -## Ends in an error in state: 385. +## Ends in an error in state: 386. ## ## let_binding -> irrefutable . option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## @@ -3515,14 +3515,14 @@ contract: Let WILD WILD ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production irrefutable -> sub_irrefutable +## In state 135, spurious reduction of production irrefutable -> sub_irrefutable ## contract: Let WILD With ## -## Ends in an error in state: 134. +## Ends in an error in state: 135. ## ## irrefutable -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] @@ -3535,7 +3535,7 @@ contract: Let WILD With contract: Let With ## -## Ends in an error in state: 61. +## Ends in an error in state: 62. ## ## let_declaration -> Let . let_binding seq(Attr) [ Type Let EOF ] ## let_declaration -> Let . Rec let_binding seq(Attr) [ Type Let EOF ] @@ -3548,7 +3548,7 @@ contract: Let With contract: Type Ident EQ Constr DOT With ## -## Ends in an error in state: 13. +## Ends in an error in state: 14. ## ## core_type -> Constr DOT . Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] ## @@ -3572,7 +3572,7 @@ contract: Type Ident EQ Constr Of With contract: Type Ident EQ Constr VBAR With ## -## Ends in an error in state: 16. +## Ends in an error in state: 17. ## ## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI RPAR RBRACE Let EQ EOF COMMA ] ## @@ -3584,7 +3584,7 @@ contract: Type Ident EQ Constr VBAR With contract: Type Ident EQ Constr With ## -## Ends in an error in state: 12. +## Ends in an error in state: 13. ## ## core_type -> Constr . DOT Ident [ Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] ## variant -> Constr . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ] @@ -3596,71 +3596,9 @@ contract: Type Ident EQ Constr With -contract: Type Ident EQ Ident ARROW With -## -## Ends in an error in state: 36. -## -## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ] -## -## The known suffix of the stack is as follows: -## cartesian ARROW -## - - - -contract: Type Ident EQ Ident TIMES Constr With -## -## Ends in an error in state: 29. -## -## core_type -> Constr . DOT Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] -## -## The known suffix of the stack is as follows: -## Constr -## - - - -contract: Type Ident EQ Ident TIMES Ident TIMES With -## -## Ends in an error in state: 32. -## -## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident EQ Ident TIMES Ident With -## -## Ends in an error in state: 31. -## -## core_type -> core_type . Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] -## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] -## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident EQ Ident TIMES With -## -## Ends in an error in state: 28. -## -## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 522. +## Ends in an error in state: 523. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -3672,32 +3610,18 @@ contract: Type Ident EQ Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type -## In state 60, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 518, spurious reduction of production declaration -> type_decl -## - - - -contract: Type Ident EQ Ident With -## -## Ends in an error in state: 27. -## -## cartesian -> core_type . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] -## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] -## core_type -> core_type . Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] -## -## The known suffix of the stack is as follows: -## core_type +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type +## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr +## In state 519, spurious reduction of production declaration -> type_decl ## contract: Type Ident EQ LBRACE Ident COLON Constr SEMI Ident COLON Constr SEMI With ## -## Ends in an error in state: 47. +## Ends in an error in state: 48. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACE ] @@ -3710,7 +3634,7 @@ contract: Type Ident EQ LBRACE Ident COLON Constr SEMI Ident COLON Constr SEMI W contract: Type Ident EQ LBRACE Ident COLON Constr SEMI Ident COLON Ident VBAR ## -## Ends in an error in state: 46. +## Ends in an error in state: 47. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACE ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACE ] @@ -3723,17 +3647,17 @@ contract: Type Ident EQ LBRACE Ident COLON Constr SEMI Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type -## In state 20, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type +## In state 21, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident EQ LBRACE Ident COLON Constr SEMI With ## -## Ends in an error in state: 43. +## Ends in an error in state: 44. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACE ] @@ -3746,7 +3670,7 @@ contract: Type Ident EQ LBRACE Ident COLON Constr SEMI With contract: Type Ident EQ LBRACE Ident COLON Ident VBAR ## -## Ends in an error in state: 42. +## Ends in an error in state: 43. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACE ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACE ] @@ -3759,17 +3683,17 @@ contract: Type Ident EQ LBRACE Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type -## In state 20, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type +## In state 21, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident EQ LBRACE Ident COLON With ## -## Ends in an error in state: 10. +## Ends in an error in state: 11. ## ## field_decl -> Ident COLON . type_expr [ SEMI RBRACE ] ## @@ -3781,7 +3705,7 @@ contract: Type Ident EQ LBRACE Ident COLON With contract: Type Ident EQ LBRACE Ident With ## -## Ends in an error in state: 9. +## Ends in an error in state: 10. ## ## field_decl -> Ident . COLON type_expr [ SEMI RBRACE ] ## @@ -3793,7 +3717,7 @@ contract: Type Ident EQ LBRACE Ident With contract: Type Ident EQ LBRACE With ## -## Ends in an error in state: 8. +## Ends in an error in state: 9. ## ## record_type -> LBRACE . sep_or_term_list(field_decl,SEMI) RBRACE [ Type SEMI RPAR RBRACE Let EQ EOF COMMA ] ## @@ -3803,9 +3727,9 @@ contract: Type Ident EQ LBRACE With -contract: Type Ident EQ LPAR Ident COMMA Constr RPAR With +contract: Type Ident EQ LPAR String COMMA Constr RPAR With ## -## Ends in an error in state: 18. +## Ends in an error in state: 19. ## ## core_type -> type_tuple . Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] ## @@ -3815,9 +3739,9 @@ contract: Type Ident EQ LPAR Ident COMMA Constr RPAR With -contract: Type Ident EQ LPAR Ident COMMA Ident COMMA With +contract: Type Ident EQ LPAR String COMMA String COMMA With ## -## Ends in an error in state: 53. +## Ends in an error in state: 54. ## ## nsepseq(type_expr,COMMA) -> type_expr COMMA . nsepseq(type_expr,COMMA) [ RPAR ] ## @@ -3827,9 +3751,9 @@ contract: Type Ident EQ LPAR Ident COMMA Ident COMMA With -contract: Type Ident EQ LPAR Ident COMMA Ident VBAR +contract: Type Ident EQ LPAR String COMMA String VBAR ## -## Ends in an error in state: 52. +## Ends in an error in state: 53. ## ## nsepseq(type_expr,COMMA) -> type_expr . [ RPAR ] ## nsepseq(type_expr,COMMA) -> type_expr . COMMA nsepseq(type_expr,COMMA) [ RPAR ] @@ -3841,16 +3765,16 @@ contract: Type Ident EQ LPAR Ident COMMA Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type ## -contract: Type Ident EQ LPAR Ident COMMA With +contract: Type Ident EQ LPAR String COMMA With ## -## Ends in an error in state: 51. +## Ends in an error in state: 52. ## ## tuple(type_expr) -> type_expr COMMA . nsepseq(type_expr,COMMA) [ RPAR ] ## @@ -3860,9 +3784,9 @@ contract: Type Ident EQ LPAR Ident COMMA With -contract: Type Ident EQ LPAR Ident VBAR +contract: Type Ident EQ LPAR String VBAR ## -## Ends in an error in state: 49. +## Ends in an error in state: 50. ## ## par(type_expr) -> LPAR type_expr . RPAR [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] ## tuple(type_expr) -> type_expr . COMMA nsepseq(type_expr,COMMA) [ RPAR ] @@ -3874,16 +3798,16 @@ contract: Type Ident EQ LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 27, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 26, spurious reduction of production type_expr -> fun_type +## In state 28, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 27, spurious reduction of production type_expr -> fun_type ## contract: Type Ident EQ LPAR With ## -## Ends in an error in state: 7. +## Ends in an error in state: 8. ## ## par(tuple(type_expr)) -> LPAR . tuple(type_expr) RPAR [ Ident ] ## par(type_expr) -> LPAR . type_expr RPAR [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] @@ -3894,6 +3818,82 @@ contract: Type Ident EQ LPAR With +contract: Type Ident EQ String ARROW With +## +## Ends in an error in state: 37. +## +## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ] +## +## The known suffix of the stack is as follows: +## cartesian ARROW +## + + + +contract: Type Ident EQ String TIMES Constr With +## +## Ends in an error in state: 30. +## +## core_type -> Constr . DOT Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] +## +## The known suffix of the stack is as follows: +## Constr +## + + + +contract: Type Ident EQ String TIMES String TIMES With +## +## Ends in an error in state: 33. +## +## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident EQ String TIMES String With +## +## Ends in an error in state: 32. +## +## core_type -> core_type . Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] +## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] +## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + +contract: Type Ident EQ String TIMES With +## +## Ends in an error in state: 29. +## +## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident EQ String With +## +## Ends in an error in state: 28. +## +## cartesian -> core_type . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] +## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA ARROW ] +## core_type -> core_type . Ident [ VBAR Type TIMES SEMI RPAR RBRACE Let Ident EQ EOF COMMA ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + contract: Type Ident EQ VBAR Constr With ## ## Ends in an error in state: 5. From f3ed135926588c5b104ae853cbcad211438cd30f Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Fri, 15 May 2020 00:44:15 +0200 Subject: [PATCH 10/67] More fixes to the pretty-printer. --- src/passes/1-parser/cameligo/Pretty.ml | 72 ++++++++++++++------------ src/passes/1-parser/shared/Utils.mli | 8 +-- src/test/contracts/fibo2.mligo | 2 +- 3 files changed, 43 insertions(+), 39 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index ff2dfdc09..d880d0cb9 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -23,12 +23,13 @@ and pp_let_decl Region.{value; _} = | Some _ -> string "rec " in let binding = pp_let_binding binding and attr = pp_attributes attr - in string "let " ^^ rec_doc ^^ binding - ^^ group (nest 2 (break 1 ^^ attr)) + in string "let " ^^ rec_doc ^^ binding ^^ attr -and pp_attributes attr = - let make s = string "[@@" ^^ string s.value ^^ string "]" - in separate_map (break 0) make attr +and pp_attributes = function + [] -> empty +| attr -> + let make s = string "[@@" ^^ string s.value ^^ string "]" in + group (nest 2 (break 1 ^^ separate_map (break 0) make attr)) and pp_ident Region.{value; _} = string value @@ -42,8 +43,10 @@ and pp_let_binding (binding : let_binding) = let lhs_type = match lhs_type with None -> empty - | Some (_,e) -> prefix 2 1 (string " :") (pp_type_expr e) - in patterns ^^ lhs_type ^^ string " =" + | Some (_,e) -> group (nest 2 (break 1 ^^ string ": " ^^ pp_type_expr e)) + in patterns + ^^ lhs_type + ^^ string " =" ^^ group (nest 2 (break 1 ^^ group (pp_expr let_rhs))) and pp_pattern = function @@ -71,7 +74,8 @@ and pp_pconstr = function and pp_patt_c_app Region.{value; _} = match value with constr, None -> pp_ident constr - | constr, Some pat -> pp_ident constr ^^ pp_pattern pat + | constr, Some pat -> + prefix 4 1 (pp_ident constr) (pp_pattern pat) and pp_patt_some Region.{value; _} = prefix 4 1 (string "Some") (pp_pattern (snd value)) @@ -101,7 +105,7 @@ and pp_cons Region.{value; _} = and pp_ptuple Region.{value; _} = let cmp = Utils.nsepseq_to_list value in let sep = string "," ^^ break 1 in - separate_map sep pp_pattern cmp + group (separate_map sep pp_pattern cmp) and pp_precord fields = pp_ne_injection pp_field_pattern fields @@ -125,7 +129,7 @@ and pp_expr = function | ELogic e -> pp_logic_expr e | EArith e -> group (pp_arith_expr e) | EString e -> pp_string_expr e -| EList e -> pp_list_expr e +| EList e -> group (pp_list_expr e) | EConstr e -> pp_constr_expr e | ERecord e -> pp_record_expr e | EProj e -> pp_projection e @@ -143,15 +147,16 @@ and pp_expr = function and pp_case_expr Region.{value; _} = let {expr; cases; _} = value in group (string "match " ^^ pp_expr expr ^/^ string "with") - ^^ group (nest 2 (break 1 ^^ pp_cases cases)) + ^^ hardline ^^ nest 2 (pp_cases cases) and pp_cases Region.{value; _} = let head, tail = value in let head = pp_clause head in + let head = if tail = [] then head + else string " " ^^ head in let rest = List.map snd tail in let app clause = break 1 ^^ string "| " ^^ pp_clause clause - in ifflat head (string " " ^^ head) - ^^ concat_map app rest + in head ^^ concat_map app rest and pp_clause Region.{value; _} = let {pattern; rhs; _} = value in @@ -160,18 +165,18 @@ and pp_clause Region.{value; _} = and pp_cond_expr Region.{value; _} = let {test; ifso; kwd_else; ifnot; _} = value in let if_then = - string "if " ^^ pp_expr test - ^/^ string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) in - if kwd_else#is_ghost then if_then - else let else_ = - string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) - in if_then ^/^ else_ + string "if " ^^ group (nest 2 (pp_expr test)) ^/^ string "then" + ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) in + if kwd_else#is_ghost then + if_then + else + if_then + ^/^ string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) and pp_annot_expr Region.{value; _} = let expr, _, type_expr = value.inside in - string "(" ^^ - nest 1 (pp_expr expr ^^ string " :" - ^/^ pp_type_expr type_expr ^^ string ")") + string "(" ^^ pp_expr expr ^^ string " :" + ^^ group (nest 1 (break 1 ^^ pp_type_expr type_expr ^^ string ")")) and pp_logic_expr = function BoolExpr e -> pp_bool_expr e @@ -253,7 +258,7 @@ and pp_constr_app Region.{value; _} = let constr = string constr.value in match arg with None -> constr - | Some e -> constr ^/^ pp_expr e + | Some e -> prefix 2 1 constr (pp_expr e) and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj @@ -337,10 +342,8 @@ and pp_let_in Region.{value; _} = let rec_doc = match kwd_rec with None -> empty | Some _ -> string "rec " - in group (string "let " ^^ rec_doc ^^ binding - ^^ group (nest 2 (break 1 ^^ attr)) - ^/^ string "in" - ^^ group (nest 2 (break 1 ^^ pp_expr body))) + in group (string "let " ^^ rec_doc ^^ binding) ^^ attr + ^/^ group (string "in " ^^ nest 3 (pp_expr body)) and pp_fun Region.{value; _} = let {binders; lhs_type; body; _} = value in @@ -348,8 +351,8 @@ and pp_fun Region.{value; _} = and annot = match lhs_type with None -> empty | Some (_,e) -> string ": " ^/^ pp_type_expr e - in string "fun " ^^ nest 4 binders ^^ annot - ^^ string " ->" ^^ nest 2 (break 1 ^^ pp_expr body) + in group (string "fun " ^^ nest 4 binders ^^ annot + ^^ string " ->" ^^ nest 2 (break 1 ^^ pp_expr body)) and pp_seq e = pp_injection pp_expr e @@ -375,17 +378,18 @@ and pp_cartesian Region.{value; _} = and pp_variants Region.{value; _} = let head, tail = value in let head = pp_variant head in + let head = if tail = [] then head + else ifflat head (string " " ^^ head) in let rest = List.map snd tail in let app variant = break 1 ^^ string "| " ^^ pp_variant variant - in ifflat head (string " " ^^ head) - ^^ concat_map app rest + in head ^^ concat_map app rest and pp_variant Region.{value; _} = let {constr; arg} = value in match arg with None -> pp_ident constr - | Some (_, t_expr) -> - prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr t_expr) + | Some (_, e) -> + prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr e) and pp_fields fields = pp_ne_injection pp_field_decl fields @@ -397,7 +401,7 @@ and pp_field_decl Region.{value; _} = and pp_type_app Region.{value; _} = let ctor, tuple = value in - pp_type_tuple tuple ^^ string " " ^^ pp_type_constr ctor + prefix 2 1 (pp_type_tuple tuple) (pp_type_constr ctor) and pp_type_tuple Region.{value; _} = let {inside; _} = value in diff --git a/src/passes/1-parser/shared/Utils.mli b/src/passes/1-parser/shared/Utils.mli index db3a03c49..3ef10fe7f 100644 --- a/src/passes/1-parser/shared/Utils.mli +++ b/src/passes/1-parser/shared/Utils.mli @@ -31,9 +31,9 @@ val sepseq_cons : 'a -> 'sep -> ('a,'sep) sepseq -> ('a,'sep) nsepseq (* Reversing *) -val nseq_rev: 'a nseq -> 'a nseq -val nsepseq_rev: ('a,'sep) nsepseq -> ('a,'sep) nsepseq -val sepseq_rev: ('a,'sep) sepseq -> ('a,'sep) sepseq +val nseq_rev : 'a nseq -> 'a nseq +val nsepseq_rev : ('a,'sep) nsepseq -> ('a,'sep) nsepseq +val sepseq_rev : ('a,'sep) sepseq -> ('a,'sep) sepseq (* Rightwards iterators *) @@ -55,7 +55,7 @@ val sepseq_foldr : ('a -> 'b -> 'b) -> ('a,'c) sepseq -> 'b -> 'b val nseq_map : ('a -> 'b) -> 'a nseq -> 'b nseq val nsepseq_map : ('a -> 'b) -> ('a,'c) nsepseq -> ('b,'c) nsepseq -val sepseq_map : ('a -> 'b) -> ('a,'c) sepseq -> ('b,'c) sepseq +val sepseq_map : ('a -> 'b) -> ('a,'c) sepseq -> ('b,'c) sepseq (* Conversions to lists *) diff --git a/src/test/contracts/fibo2.mligo b/src/test/contracts/fibo2.mligo index f41ee0e3d..49dc8b0e9 100644 --- a/src/test/contracts/fibo2.mligo +++ b/src/test/contracts/fibo2.mligo @@ -1,6 +1,6 @@ type storage = unit -let main (p : unit; store : storage) : operation list * storage = +let main (p, store : unit * storage) : operation list * storage = let n = (fun (f : int -> int) (z : int) (y : int) -> f y) (fun (x : int) -> x) From 937bc997385c3451e5a087430e5f56dca7534d00 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Fri, 15 May 2020 16:32:30 +0200 Subject: [PATCH 11/67] Finished second version based on test contracts. --- src/passes/1-parser/cameligo/Pretty.ml | 234 ++++++++++++++----------- 1 file changed, 128 insertions(+), 106 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index d880d0cb9..8c332b680 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -5,7 +5,7 @@ module Region = Simple_utils.Region open! Region open! PPrint -let paragraph (s : string) = flow (break 1) (words s) +(*let paragraph (s : string) = flow (break 1) (words s)*) let rec make ast = let app decl = group (pp_declaration decl) in @@ -15,39 +15,37 @@ and pp_declaration = function Let decl -> pp_let_decl decl | TypeDecl decl -> pp_type_decl decl -and pp_let_decl Region.{value; _} = +and pp_let_decl {value; _} = let _, rec_opt, binding, attr = value in - let rec_doc = + let let_str = match rec_opt with - None -> empty - | Some _ -> string "rec " in + None -> "let " + | Some _ -> "let rec " in let binding = pp_let_binding binding and attr = pp_attributes attr - in string "let " ^^ rec_doc ^^ binding ^^ attr + in string let_str ^^ nest 4 binding ^^ attr and pp_attributes = function [] -> empty | attr -> - let make s = string "[@@" ^^ string s.value ^^ string "]" in - group (nest 2 (break 1 ^^ separate_map (break 0) make attr)) + let make s = string "[@@" ^^ string s.value ^^ string "]" in + group (nest 2 (break 1 ^^ separate_map (break 0) make attr)) -and pp_ident Region.{value; _} = string value +and pp_ident {value; _} = string value and pp_string s = pp_ident s and pp_let_binding (binding : let_binding) = let {binders; lhs_type; let_rhs; _} = binding in let patterns = Utils.nseq_to_list binders in - let patterns = - group (nest 2 (separate_map (break 1) pp_pattern patterns)) in - let lhs_type = + let patterns = group (separate_map (break 1) pp_pattern patterns) in + let lhs = match lhs_type with - None -> empty - | Some (_,e) -> group (nest 2 (break 1 ^^ string ": " ^^ pp_type_expr e)) - in patterns - ^^ lhs_type - ^^ string " =" - ^^ group (nest 2 (break 1 ^^ group (pp_expr let_rhs))) + None -> patterns + | Some (_,e) -> + patterns ^^ group (break 1 ^^ string ": " ^^ pp_type_expr e) + and rhs = group (break 1 ^^ string "= " ^^ nest 2 (pp_expr let_rhs)) + in lhs ^^ rhs and pp_pattern = function PConstr p -> pp_pconstr p @@ -71,49 +69,55 @@ and pp_pconstr = function | PSomeApp p -> pp_patt_some p | PConstrApp a -> pp_patt_c_app a -and pp_patt_c_app Region.{value; _} = +and pp_patt_c_app {value; _} = match value with constr, None -> pp_ident constr | constr, Some pat -> prefix 4 1 (pp_ident constr) (pp_pattern pat) -and pp_patt_some Region.{value; _} = +and pp_patt_some {value; _} = prefix 4 1 (string "Some") (pp_pattern (snd value)) -and pp_int Region.{value; _} = +and pp_int {value; _} = string (Z.to_string (snd value)) -and pp_nat Region.{value; _} = +and pp_nat {value; _} = string (Z.to_string (snd value) ^ "n") -and pp_bytes Region.{value; _} = +and pp_bytes {value; _} = string ("0x" ^ Hex.show (snd value)) -and pp_ppar Region.{value; _} = +and pp_ppar {value; _} = string "(" ^^ nest 1 (pp_pattern value.inside ^^ string ")") and pp_plist = function PListComp cmp -> pp_list_comp cmp | PCons cons -> pp_cons cons -and pp_list_comp e = pp_injection pp_pattern e +and pp_list_comp e = group (pp_injection pp_pattern e) -and pp_cons Region.{value; _} = +and pp_cons {value; _} = let patt1, _, patt2 = value in prefix 2 1 (pp_pattern patt1 ^^ string " ::") (pp_pattern patt2) -and pp_ptuple Region.{value; _} = - let cmp = Utils.nsepseq_to_list value in - let sep = string "," ^^ break 1 in - group (separate_map sep pp_pattern cmp) +and pp_ptuple {value; _} = + let head, tail = value in + let rec app = function + [] -> empty + | [p] -> group (break 1 ^^ pp_pattern p) + | p::items -> + group (break 1 ^^ pp_pattern p ^^ string ",") ^^ app items + in if tail = [] + then pp_pattern head + else pp_pattern head ^^ string "," ^^ app (List.map snd tail) and pp_precord fields = pp_ne_injection pp_field_pattern fields -and pp_field_pattern Region.{value; _} = +and pp_field_pattern {value; _} = let {field_name; pattern; _} = value in prefix 2 1 (pp_ident field_name ^^ string " =") (pp_pattern pattern) -and pp_ptyped Region.{value; _} = +and pp_ptyped {value; _} = let {pattern; type_expr; _} = value in group (pp_pattern pattern ^^ string " :" ^/^ pp_type_expr type_expr) @@ -144,12 +148,12 @@ and pp_expr = function | EFun e -> pp_fun e | ESeq e -> pp_seq e -and pp_case_expr Region.{value; _} = +and pp_case_expr {value; _} = let {expr; cases; _} = value in - group (string "match " ^^ pp_expr expr ^/^ string "with") + group (string "match " ^^ nest 6 (pp_expr expr) ^/^ string "with") ^^ hardline ^^ nest 2 (pp_cases cases) -and pp_cases Region.{value; _} = +and pp_cases {value; _} = let head, tail = value in let head = pp_clause head in let head = if tail = [] then head @@ -158,14 +162,14 @@ and pp_cases Region.{value; _} = let app clause = break 1 ^^ string "| " ^^ pp_clause clause in head ^^ concat_map app rest -and pp_clause Region.{value; _} = +and pp_clause {value; _} = let {pattern; rhs; _} = value in prefix 4 1 (pp_pattern pattern ^^ string " ->") (pp_expr rhs) -and pp_cond_expr Region.{value; _} = +and pp_cond_expr {value; _} = let {test; ifso; kwd_else; ifnot; _} = value in let if_then = - string "if " ^^ group (nest 2 (pp_expr test)) ^/^ string "then" + string "if " ^^ group (nest 3 (pp_expr test)) ^/^ string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) in if kwd_else#is_ghost then if_then @@ -173,10 +177,10 @@ and pp_cond_expr Region.{value; _} = if_then ^/^ string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) -and pp_annot_expr Region.{value; _} = +and pp_annot_expr {value; _} = let expr, _, type_expr = value.inside in - string "(" ^^ pp_expr expr ^^ string " :" - ^^ group (nest 1 (break 1 ^^ pp_type_expr type_expr ^^ string ")")) + group (string "(" ^^ nest 1 (pp_expr expr ^/^ string ": " + ^^ pp_type_expr type_expr ^^ string ")")) and pp_logic_expr = function BoolExpr e -> pp_bool_expr e @@ -189,11 +193,12 @@ and pp_bool_expr = function | True _ -> string "true" | False _ -> string "false" -and pp_bin_op op Region.{value; _} = +and pp_bin_op op {value; _} = let {arg1; arg2; _} = value - in pp_expr arg1 ^/^ string (op ^ " ") ^^ pp_expr arg2 + and length = String.length op + 1 in + pp_expr arg1 ^/^ string (op ^ " ") ^^ nest length (pp_expr arg2) -and pp_un_op op Region.{value; _} = +and pp_un_op op {value; _} = string (op ^ " ") ^^ pp_expr value.arg and pp_comp_expr = function @@ -215,7 +220,7 @@ and pp_arith_expr = function | Nat e -> pp_nat e | Mutez e -> pp_mutez e -and pp_mutez Region.{value; _} = +and pp_mutez {value; _} = Z.to_string (snd value) ^ "mutez" |> string and pp_string_expr = function @@ -224,11 +229,11 @@ and pp_string_expr = function and pp_list_expr = function ECons e -> pp_bin_op "::" e -| EListComp e -> pp_injection pp_expr e +| EListComp e -> group (pp_injection pp_expr e) and pp_injection : - 'a.('a -> document) -> 'a injection Region.reg -> document = - fun printer Region.{value; _} -> + 'a.('a -> document) -> 'a injection reg -> document = + fun printer {value; _} -> let {compound; elements; _} = value in let sep = string ";" ^^ break 1 in let elements = Utils.sepseq_to_list elements in @@ -251,24 +256,25 @@ and pp_constr_expr = function | ESomeApp a -> pp_some a | EConstrApp a -> pp_constr_app a -and pp_some Region.{value=_, e; _} = string "Some" ^/^ pp_expr e +and pp_some {value=_, e; _} = + prefix 4 1 (string "Some") (pp_expr e) -and pp_constr_app Region.{value; _} = +and pp_constr_app {value; _} = let constr, arg = value in let constr = string constr.value in match arg with None -> constr | Some e -> prefix 2 1 constr (pp_expr e) -and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj +and pp_record_expr ne_inj = group (pp_ne_injection pp_field_assign ne_inj) -and pp_field_assign Region.{value; _} = +and pp_field_assign {value; _} = let {field_name; field_expr; _} = value in prefix 2 1 (pp_ident field_name ^^ string " =") (pp_expr field_expr) and pp_ne_injection : - 'a.('a -> document) -> 'a ne_injection Region.reg -> document = - fun printer Region.{value; _} -> + 'a.('a -> document) -> 'a ne_injection reg -> document = + fun printer {value; _} -> let {compound; ne_elements; _} = value in let elements = pp_nsepseq ";" printer ne_elements in match pp_compound compound with @@ -279,7 +285,7 @@ and pp_ne_injection : and pp_nsepseq : 'a.string -> ('a -> document) -> - ('a, Region.t) Utils.nsepseq -> + ('a, t) Utils.nsepseq -> document = fun sep printer elements -> let elems = Utils.nsepseq_to_list elements @@ -290,71 +296,87 @@ and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = fun printer (head, tail) -> separate_map (break 1) printer (head::tail) -and pp_projection Region.{value; _} = +and pp_projection {value; _} = let {struct_name; field_path; _} = value in let fields = Utils.nsepseq_to_list field_path and sep = string "." ^^ break 0 in let fields = separate_map sep pp_selection fields in - pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields + group (pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields) and pp_selection = function FieldName v -> string v.value | Component cmp -> cmp.value |> snd |> Z.to_string |> string -and pp_update Region.{value; _} = +and pp_update {value; _} = let {record; updates; _} = value in - let updates = pp_ne_injection pp_field_path_assign updates + let updates = group (pp_ne_injection pp_field_path_assign updates) and record = pp_path record in string "{" ^^ record ^^ string " with" ^^ nest 2 (break 1 ^^ updates ^^ string "}") -and pp_field_path_assign Region.{value; _} = +and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in - let path = pp_nsepseq "." pp_ident field_path - in prefix 2 1 (path ^^ string " =") (pp_expr field_expr) + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let path = separate_map sep pp_ident fields in + prefix 2 1 (path ^^ string " =") (pp_expr field_expr) and pp_path = function Name v -> pp_ident v | Path p -> pp_projection p -and pp_call_expr Region.{value; _} = +and pp_call_expr {value; _} = let lambda, arguments = value in - group (pp_expr lambda ^^ nest 2 (break 1 ^^ pp_nseq pp_expr arguments)) + let arguments = pp_nseq pp_expr arguments in + group (pp_expr lambda ^^ nest 2 (break 1 ^^ arguments)) -and pp_tuple_expr Region.{value; _} = +and pp_tuple_expr {value; _} = let head, tail = value in - if tail = [] then pp_expr head - else - let rec app = function - [] -> empty - | [e] -> group (break 1 ^^ pp_expr e) - | e::items -> - group (break 1 ^^ pp_expr e ^^ string ",") ^^ app items - in pp_expr head ^^ string "," ^^ app (List.map snd tail) + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_expr e) + | e::items -> + group (break 1 ^^ pp_expr e ^^ string ",") ^^ app items + in if tail = [] + then pp_expr head + else pp_expr head ^^ string "," ^^ app (List.map snd tail) -and pp_par_expr Region.{value; _} = - string "(" ^^ nest 1 (pp_expr value.inside) ^^ string ")" +and pp_par_expr {value; _} = + string "(" ^^ nest 1 (pp_expr value.inside ^^ string ")") -and pp_let_in Region.{value; _} = +and pp_let_in {value; _} = let {binding; kwd_rec; body; attributes; _} = value in + let let_str = + match kwd_rec with + None -> "let " + | Some _ -> "let rec " in let binding = pp_let_binding binding - and attr = pp_attributes attributes in - let rec_doc = match kwd_rec with - None -> empty - | Some _ -> string "rec " - in group (string "let " ^^ rec_doc ^^ binding) ^^ attr - ^/^ group (string "in " ^^ nest 3 (pp_expr body)) + and attr = pp_attributes attributes + in string let_str ^^ nest 4 binding ^^ attr + ^^ hardline ^^ group (string "in " ^^ nest 3 (pp_expr body)) -and pp_fun Region.{value; _} = +and pp_fun {value; _} = let {binders; lhs_type; body; _} = value in let binders = pp_nseq pp_pattern binders - and annot = match lhs_type with - None -> empty - | Some (_,e) -> string ": " ^/^ pp_type_expr e + and annot = + match lhs_type with + None -> empty + | Some (_,e) -> + group (break 1 ^^ string ": " ^^ nest 2 (break 1 ^^ pp_type_expr e)) in group (string "fun " ^^ nest 4 binders ^^ annot ^^ string " ->" ^^ nest 2 (break 1 ^^ pp_expr body)) -and pp_seq e = pp_injection pp_expr e +and pp_seq {value; _} = + let {compound; elements; _} = value in + let sep = string ";" ^^ hardline in + let elements = Utils.sepseq_to_list elements in + let elements = separate_map sep pp_expr elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening + ^^ nest 2 (hardline ^^ elements) ^^ hardline + ^^ string closing and pp_type_expr = function TProd t -> pp_cartesian t @@ -366,7 +388,7 @@ and pp_type_expr = function | TVar t -> pp_ident t | TString s -> pp_string s -and pp_cartesian Region.{value; _} = +and pp_cartesian {value; _} = let head, tail = value in let rec app = function [] -> empty @@ -375,7 +397,7 @@ and pp_cartesian Region.{value; _} = group (break 1 ^^ pp_type_expr e ^^ string " *") ^^ app items in pp_type_expr head ^^ string " *" ^^ app (List.map snd tail) -and pp_variants Region.{value; _} = +and pp_variants {value; _} = let head, tail = value in let head = pp_variant head in let head = if tail = [] then head @@ -384,44 +406,44 @@ and pp_variants Region.{value; _} = let app variant = break 1 ^^ string "| " ^^ pp_variant variant in head ^^ concat_map app rest -and pp_variant Region.{value; _} = +and pp_variant {value; _} = let {constr; arg} = value in match arg with None -> pp_ident constr | Some (_, e) -> prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr e) -and pp_fields fields = pp_ne_injection pp_field_decl fields +and pp_fields fields = group (pp_ne_injection pp_field_decl fields) -and pp_field_decl Region.{value; _} = +and pp_field_decl {value; _} = let {field_name; field_type; _} = value in let name = pp_ident field_name in let t_expr = pp_type_expr field_type in prefix 2 1 (name ^^ string " :") t_expr -and pp_type_app Region.{value; _} = +and pp_type_app {value; _} = let ctor, tuple = value in prefix 2 1 (pp_type_tuple tuple) (pp_type_constr ctor) -and pp_type_tuple Region.{value; _} = - let {inside; _} = value in - let head, tail = inside in - if tail = [] then pp_type_expr head +and pp_type_tuple {value; _} = + let head, tail = value.inside in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in + if tail = [] + then pp_type_expr head else - let rec app = function - [] -> empty - | [e] -> group (break 1 ^^ pp_type_expr e) - | e::items -> - group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in let components = pp_type_expr head ^^ string "," ^^ app (List.map snd tail) - in string "(" ^^ nest 1 components ^^ string ")" + in string "(" ^^ nest 1 (components ^^ string ")") and pp_type_constr ctor = string ctor.value -and pp_fun_type Region.{value; _} = +and pp_fun_type {value; _} = let lhs, _, rhs = value in - group (pp_type_expr lhs ^^ string " ->") ^/^ pp_type_expr rhs + group (pp_type_expr lhs ^^ string " ->" ^/^ pp_type_expr rhs) -and pp_type_par Region.{value; _} = +and pp_type_par {value; _} = string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") From 6a3dab69a2a7e925f04edfc6e469406febe30177 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 25 May 2020 12:37:30 +0200 Subject: [PATCH 12/67] Exported pretty-printing function for CameLIGO and ReasonLIGO (transpiler). --- src/passes/1-parser/cameligo.ml | 16 ++++++++++++++++ src/passes/1-parser/cameligo.mli | 3 +++ src/passes/1-parser/cameligo/Parser.mly | 20 +++++--------------- src/passes/1-parser/cameligo/dune | 8 +++++--- src/passes/1-parser/reasonligo.ml | 15 +++++++++++++++ src/passes/1-parser/reasonligo.mli | 3 +++ src/passes/1-parser/reasonligo/.links | 1 + src/passes/1-parser/reasonligo/Parser.mly | 10 ++++------ src/passes/1-parser/reasonligo/ParserMain.ml | 18 ++++++++++++++++-- 9 files changed, 68 insertions(+), 26 deletions(-) diff --git a/src/passes/1-parser/cameligo.ml b/src/passes/1-parser/cameligo.ml index 1413108a8..9c054400e 100644 --- a/src/passes/1-parser/cameligo.ml +++ b/src/passes/1-parser/cameligo.ml @@ -5,6 +5,7 @@ module Scoping = Parser_cameligo.Scoping module Region = Simple_utils.Region module ParErr = Parser_cameligo.ParErr module SSet = Set.Make (String) +module Pretty = Parser_cameligo.Pretty (* Mock IOs TODO: Fill them with CLI options *) @@ -149,3 +150,18 @@ let parse_expression source = apply (fun () -> Unit.expr_in_string source) (* Preprocessing a contract in a file *) let preprocess source = apply (fun () -> Unit.preprocess source) + +(* Pretty-print a file (after parsing it). *) + +let pretty_print source = + match parse_file source with + Stdlib.Error _ as e -> e + | Ok ast -> + let doc = Pretty.make (fst ast) in + let buffer = Buffer.create 131 in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + let () = PPrint.ToBuffer.pretty 1.0 width buffer doc + in Trace.ok buffer diff --git a/src/passes/1-parser/cameligo.mli b/src/passes/1-parser/cameligo.mli index c4f66a596..4181e6a58 100644 --- a/src/passes/1-parser/cameligo.mli +++ b/src/passes/1-parser/cameligo.mli @@ -19,3 +19,6 @@ val parse_expression : string -> AST.expr Trace.result (** Preprocess a given CameLIGO file and preprocess it. *) val preprocess : string -> Buffer.t Trace.result + +(** Pretty-print a given CameLIGO file (after parsing it). *) +val pretty_print : string -> Buffer.t Trace.result diff --git a/src/passes/1-parser/cameligo/Parser.mly b/src/passes/1-parser/cameligo/Parser.mly index b9c2214e8..6578342a9 100644 --- a/src/passes/1-parser/cameligo/Parser.mly +++ b/src/passes/1-parser/cameligo/Parser.mly @@ -86,7 +86,7 @@ nsepseq(item,sep): (* Non-empty comma-separated values (at least two values) *) tuple(item): - item "," nsepseq(item,",") { let h,t = $3 in $1,($2,h)::t } + item "," nsepseq(item,",") { let h,t = $3 in $1, ($2,h)::t } (* Possibly empty semicolon-separated values between brackets *) @@ -236,10 +236,7 @@ type_annotation: irrefutable: sub_irrefutable { $1 } | tuple(sub_irrefutable) { - let hd, tl = $1 in - let start = pattern_to_region hd in - let stop = last fst tl in - let region = cover start stop + let region = nsepseq_to_region pattern_to_region $1 in PTuple {region; value=$1} } sub_irrefutable: @@ -276,9 +273,7 @@ pattern: PList (PCons {region; value=$1,$2,$3}) } | tuple(sub_pattern) { - let start = pattern_to_region (fst $1) in - let stop = last fst (snd $1) in - let region = cover start stop + let region = nsepseq_to_region pattern_to_region $1 in PTuple {region; value=$1} } sub_pattern: @@ -332,10 +327,7 @@ constr_pattern: ptuple: tuple(tail) { - let hd, tl = $1 in - let start = pattern_to_region hd in - let stop = last fst tl in - let region = cover start stop + let region = nsepseq_to_region pattern_to_region $1 in PTuple {region; value=$1} } unit: @@ -371,9 +363,7 @@ base_expr(right_expr): tuple_expr: tuple(disj_expr_level) { - let start = expr_to_region (fst $1) in - let stop = last fst (snd $1) in - let region = cover start stop + let region = nsepseq_to_region expr_to_region $1 in ETuple {region; value=$1} } conditional(right_expr): diff --git a/src/passes/1-parser/cameligo/dune b/src/passes/1-parser/cameligo/dune index 02b8f3663..ff5896de8 100644 --- a/src/passes/1-parser/cameligo/dune +++ b/src/passes/1-parser/cameligo/dune @@ -15,8 +15,10 @@ (name parser_cameligo) (public_name ligo.parser.cameligo) (modules - Scoping AST cameligo Parser ParserLog LexToken ParErr) + Scoping AST cameligo Parser ParserLog LexToken ParErr Pretty) (libraries + pprint + terminal_size menhirLib parser_shared str @@ -26,8 +28,8 @@ (pps bisect_ppx --conditional)) (flags (:standard -open Parser_shared -open Simple_utils))) -;; Build of the unlexer (for covering the -;; error states of the LR automaton) +;; Build of the unlexer (for covering the error states of the LR +;; automaton) (executable (name Unlexer) diff --git a/src/passes/1-parser/reasonligo.ml b/src/passes/1-parser/reasonligo.ml index d8cc66424..3a870fdc3 100644 --- a/src/passes/1-parser/reasonligo.ml +++ b/src/passes/1-parser/reasonligo.ml @@ -181,3 +181,18 @@ let parse_expression source = apply (fun () -> Unit.expr_in_string source) (* Preprocessing a contract in a file *) let preprocess source = apply (fun () -> Unit.preprocess source) + +(* Pretty-print a file (after parsing it). *) + +let pretty_print source = + match parse_file source with + Stdlib.Error _ as e -> e + | Ok ast -> + let doc = Pretty.make (fst ast) in + let buffer = Buffer.create 131 in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + let () = PPrint.ToBuffer.pretty 1.0 width buffer doc + in Trace.ok buffer diff --git a/src/passes/1-parser/reasonligo.mli b/src/passes/1-parser/reasonligo.mli index 890618a95..e51ebdb12 100644 --- a/src/passes/1-parser/reasonligo.mli +++ b/src/passes/1-parser/reasonligo.mli @@ -19,3 +19,6 @@ val parse_expression : string -> AST.expr Trace.result (** Preprocess a given ReasonLIGO file and preprocess it. *) val preprocess : string -> Buffer.t Trace.result + +(** Pretty-print a given CameLIGO file (after parsing it). *) +val pretty_print : string -> Buffer.t Trace.result diff --git a/src/passes/1-parser/reasonligo/.links b/src/passes/1-parser/reasonligo/.links index 214b46e6c..71a2ea603 100644 --- a/src/passes/1-parser/reasonligo/.links +++ b/src/passes/1-parser/reasonligo/.links @@ -27,5 +27,6 @@ Stubs/Parser_cameligo.ml ../cameligo/ParserLog.ml ../cameligo/Scoping.mli ../cameligo/Scoping.ml +../cameligo/Pretty.ml $HOME/git/ligo/_build/default/src/passes/1-parser/reasonligo/ParErr.ml diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 65753b004..12ff66e48 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -139,7 +139,7 @@ nsepseq(item,sep): (* Non-empty comma-separated values (at least two values) *) tuple(item): - item "," nsepseq(item,",") { let h,t = $3 in $1,($2,h)::t } + item "," nsepseq(item,",") { let h,t = $3 in $1, ($2,h)::t } (* Possibly empty semicolon-separated values between brackets *) @@ -295,10 +295,7 @@ let_binding: | tuple(sub_irrefutable) type_annotation? "=" expr { wild_error $4; Utils.nsepseq_iter Scoping.check_pattern $1; - let hd, tl = $1 in - let start = pattern_to_region hd in - let stop = last fst tl in - let region = cover start stop in + let region = nsepseq_to_region pattern_to_region $1 in let binders = PTuple {value=$1; region}, [] in {binders; lhs_type=$2; eq=$3; let_rhs=$4} } @@ -669,8 +666,9 @@ disj_expr_level: disj_expr | conj_expr_level { $1 } | par(tuple(disj_expr_level)) type_annotation_simple? { - let region = $1.region in + let region = nsepseq_to_region expr_to_region $1.value.inside in let tuple = ETuple {value=$1.value.inside; region} in + let tuple = EPar {$1 with value = {$1.value with inside=tuple}} in let region = match $2 with Some (_,s) -> cover $1.region (type_expr_to_region s) diff --git a/src/passes/1-parser/reasonligo/ParserMain.ml b/src/passes/1-parser/reasonligo/ParserMain.ml index 1c173bee0..70141993e 100644 --- a/src/passes/1-parser/reasonligo/ParserMain.ml +++ b/src/passes/1-parser/reasonligo/ParserMain.ml @@ -22,7 +22,8 @@ module SubIO = ext : string; mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > let options : options = @@ -36,6 +37,7 @@ module SubIO = method mode = IO.options#mode method cmd = IO.options#cmd method mono = IO.options#mono + method pretty = IO.options#pretty end let make = @@ -48,6 +50,7 @@ module SubIO = ~mode:options#mode ~cmd:options#cmd ~mono:options#mono + ~pretty:options#pretty end module Parser = @@ -72,7 +75,18 @@ module Unit = (* Main *) let wrap = function - Stdlib.Ok _ -> flush_all () + Stdlib.Ok ast -> + if IO.options#pretty then + begin + let doc = Pretty.make ast in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + PPrint.ToChannel.pretty 1.0 width stdout doc; + print_newline () + end; + flush_all () | Error msg -> (flush_all (); Printf.eprintf "\027[31m%s\027[0m%!" msg.Region.value) From 7992a4e507af013ff7058792cee26bc11edc1434 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 25 May 2020 12:42:19 +0200 Subject: [PATCH 13/67] Added cased to test the pretty-printer. --- src/passes/1-parser/cameligo/Tests/pp.mligo | 72 ++++++++++++++------- 1 file changed, 49 insertions(+), 23 deletions(-) diff --git a/src/passes/1-parser/cameligo/Tests/pp.mligo b/src/passes/1-parser/cameligo/Tests/pp.mligo index ca4236e8f..1a70c1e6a 100644 --- a/src/passes/1-parser/cameligo/Tests/pp.mligo +++ b/src/passes/1-parser/cameligo/Tests/pp.mligo @@ -1,30 +1,56 @@ +let patch_ (m : foobar) : foobar = Map.literal [(0, 5); (1, 6); (2, 7)] + +(* +let (greet_num : int), (greeting : string), one_more_component = + different_types of_many_things + ffffff 124312 + +type storage = int * int + +let main (n : int * storage) + : operation list * storage = + let x : int * int = + let x : int = 7 + in x + n.0.asdasdasd.4, n.1.0 + n.1.1.1111111.aaaa.ddddddd.eeeeeee + in ([] : operation list), x + +let y : t = + if true then -30000 * 10000 - 100000 + f x x y y y y - ((x / 4000) * -5) else (10000 + 100000) / 10000000000 +type return = operation list * (storage * fsdgsdgf * sdfsdfsdf * ssdf) +let xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx = + ttttttttttttt <= (aaaaaaaaaaaaaaaaaaaaaaaa - bbbbbbbbbbbbbbbbbbbb) +let x = tttt * ((fffffffff /55555555) - 3455 * 5135664) - 134 * (-4) +type x = AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA | B +let or_true (b : bool) : bool = bbbbbbbbbbbbb || true && cccccccccccccccccc +type x = A | B of t * int | CCC of int -> (string -> int) -> (string, address, timestamp, int) map +let c = CCCCCCCCCCCC (aaaaa, BBBBBBBBB aaaaaaaaaaaa) +let e = Some (a, B b) +type w = timestamp * nat -> (string, address) map -> t +type v = int * (a_long_type_name * (another_long_one * address * and_so_on) * more_of_a_very_long_type) + type r = int list type t = int -type s = (int,address) map -type w = timestamp * nat -> (string, address) map -> t -type v = int * (string * address) -type u = {a: int; b: t * char} -type q = {a: int; b: {c: string}} -type x = A | B of t * int | C of int -> (string -> int) -type y = "foo" -let x (_, (y: char)) = 4 -let y {x=(_,y); z=3} = x +type s = (int,address,a_long_type_name, more_of_a_very_long_type * foo_bar_baz) t +type q = {a: int; b: {c: string}; c: timestamp * (address, string) big_map -> longer_type_name} +type u = {a: int; b: t * char; c: int * (a_long_type_name * (another_long_one * address * and_so_on) * more_of_a_very_long_type)} +let f xxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzz ttttt : type_annotation_which_is_very_verbose = this_too_short_a_variable +let g : type_annotation_which_is_very_verbose = fun x y z t -> this_too_short_a_variable [@@inline] +let yyyyyyyyyyy : a_very_long_and_specific_type_of_string = "foo and bar" +let rec x (_, (yyyyyyyyyyyyyyyy: tttttttttttttttttttttttt), very_long_variable_to_trigger_a_break) = 4 +let y {xxxxxxxxx=(_,yyyyyyyy,more_components,another_one); zzzzzzz=34444444; ttttttt=3n} = xxxxxx let z : (t) = y -let w = - match f 3 with - None -> [] - | Some (1::[2;3]) -> [4;5]::[] -let y : t = (if true then -3 + f x x else 0) - 1 -let f (x: int) y = (x : int) +let f (xxxxxxxxxxx: tttttttttttttt) y = (xxxxxxxxxxxx : tttttttttttttttttt) let n : nat = 0n let a = A let b = B a -let c = C (a, B (a)) let d = None -let e = Some (a, B b) -let z = z.1.2 -let v = "hello" ^ "world" ^ "!" -let w = Map.literal [(1,"1"); (2,"2")] - -let r = { field = 0} -let r = { r with field = 42} +let z = let v = "hello" ^ "world" ^ "!" in v +let r = { field = 0; another = 11111111111111111; and_another_one = "dddddd"} +let r = { r with field = 42; another = 11111111111111111; and_another_one = "dddddddddddddddddddddd"} +let w = Map.literal [(11111111111111,"11111111111111"); (22222222222,"22222222222222222"); (1234567890,"1234567890")] +let z = z.1.a.0.4.c.6.7.8.9.cccccccccccc.ccccccccccccccccc.ddddddddddddddddd.0.1.2 +let y : t = (if true then -30000000000000 + f x x y y y y else 10000000000000000000) - 1 +let w = + match f 3 with + None -> [] + | Some (1::[2;3;4;5;6]) -> [4;5]::[] + *) From 041a48bc7b5d313a312f5844a679fea012effb4f Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 25 May 2020 16:04:35 +0200 Subject: [PATCH 14/67] [PascaLIGO] Fixed the build of ParserMain.exe. --- src/passes/1-parser/pascaligo/ParserMain.ml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/passes/1-parser/pascaligo/ParserMain.ml b/src/passes/1-parser/pascaligo/ParserMain.ml index beb0b4885..f0485222b 100644 --- a/src/passes/1-parser/pascaligo/ParserMain.ml +++ b/src/passes/1-parser/pascaligo/ParserMain.ml @@ -22,7 +22,8 @@ module SubIO = ext : string; mode : [`Byte | `Point]; cmd : EvalOpt.command; - mono : bool + mono : bool; + pretty : bool > let options : options = @@ -36,6 +37,7 @@ module SubIO = method mode = IO.options#mode method cmd = IO.options#cmd method mono = IO.options#mono + method pretty = IO.options#pretty end let make = @@ -48,6 +50,7 @@ module SubIO = ~mode:options#mode ~cmd:options#cmd ~mono:options#mono + ~pretty:options#pretty end module Parser = From 320e31cb411763ce788195fd1e3459b66e9ad9bf Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 25 May 2020 20:29:48 +0200 Subject: [PATCH 15/67] * [ligo pretty-print foo.mligo] works. * [ligo pretty-print foo.religo] is a transpiler (for now) and needs more work. * Renamed functions *_ast into *_cst. One day, module AST should be renamed CST for clarity and consistency. --- src/bin/cli.ml | 17 ++++++- src/main/compile/helpers.ml | 56 +++++++++++++++++---- src/main/compile/of_source.ml | 7 ++- src/passes/1-parser/cameligo/ParserLog.ml | 2 +- src/passes/1-parser/cameligo/ParserLog.mli | 2 +- src/passes/1-parser/pascaligo/ParserLog.ml | 2 +- src/passes/1-parser/pascaligo/ParserLog.mli | 2 +- src/passes/1-parser/shared/ParserUnit.ml | 4 +- src/passes/1-parser/shared/ParserUnit.mli | 2 +- 9 files changed, 73 insertions(+), 21 deletions(-) diff --git a/src/bin/cli.ml b/src/bin/cli.ml index c7798eeb3..c8da92924 100644 --- a/src/bin/cli.ml +++ b/src/bin/cli.ml @@ -159,10 +159,22 @@ let preprocess = let doc = "Subcommand: Preprocess the source file.\nWarning: Intended for development of LIGO and can break at any time." in (Term.ret term, Term.info ~doc cmdname) +let pretty_print = + let f source_file syntax display_format = ( + toplevel ~display_format @@ + let%bind pp = + Compile.Of_source.pretty_print source_file (Syntax_name syntax) in + ok @@ Buffer.contents pp + ) in + let term = Term.(const f $ source_file 0 $ syntax $ display_format) in + let cmdname = "pretty-print" in + let doc = "Subcommand: Pretty-print the source file." + in (Term.ret term, Term.info ~doc cmdname) + let print_cst = let f source_file syntax display_format = ( toplevel ~display_format @@ - let%bind pp = Compile.Of_source.pretty_print source_file (Syntax_name syntax) in + let%bind pp = Compile.Of_source.pretty_print_cst source_file (Syntax_name syntax) in ok @@ Format.asprintf "%s \n" (Buffer.contents pp) ) in @@ -489,5 +501,6 @@ let run ?argv () = print_ast_typed ; print_mini_c ; list_declarations ; - preprocess + preprocess; + pretty_print ] diff --git a/src/main/compile/helpers.ml b/src/main/compile/helpers.ml index b6809a20a..8e35e2887 100644 --- a/src/main/compile/helpers.ml +++ b/src/main/compile/helpers.ml @@ -129,7 +129,7 @@ let parsify_string syntax source = let%bind applied = Self_ast_imperative.all_program parsified in ok applied -let pretty_print_pascaligo source = +let pretty_print_pascaligo_cst source = let%bind ast = Parser.Pascaligo.parse_file source in let buffer = Buffer.create 59 in let state = @@ -137,10 +137,10 @@ let pretty_print_pascaligo source = ~offsets:true ~mode:`Byte ~buffer in - Parser_pascaligo.ParserLog.pp_ast state ast; + Parser_pascaligo.ParserLog.pp_cst state ast; ok buffer -let pretty_print_cameligo source = +let pretty_print_cameligo_cst source = let%bind ast = Parser.Cameligo.parse_file source in let buffer = Buffer.create 59 in let state = (* TODO: Should flow from the CLI *) @@ -148,10 +148,10 @@ let pretty_print_cameligo source = ~offsets:true ~mode:`Point ~buffer in - Parser_cameligo.ParserLog.pp_ast state ast; + Parser_cameligo.ParserLog.pp_cst state ast; ok buffer -let pretty_print_reasonligo source = +let pretty_print_reasonligo_cst source = let%bind ast = Parser.Reasonligo.parse_file source in let buffer = Buffer.create 59 in let state = (* TODO: Should flow from the CLI *) @@ -159,16 +159,16 @@ let pretty_print_reasonligo source = ~offsets:true ~mode:`Point ~buffer in - Parser_cameligo.ParserLog.pp_ast state ast; + Parser_cameligo.ParserLog.pp_cst state ast; ok buffer -let pretty_print syntax source = +let pretty_print_cst syntax source = let%bind v_syntax = syntax_to_variant syntax (Some source) in match v_syntax with - PascaLIGO -> pretty_print_pascaligo source - | CameLIGO -> pretty_print_cameligo source - | ReasonLIGO -> pretty_print_reasonligo source + PascaLIGO -> pretty_print_pascaligo_cst source + | CameLIGO -> pretty_print_cameligo_cst source + | ReasonLIGO -> pretty_print_reasonligo_cst source let preprocess_pascaligo = Parser.Pascaligo.preprocess @@ -183,3 +183,39 @@ let preprocess syntax source = PascaLIGO -> preprocess_pascaligo source | CameLIGO -> preprocess_cameligo source | ReasonLIGO -> preprocess_reasonligo source + +let pretty_print_pascaligo source = + let%bind ast = Parser.Pascaligo.parse_file source in + let () = ignore ast in (* TODO *) + let buffer = Buffer.create 131 + in Trace.ok buffer + +let pretty_print_cameligo source = + let%bind ast = Parser.Cameligo.parse_file source in + let doc = Parser_cameligo.Pretty.make ast in + let buffer = Buffer.create 131 in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + let () = PPrint.ToBuffer.pretty 1.0 width buffer doc + in Trace.ok buffer + +let pretty_print_reasonligo source = + let%bind ast = Parser.Reasonligo.parse_file source in + let doc = Parser_cameligo.Pretty.make ast in (* TODO *) + let buffer = Buffer.create 131 in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + let () = PPrint.ToBuffer.pretty 1.0 width buffer doc + in Trace.ok buffer + +let pretty_print syntax source = + let%bind v_syntax = + syntax_to_variant syntax (Some source) in + match v_syntax with + PascaLIGO -> pretty_print_pascaligo source + | CameLIGO -> pretty_print_cameligo source + | ReasonLIGO -> pretty_print_reasonligo source diff --git a/src/main/compile/of_source.ml b/src/main/compile/of_source.ml index 75cb9f32c..f0611d4ba 100644 --- a/src/main/compile/of_source.ml +++ b/src/main/compile/of_source.ml @@ -19,8 +19,11 @@ let compile_contract_input : string -> string -> v_syntax -> Ast_imperative.expr let%bind (storage,parameter) = bind_map_pair (compile_expression syntax) (storage,parameter) in ok @@ Ast_imperative.e_pair storage parameter -let pretty_print source_filename syntax = - Helpers.pretty_print syntax source_filename +let pretty_print_cst source_filename syntax = + Helpers.pretty_print_cst syntax source_filename let preprocess source_filename syntax = Helpers.preprocess syntax source_filename + +let pretty_print source_filename syntax = + Helpers.pretty_print syntax source_filename diff --git a/src/passes/1-parser/cameligo/ParserLog.ml b/src/passes/1-parser/cameligo/ParserLog.ml index b51c0782d..0e4c7621f 100644 --- a/src/passes/1-parser/cameligo/ParserLog.ml +++ b/src/passes/1-parser/cameligo/ParserLog.ml @@ -628,7 +628,7 @@ let pp_verbatim state {value=name; region} = let pp_loc_node state name region = pp_ident state {value=name; region} -let rec pp_ast state {decl; _} = +let rec pp_cst state {decl; _} = let apply len rank = pp_declaration (state#pad len rank) in let decls = Utils.nseq_to_list decl in diff --git a/src/passes/1-parser/cameligo/ParserLog.mli b/src/passes/1-parser/cameligo/ParserLog.mli index d16252478..800ea4443 100644 --- a/src/passes/1-parser/cameligo/ParserLog.mli +++ b/src/passes/1-parser/cameligo/ParserLog.mli @@ -27,5 +27,5 @@ val expr_to_string : (** {1 Pretty-printing of AST nodes} *) -val pp_ast : state -> AST.t -> unit +val pp_cst : state -> AST.t -> unit val pp_expr : state -> AST.expr -> unit diff --git a/src/passes/1-parser/pascaligo/ParserLog.ml b/src/passes/1-parser/pascaligo/ParserLog.ml index c22f5379f..eb694f48b 100644 --- a/src/passes/1-parser/pascaligo/ParserLog.ml +++ b/src/passes/1-parser/pascaligo/ParserLog.ml @@ -855,7 +855,7 @@ let pp_verbatim state {value=name; region} = let pp_loc_node state name region = pp_ident state {value=name; region} -let rec pp_ast state {decl; _} = +let rec pp_cst state {decl; _} = let apply len rank = pp_declaration (state#pad len rank) in let decls = Utils.nseq_to_list decl in diff --git a/src/passes/1-parser/pascaligo/ParserLog.mli b/src/passes/1-parser/pascaligo/ParserLog.mli index 955c1590b..7ae739571 100644 --- a/src/passes/1-parser/pascaligo/ParserLog.mli +++ b/src/passes/1-parser/pascaligo/ParserLog.mli @@ -33,5 +33,5 @@ val instruction_to_string : (** {1 Pretty-printing of AST nodes} *) -val pp_ast : state -> AST.t -> unit +val pp_cst : state -> AST.t -> unit val pp_expr : state -> AST.expr -> unit diff --git a/src/passes/1-parser/shared/ParserUnit.ml b/src/passes/1-parser/shared/ParserUnit.ml index 0e7f4eb88..8c15c1db2 100644 --- a/src/passes/1-parser/shared/ParserUnit.ml +++ b/src/passes/1-parser/shared/ParserUnit.ml @@ -32,7 +32,7 @@ module type Printer = val mk_state : offsets:bool -> mode:[`Point|`Byte] -> buffer:Buffer.t -> state - val pp_ast : state -> ast -> unit + val pp_cst : state -> ast -> unit val pp_expr : state -> expr -> unit val print_tokens : state -> ast -> unit val print_expr : state -> expr -> unit @@ -146,7 +146,7 @@ module Make (Lexer: Lexer.S) if SSet.mem "ast" SubIO.options#verbose then begin Buffer.clear output; - ParserLog.pp_ast state ast; + ParserLog.pp_cst state ast; Buffer.output_buffer stdout output end in flush_all (); close (); Ok ast diff --git a/src/passes/1-parser/shared/ParserUnit.mli b/src/passes/1-parser/shared/ParserUnit.mli index a2199ec4e..fe3b90dc1 100644 --- a/src/passes/1-parser/shared/ParserUnit.mli +++ b/src/passes/1-parser/shared/ParserUnit.mli @@ -36,7 +36,7 @@ module type Printer = val mk_state : offsets:bool -> mode:[`Point|`Byte] -> buffer:Buffer.t -> state - val pp_ast : state -> ast -> unit + val pp_cst : state -> ast -> unit val pp_expr : state -> expr -> unit val print_tokens : state -> ast -> unit val print_expr : state -> expr -> unit From a4128d037baa62b6e8f295bf1c95919d073ce260 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Tue, 26 May 2020 11:06:38 +0200 Subject: [PATCH 16/67] Add PPar around PTyped for proper pretty printing and CST equality with CameLIGO. --- src/passes/1-parser/reasonligo/Parser.mly | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 896eaabc4..74417ee1e 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -453,8 +453,15 @@ fun_expr(right_expr): ) | EAnnot {region; value = {inside = EVar v, colon, typ; _}} -> Scoping.check_reserved_name v; - let value = {pattern = PVar v; colon; type_expr = typ} - in PTyped {region; value} + let value = {pattern = PVar v; colon; type_expr = typ} in + PPar { + value = { + lpar = Region.ghost; + rpar = Region.ghost; + inside = PTyped {region; value} + }; + region + } | EPar p -> let value = {p.value with inside = arg_to_pattern p.value.inside} @@ -655,7 +662,6 @@ disj_expr_level: | par(tuple(disj_expr_level)) type_annotation_simple? { let region = nsepseq_to_region expr_to_region $1.value.inside in let tuple = ETuple {value=$1.value.inside; region} in - let tuple = EPar {$1 with value = {$1.value with inside=tuple}} in let region = match $2 with Some (_,s) -> cover $1.region (type_expr_to_region s) From 88c652a25fe4322d6db34cb870476080ab875c0f Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Tue, 26 May 2020 12:33:32 +0200 Subject: [PATCH 17/67] Fix issue caused by addition of PPar. --- src/passes/1-parser/reasonligo/Parser.mly | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 74417ee1e..fe3503328 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -501,7 +501,13 @@ fun_expr(right_expr): (arg_to_pattern fun_arg, []) | EPar {value = {inside = EFun { value = { - binders = PTyped { value = { pattern; colon; type_expr }; region = fun_region }, []; + binders = PPar { + value = { + inside = PTyped { value = { pattern; colon; type_expr }; region = fun_region }; + _ + }; + _ + }, []; arrow; body; _ @@ -535,7 +541,7 @@ fun_expr(right_expr): }; region; }, [] - | EPar {value = {inside = fun_arg; _ }; _} -> + | EPar {value = {inside = fun_arg; _ }; _} -> arg_to_pattern fun_arg, [] | EAnnot _ as e -> arg_to_pattern e, [] From cade57a47c5d6164f565d3da0d2358d8fe7c4e72 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Tue, 26 May 2020 12:41:42 +0200 Subject: [PATCH 18/67] Fix expect help tests. --- src/bin/expect_tests/help_tests.ml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/bin/expect_tests/help_tests.ml b/src/bin/expect_tests/help_tests.ml index d30f67155..4c00c7969 100644 --- a/src/bin/expect_tests/help_tests.ml +++ b/src/bin/expect_tests/help_tests.ml @@ -57,6 +57,9 @@ let%expect_test _ = Subcommand: Preprocess the source file. Warning: Intended for development of LIGO and can break at any time. + pretty-print + Subcommand: Pretty-print the source file. + print-ast Subcommand: Print the AST. Warning: Intended for development of LIGO and can break at any time. @@ -148,6 +151,9 @@ let%expect_test _ = Subcommand: Preprocess the source file. Warning: Intended for development of LIGO and can break at any time. + pretty-print + Subcommand: Pretty-print the source file. + print-ast Subcommand: Print the AST. Warning: Intended for development of LIGO and can break at any time. From e9f5c3e1aedd09b9be981c5f850447b2bc3e0136 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 29 May 2020 19:07:44 +0200 Subject: [PATCH 19/67] Initial work for the ReasonLIGO pretty printer. --- src/main/compile/helpers.ml | 2 +- src/passes/1-parser/reasonligo.ml | 2 +- src/passes/1-parser/reasonligo/Parser.mly | 2 +- src/passes/1-parser/reasonligo/Pretty.ml | 481 ++++++++++++++++++++++ src/passes/1-parser/reasonligo/dune | 2 +- 5 files changed, 485 insertions(+), 4 deletions(-) create mode 100644 src/passes/1-parser/reasonligo/Pretty.ml diff --git a/src/main/compile/helpers.ml b/src/main/compile/helpers.ml index 8e35e2887..9e2019df5 100644 --- a/src/main/compile/helpers.ml +++ b/src/main/compile/helpers.ml @@ -203,7 +203,7 @@ let pretty_print_cameligo source = let pretty_print_reasonligo source = let%bind ast = Parser.Reasonligo.parse_file source in - let doc = Parser_cameligo.Pretty.make ast in (* TODO *) + let doc = Parser_reasonligo.Pretty.make ast in let buffer = Buffer.create 131 in let width = match Terminal_size.get_columns () with diff --git a/src/passes/1-parser/reasonligo.ml b/src/passes/1-parser/reasonligo.ml index 5a7b1b2f1..ff353412a 100644 --- a/src/passes/1-parser/reasonligo.ml +++ b/src/passes/1-parser/reasonligo.ml @@ -8,7 +8,7 @@ module Region = Simple_utils.Region module ParErr = Parser_reasonligo.ParErr module SyntaxError = Parser_reasonligo.SyntaxError module SSet = Set.Make (String) -module Pretty = Parser_cameligo.Pretty +module Pretty = Parser_reasonligo.Pretty (* Mock IOs TODO: Fill them with CLI options *) diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index fe3503328..ef1e7b030 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -901,7 +901,7 @@ update_record: lbrace = $1; record = $3; kwd_with = $4; - updates = {value = {compound = Braces($1,$6); + updates = {value = {compound = Braces(Region.ghost, Region.ghost); ne_elements; terminator}; region = cover $4 $6}; diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml new file mode 100644 index 000000000..f462d7a9b --- /dev/null +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -0,0 +1,481 @@ +[@@@warning "-42"] + +open AST +module Region = Simple_utils.Region +open! Region +open! PPrint + +(*let paragraph (s : string) = flow (break 1) (words s)*) + +let rec make ast = + let app decl = group (pp_declaration decl) in + separate_map (hardline ^^ hardline) app (Utils.nseq_to_list ast.decl) + +(* and indent_x = *) + +and pp_declaration = function + Let decl -> pp_let_decl decl +| TypeDecl decl -> pp_type_decl decl + +and pp_let_decl = function +| {value = (_,rec_opt, binding, attr); _} -> + let let_str = + match rec_opt with + None -> "let " + | Some _ -> "let rec " in + let bindings = pp_let_binding let_str binding + and attr = pp_attributes attr + in group (attr ^^ bindings ^^ string ";") + +and pp_attributes = function + [] -> empty +| attr -> + let make s = string "[@" ^^ string s.value ^^ string "]" in + group (break 0 ^^ separate_map (break 0) make attr) ^^ hardline + +and pp_ident {value; _} = string value + +and pp_string s = string "\"" ^^ pp_ident s ^^ string "\"" + +and pp_verbatim s = string "{|" ^^ pp_ident s ^^ string "|}" + +and pp_let_binding let_ (binding : let_binding) = + let {binders; lhs_type; let_rhs; _} = binding in + let patterns = Utils.nseq_to_list binders in + let patterns = group (separate_map (break 0) pp_pattern patterns) in + let lhs = + string let_ ^^ + match lhs_type with + None -> patterns ^^ string " = " + | Some (_,e) -> + patterns ^^ group (break 0 ^^ string ": " ^^ pp_type_expr e ^^ string " = ") + in + match let_rhs with + (* | EFun { } -> *) + | e -> + let rhs = pp_expr e + in prefix 2 0 lhs rhs + +and pp_pattern = function + PConstr p -> pp_pconstr p +| PUnit _ -> string "()" +| PFalse _ -> string "false" +| PTrue _ -> string "true" +| PVar v -> pp_ident v +| PInt i -> pp_int i +| PNat n -> pp_nat n +| PBytes b -> pp_bytes b +| PString s -> pp_string s +| PVerbatim s -> pp_verbatim s +| PWild _ -> string "_" +| PList l -> pp_plist l +| PTuple t -> pp_ptuple t +| PPar p -> pp_ppar p +| PRecord r -> pp_precord r +| PTyped t -> pp_ptyped t + +and pp_pconstr = function + PNone _ -> string "None" +| PSomeApp p -> pp_patt_some p +| PConstrApp a -> pp_patt_c_app a + +and pp_patt_c_app {value; _} = + match value with + constr, None -> pp_ident constr + | constr, Some pat -> + prefix 2 0 (pp_ident constr) (pp_pattern pat) + +and pp_patt_some {value; _} = + prefix 2 0 (string "Some") (pp_pattern (snd value)) + +and pp_int {value; _} = + string (Z.to_string (snd value)) + +and pp_nat {value; _} = + string (Z.to_string (snd value) ^ "n") + +and pp_bytes {value; _} = + string ("0x" ^ Hex.show (snd value)) + +and pp_ppar {value; _} = + nest 1 (pp_pattern value.inside) + +and pp_plist = function + PListComp cmp -> pp_list_comp cmp +| PCons cons -> pp_cons cons + +and pp_list_comp e = group (pp_injection pp_pattern e) + +and pp_cons {value; _} = + let patt1, _, patt2 = value in + string "[" ^^ (pp_pattern patt1 ^^ string ", ") ^^ group ( break 0 ^^ string "..." ^^ pp_pattern patt2) ^^ string "]" + +and pp_ptuple {value; _} = + let head, tail = value in + let rec app = function + [] -> empty + | [p] -> group (break 1 ^^ pp_pattern p) + | p::items -> + group (break 1 ^^ pp_pattern p ^^ string ",") ^^ app items + in if tail = [] + then string "(" ^^ pp_pattern head ^^ string ")" + else string "(" ^^ pp_pattern head ^^ string "," ^^ app (List.map snd tail) ^^ string ")" + +and pp_precord fields = pp_ne_injection pp_field_pattern fields + +and pp_field_pattern {value; _} = + let {field_name; pattern; _} = value in + prefix 2 1 (pp_ident field_name ^^ string " =") (pp_pattern pattern) + +and pp_ptyped {value; _} = + let {pattern; type_expr; _} = value in + group (pp_pattern pattern ^^ string ":" ^/^ pp_type_expr type_expr) + +and pp_type_decl decl = + let {name; type_expr; _} = decl.value in + string "type " ^^ string name.value ^^ string " = " + ^^ group (pp_type_expr type_expr) ^^ string ";" + +and pp_expr = function + ECase e -> pp_case_expr e +| ECond e -> group (pp_cond_expr e) +| EAnnot e -> pp_annot_expr e +| ELogic e -> pp_logic_expr e +| EArith e -> group (pp_arith_expr e) +| EString e -> pp_string_expr e +| EList e -> group (pp_list_expr e) +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record_expr e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EVar v -> pp_ident v +| ECall e -> pp_call_expr e +| EBytes e -> pp_bytes e +| EUnit _ -> string "()" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par_expr e +| ELetIn e -> pp_let_in e +| EFun e -> pp_fun e +| ESeq e -> pp_seq e + +and pp_case_expr {value; _} = + let {expr; cases; _} = value in + group (string "switch" ^^ string "(" ^^ pp_expr expr ^^ (string ") " ^^ string "{") + ^^ (pp_cases cases) ^^ hardline ^^ string "}" ) + +and pp_cases {value; _} = + let head, tail = value in + (* let head = pp_clause head in *) + (* let head = if tail = [] then head + else string "| " ^^ head in *) + let rest = List.map snd tail in + let app clause = break 1 ^^ string "| " ^^ pp_clause clause + in concat_map app (head :: rest) + +and pp_clause {value; _} = + let {pattern; rhs; _} = value in + prefix 4 1 (pp_pattern pattern ^^ string " =>") (pp_expr rhs) + +and pp_cond_expr {value; _} = + let {test; ifso; kwd_else; ifnot; _} = value in + let if_then = + string "if" ^^ string "(" ^^ pp_expr test ^^ string ")" ^^ string " {" ^^ hardline + ^^ group (nest 2 (break 2 ^^ pp_expr ifso)) ^^ hardline ^^ string "}" in + if kwd_else#is_ghost then + if_then + else + if_then + ^^ string " else" ^^ string " {" ^^ hardline ^^ group (nest 2 (break 2 ^^ pp_expr ifnot)) ^^ hardline ^^ string "}" + +and pp_annot_expr {value; _} = + let expr, _, type_expr = value.inside in + group (nest 1 (pp_expr expr ^/^ string ": " + ^^ pp_type_expr type_expr)) + +and pp_logic_expr = function + BoolExpr e -> pp_bool_expr e +| CompExpr e -> pp_comp_expr e + +and pp_bool_expr = function + Or e -> pp_bin_op "||" e +| And e -> pp_bin_op "&&" e +| Not e -> pp_un_op "!" e +| True _ -> string "true" +| False _ -> string "false" + +and pp_bin_op op {value; _} = + let {arg1; arg2; _} = value + and length = String.length op + 1 in + pp_expr arg1 ^/^ string (op ^ " ") ^^ nest length (pp_expr arg2) + +and pp_un_op op {value; _} = + string (op ^ " ") ^^ pp_expr value.arg + +and pp_comp_expr = function + Lt e -> pp_bin_op "<" e +| Leq e -> pp_bin_op "<=" e +| Gt e -> pp_bin_op ">" e +| Geq e -> pp_bin_op ">=" e +| Equal e -> pp_bin_op "==" e +| Neq e -> pp_bin_op "!=" e + +and pp_arith_expr = function + Add e -> pp_bin_op "+" e +| Sub e -> pp_bin_op "-" e +| Mult e -> pp_bin_op "*" e +| Div e -> pp_bin_op "/" e +| Mod e -> pp_bin_op "mod" e +| Neg e -> string "-" ^^ pp_expr e.value.arg +| Int e -> pp_int e +| Nat e -> pp_nat e +| Mutez e -> pp_mutez e + +and pp_mutez {value; _} = + Z.to_string (snd value) ^ "mutez" |> string + +and pp_string_expr = function + Cat e -> pp_bin_op "++" e +| String e -> pp_string e +| Verbatim e -> pp_verbatim e + +and pp_list_expr = function +(* let {arg1; arg2; _} = value + and length = String.length op + 1 in + pp_expr arg1 ^/^ string (op ^ " ") ^^ nest length (pp_expr arg2) *) + +| ECons {value = {arg1; arg2; _}; _ } -> + string "[" ^^ pp_expr arg1 ^^ string "," ^^ break 1 ^^ string "..." ^^ pp_expr arg2 ^^ string "]" +| EListComp e -> group (pp_injection pp_expr e) + +and pp_injection : + 'a.('a -> document) -> 'a injection reg -> document = + fun printer {value; _} -> + let {compound; elements; _} = value in + let sep = (string ",") ^^ break 1 in + let elements = Utils.sepseq_to_list elements in + let elements = separate_map sep printer elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ nest 1 elements ^^ string closing + +and pp_compound = function + BeginEnd (start, _) -> + if start#is_ghost then None else Some ("begin","end") +| Braces (start, _) -> + if start#is_ghost then None else Some ("{","}") +| Brackets (start, _) -> + if start#is_ghost then None else Some ("[","]") + +and pp_constr_expr = function + ENone _ -> string "None" +| ESomeApp a -> pp_some a +| EConstrApp a -> pp_constr_app a + +and pp_some {value=_, e; _} = + prefix 4 1 (string "Some") (pp_expr e) + +and pp_constr_app {value; _} = + let constr, arg = value in + let constr = string constr.value in + match arg with + None -> constr + | Some e -> prefix 2 1 constr (pp_expr e) + +and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj + +and pp_field_assign {value; _} = + let {field_name; field_expr; _} = value in + prefix 2 1 (pp_ident field_name ^^ string " =") (pp_expr field_expr) + +and pp_ne_injection : + 'a.('a -> document) -> 'a ne_injection reg -> document = + fun printer {value; _} -> + let {compound; ne_elements; _} = value in + let elements = pp_nsepseq "," printer ne_elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening ^^ nest 2 (break 0 ^^ elements) ^^ break 1 ^^ string closing + +and pp_nsepseq : + 'a.string -> + ('a -> document) -> + ('a, t) Utils.nsepseq -> + document = + fun sep printer elements -> + let elems = Utils.nsepseq_to_list elements + and sep = string sep ^^ break 1 + in separate_map sep printer elems + +and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = + fun printer (head, tail) -> + separate_map (break 1) printer (head::tail) + +and pp_projection {value; _} = + let {struct_name; field_path; _} = value in + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let fields = separate_map sep pp_selection fields in + group (pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields) + +and pp_selection = function + FieldName v -> string v.value +| Component cmp -> cmp.value |> snd |> Z.to_string |> string + +and pp_update {value; _} = + let {record; updates; _} = value in + let updates = group (pp_ne_injection pp_field_path_assign updates) + and record = pp_path record in + string "{..." ^^ record ^^ string "," + ^^ nest 2 (break 1 ^^ updates ^^ string "}") + +and pp_field_path_assign {value; _} = + let {field_path; field_expr; _} = value in + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let path = separate_map sep pp_ident fields in + prefix 2 1 (path ^^ string ":") (pp_expr field_expr) + +and pp_path = function + Name v -> pp_ident v +| Path p -> pp_projection p + +and pp_call_expr {value; _} = + let lambda, arguments = value in + let arguments = string "(" ^^ pp_nseq pp_expr arguments ^^ string ")" in + group (break 0 ^^ pp_expr lambda ^^ nest 2 arguments) + +and pp_tuple_expr {value; _} = + let head, tail = value in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_expr e) + | e::items -> + group (break 1 ^^ pp_expr e ^^ string ",") ^^ app items + in if tail = [] + then string "(" ^^ pp_expr head ^^ string ")" + else string "(" ^^ pp_expr head ^^ string "," ^^ app (List.map snd tail) ^^ string ")" + +and pp_par_expr {value; _} = + string "(" ^^ nest 1 (pp_expr value.inside ^^ string ")") + +and pp_let_in {value; _} = + let {binding; kwd_rec; body; attributes; _} = value in + let let_str = + match kwd_rec with + None -> "let " + | Some _ -> "let rec " in + let bindings = pp_let_binding let_str binding + and attr = pp_attributes attributes + in attr ^^ bindings + ^^ string ";" ^^ hardline ^^ pp_expr body + +and pp_fun {value; _} = + let {binders; lhs_type; body; _} = value in + let patterns = Utils.nseq_to_list binders in + let binders = group (separate_map (string "," ^^ break 0 ^^ string " ") pp_pattern patterns) + and annot = + match lhs_type with + None -> empty + | Some (_,e) -> + group (break 0 ^^ string ":" ^^ nest 2 (break 1 ^^ pp_type_expr e)) + in prefix 2 0 (string "(" ^^ binders ^^ string ")" ^^ annot + ^^ string " => ") (pp_expr body) + +and pp_seq {value; _} = + let {compound; elements; _} = value in + let sep = string ";" ^^ hardline in + let elements = Utils.sepseq_to_list elements in + let elements = separate_map sep pp_expr elements in + match pp_compound compound with + None -> elements + | Some (opening, closing) -> + string opening + ^^ nest 2 (hardline ^^ elements) ^^ hardline + ^^ string closing + +and pp_type_expr = function + TProd t -> pp_cartesian t +| TSum t -> pp_variants t +| TRecord t -> pp_fields t +| TApp t -> pp_type_app t +| TFun t -> pp_fun_type t +| TPar t -> pp_type_par t +| TVar t -> pp_ident t +| TString s -> pp_string s + +and pp_cartesian {value; _} = + let head, tail = value in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items + in string "(" ^^ pp_type_expr head ^^ string "," ^^ app (List.map snd tail) ^^ string ")" + +and pp_variants {value; _} = + let head, tail = value in + let head = pp_variant head in + let head = if tail = [] then head + else ifflat head (string " " ^^ head) in + let rest = List.map snd tail in + let app variant = break 1 ^^ string "| " ^^ pp_variant variant + in head ^^ concat_map app rest + +and pp_variant {value; _} = + let {constr; arg} = value in + match arg with + None -> pp_ident constr + | Some (_, e) -> + prefix 2 0 (pp_ident constr) (string "(" ^^ pp_type_expr e ^^ string ")") + +and pp_fields fields = group (pp_ne_injection pp_field_decl fields) + +and pp_field_decl {value; _} = + let {field_name; field_type; _} = value in + let name = pp_ident field_name in + match field_type with + | TVar v when v = field_name -> + name + | _ -> ( + let t_expr = pp_type_expr field_type + in prefix 2 1 (name ^^ string ":") t_expr + ) + +and pp_type_app {value; _} = + let ctor, tuple = value in + prefix 2 0 (pp_type_constr ctor) (string "(" ^^ pp_type_tuple tuple ^^ string ")") + +and pp_type_tuple {value; _} = + let head, tail = value.inside in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in + if tail = [] + then pp_type_expr head + else + let components = + pp_type_expr head ^^ string "," ^^ app (List.map snd tail) + in components + +and pp_type_constr ctor = string ctor.value + +and pp_fun_args {value; _} = + let lhs, _, rhs = value in + match rhs with + | TFun tf -> group (pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf) + | _ -> group (pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) + +and pp_fun_type {value; _} = + let lhs, _, rhs = value in + match rhs with + | TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf + | _ -> group (pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) + + (* group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) *) + +and pp_type_par {value; _} = + string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") diff --git a/src/passes/1-parser/reasonligo/dune b/src/passes/1-parser/reasonligo/dune index b8f57b665..f41445b7d 100644 --- a/src/passes/1-parser/reasonligo/dune +++ b/src/passes/1-parser/reasonligo/dune @@ -15,7 +15,7 @@ (name parser_reasonligo) (public_name ligo.parser.reasonligo) (modules - SyntaxError reasonligo LexToken ParErr Parser) + SyntaxError reasonligo LexToken ParErr Parser Pretty) (libraries menhirLib parser_shared From 2d74681c96939202f65c8513215b0a1bfdd52348 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Sat, 30 May 2020 20:24:47 +0200 Subject: [PATCH 20/67] Added more to the PascaLIGO pretty-printer. Improved the AST of PascaLIGO to better capture the struture. --- src/main/compile/helpers.ml | 4 +- src/passes/1-parser/cameligo.ml | 2 +- src/passes/1-parser/cameligo/ParserMain.ml | 2 +- src/passes/1-parser/cameligo/Pretty.ml | 20 +- src/passes/1-parser/pascaligo/AST.ml | 126 +++--- src/passes/1-parser/pascaligo/Parser.mly | 258 ++++++------ src/passes/1-parser/pascaligo/ParserLog.ml | 177 ++++---- src/passes/1-parser/pascaligo/ParserMain.ml | 18 +- src/passes/1-parser/pascaligo/Pretty.ml | 425 ++++++++++++++++++++ src/passes/1-parser/pascaligo/dune | 2 +- src/passes/1-parser/reasonligo.ml | 2 +- 11 files changed, 751 insertions(+), 285 deletions(-) create mode 100644 src/passes/1-parser/pascaligo/Pretty.ml diff --git a/src/main/compile/helpers.ml b/src/main/compile/helpers.ml index 8e35e2887..596b6d277 100644 --- a/src/main/compile/helpers.ml +++ b/src/main/compile/helpers.ml @@ -192,7 +192,7 @@ let pretty_print_pascaligo source = let pretty_print_cameligo source = let%bind ast = Parser.Cameligo.parse_file source in - let doc = Parser_cameligo.Pretty.make ast in + let doc = Parser_cameligo.Pretty.print ast in let buffer = Buffer.create 131 in let width = match Terminal_size.get_columns () with @@ -203,7 +203,7 @@ let pretty_print_cameligo source = let pretty_print_reasonligo source = let%bind ast = Parser.Reasonligo.parse_file source in - let doc = Parser_cameligo.Pretty.make ast in (* TODO *) + let doc = Parser_cameligo.Pretty.print ast in (* TODO *) let buffer = Buffer.create 131 in let width = match Terminal_size.get_columns () with diff --git a/src/passes/1-parser/cameligo.ml b/src/passes/1-parser/cameligo.ml index 9c054400e..7ef89b360 100644 --- a/src/passes/1-parser/cameligo.ml +++ b/src/passes/1-parser/cameligo.ml @@ -157,7 +157,7 @@ let pretty_print source = match parse_file source with Stdlib.Error _ as e -> e | Ok ast -> - let doc = Pretty.make (fst ast) in + let doc = Pretty.print (fst ast) in let buffer = Buffer.create 131 in let width = match Terminal_size.get_columns () with diff --git a/src/passes/1-parser/cameligo/ParserMain.ml b/src/passes/1-parser/cameligo/ParserMain.ml index 60b89c7c3..47462302d 100644 --- a/src/passes/1-parser/cameligo/ParserMain.ml +++ b/src/passes/1-parser/cameligo/ParserMain.ml @@ -78,7 +78,7 @@ let wrap = function Stdlib.Ok ast -> if IO.options#pretty then begin - let doc = Pretty.make ast in + let doc = Pretty.print ast in let width = match Terminal_size.get_columns () with None -> 60 diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index 6da2c7bf9..4351b7bad 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -5,11 +5,13 @@ module Region = Simple_utils.Region open! Region open! PPrint -(*let paragraph (s : string) = flow (break 1) (words s)*) +let pp_par printer {value; _} = + string "(" ^^ nest 1 (printer value.inside ^^ string ")") -let rec make ast = +let rec print ast = let app decl = group (pp_declaration decl) in - separate_map (hardline ^^ hardline) app (Utils.nseq_to_list ast.decl) + let decl = Utils.nseq_to_list ast.decl in + separate_map (hardline ^^ hardline) app decl and pp_declaration = function Let decl -> pp_let_decl decl @@ -90,8 +92,7 @@ and pp_nat {value; _} = and pp_bytes {value; _} = string ("0x" ^ Hex.show (snd value)) -and pp_ppar {value; _} = - string "(" ^^ nest 1 (pp_pattern value.inside ^^ string ")") +and pp_ppar p = pp_par pp_pattern p and pp_plist = function PListComp cmp -> pp_list_comp cmp @@ -345,8 +346,7 @@ and pp_tuple_expr {value; _} = then pp_expr head else pp_expr head ^^ string "," ^^ app (List.map snd tail) -and pp_par_expr {value; _} = - string "(" ^^ nest 1 (pp_expr value.inside ^^ string ")") +and pp_par_expr e = pp_par pp_expr e and pp_let_in {value; _} = let {binding; kwd_rec; body; attributes; _} = value in @@ -425,8 +425,7 @@ and pp_field_decl {value; _} = let t_expr = pp_type_expr field_type in prefix 2 1 (name ^^ string " :") t_expr -and pp_type_app {value; _} = - let ctor, tuple = value in +and pp_type_app {value = ctor, tuple; _} = prefix 2 1 (pp_type_tuple tuple) (pp_type_constr ctor) and pp_type_tuple {value; _} = @@ -449,5 +448,4 @@ and pp_fun_type {value; _} = let lhs, _, rhs = value in group (pp_type_expr lhs ^^ string " ->" ^/^ pp_type_expr rhs) -and pp_type_par {value; _} = - string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") +and pp_type_par t = pp_par pp_type_expr t diff --git a/src/passes/1-parser/pascaligo/AST.ml b/src/passes/1-parser/pascaligo/AST.ml index 685d5c5dd..1ed609c0f 100644 --- a/src/passes/1-parser/pascaligo/AST.ml +++ b/src/passes/1-parser/pascaligo/AST.ml @@ -106,14 +106,15 @@ type eof = Region.t (* Literals *) -type variable = string reg -type fun_name = string reg -type type_name = string reg -type field_name = string reg -type map_name = string reg -type set_name = string reg -type constr = string reg -type attribute = string reg +type variable = string reg +type fun_name = string reg +type type_name = string reg +type type_constr = string reg +type field_name = string reg +type map_name = string reg +type set_name = string reg +type constr = string reg +type attribute = string reg (* Parentheses *) @@ -181,7 +182,7 @@ and type_expr = TProd of cartesian | TSum of (variant reg, vbar) nsepseq reg | TRecord of field_decl reg ne_injection reg -| TApp of (type_name * type_tuple) reg +| TApp of (type_constr * type_tuple) reg | TFun of (type_expr * arrow * type_expr) reg | TPar of type_expr par reg | TVar of variable @@ -249,19 +250,14 @@ and param_var = { } and block = { - opening : block_opening; + enclosing : block_enclosing; statements : statements; - terminator : semi option; - closing : block_closing + terminator : semi option } -and block_opening = - Block of kwd_block * lbrace -| Begin of kwd_begin - -and block_closing = - Block of rbrace -| End of kwd_end +and block_enclosing = + Block of kwd_block * lbrace * rbrace +| BeginEnd of kwd_begin * kwd_end and statements = (statement, semi) nsepseq @@ -378,10 +374,10 @@ and set_membership = { and 'a case = { kwd_case : kwd_case; expr : expr; - opening : opening; + kwd_of : kwd_of; + enclosing : enclosing; lead_vbar : vbar option; - cases : ('a case_clause reg, vbar) nsepseq reg; - closing : closing + cases : ('a case_clause reg, vbar) nsepseq reg } and 'a case_clause = { @@ -471,34 +467,12 @@ and expr = | EPar of expr par reg | EFun of fun_expr reg -and annot_expr = (expr * type_expr) +and annot_expr = expr * type_expr and set_expr = SetInj of expr injection reg | SetMem of set_membership reg -and 'a injection = { - opening : opening; - elements : ('a, semi) sepseq; - terminator : semi option; - closing : closing -} - -and 'a ne_injection = { - opening : opening; - ne_elements : ('a, semi) nsepseq; - terminator : semi option; - closing : closing -} - -and opening = - Kwd of keyword -| KwdBracket of keyword * lbracket - -and closing = - End of kwd_end -| RBracket of rbracket - and map_expr = MapLookUp of map_lookup reg | MapInj of binding reg injection reg @@ -520,7 +494,7 @@ and logic_expr = and bool_expr = Or of kwd_or bin_op reg | And of kwd_and bin_op reg -| Not of kwd_not un_op reg +| Not of kwd_not un_op reg | False of c_False | True of c_True @@ -544,15 +518,15 @@ and comp_expr = | Neq of neq bin_op reg and arith_expr = - Add of plus bin_op reg -| Sub of minus bin_op reg -| Mult of times bin_op reg -| Div of slash bin_op reg -| Mod of kwd_mod bin_op reg -| Neg of minus un_op reg -| Int of (Lexer.lexeme * Z.t) reg -| Nat of (Lexer.lexeme * Z.t) reg -| Mutez of (Lexer.lexeme * Z.t) reg + Add of plus bin_op reg +| Sub of minus bin_op reg +| Mult of times bin_op reg +| Div of slash bin_op reg +| Mod of kwd_mod bin_op reg +| Neg of minus un_op reg +| Int of (Lexer.lexeme * Z.t) reg +| Nat of (Lexer.lexeme * Z.t) reg +| Mutez of (Lexer.lexeme * Z.t) reg and string_expr = Cat of cat bin_op reg @@ -584,14 +558,14 @@ and projection = { } and update = { - record : path; + record : path; kwd_with : kwd_with; - updates : field_path_assign reg ne_injection reg + updates : field_path_assign reg ne_injection reg } and field_path_assign = { - field_path : (field_name, dot) nsepseq; - equal : equal; + field_path : (field_name, dot) nsepseq; + equal : equal; field_expr : expr } @@ -605,6 +579,38 @@ and fun_call = (expr * arguments) reg and arguments = tuple_expr +(* Injections *) + +and 'a injection = { + kind : injection_kwd; + enclosing : enclosing; + elements : ('a, semi) sepseq; + terminator : semi option +} + +and injection_kwd = + InjSet of keyword +| InjMap of keyword +| InjBigMap of keyword +| InjList of keyword + +and enclosing = + Brackets of lbracket * rbracket +| End of kwd_end + +and 'a ne_injection = { + kind : ne_injection_kwd; + enclosing : enclosing; + ne_elements : ('a, semi) nsepseq; + terminator : semi option +} + +and ne_injection_kwd = + NEInjAttr of keyword +| NEInjSet of keyword +| NEInjMap of keyword +| NEInjRecord of keyword + (* Patterns *) and pattern = @@ -635,7 +641,7 @@ and list_pattern = | PCons of (pattern, cons) nsepseq reg -(* Projecting regions *) +(* PROJECTING REGIONS *) let rec last to_region = function [] -> Region.ghost diff --git a/src/passes/1-parser/pascaligo/Parser.mly b/src/passes/1-parser/pascaligo/Parser.mly index 669ee7dbd..753354cfd 100644 --- a/src/passes/1-parser/pascaligo/Parser.mly +++ b/src/passes/1-parser/pascaligo/Parser.mly @@ -122,7 +122,8 @@ attr_decl: open_attr_decl ";"? { $1 } open_attr_decl: - ne_injection("attributes","") { $1 } + ne_injection("attributes","") { + $1 (fun region -> NEInjAttr region) } (* Type declarations *) @@ -214,19 +215,19 @@ record_type: let () = Utils.nsepseq_to_list ne_elements |> Scoping.check_fields in let region = cover $1 $3 - and value = {opening = Kwd $1; + and value = {kind = NEInjRecord $1; + enclosing = End $3; ne_elements; - terminator; - closing = End $3} + terminator} in TRecord {region; value} } | "record" "[" sep_or_term_list(field_decl,";") "]" { let ne_elements, terminator = $3 in let region = cover $1 $4 - and value = {opening = KwdBracket ($1,$2); + and value = {kind = NEInjRecord $1; + enclosing = Brackets ($2,$4); ne_elements; - terminator; - closing = RBracket $4} + terminator} in TRecord {region; value} } field_decl: @@ -238,7 +239,7 @@ field_decl: fun_expr: - | ioption ("recursive") "function" parameters ":" type_expr "is" expr { + ioption ("recursive") "function" parameters ":" type_expr "is" expr { let stop = expr_to_region $7 in let region = cover $2 stop and value = {kwd_recursive= $1; @@ -271,7 +272,8 @@ open_fun_decl: attributes = None} in {region; value} } -| ioption ("recursive") "function" fun_name parameters ":" type_expr "is" expr { +| ioption ("recursive") "function" fun_name parameters ":" type_expr "is" + expr { Scoping.check_reserved_name $3; let stop = expr_to_region $8 in let region = cover $2 stop @@ -326,19 +328,17 @@ block: "begin" sep_or_term_list(statement,";") "end" { let statements, terminator = $2 in let region = cover $1 $3 - and value = {opening = Begin $1; + and value = {enclosing = BeginEnd ($1,$3); statements; - terminator; - closing = End $3} + terminator} in {region; value} } | "block" "{" sep_or_term_list(statement,";") "}" { let statements, terminator = $3 in let region = cover $1 $4 - and value = {opening = Block ($1,$2); + and value = {enclosing = Block ($1,$2,$4); statements; - terminator; - closing = Block $4} + terminator} in {region; value} } statement: @@ -404,124 +404,122 @@ instruction: set_remove: "remove" expr "from" "set" path { let region = cover $1 (path_to_region $5) in - let value = { - kwd_remove = $1; - element = $2; - kwd_from = $3; - kwd_set = $4; - set = $5} + let value = {kwd_remove = $1; + element = $2; + kwd_from = $3; + kwd_set = $4; + set = $5} in {region; value} } map_remove: "remove" expr "from" "map" path { let region = cover $1 (path_to_region $5) in - let value = { - kwd_remove = $1; - key = $2; - kwd_from = $3; - kwd_map = $4; - map = $5} + let value = {kwd_remove = $1; + key = $2; + kwd_from = $3; + kwd_map = $4; + map = $5} in {region; value} } set_patch: "patch" path "with" ne_injection("set",expr) { - let region = cover $1 $4.region in - let value = { - kwd_patch = $1; - path = $2; - kwd_with = $3; - set_inj = $4} + let set_inj = $4 (fun region -> NEInjSet region) in + let region = cover $1 set_inj.region in + let value = {kwd_patch = $1; + path = $2; + kwd_with = $3; + set_inj} in {region; value} } map_patch: "patch" path "with" ne_injection("map",binding) { - let region = cover $1 $4.region in - let value = { - kwd_patch = $1; - path = $2; - kwd_with = $3; - map_inj = $4} + let map_inj = $4 (fun region -> NEInjMap region) in + let region = cover $1 map_inj.region in + let value = {kwd_patch = $1; + path = $2; + kwd_with = $3; + map_inj} in {region; value} } injection(Kind,element): Kind sep_or_term_list(element,";") "end" { - let elements, terminator = $2 in - let region = cover $1 $3 - and value = { - opening = Kwd $1; - elements = Some elements; - terminator; - closing = End $3} - in {region; value} + fun mk_kwd -> + let elements, terminator = $2 in + let region = cover $1 $3 + and value = { + kind = mk_kwd $1; + enclosing = End $3; + elements = Some elements; + terminator} + in {region; value} } | Kind "end" { - let region = cover $1 $2 - and value = { - opening = Kwd $1; - elements = None; - terminator = None; - closing = End $2} - in {region; value} + fun mk_kwd -> + let region = cover $1 $2 + and value = {kind = mk_kwd $1; + enclosing = End $2; + elements = None; + terminator = None} + in {region; value} } | Kind "[" sep_or_term_list(element,";") "]" { - let elements, terminator = $3 in - let region = cover $1 $4 - and value = { - opening = KwdBracket ($1,$2); - elements = Some elements; - terminator; - closing = RBracket $4} - in {region; value} + fun mk_kwd -> + let elements, terminator = $3 in + let region = cover $1 $4 + and value = {kind = mk_kwd $1; + enclosing = Brackets ($2,$4); + elements = Some elements; + terminator} + in {region; value} } | Kind "[" "]" { - let region = cover $1 $3 - and value = { - opening = KwdBracket ($1,$2); - elements = None; - terminator = None; - closing = RBracket $3} - in {region; value} } + fun mk_kwd -> + let region = cover $1 $3 + and value = {kind = mk_kwd $1; + enclosing = Brackets ($2,$3); + elements = None; + terminator = None} + in {region; value} } ne_injection(Kind,element): Kind sep_or_term_list(element,";") "end" { - let ne_elements, terminator = $2 in - let region = cover $1 $3 - and value = { - opening = Kwd $1; - ne_elements; - terminator; - closing = End $3} - in {region; value} + fun mk_kwd -> + let ne_elements, terminator = $2 in + let region = cover $1 $3 + and value = {kind = mk_kwd $1; + enclosing = End $3; + ne_elements; + terminator} + in {region; value} } | Kind "[" sep_or_term_list(element,";") "]" { - let ne_elements, terminator = $3 in - let region = cover $1 $4 - and value = { - opening = KwdBracket ($1,$2); - ne_elements; - terminator; - closing = RBracket $4} - in {region; value} } + fun mk_kwd -> + let ne_elements, terminator = $3 in + let region = cover $1 $4 + and value = {kind = mk_kwd $1; + enclosing = Brackets ($2,$4); + ne_elements; + terminator} + in {region; value} } binding: expr "->" expr { let start = expr_to_region $1 and stop = expr_to_region $3 in let region = cover start stop - and value = { - source = $1; - arrow = $2; - image = $3} + and value = {source = $1; + arrow = $2; + image = $3} in {region; value} } record_patch: "patch" path "with" ne_injection("record",field_assignment) { - let region = cover $1 $4.region in - let value = { - kwd_patch = $1; - path = $2; - kwd_with = $3; - record_inj = $4} + let record_inj = $4 (fun region -> NEInjRecord region) in + let region = cover $1 record_inj.region in + let value = {kwd_patch = $1; + path = $2; + kwd_with = $3; + record_inj} in {region; value} } proc_call: @@ -547,12 +545,9 @@ if_clause: clause_block: block { LongBlock $1 } | "{" sep_or_term_list(statement,";") "}" { - let statements, terminator = $2 in let region = cover $1 $3 in - let value = {lbrace = $1; - inside = statements, terminator; - rbrace = $3} in - ShortBlock {value; region} } + let value = {lbrace=$1; inside=$2; rbrace=$3} + in ShortBlock {value; region} } case_instr: case(if_clause) { $1 if_clause_to_region } @@ -563,10 +558,10 @@ case(rhs): let region = cover $1 $6 in let value = {kwd_case = $1; expr = $2; - opening = Kwd $3; + kwd_of = $3; + enclosing = End $6; lead_vbar = $4; - cases = $5 rhs_to_region; - closing = End $6} + cases = $5 rhs_to_region} in {region; value} } | "case" expr "of" "[" "|"? cases(rhs) "]" { @@ -574,10 +569,10 @@ case(rhs): let region = cover $1 $7 in let value = {kwd_case = $1; expr = $2; - opening = KwdBracket ($3,$4); + kwd_of = $3; + enclosing = Brackets ($4,$7); lead_vbar = $5; - cases = $6 rhs_to_region; - closing = RBracket $7} + cases = $6 rhs_to_region} in {region; value} } cases(rhs): @@ -904,12 +899,17 @@ annot_expr: in {region; value} } set_expr: - injection("set",expr) { SetInj $1 } + injection("set",expr) { SetInj ($1 (fun region -> InjSet region)) } map_expr: - map_lookup { MapLookUp $1 } -| injection("map",binding) { MapInj $1 } -| injection("big_map",binding) { BigMapInj $1 } + map_lookup { + MapLookUp $1 + } +| injection("map",binding) { + MapInj ($1 (fun region -> InjMap region)) + } +| injection("big_map",binding) { + BigMapInj ($1 (fun region -> InjBigMap region)) } map_lookup: path brackets(expr) { @@ -958,26 +958,27 @@ record_expr: let ne_elements, terminator = $2 in let region = cover $1 $3 and value : field_assign AST.reg ne_injection = { - opening = Kwd $1; + kind = NEInjRecord $1; + enclosing = End $3; ne_elements; - terminator; - closing = End $3} + terminator} in {region; value} } | "record" "[" sep_or_term_list(field_assignment,";") "]" { - let ne_elements, terminator = $3 in - let region = cover $1 $4 - and value : field_assign AST.reg ne_injection = { - opening = KwdBracket ($1,$2); - ne_elements; - terminator; - closing = RBracket $4} - in {region; value} } + let ne_elements, terminator = $3 in + let region = cover $1 $4 + and value : field_assign AST.reg ne_injection = { + kind = NEInjRecord $1; + enclosing = Brackets ($2,$4); + ne_elements; + terminator} + in {region; value} } update_record: - path "with" ne_injection("record",field_path_assignment){ - let region = cover (path_to_region $1) $3.region in - let value = {record=$1; kwd_with=$2; updates=$3} + path "with" ne_injection("record",field_path_assignment) { + let updates = $3 (fun region -> NEInjRecord region) in + let region = cover (path_to_region $1) updates.region in + let value = {record=$1; kwd_with=$2; updates} in {region; value} } field_assignment: @@ -1010,8 +1011,8 @@ arguments: par(nsepseq(expr,",")) { $1 } list_expr: - injection("list",expr) { EListComp $1 } -| "nil" { ENil $1 } + injection("list",expr) { EListComp ($1 (fun region -> InjList region)) } +| "nil" { ENil $1 } (* Patterns *) @@ -1034,9 +1035,10 @@ core_pattern: | constr_pattern { PConstr $1 } list_pattern: - injection("list",core_pattern) { PListComp $1 } -| "nil" { PNil $1 } + "nil" { PNil $1 } | par(cons_pattern) { PParCons $1 } +| injection("list",core_pattern) { + PListComp ($1 (fun region -> InjList region)) } cons_pattern: core_pattern "#" pattern { $1,$2,$3 } diff --git a/src/passes/1-parser/pascaligo/ParserLog.ml b/src/passes/1-parser/pascaligo/ParserLog.ml index eb694f48b..6ae1ca0ac 100644 --- a/src/passes/1-parser/pascaligo/ParserLog.ml +++ b/src/passes/1-parser/pascaligo/ParserLog.ml @@ -27,11 +27,11 @@ let mk_state ~offsets ~mode ~buffer = val pad_node = "" method pad_node = pad_node - (** The method [pad] updates the current padding, which is - comprised of two components: the padding to reach the new node - (space before reaching a subtree, then a vertical bar for it) - and the padding for the new node itself (Is it the last child - of its parent?). + (* The method [pad] updates the current padding, which is + comprised of two components: the padding to reach the new node + (space before reaching a subtree, then a vertical bar for it) + and the padding for the new node itself (Is it the last child + of its parent?). *) method pad arity rank = {< pad_path = @@ -44,7 +44,7 @@ let mk_state ~offsets ~mode ~buffer = let compact state (region: Region.t) = region#compact ~offsets:state#offsets state#mode -(** {1 Printing the tokens with their source regions} *) +(* Printing the tokens with their source regions *) let print_nsepseq : state -> string -> (state -> 'a -> unit) -> @@ -117,7 +117,7 @@ let rec print_tokens state ast = print_token state eof "EOF" and print_attr_decl state = - print_ne_injection state "attributes" print_string + print_ne_injection state print_string and print_decl state = function TypeDecl decl -> print_type_decl state decl @@ -170,8 +170,8 @@ and print_variant state ({value; _}: variant reg) = and print_sum_type state {value; _} = print_nsepseq state "|" print_variant value -and print_record_type state record_type = - print_ne_injection state "record" print_field_decl record_type +and print_record_type state = + print_ne_injection state print_field_decl and print_type_app state {value; _} = let type_name, type_tuple = value in @@ -256,22 +256,19 @@ and print_param_var state {value; _} = print_type_expr state param_type and print_block state block = - let {opening; statements; terminator; closing} = block.value in - print_block_opening state opening; - print_statements state statements; - print_terminator state terminator; - print_block_closing state closing - -and print_block_opening state = function - Block (kwd_block, lbrace) -> - print_token state kwd_block "block"; - print_token state lbrace "{" -| Begin kwd_begin -> - print_token state kwd_begin "begin" - -and print_block_closing state = function - Block rbrace -> print_token state rbrace "}" -| End kwd_end -> print_token state kwd_end "end" + let {enclosing; statements; terminator} = block.value in + match enclosing with + Block (kwd_block, lbrace, rbrace) -> + print_token state kwd_block "block"; + print_token state lbrace "{"; + print_statements state statements; + print_terminator state terminator; + print_token state rbrace "}" + | BeginEnd (kwd_begin, kwd_end) -> + print_token state kwd_begin "begin"; + print_statements state statements; + print_terminator state terminator; + print_token state kwd_end "end" and print_data_decl state = function LocalConst decl -> print_const_decl state decl @@ -344,14 +341,20 @@ and print_clause_block state = function print_token state rbrace "}" and print_case_instr state (node : if_clause case) = - let {kwd_case; expr; opening; - lead_vbar; cases; closing} = node in + let {kwd_case; expr; kwd_of; enclosing; lead_vbar; cases} = node in print_token state kwd_case "case"; print_expr state expr; - print_opening state "of" opening; - print_token_opt state lead_vbar "|"; - print_cases_instr state cases; - print_closing state closing + print_token state kwd_of "of"; + match enclosing with + Brackets (lbracket, rbracket) -> + print_token state lbracket "["; + print_token_opt state lead_vbar "|"; + print_cases_instr state cases; + print_token state rbracket "]" + | End kwd_end -> + print_token_opt state lead_vbar "|"; + print_cases_instr state cases; + print_token state kwd_end "end" and print_token_opt state = function None -> fun _ -> () @@ -466,14 +469,20 @@ and print_annot_expr state (expr , type_expr) = print_type_expr state type_expr and print_case_expr state (node : expr case) = - let {kwd_case; expr; opening; - lead_vbar; cases; closing} = node in + let {kwd_case; expr; kwd_of; enclosing; lead_vbar; cases} = node in print_token state kwd_case "case"; print_expr state expr; - print_opening state "of" opening; - print_token_opt state lead_vbar "|"; - print_cases_expr state cases; - print_closing state closing + print_token state kwd_of "of"; + match enclosing with + Brackets (lbracket, rbracket) -> + print_token state lbracket "["; + print_token_opt state lead_vbar "|"; + print_cases_expr state cases; + print_token state rbracket "]" + | End kwd_end -> + print_token_opt state lead_vbar "|"; + print_cases_expr state cases; + print_token state kwd_end "end" and print_cases_expr state {value; _} = print_nsepseq state "|" print_case_clause_expr value @@ -486,11 +495,11 @@ and print_case_clause_expr state {value; _} = and print_map_expr state = function MapLookUp {value; _} -> print_map_lookup state value -| MapInj inj -> print_injection state "map" print_binding inj -| BigMapInj inj -> print_injection state "big_map" print_binding inj +| MapInj inj -> print_injection state print_binding inj +| BigMapInj inj -> print_injection state print_binding inj and print_set_expr state = function - SetInj inj -> print_injection state "set" print_expr inj + SetInj inj -> print_injection state print_expr inj | SetMem mem -> print_set_membership state mem and print_set_membership state {value; _} = @@ -600,7 +609,7 @@ and print_list_expr state = function print_expr state arg1; print_token state op "#"; print_expr state arg2 -| EListComp e -> print_injection state "list" print_expr e +| EListComp e -> print_injection state print_expr e | ENil e -> print_nil state e and print_constr_expr state = function @@ -608,8 +617,8 @@ and print_constr_expr state = function | NoneExpr e -> print_none_expr state e | ConstrApp e -> print_constr_app state e -and print_record_expr state e = - print_ne_injection state "record" print_field_assign e +and print_record_expr state = + print_ne_injection state print_field_assign and print_field_assign state {value; _} = let {field_name; equal; field_expr} = value in @@ -627,8 +636,7 @@ and print_update_expr state {value; _} = let {record; kwd_with; updates} = value in print_path state record; print_token state kwd_with "with"; - print_ne_injection state "updates field" print_field_path_assign updates - + print_ne_injection state print_field_path_assign updates and print_projection state {value; _} = let {struct_name; selector; field_path} = value in @@ -648,21 +656,21 @@ and print_record_patch state node = print_token state kwd_patch "patch"; print_path state path; print_token state kwd_with "with"; - print_ne_injection state "record" print_field_assign record_inj + print_ne_injection state print_field_assign record_inj and print_set_patch state node = let {kwd_patch; path; kwd_with; set_inj} = node in print_token state kwd_patch "patch"; print_path state path; print_token state kwd_with "with"; - print_ne_injection state "set" print_expr set_inj + print_ne_injection state print_expr set_inj and print_map_patch state node = let {kwd_patch; path; kwd_with; map_inj} = node in print_token state kwd_patch "patch"; print_path state path; print_token state kwd_with "with"; - print_ne_injection state "map" print_binding map_inj + print_ne_injection state print_binding map_inj and print_map_remove state node = let {kwd_remove; key; kwd_from; kwd_map; map} = node in @@ -681,35 +689,48 @@ and print_set_remove state node = print_path state set and print_injection : - 'a.state -> string -> (state -> 'a -> unit) -> - 'a injection reg -> unit = - fun state kwd print {value; _} -> - let {opening; elements; terminator; closing} = value in - print_opening state kwd opening; - print_sepseq state ";" print elements; - print_terminator state terminator; - print_closing state closing + 'a.state -> (state -> 'a -> unit) -> 'a injection reg -> unit = + fun state print {value; _} -> + let {kind; enclosing; elements; terminator} = value in + print_injection_kwd state kind; + match enclosing with + Brackets (lbracket, rbracket) -> + print_token state lbracket "["; + print_sepseq state ";" print elements; + print_terminator state terminator; + print_token state rbracket "]" + | End kwd_end -> + print_sepseq state ";" print elements; + print_terminator state terminator; + print_token state kwd_end "end" + +and print_injection_kwd state = function + InjSet kwd_set -> print_token state kwd_set "set" +| InjMap kwd_map -> print_token state kwd_map "map" +| InjBigMap kwd_big_map -> print_token state kwd_big_map "big_map" +| InjList kwd_list -> print_token state kwd_list "list" and print_ne_injection : - 'a.state -> string -> (state -> 'a -> unit) -> - 'a ne_injection reg -> unit = - fun state kwd print {value; _} -> - let {opening; ne_elements; terminator; closing} = value in - print_opening state kwd opening; - print_nsepseq state ";" print ne_elements; - print_terminator state terminator; - print_closing state closing + 'a.state -> (state -> 'a -> unit) -> 'a ne_injection reg -> unit = + fun state print {value; _} -> + let {kind; enclosing; ne_elements; terminator} = value in + print_ne_injection_kwd state kind; + match enclosing with + Brackets (lbracket, rbracket) -> + print_token state lbracket "["; + print_nsepseq state ";" print ne_elements; + print_terminator state terminator; + print_token state rbracket "]" + | End kwd_end -> + print_nsepseq state ";" print ne_elements; + print_terminator state terminator; + print_token state kwd_end "end" -and print_opening state lexeme = function - Kwd kwd -> - print_token state kwd lexeme -| KwdBracket (kwd, lbracket) -> - print_token state kwd lexeme; - print_token state lbracket "[" - -and print_closing state = function - RBracket rbracket -> print_token state rbracket "]" -| End kwd_end -> print_token state kwd_end "end" +and print_ne_injection_kwd state = function + NEInjAttr kwd_attributes -> print_token state kwd_attributes "attributes" +| NEInjSet kwd_set -> print_token state kwd_set "set" +| NEInjMap kwd_map -> print_token state kwd_map "map" +| NEInjRecord kwd_record -> print_token state kwd_record "record" and print_binding state {value; _} = let {source; arrow; image} = value in @@ -787,7 +808,7 @@ and print_patterns state {value; _} = and print_list_pattern state = function PListComp comp -> - print_injection state "list" print_pattern comp + print_injection state print_pattern comp | PNil kwd_nil -> print_token state kwd_nil "nil" | PParCons cons -> @@ -831,7 +852,7 @@ let pattern_to_string ~offsets ~mode = let instruction_to_string ~offsets ~mode = to_string ~offsets ~mode print_instruction -(** {1 Pretty-printing the AST} *) +(* Pretty-printing the AST *) let pp_ident state {value=name; region} = let reg = compact state region in @@ -952,8 +973,8 @@ and pp_type_expr state = function let fields = Utils.nsepseq_to_list value.ne_elements in List.iteri (List.length fields |> apply) fields | TString s -> - pp_node state "TString"; - pp_string (state#pad 1 0) s + pp_node state "TString"; + pp_string (state#pad 1 0) s and pp_cartesian state {value; _} = let apply len rank = diff --git a/src/passes/1-parser/pascaligo/ParserMain.ml b/src/passes/1-parser/pascaligo/ParserMain.ml index f0485222b..65533dc14 100644 --- a/src/passes/1-parser/pascaligo/ParserMain.ml +++ b/src/passes/1-parser/pascaligo/ParserMain.ml @@ -75,9 +75,23 @@ module Unit = (* Main *) let wrap = function - Stdlib.Ok _ -> flush_all () + Stdlib.Ok ast -> + if IO.options#pretty then + begin + let doc = Pretty.print ast in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + PPrint.ToChannel.pretty 1.0 width stdout doc; + print_newline () + end; + flush_all () | Error msg -> - (flush_all (); Printf.eprintf "\027[31m%s\027[0m%!" msg.Region.value) + begin + flush_all (); + Printf.eprintf "\027[31m%s\027[0m%!" msg.Region.value + end let () = match IO.options#input with diff --git a/src/passes/1-parser/pascaligo/Pretty.ml b/src/passes/1-parser/pascaligo/Pretty.ml new file mode 100644 index 000000000..091ffeeb8 --- /dev/null +++ b/src/passes/1-parser/pascaligo/Pretty.ml @@ -0,0 +1,425 @@ +[@@@warning "-42"] + +open AST +module Region = Simple_utils.Region +open! Region +open! PPrint + +let pp_par (printer: 'a -> document) ({value; _} : 'a par reg) = + string "(" ^^ nest 1 (printer value.inside ^^ string ")") + +let rec print ast = + let app decl = group (pp_declaration decl) in + let decl = Utils.nseq_to_list ast.decl in + separate_map (hardline ^^ hardline) app decl + +and pp_declaration = function + TypeDecl d -> pp_type_decl d +| ConstDecl d -> pp_const_decl d +| FunDecl d -> pp_fun_decl d +| AttrDecl d -> pp_attr_decl d + +and pp_attr_decl decl = pp_ne_injection pp_string decl + +and pp_const_decl {value; _} = string "TODO:pp_const_decl" + +(* Type declarations *) + +and pp_type_decl decl = + let {name; type_expr; _} = decl.value in + string "type " ^^ string name.value ^^ string " is" + ^^ group (nest 2 (break 1 ^^ pp_type_expr type_expr)) + +and pp_type_expr = function + TProd t -> pp_cartesian t +| TSum t -> pp_variants t +| TRecord t -> pp_fields t +| TApp t -> pp_type_app t +| TFun t -> pp_fun_type t +| TPar t -> pp_type_par t +| TVar t -> pp_ident t +| TString s -> pp_string s + +and pp_cartesian {value; _} = + let head, tail = value in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string " *") ^^ app items + in pp_type_expr head ^^ string " *" ^^ app (List.map snd tail) + +and pp_variants {value; _} = + let head, tail = value in + let head = pp_variant head in + let head = if tail = [] then head + else ifflat head (string " " ^^ head) in + let rest = List.map snd tail in + let app variant = break 1 ^^ string "| " ^^ pp_variant variant + in head ^^ concat_map app rest + +and pp_variant {value; _} = + let {constr; arg} = value in + match arg with + None -> pp_ident constr + | Some (_, e) -> + prefix 4 1 (pp_ident constr ^^ string " of") (pp_type_expr e) + +and pp_fields fields = pp_ne_injection pp_field_decl fields + +and pp_field_decl {value; _} = + let {field_name; field_type; _} = value in + let name = pp_ident field_name in + let t_expr = pp_type_expr field_type + in prefix 2 1 (name ^^ string " :") t_expr + +and pp_fun_type {value; _} = + let lhs, _, rhs = value in + group (pp_type_expr lhs ^^ string " ->" ^/^ pp_type_expr rhs) + +and pp_type_par t = pp_par pp_type_expr t + +and pp_type_app {value = ctor, tuple; _} = + prefix 2 1 (pp_type_constr ctor) (pp_type_tuple tuple) + +and pp_type_constr ctor = string ctor.value + +and pp_type_tuple {value; _} = + let head, tail = value.inside in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_type_expr e) + | e::items -> + group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in + if tail = [] + then pp_type_expr head + else + let components = + pp_type_expr head ^^ string "," ^^ app (List.map snd tail) + in string "(" ^^ nest 1 (components ^^ string ")") + +(* Function and procedure declarations *) + +and pp_fun_expr {value; _} = string "TODO:pp_fun_expr" + +and pp_fun_decl {value; _} = + let {kwd_recursive; fun_name; param; + ret_type; block_with; return; attributes} = value in + let start = + match kwd_recursive with + None -> string "function" + | Some _ -> string "recursive" ^/^ string "function" in + let parameters = pp_par pp_parameters param in + let return_t = pp_type_expr ret_type in + + string "TODO:pp_fun_decl" + +and pp_parameters p = pp_nsepseq ";" pp_param_decl p + +and pp_param_decl = function + ParamConst c -> pp_param_const c +| ParamVar v -> pp_param_var v + +and pp_param_const {value; _} = string "PP:pp_param_const" + +and pp_param_var {value; _} = string "TODO:pp_param_var" + +and pp_block {value; _} = string "TODO:pp_block" + +and pp_statements s = pp_nsepseq ";" pp_statement s + +and pp_statement = function + Instr s -> pp_instruction s +| Data s -> pp_data_decl s +| Attr s -> pp_attr_decl s + +and pp_data_decl = function + LocalConst d -> pp_const_decl d +| LocalVar d -> pp_var_decl d +| LocalFun d -> pp_fun_decl d + +and pp_var_decl decl = string "TODO:pp_var_decl" + +and pp_instruction = function + Cond i -> pp_conditional i +| CaseInstr i -> pp_case pp_if_clause i +| Assign i -> pp_assignment i +| Loop i -> pp_loop i +| ProcCall i -> pp_fun_call i +| Skip _ -> string "skip" +| RecordPatch i -> pp_record_patch i +| MapPatch i -> pp_map_patch i +| SetPatch i -> pp_set_patch i +| MapRemove i -> pp_map_remove i +| SetRemove i -> pp_set_remove i + +and pp_set_remove {value; _} = string "TODO:pp_set_remove" + +and pp_map_remove {value; _} = string "TODO:pp_map_remove" + +and pp_set_patch {value; _} = string "TODO:pp_set_patch" + +and pp_map_patch {value; _} = string "TODO:pp_map_patch" + +and pp_binding b = string "TODO:pp_binding" + +and pp_record_patch {value; _} = string "TODO:pp_record_patch" + +and pp_cond_expr {value; _} = string "TODO:pp_cond_expr" + +and pp_conditional {value; _} = string "TODO:pp_conditional" + +and pp_if_clause = function + ClauseInstr i -> pp_instruction i +| ClauseBlock b -> pp_clause_block b + +and pp_clause_block = function + LongBlock b -> pp_block b +| ShortBlock b -> pp_short_block b + +and pp_short_block {value; _} = string "TODO:pp_short_block" + +and pp_set_membership {value; _} = string "TODO:pp_set_membership" + +and pp_case : + 'a.('a -> document) -> 'a case Region.reg -> document = + fun printer case -> string "TODO:pp_case" + +and pp_case_clause : + 'a.('a -> document) -> 'a case_clause Region.reg -> document = + fun printer clause -> string "TODO:pp_case_clause" + +and pp_assignment {value; _} = string "TODO:pp_assignment" + +and pp_lhs : lhs -> document = function + Path p -> pp_path p +| MapPath p -> pp_map_lookup p + +and pp_loop = function + While l -> pp_while_loop l +| For f -> pp_for_loop f + +and pp_while_loop {value; _} = string "TODO:pp_while_loop" + +and pp_for_loop = function + ForInt l -> pp_for_int l +| ForCollect l -> pp_for_collect l + +and pp_for_int {value; _} = string "TODO:pp_for_int" + +and pp_var_assign {value; _} = string "TODO:pp_var_assign" + +and pp_for_collect {value; _} = string "TODO:pp_for_collect" + +and pp_collection = function + Map _ -> string "map" +| Set _ -> string "set" +| List _ -> string "list" + +(* Expressions *) + +and pp_expr = function + ECase e -> pp_case pp_expr e +| ECond e -> pp_cond_expr e +| EAnnot e -> pp_annot_expr e +| ELogic e -> pp_logic_expr e +| EArith e -> pp_arith_expr e +| EString e -> pp_string_expr e +| EList e -> pp_list_expr e +| ESet e -> pp_set_expr e +| EConstr e -> pp_constr_expr e +| ERecord e -> pp_record e +| EProj e -> pp_projection e +| EUpdate e -> pp_update e +| EMap e -> pp_map_expr e +| EVar e -> pp_ident e +| ECall e -> pp_fun_call e +| EBytes e -> pp_bytes e +| EUnit _ -> string "Unit" +| ETuple e -> pp_tuple_expr e +| EPar e -> pp_par pp_expr e +| EFun e -> pp_fun_expr e + +and pp_annot_expr {value; _} = string "TODO:pp_annot_expr" + +and pp_set_expr = function + SetInj inj -> string "TODO:pp_set_expr:SetInj" +| SetMem mem -> string "TODO:pp_set_expr:SetMem" + +and pp_map_expr = function + MapLookUp fetch -> pp_map_lookup fetch +| MapInj inj -> pp_injection pp_binding inj +| BigMapInj inj -> pp_injection pp_binding inj + +and pp_map_lookup {value; _} = string "TODO:pp_map_lookup" + +and pp_path = function + Name v -> pp_ident v +| Path p -> pp_projection p + +and pp_logic_expr = function + BoolExpr e -> pp_bool_expr e +| CompExpr e -> pp_comp_expr e + +and pp_bool_expr = function + Or e -> pp_bin_op "||" e +| And e -> pp_bin_op "&&" e +| Not e -> pp_un_op "not" e +| True _ -> string "true" +| False _ -> string "false" + +and pp_bin_op op {value; _} = + let {arg1; arg2; _} = value + and length = String.length op + 1 in + pp_expr arg1 ^/^ string (op ^ " ") ^^ nest length (pp_expr arg2) + +and pp_un_op op {value; _} = + string (op ^ " ") ^^ pp_expr value.arg + +and pp_comp_expr = function + Lt e -> pp_bin_op "<" e +| Leq e -> pp_bin_op "<=" e +| Gt e -> pp_bin_op ">" e +| Geq e -> pp_bin_op ">=" e +| Equal e -> pp_bin_op "=" e +| Neq e -> pp_bin_op "<>" e + +and pp_arith_expr = function + Add e -> pp_bin_op "+" e +| Sub e -> pp_bin_op "-" e +| Mult e -> pp_bin_op "*" e +| Div e -> pp_bin_op "/" e +| Mod e -> pp_bin_op "mod" e +| Neg e -> string "-" ^^ pp_expr e.value.arg +| Int e -> pp_int e +| Nat e -> pp_nat e +| Mutez e -> pp_mutez e + +and pp_mutez {value; _} = + Z.to_string (snd value) ^ "mutez" |> string + +and pp_string_expr = function + Cat e -> pp_bin_op "^" e +| String e -> pp_string e +| Verbatim e -> pp_verbatim e + +and pp_ident {value; _} = string value + +and pp_string s = string "\"" ^^ pp_ident s ^^ string "\"" + +and pp_verbatim s = string "{|" ^^ pp_ident s ^^ string "|}" + +and pp_list_expr = function + ECons e -> pp_bin_op "#" e +| EListComp e -> group (pp_injection pp_expr e) +| ENil _ -> string "nil" + +and pp_constr_expr = function + SomeApp a -> pp_some_app a +| NoneExpr _ -> string "None" +| ConstrApp a -> pp_constr_app a + +and pp_some_app {value; _} = string "TODO:pp_some_app" + +and pp_constr_app {value; _} = string "TODO:pp_constr_app" + +and pp_field_assign {value; _} = string "TODO:pp_field_assign" + +and pp_record ne_inj = group (pp_ne_injection pp_field_assign ne_inj) + +and pp_projection {value; _} = string "TODO:pp_projection" + +and pp_update {value; _} = string "TODO:pp_update" + +and pp_field_path_assign {value; _} = string "TODO:pp_field_path_assign" + +and pp_selection = function + FieldName _ -> string "TODO:pp_selection:FieldName" +| Component cmp -> cmp.value |> snd |> Z.to_string |> string + +and pp_tuple_expr {value; _} = string "TODO:pp_tuple_expr" + +and pp_fun_call {value; _} = string "TODO:pp_fun_call" + +and pp_arguments v = pp_tuple_expr v + +(* Injections *) + +and pp_injection : + 'a.('a -> document) -> 'a injection reg -> document = + fun printer {value; _} -> string "TODO:pp_injection" + +and pp_ne_injection : + 'a.('a -> document) -> 'a ne_injection reg -> document = + fun printer {value; _} -> + let {kind; enclosing; ne_elements; _} = value in + let elements = pp_nsepseq ";" printer ne_elements in + let kwd = pp_ne_injection_kwd kind in + let offset = String.length kwd + 2 in + string (kwd ^ " [") + ^^ group (nest 2 (break 0 ^^ elements ^^ string "]")) + +and pp_ne_injection_kwd = function + NEInjAttr _ -> "attributes" +| NEInjSet _ -> "set" +| NEInjMap _ -> "map" +| NEInjRecord _ -> "record" + +and pp_nsepseq : + 'a.string -> + ('a -> document) -> + ('a, t) Utils.nsepseq -> + document = + fun sep printer elements -> + let elems = Utils.nsepseq_to_list elements + and sep = string sep ^^ break 1 + in separate_map sep printer elems + +(* Patterns *) + +and pp_pattern = function + PConstr p -> pp_constr_pattern p +| PVar v -> pp_ident v +| PWild _ -> string "_" +| PInt i -> pp_int i +| PNat n -> pp_nat n +| PBytes b -> pp_bytes b +| PString s -> pp_string s +| PList l -> pp_list_pattern l +| PTuple t -> pp_tuple_pattern t + +and pp_int {value; _} = + string (Z.to_string (snd value)) + +and pp_nat {value; _} = + string (Z.to_string (snd value) ^ "n") + +and pp_bytes {value; _} = + string ("0x" ^ Hex.show (snd value)) + +and pp_constr_pattern = function + PUnit _ -> string "Unit" +| PFalse _ -> string "False" +| PTrue _ -> string "True" +| PNone _ -> string "None" +| PSomeApp a -> pp_psome a +| PConstrApp a -> pp_pconstr_app a + +and pp_psome {value=_, p; _} = + prefix 4 1 (string "Some") (pp_par pp_pattern p) + +and pp_pconstr_app {value; _} = string "TODO:pp_pconstr_app" + +and pp_tuple_pattern {value; _} = string "TODO:tuple_pattern" + +and pp_list_pattern = function + PListComp cmp -> pp_list_comp cmp +| PNil _ -> string "nil" +| PParCons p -> pp_ppar_cons p +| PCons p -> pp_nsepseq "#" pp_pattern p.value + +and pp_list_comp {value; _} = string "TODO:pp_list_comp" + +and pp_ppar_cons {value; _} = string "TODO:pp_ppar_cons" + +and pp_cons {value; _} = string "TODO:pp_cons" diff --git a/src/passes/1-parser/pascaligo/dune b/src/passes/1-parser/pascaligo/dune index ca4865ae9..5aa59af6d 100644 --- a/src/passes/1-parser/pascaligo/dune +++ b/src/passes/1-parser/pascaligo/dune @@ -15,7 +15,7 @@ (name parser_pascaligo) (public_name ligo.parser.pascaligo) (modules - Scoping AST pascaligo Parser ParserLog LexToken ParErr) + Scoping AST pascaligo Parser ParserLog LexToken ParErr Pretty) (libraries menhirLib parser_shared diff --git a/src/passes/1-parser/reasonligo.ml b/src/passes/1-parser/reasonligo.ml index 5a7b1b2f1..0f2f15e95 100644 --- a/src/passes/1-parser/reasonligo.ml +++ b/src/passes/1-parser/reasonligo.ml @@ -189,7 +189,7 @@ let pretty_print source = match parse_file source with Stdlib.Error _ as e -> e | Ok ast -> - let doc = Pretty.make (fst ast) in + let doc = Pretty.print (fst ast) in let buffer = Buffer.create 131 in let width = match Terminal_size.get_columns () with From c376650ee5e605c8f52d78ef0690f117f47f1c1d Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 1 Jun 2020 18:47:42 +0200 Subject: [PATCH 21/67] More to the PascaLIGO pretty-printer. --- src/passes/1-parser/pascaligo/AST.ml | 22 +++++++-------- src/passes/1-parser/pascaligo/Pretty.ml | 36 ++++++++++++++++++++----- 2 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/passes/1-parser/pascaligo/AST.ml b/src/passes/1-parser/pascaligo/AST.ml index 1ed609c0f..cf6906b69 100644 --- a/src/passes/1-parser/pascaligo/AST.ml +++ b/src/passes/1-parser/pascaligo/AST.ml @@ -216,17 +216,17 @@ and fun_expr = { } and fun_decl = { - kwd_recursive: kwd_recursive option; - kwd_function : kwd_function; - fun_name : variable; - param : parameters; - colon : colon; - ret_type : type_expr; - kwd_is : kwd_is; - block_with : (block reg * kwd_with) option; - return : expr; - terminator : semi option; - attributes : attr_decl option + kwd_recursive : kwd_recursive option; + kwd_function : kwd_function; + fun_name : variable; + param : parameters; + colon : colon; + ret_type : type_expr; + kwd_is : kwd_is; + block_with : (block reg * kwd_with) option; + return : expr; + terminator : semi option; + attributes : attr_decl option } and parameters = (param_decl, semi) nsepseq par reg diff --git a/src/passes/1-parser/pascaligo/Pretty.ml b/src/passes/1-parser/pascaligo/Pretty.ml index 091ffeeb8..ce53e5a94 100644 --- a/src/passes/1-parser/pascaligo/Pretty.ml +++ b/src/passes/1-parser/pascaligo/Pretty.ml @@ -104,15 +104,28 @@ and pp_fun_expr {value; _} = string "TODO:pp_fun_expr" and pp_fun_decl {value; _} = let {kwd_recursive; fun_name; param; - ret_type; block_with; return; attributes} = value in + ret_type; block_with; return; attributes; _} = value in let start = match kwd_recursive with None -> string "function" | Some _ -> string "recursive" ^/^ string "function" in let parameters = pp_par pp_parameters param in let return_t = pp_type_expr ret_type in - - string "TODO:pp_fun_decl" + let blk_opening, blk_in, blk_closing = + match block_with with + None -> empty, empty, empty + | Some (b,_) -> + hardline ^^ string "block [", pp_block b, string "] with " in + let expr = pp_expr return in + let attr = match attributes with + None -> empty + | Some a -> hardline ^^ pp_attr_decl a + in group (start ^^ nest 2 (break 1 ^^ parameters)) + ^/^ string ": " ^^ nest 2 return_t + ^^ string " is" ^^ blk_opening + ^^ nest 2 (break 0 ^^ blk_in) + ^/^ blk_closing ^^ nest 4 (break 1 ^^ expr) + ^^ attr and pp_parameters p = pp_nsepseq ";" pp_param_decl p @@ -120,9 +133,15 @@ and pp_param_decl = function ParamConst c -> pp_param_const c | ParamVar v -> pp_param_var v -and pp_param_const {value; _} = string "PP:pp_param_const" +and pp_param_const {value; _} = + let {var; param_type; _} : param_const = value in + group (string ("const " ^ var.value) + ^/^ string ": " ^^ nest 2 (pp_type_expr param_type)) -and pp_param_var {value; _} = string "TODO:pp_param_var" +and pp_param_var {value; _} = + let {var; param_type; _} : param_var = value in + group (string ("var " ^ var.value) + ^/^ string ": " ^^ nest 2 (pp_type_expr param_type)) and pp_block {value; _} = string "TODO:pp_block" @@ -337,9 +356,12 @@ and pp_selection = function FieldName _ -> string "TODO:pp_selection:FieldName" | Component cmp -> cmp.value |> snd |> Z.to_string |> string -and pp_tuple_expr {value; _} = string "TODO:pp_tuple_expr" +and pp_tuple_expr tuple = pp_par (pp_nsepseq "," pp_expr) tuple -and pp_fun_call {value; _} = string "TODO:pp_fun_call" +and pp_fun_call {value; _} = + let lambda, arguments = value in + let arguments = pp_tuple_expr arguments in + group (pp_expr lambda ^^ nest 2 (break 1 ^^ arguments)) and pp_arguments v = pp_tuple_expr v From b12e9a5baaf99342540a134904b855076dc0560e Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 1 Jun 2020 19:17:59 +0200 Subject: [PATCH 22/67] Aligned printing of tuples of expressions on CameLIGO. --- src/passes/1-parser/pascaligo/Pretty.ml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/passes/1-parser/pascaligo/Pretty.ml b/src/passes/1-parser/pascaligo/Pretty.ml index ce53e5a94..7fc70a4bd 100644 --- a/src/passes/1-parser/pascaligo/Pretty.ml +++ b/src/passes/1-parser/pascaligo/Pretty.ml @@ -356,7 +356,18 @@ and pp_selection = function FieldName _ -> string "TODO:pp_selection:FieldName" | Component cmp -> cmp.value |> snd |> Z.to_string |> string -and pp_tuple_expr tuple = pp_par (pp_nsepseq "," pp_expr) tuple +and pp_tuple_expr {value; _} = + let head, tail = value.inside in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_expr e) + | e::items -> + group (break 1 ^^ pp_expr e ^^ string ",") ^^ app items in + let components = + if tail = [] + then pp_expr head + else pp_expr head ^^ string "," ^^ app (List.map snd tail) + in string "(" ^^ nest 1 (components ^^ string ")") and pp_fun_call {value; _} = let lambda, arguments = value in From 62fe3b793af616b4cb87fc53b360aa7f7f45d31f Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Tue, 2 Jun 2020 22:14:06 +0200 Subject: [PATCH 23/67] More cases. --- src/passes/1-parser/pascaligo/Pretty.ml | 76 +++++++++++++++++++------ 1 file changed, 58 insertions(+), 18 deletions(-) diff --git a/src/passes/1-parser/pascaligo/Pretty.ml b/src/passes/1-parser/pascaligo/Pretty.ml index 7fc70a4bd..bdd92dc8c 100644 --- a/src/passes/1-parser/pascaligo/Pretty.ml +++ b/src/passes/1-parser/pascaligo/Pretty.ml @@ -21,7 +21,16 @@ and pp_declaration = function and pp_attr_decl decl = pp_ne_injection pp_string decl -and pp_const_decl {value; _} = string "TODO:pp_const_decl" +and pp_const_decl {value; _} = + let {name; const_type; init; attributes; _} = value in + let start = string ("const " ^ name.value ^ " :") in + let t_expr = pp_type_expr const_type in + let attr = match attributes with + None -> empty + | Some a -> hardline ^^ pp_attr_decl a + in prefix 2 1 start t_expr + ^/^ prefix 2 1 (string "=") (pp_expr init) + ^^ attr (* Type declarations *) @@ -91,12 +100,11 @@ and pp_type_tuple {value; _} = | [e] -> group (break 1 ^^ pp_type_expr e) | e::items -> group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in - if tail = [] - then pp_type_expr head - else - let components = - pp_type_expr head ^^ string "," ^^ app (List.map snd tail) - in string "(" ^^ nest 1 (components ^^ string ")") + let components = + if tail = [] + then pp_type_expr head + else pp_type_expr head ^^ string "," ^^ app (List.map snd tail) + in string "(" ^^ nest 1 (components ^^ string ")") (* Function and procedure declarations *) @@ -115,14 +123,14 @@ and pp_fun_decl {value; _} = match block_with with None -> empty, empty, empty | Some (b,_) -> - hardline ^^ string "block [", pp_block b, string "] with " in + hardline ^^ string "is block [", pp_block b, string "] with " in let expr = pp_expr return in let attr = match attributes with None -> empty | Some a -> hardline ^^ pp_attr_decl a in group (start ^^ nest 2 (break 1 ^^ parameters)) ^/^ string ": " ^^ nest 2 return_t - ^^ string " is" ^^ blk_opening + ^^ blk_opening ^^ nest 2 (break 0 ^^ blk_in) ^/^ blk_closing ^^ nest 4 (break 1 ^^ expr) ^^ attr @@ -135,15 +143,17 @@ and pp_param_decl = function and pp_param_const {value; _} = let {var; param_type; _} : param_const = value in - group (string ("const " ^ var.value) - ^/^ string ": " ^^ nest 2 (pp_type_expr param_type)) + let name = string ("const " ^ var.value) in + let t_expr = pp_type_expr param_type + in prefix 2 1 (name ^^ string " :") t_expr and pp_param_var {value; _} = let {var; param_type; _} : param_var = value in - group (string ("var " ^ var.value) - ^/^ string ": " ^^ nest 2 (pp_type_expr param_type)) + let name = string ("var " ^ var.value) in + let t_expr = pp_type_expr param_type + in prefix 2 1 (name ^^ string " :") t_expr -and pp_block {value; _} = string "TODO:pp_block" +and pp_block {value; _} = pp_statements value.statements and pp_statements s = pp_nsepseq ";" pp_statement s @@ -157,7 +167,12 @@ and pp_data_decl = function | LocalVar d -> pp_var_decl d | LocalFun d -> pp_fun_decl d -and pp_var_decl decl = string "TODO:pp_var_decl" +and pp_var_decl {value; _} = + let {name; var_type; init; _} = value in + let start = string ("var " ^ name.value ^ " :") in + let t_expr = pp_type_expr var_type + in prefix 2 1 start t_expr + ^/^ prefix 2 1 (string ":=") (pp_expr init) and pp_instruction = function Cond i -> pp_conditional i @@ -186,7 +201,14 @@ and pp_record_patch {value; _} = string "TODO:pp_record_patch" and pp_cond_expr {value; _} = string "TODO:pp_cond_expr" -and pp_conditional {value; _} = string "TODO:pp_conditional" +and pp_conditional {value; _} = + let {test; ifso; ifnot; _} : conditional = value in + let if_then = + string "if " ^^ group (nest 3 (pp_expr test)) ^/^ string "then" + ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) in + let if_else = + string "else" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifnot)) + in if_then ^/^ if_else and pp_if_clause = function ClauseInstr i -> pp_instruction i @@ -202,13 +224,31 @@ and pp_set_membership {value; _} = string "TODO:pp_set_membership" and pp_case : 'a.('a -> document) -> 'a case Region.reg -> document = - fun printer case -> string "TODO:pp_case" + fun printer {value; _} -> + let {expr; cases; _} = value in + group (string "case " ^^ nest 5 (pp_expr expr) ^/^ string "of") + ^^ hardline ^^ nest 2 (pp_cases printer cases) + +and pp_cases : + 'a.('a -> document) -> + ('a case_clause reg, vbar) Utils.nsepseq Region.reg -> document = + fun printer {value; _} -> + let head, tail = value in + let head = pp_case_clause printer head in + let head = if tail = [] then head + else string " " ^^ head in + let rest = List.map snd tail in + let app clause = + break 1 ^^ string "| " ^^ pp_case_clause printer clause + in head ^^ concat_map app rest and pp_case_clause : 'a.('a -> document) -> 'a case_clause Region.reg -> document = fun printer clause -> string "TODO:pp_case_clause" -and pp_assignment {value; _} = string "TODO:pp_assignment" +and pp_assignment {value; _} = + let {lhs; rhs; _} = value in + prefix 2 1 (pp_lhs lhs ^^ string " :=") (pp_expr rhs) and pp_lhs : lhs -> document = function Path p -> pp_path p From c8ed8c38ccfa0760434abce3954148c3ef7f67d9 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Wed, 3 Jun 2020 12:41:26 +0200 Subject: [PATCH 24/67] ReasonLIGO pretty printing testing. --- src/passes/1-parser/reasonligo/Pretty.ml | 2 +- src/test/contracts/dune | 165 ++++++++++++++++++ src/test/contracts/expected/address.religo | 6 + src/test/contracts/expected/amount.religo | 8 + src/test/contracts/expected/arithmetic.religo | 17 ++ .../expected/bad_address_format.religo | 3 + .../expected/balance_constant.religo | 7 + .../expected/bitwise_arithmetic.religo | 9 + .../expected/boolean_operators.religo | 9 + .../expected/bytes_arithmetic.religo | 5 + .../contracts/expected/bytes_unpack.religo | 20 +++ .../contracts/expected/check_signature.religo | 6 + src/test/contracts/expected/closure.religo | 8 + .../expected/condition-shadowing.religo | 15 ++ src/test/contracts/expected/condition.religo | 8 + src/test/contracts/expected/counter.religo | 5 + src/test/contracts/expected/crypto.religo | 3 + src/test/contracts/expected/empty_case.religo | 8 + src/test/contracts/expected/eq_bool.religo | 8 + src/test/contracts/expected/failwith.religo | 7 + .../contracts/expected/function-shared.religo | 5 + src/test/contracts/expected/high-order.religo | 53 ++++++ .../expected/implicit_account.religo | 3 + src/test/contracts/expected/included.religo | 1 + src/test/contracts/expected/includer.religo | 3 + src/test/contracts/expected/key_hash.religo | 8 + src/test/contracts/expected/lambda.religo | 5 + src/test/contracts/expected/lambda2.religo | 5 + .../contracts/expected/let_multiple.religo | 13 ++ src/test/contracts/expected/letin.religo | 39 +++++ src/test/contracts/expected/list.religo | 42 +++++ src/test/contracts/expected/loop.religo | 51 ++++++ src/test/contracts/expected/map.religo | 71 ++++++++ src/test/contracts/expected/match.religo | 17 ++ src/test/contracts/expected/match_bis.religo | 18 ++ .../expected/michelson_pair_tree.religo | 13 ++ .../expected/multiple-parameters.religo | 6 + src/test/contracts/expected/multisig.religo | 97 ++++++++++ .../contracts/expected/no_semicolon.religo | 18 ++ src/test/contracts/expected/pledge.religo | 35 ++++ src/test/contracts/expected/record.religo | 36 ++++ src/test/contracts/expected/recursion.religo | 17 ++ .../contracts/expected/self_address.religo | 1 + .../contracts/expected/set_arithmetic.religo | 17 ++ .../contracts/expected/set_delegate.religo | 6 + .../expected/single_record_item.religo | 3 + .../expected/string_arithmetic.religo | 5 + .../contracts/expected/super-counter.religo | 16 ++ src/test/contracts/expected/tuple.religo | 13 ++ src/test/contracts/expected/tuple_list.religo | 3 + .../expected/tuple_param_destruct.religo | 4 + src/test/contracts/expected/tuple_type.religo | 48 +++++ .../expected/tuples_no_annotation.religo | 9 + .../tuples_sequences_functions.religo | 65 +++++++ src/test/contracts/expected/variant.religo | 7 + src/test/contracts/expected/website2.religo | 18 ++ src/test/contracts/super-counter.religo | 2 +- src/test/integration_tests.ml | 1 + 58 files changed, 1091 insertions(+), 2 deletions(-) create mode 100644 src/test/contracts/dune create mode 100644 src/test/contracts/expected/address.religo create mode 100644 src/test/contracts/expected/amount.religo create mode 100644 src/test/contracts/expected/arithmetic.religo create mode 100644 src/test/contracts/expected/bad_address_format.religo create mode 100644 src/test/contracts/expected/balance_constant.religo create mode 100644 src/test/contracts/expected/bitwise_arithmetic.religo create mode 100644 src/test/contracts/expected/boolean_operators.religo create mode 100644 src/test/contracts/expected/bytes_arithmetic.religo create mode 100644 src/test/contracts/expected/bytes_unpack.religo create mode 100644 src/test/contracts/expected/check_signature.religo create mode 100644 src/test/contracts/expected/closure.religo create mode 100644 src/test/contracts/expected/condition-shadowing.religo create mode 100644 src/test/contracts/expected/condition.religo create mode 100644 src/test/contracts/expected/counter.religo create mode 100644 src/test/contracts/expected/crypto.religo create mode 100644 src/test/contracts/expected/empty_case.religo create mode 100644 src/test/contracts/expected/eq_bool.religo create mode 100644 src/test/contracts/expected/failwith.religo create mode 100644 src/test/contracts/expected/function-shared.religo create mode 100644 src/test/contracts/expected/high-order.religo create mode 100644 src/test/contracts/expected/implicit_account.religo create mode 100644 src/test/contracts/expected/included.religo create mode 100644 src/test/contracts/expected/includer.religo create mode 100644 src/test/contracts/expected/key_hash.religo create mode 100644 src/test/contracts/expected/lambda.religo create mode 100644 src/test/contracts/expected/lambda2.religo create mode 100644 src/test/contracts/expected/let_multiple.religo create mode 100644 src/test/contracts/expected/letin.religo create mode 100644 src/test/contracts/expected/list.religo create mode 100644 src/test/contracts/expected/loop.religo create mode 100644 src/test/contracts/expected/map.religo create mode 100644 src/test/contracts/expected/match.religo create mode 100644 src/test/contracts/expected/match_bis.religo create mode 100644 src/test/contracts/expected/michelson_pair_tree.religo create mode 100644 src/test/contracts/expected/multiple-parameters.religo create mode 100644 src/test/contracts/expected/multisig.religo create mode 100644 src/test/contracts/expected/no_semicolon.religo create mode 100644 src/test/contracts/expected/pledge.religo create mode 100644 src/test/contracts/expected/record.religo create mode 100644 src/test/contracts/expected/recursion.religo create mode 100644 src/test/contracts/expected/self_address.religo create mode 100644 src/test/contracts/expected/set_arithmetic.religo create mode 100644 src/test/contracts/expected/set_delegate.religo create mode 100644 src/test/contracts/expected/single_record_item.religo create mode 100644 src/test/contracts/expected/string_arithmetic.religo create mode 100644 src/test/contracts/expected/super-counter.religo create mode 100644 src/test/contracts/expected/tuple.religo create mode 100644 src/test/contracts/expected/tuple_list.religo create mode 100644 src/test/contracts/expected/tuple_param_destruct.religo create mode 100644 src/test/contracts/expected/tuple_type.religo create mode 100644 src/test/contracts/expected/tuples_no_annotation.religo create mode 100644 src/test/contracts/expected/tuples_sequences_functions.religo create mode 100644 src/test/contracts/expected/variant.religo create mode 100644 src/test/contracts/expected/website2.religo diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml index f462d7a9b..e6902eaee 100644 --- a/src/passes/1-parser/reasonligo/Pretty.ml +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -317,7 +317,7 @@ and pp_projection {value; _} = let fields = Utils.nsepseq_to_list field_path and sep = string "." ^^ break 0 in let fields = separate_map sep pp_selection fields in - group (pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields) + group (pp_ident struct_name ^^ break 0 ^^ string "[" ^^ fields ^^ string "]") and pp_selection = function FieldName v -> string v.value diff --git a/src/test/contracts/dune b/src/test/contracts/dune new file mode 100644 index 000000000..b1cec5a5b --- /dev/null +++ b/src/test/contracts/dune @@ -0,0 +1,165 @@ +(rule (targets address.output) (action (with-stdout-to address.output (run ligo "pretty-print" "address.religo")))) +(rule (targets amount.output) (action (with-stdout-to amount.output (run ligo "pretty-print" "amount.religo")))) +(rule (targets arithmetic.output) (action (with-stdout-to arithmetic.output (run ligo "pretty-print" "arithmetic.religo")))) +(rule (targets bad_address_format.output) (action (with-stdout-to bad_address_format.output (run ligo "pretty-print" "bad_address_format.religo")))) +(rule (targets balance_constant.output) (action (with-stdout-to balance_constant.output (run ligo "pretty-print" "balance_constant.religo")))) +(rule (targets bitwise_arithmetic.output) (action (with-stdout-to bitwise_arithmetic.output (run ligo "pretty-print" "bitwise_arithmetic.religo")))) +(rule (targets boolean_operators.output) (action (with-stdout-to boolean_operators.output (run ligo "pretty-print" "boolean_operators.religo")))) +(rule (targets bytes_arithmetic.output) (action (with-stdout-to bytes_arithmetic.output (run ligo "pretty-print" "bytes_arithmetic.religo")))) +(rule (targets bytes_unpack.output) (action (with-stdout-to bytes_unpack.output (run ligo "pretty-print" "bytes_unpack.religo")))) +(rule (targets check_signature.output) (action (with-stdout-to check_signature.output (run ligo "pretty-print" "check_signature.religo")))) +(rule (targets closure.output) (action (with-stdout-to closure.output (run ligo "pretty-print" "closure.religo")))) +(rule (targets condition-shadowing.output) (action (with-stdout-to condition-shadowing.output (run ligo "pretty-print" "condition-shadowing.religo")))) +(rule (targets condition.output) (action (with-stdout-to condition.output (run ligo "pretty-print" "condition.religo")))) +(rule (targets counter.output) (action (with-stdout-to counter.output (run ligo "pretty-print" "counter.religo")))) +(rule (targets crypto.output) (action (with-stdout-to crypto.output (run ligo "pretty-print" "crypto.religo")))) +(rule (targets empty_case.output) (action (with-stdout-to empty_case.output (run ligo "pretty-print" "empty_case.religo")))) +(rule (targets eq_bool.output) (action (with-stdout-to eq_bool.output (run ligo "pretty-print" "eq_bool.religo")))) +(rule (targets failwith.output) (action (with-stdout-to failwith.output (run ligo "pretty-print" "failwith.religo")))) +(rule (targets function-shared.output) (action (with-stdout-to function-shared.output (run ligo "pretty-print" "function-shared.religo")))) +(rule (targets high-order.output) (action (with-stdout-to high-order.output (run ligo "pretty-print" "high-order.religo")))) +(rule (targets implicit_account.output) (action (with-stdout-to implicit_account.output (run ligo "pretty-print" "implicit_account.religo")))) +(rule (targets included.output) (action (with-stdout-to included.output (run ligo "pretty-print" "included.religo")))) +(rule (targets includer.output) (action (with-stdout-to includer.output (run ligo "pretty-print" "includer.religo")))) +(rule (targets key_hash.output) (action (with-stdout-to key_hash.output (run ligo "pretty-print" "key_hash.religo")))) +(rule (targets lambda.output) (action (with-stdout-to lambda.output (run ligo "pretty-print" "lambda.religo")))) +(rule (targets lambda2.output) (action (with-stdout-to lambda2.output (run ligo "pretty-print" "lambda2.religo")))) +(rule (targets let_multiple.output) (action (with-stdout-to let_multiple.output (run ligo "pretty-print" "let_multiple.religo")))) +(rule (targets letin.output) (action (with-stdout-to letin.output (run ligo "pretty-print" "letin.religo")))) +(rule (targets list.output) (action (with-stdout-to list.output (run ligo "pretty-print" "list.religo")))) +(rule (targets loop.output) (action (with-stdout-to loop.output (run ligo "pretty-print" "loop.religo")))) +(rule (targets map.output) (action (with-stdout-to map.output (run ligo "pretty-print" "map.religo")))) +(rule (targets match_bis.output) (action (with-stdout-to match_bis.output (run ligo "pretty-print" "match_bis.religo")))) +(rule (targets match.output) (action (with-stdout-to match.output (run ligo "pretty-print" "match.religo")))) +(rule (targets michelson_pair_tree.output) (action (with-stdout-to michelson_pair_tree.output (run ligo "pretty-print" "michelson_pair_tree.religo")))) +(rule (targets multiple-parameters.output) (action (with-stdout-to multiple-parameters.output (run ligo "pretty-print" "multiple-parameters.religo")))) +(rule (targets multisig.output) (action (with-stdout-to multisig.output (run ligo "pretty-print" "multisig.religo")))) +(rule (targets no_semicolon.output) (action (with-stdout-to no_semicolon.output (run ligo "pretty-print" "no_semicolon.religo")))) +(rule (targets pledge.output) (action (with-stdout-to pledge.output (run ligo "pretty-print" "pledge.religo")))) +(rule (targets record.output) (action (with-stdout-to record.output (run ligo "pretty-print" "record.religo")))) +(rule (targets recursion.output) (action (with-stdout-to recursion.output (run ligo "pretty-print" "recursion.religo")))) +(rule (targets self_address.output) (action (with-stdout-to self_address.output (run ligo "pretty-print" "self_address.religo")))) +(rule (targets set_arithmetic.output) (action (with-stdout-to set_arithmetic.output (run ligo "pretty-print" "set_arithmetic.religo")))) +(rule (targets set_delegate.output) (action (with-stdout-to set_delegate.output (run ligo "pretty-print" "set_delegate.religo")))) +(rule (targets single_record_item.output) (action (with-stdout-to single_record_item.output (run ligo "pretty-print" "single_record_item.religo")))) +(rule (targets string_arithmetic.output) (action (with-stdout-to string_arithmetic.output (run ligo "pretty-print" "string_arithmetic.religo")))) +(rule (targets super-counter.output) (action (with-stdout-to super-counter.output (run ligo "pretty-print" "super-counter.religo")))) +(rule (targets tuple_list.output) (action (with-stdout-to tuple_list.output (run ligo "pretty-print" "tuple_list.religo")))) +(rule (targets tuple_param_destruct.output) (action (with-stdout-to tuple_param_destruct.output (run ligo "pretty-print" "tuple_param_destruct.religo")))) +(rule (targets tuple_type.output) (action (with-stdout-to tuple_type.output (run ligo "pretty-print" "tuple_type.religo")))) +(rule (targets tuple.output) (action (with-stdout-to tuple.output (run ligo "pretty-print" "tuple.religo")))) +(rule (targets tuples_no_annotation.output) (action (with-stdout-to tuples_no_annotation.output (run ligo "pretty-print" "tuples_no_annotation.religo")))) +(rule (targets tuples_sequences_functions.output) (action (with-stdout-to tuples_sequences_functions.output (run ligo "pretty-print" "tuples_sequences_functions.religo")))) +(rule (targets variant.output) (action (with-stdout-to variant.output (run ligo "pretty-print" "variant.religo")))) +(rule (targets website2.output) (action (with-stdout-to website2.output (run ligo "pretty-print" "website2.religo")))) + + +(alias (name runtest) (action (diff expected/address.religo address.output))) +(alias (name runtest) (action (diff expected/amount.religo amount.output))) +(alias (name runtest) (action (diff expected/arithmetic.religo arithmetic.output))) +(alias (name runtest) (action (diff expected/bad_address_format.religo bad_address_format.output))) +(alias (name runtest) (action (diff expected/balance_constant.religo balance_constant.output))) +(alias (name runtest) (action (diff expected/bitwise_arithmetic.religo bitwise_arithmetic.output))) +(alias (name runtest) (action (diff expected/boolean_operators.religo boolean_operators.output))) +(alias (name runtest) (action (diff expected/bytes_arithmetic.religo bytes_arithmetic.output))) +(alias (name runtest) (action (diff expected/bytes_unpack.religo bytes_unpack.output))) +(alias (name runtest) (action (diff expected/check_signature.religo check_signature.output))) +(alias (name runtest) (action (diff expected/closure.religo closure.output))) +(alias (name runtest) (action (diff expected/condition-shadowing.religo condition-shadowing.output))) +(alias (name runtest) (action (diff expected/condition.religo condition.output))) +(alias (name runtest) (action (diff expected/counter.religo counter.output))) +(alias (name runtest) (action (diff expected/crypto.religo crypto.output))) +(alias (name runtest) (action (diff expected/empty_case.religo empty_case.output))) +(alias (name runtest) (action (diff expected/eq_bool.religo eq_bool.output))) +(alias (name runtest) (action (diff expected/failwith.religo failwith.output))) +(alias (name runtest) (action (diff expected/function-shared.religo function-shared.output))) +(alias (name runtest) (action (diff expected/high-order.religo high-order.output))) +(alias (name runtest) (action (diff expected/implicit_account.religo implicit_account.output))) +(alias (name runtest) (action (diff expected/included.religo included.output))) +(alias (name runtest) (action (diff expected/includer.religo includer.output))) +(alias (name runtest) (action (diff expected/key_hash.religo key_hash.output))) +(alias (name runtest) (action (diff expected/lambda.religo lambda.output))) +(alias (name runtest) (action (diff expected/lambda2.religo lambda2.output))) +(alias (name runtest) (action (diff expected/let_multiple.religo let_multiple.output))) +(alias (name runtest) (action (diff expected/letin.religo letin.output))) +(alias (name runtest) (action (diff expected/list.religo list.output))) +(alias (name runtest) (action (diff expected/loop.religo loop.output))) +(alias (name runtest) (action (diff expected/map.religo map.output))) +(alias (name runtest) (action (diff expected/match_bis.religo match_bis.output))) +(alias (name runtest) (action (diff expected/match.religo match.output))) +(alias (name runtest) (action (diff expected/michelson_pair_tree.religo michelson_pair_tree.output))) +(alias (name runtest) (action (diff expected/multiple-parameters.religo multiple-parameters.output))) +(alias (name runtest) (action (diff expected/multisig.religo multisig.output))) +(alias (name runtest) (action (diff expected/no_semicolon.religo no_semicolon.output))) +(alias (name runtest) (action (diff expected/pledge.religo pledge.output))) +(alias (name runtest) (action (diff expected/record.religo record.output))) +(alias (name runtest) (action (diff expected/recursion.religo recursion.output))) +(alias (name runtest) (action (diff expected/self_address.religo self_address.output))) +(alias (name runtest) (action (diff expected/set_arithmetic.religo set_arithmetic.output))) +(alias (name runtest) (action (diff expected/set_delegate.religo set_delegate.output))) +(alias (name runtest) (action (diff expected/single_record_item.religo single_record_item.output))) +(alias (name runtest) (action (diff expected/string_arithmetic.religo string_arithmetic.output))) +(alias (name runtest) (action (diff expected/super-counter.religo super-counter.output))) +(alias (name runtest) (action (diff expected/tuple_list.religo tuple_list.output))) +(alias (name runtest) (action (diff expected/tuple_param_destruct.religo tuple_param_destruct.output))) +(alias (name runtest) (action (diff expected/tuple_type.religo tuple_type.output))) +(alias (name runtest) (action (diff expected/tuple.religo tuple.output))) +(alias (name runtest) (action (diff expected/tuples_no_annotation.religo tuples_no_annotation.output))) +(alias (name runtest) (action (diff expected/tuples_sequences_functions.religo tuples_sequences_functions.output))) +(alias (name runtest) (action (diff expected/variant.religo variant.output))) +(alias (name runtest) (action (diff expected/website2.religo website2.output))) + +(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_address_format.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-shadowing.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst high-order.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst implicit_account.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst included.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst includer.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda2.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst let_multiple.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst letin.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst list.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst map.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match_bis.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multiple-parameters.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst no_semicolon.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst pledge.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst record.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst recursion.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_address.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_delegate.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst single_record_item.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst string_arithmetic.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst super-counter.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_list.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_param_destruct.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_type.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_no_annotation.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_sequences_functions.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.output -s reasonligo)))) diff --git a/src/test/contracts/expected/address.religo b/src/test/contracts/expected/address.religo new file mode 100644 index 000000000..4979af040 --- /dev/null +++ b/src/test/contracts/expected/address.religo @@ -0,0 +1,6 @@ +let main = + (p: key_hash): address => + { + let c: contract(unit) = Tezos.implicit_account(p); + Tezos.address(c) + }; diff --git a/src/test/contracts/expected/amount.religo b/src/test/contracts/expected/amount.religo new file mode 100644 index 000000000..447dac88b --- /dev/null +++ b/src/test/contracts/expected/amount.religo @@ -0,0 +1,8 @@ +let check_ = + (p: unit): int => + if(Tezos.amount + == 100000000mutez) { + 42 + } else { + 0 + }; diff --git a/src/test/contracts/expected/arithmetic.religo b/src/test/contracts/expected/arithmetic.religo new file mode 100644 index 000000000..08c3fcfee --- /dev/null +++ b/src/test/contracts/expected/arithmetic.religo @@ -0,0 +1,17 @@ +let mod_op = (n: int): nat => n mod 42; + +let plus_op = (n: int): int => n + 42; + +let minus_op = (n: int): int => n - 42; + +let times_op = (n: int): int => n * 42; + +let div_op = (n: int): int => n / 2; + +let neg_op = (n: int): int => -n; + +let foo = (n: int): int => n + 10; + +let neg_op_2 = (b: int): int => -foo(b); + +let ediv_op = (n: int): option((int, nat)) => ediv(n 2); diff --git a/src/test/contracts/expected/bad_address_format.religo b/src/test/contracts/expected/bad_address_format.religo new file mode 100644 index 000000000..ee7f13c0d --- /dev/null +++ b/src/test/contracts/expected/bad_address_format.religo @@ -0,0 +1,3 @@ +let main = + (parameter: int, storage: address) => + ([] : list(operation), "KT1badaddr" : address); diff --git a/src/test/contracts/expected/balance_constant.religo b/src/test/contracts/expected/balance_constant.religo new file mode 100644 index 000000000..03de78dc7 --- /dev/null +++ b/src/test/contracts/expected/balance_constant.religo @@ -0,0 +1,7 @@ +type storage = tez; + +let main2 = + (p: unit, s: storage) => + ([] : list(operation), Tezos.balance); + +let main = (x: (unit, storage)) => main2(x[0] x[1]); diff --git a/src/test/contracts/expected/bitwise_arithmetic.religo b/src/test/contracts/expected/bitwise_arithmetic.religo new file mode 100644 index 000000000..8ea3f8d0b --- /dev/null +++ b/src/test/contracts/expected/bitwise_arithmetic.religo @@ -0,0 +1,9 @@ +let or_op = (n: nat): nat => Bitwise.or(n 4n); + +let and_op = (n: nat): nat => Bitwise.and(n 7n); + +let xor_op = (n: nat): nat => Bitwise.xor(n 7n); + +let lsl_op = (n: nat): nat => Bitwise.shift_left(n 7n); + +let lsr_op = (n: nat): nat => Bitwise.shift_right(n 7n); diff --git a/src/test/contracts/expected/boolean_operators.religo b/src/test/contracts/expected/boolean_operators.religo new file mode 100644 index 000000000..0c7f1ae28 --- /dev/null +++ b/src/test/contracts/expected/boolean_operators.religo @@ -0,0 +1,9 @@ +let or_true = (b: bool): bool => b || true; + +let or_false = (b: bool): bool => b || false; + +let and_true = (b: bool): bool => b && true; + +let and_false = (b: bool): bool => b && false; + +let not_bool = (b: bool): bool => ! b; diff --git a/src/test/contracts/expected/bytes_arithmetic.religo b/src/test/contracts/expected/bytes_arithmetic.religo new file mode 100644 index 000000000..372e268f1 --- /dev/null +++ b/src/test/contracts/expected/bytes_arithmetic.religo @@ -0,0 +1,5 @@ +let concat_op = (s: bytes): bytes => Bytes.concat(s 0x7070); + +let slice_op = (s: bytes): bytes => Bytes.slice(1n 2n s); + +let hasherman = (s: bytes): bytes => Crypto.sha256(s); diff --git a/src/test/contracts/expected/bytes_unpack.religo b/src/test/contracts/expected/bytes_unpack.religo new file mode 100644 index 000000000..ab91a5324 --- /dev/null +++ b/src/test/contracts/expected/bytes_unpack.religo @@ -0,0 +1,20 @@ +let id_string = + (p: string): option(string) => + { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(string)) + }; + +let id_int = + (p: int): option(int) => + { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(int)) + }; + +let id_address = + (p: address): option(address) => + { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(address)) + }; diff --git a/src/test/contracts/expected/check_signature.religo b/src/test/contracts/expected/check_signature.religo new file mode 100644 index 000000000..e4468ed5d --- /dev/null +++ b/src/test/contracts/expected/check_signature.religo @@ -0,0 +1,6 @@ +let check_signature = + (param: (key, signature, bytes)): bool => + { + let (pk, signed, msg) = param; + Crypto.check(pk signed msg) + }; diff --git a/src/test/contracts/expected/closure.religo b/src/test/contracts/expected/closure.religo new file mode 100644 index 000000000..229a89e98 --- /dev/null +++ b/src/test/contracts/expected/closure.religo @@ -0,0 +1,8 @@ +let test = + (k: int): int => + { + let j: int = k + 5; + let close: (int) => int) = (i: int) => i + j; + let j: int = 20; + close(20) + }; diff --git a/src/test/contracts/expected/condition-shadowing.religo b/src/test/contracts/expected/condition-shadowing.religo new file mode 100644 index 000000000..a31570a05 --- /dev/null +++ b/src/test/contracts/expected/condition-shadowing.religo @@ -0,0 +1,15 @@ +let main = + (i: int) => + { + let result = 0; + if(i + == 2) { + + let result = 42; + result + } else { + + let result = 0; + result + } + }; diff --git a/src/test/contracts/expected/condition.religo b/src/test/contracts/expected/condition.religo new file mode 100644 index 000000000..5fdc354e3 --- /dev/null +++ b/src/test/contracts/expected/condition.religo @@ -0,0 +1,8 @@ +let main = + (i: int) => + if(i + == 2) { + 42 + } else { + 0 + }; diff --git a/src/test/contracts/expected/counter.religo b/src/test/contracts/expected/counter.religo new file mode 100644 index 000000000..14af3847f --- /dev/null +++ b/src/test/contracts/expected/counter.religo @@ -0,0 +1,5 @@ +type storage = int; + +let main = + ((p, s): (int, storage)): (list(operation), storage) => + ([] : list(operation), p + s); diff --git a/src/test/contracts/expected/crypto.religo b/src/test/contracts/expected/crypto.religo new file mode 100644 index 000000000..4afc4a41c --- /dev/null +++ b/src/test/contracts/expected/crypto.religo @@ -0,0 +1,3 @@ +let hasherman512 = (s: bytes) => Crypto.sha512(s); + +let hasherman_blake = (s: bytes) => Crypto.blake2b(s); diff --git a/src/test/contracts/expected/empty_case.religo b/src/test/contracts/expected/empty_case.religo new file mode 100644 index 000000000..ebf6c24d6 --- /dev/null +++ b/src/test/contracts/expected/empty_case.religo @@ -0,0 +1,8 @@ +type foo = Bar(int) | Baz; + +let main = + (f: foo): int => + switch(f) { + | Bari => i + | Baz => (-1) + }; diff --git a/src/test/contracts/expected/eq_bool.religo b/src/test/contracts/expected/eq_bool.religo new file mode 100644 index 000000000..ec3bb0d3a --- /dev/null +++ b/src/test/contracts/expected/eq_bool.religo @@ -0,0 +1,8 @@ +let main = + ((a, b): (bool, bool)) => + if(a + == b) { + 999 + } else { + 1 + }; diff --git a/src/test/contracts/expected/failwith.religo b/src/test/contracts/expected/failwith.religo new file mode 100644 index 000000000..5e9680040 --- /dev/null +++ b/src/test/contracts/expected/failwith.religo @@ -0,0 +1,7 @@ +type storage = unit; + +let main = + (p: unit, storage) => + if(true) { + failwith("This contract always fails") + }; diff --git a/src/test/contracts/expected/function-shared.religo b/src/test/contracts/expected/function-shared.religo new file mode 100644 index 000000000..ab4fcc3b2 --- /dev/null +++ b/src/test/contracts/expected/function-shared.religo @@ -0,0 +1,5 @@ +let foo = (i: int): int => i + 20; + +let bar = (i: int): int => i + 50; + +let foobar = (i: int): int => foo(i) + bar(i); diff --git a/src/test/contracts/expected/high-order.religo b/src/test/contracts/expected/high-order.religo new file mode 100644 index 000000000..68fa5e33a --- /dev/null +++ b/src/test/contracts/expected/high-order.religo @@ -0,0 +1,53 @@ +let foobar = + (i: int): int => + { + let foo: int) => int = (i: int) => i; + let bar: (int) => int) => int) = + (f: int) => int) => f(i); + bar(foo) + }; + +let higher2 = + (i: int, f: int) => int): int => + { + let ii: int = f(i); + ii + }; + +let foobar2 = + (i: int): int => + { + let foo2: int) => int = (i: int) => i; + higher2(i foo2) + }; + +let a: int = 0; + +let foobar3 = + (i: int): int => + { + let foo2: int) => int = (i: int) => a + i; + higher2(i foo2) + }; + +let f = (i: int): int => i; + +let g = (i: int): int => f(i); + +let foobar4 = (i: int): int => g(g(i)); + +let higher3 = + (i: int, f: int) => int, g: int) => int): int => + { + let ii: int = f(g(i)); + ii + }; + +let foobar5 = + (i: int): int => + { + let a: int = 0; + let foo: int) => int = (i: int) => a + i; + let goo: int) => int = (i: int) => foo(i); + higher3(i foo goo) + }; diff --git a/src/test/contracts/expected/implicit_account.religo b/src/test/contracts/expected/implicit_account.religo new file mode 100644 index 000000000..8bfc216f8 --- /dev/null +++ b/src/test/contracts/expected/implicit_account.religo @@ -0,0 +1,3 @@ +let main = + (kh: key_hash): contract(unit) => + Tezos.implicit_account(kh); diff --git a/src/test/contracts/expected/included.religo b/src/test/contracts/expected/included.religo new file mode 100644 index 000000000..7ef8a7b77 --- /dev/null +++ b/src/test/contracts/expected/included.religo @@ -0,0 +1 @@ +let foo: int = 144; diff --git a/src/test/contracts/expected/includer.religo b/src/test/contracts/expected/includer.religo new file mode 100644 index 000000000..cd520f441 --- /dev/null +++ b/src/test/contracts/expected/includer.religo @@ -0,0 +1,3 @@ +let foo: int = 144; + +let bar: int = foo; diff --git a/src/test/contracts/expected/key_hash.religo b/src/test/contracts/expected/key_hash.religo new file mode 100644 index 000000000..bac557809 --- /dev/null +++ b/src/test/contracts/expected/key_hash.religo @@ -0,0 +1,8 @@ +let check_hash_key = + (kh1_k2: (key_hash, key)): (bool, key_hash) => + { + let (kh1, k2) = kh1_k2; + let kh2: key_hash = Crypto.hash_key(k2); + ((kh1 + == kh2), kh2) + }; diff --git a/src/test/contracts/expected/lambda.religo b/src/test/contracts/expected/lambda.religo new file mode 100644 index 000000000..dfa575e18 --- /dev/null +++ b/src/test/contracts/expected/lambda.religo @@ -0,0 +1,5 @@ +type storage = unit; + +let main = + ((p, s): (unit, storage)): unit => + ((useless: unit) => ())(()); diff --git a/src/test/contracts/expected/lambda2.religo b/src/test/contracts/expected/lambda2.religo new file mode 100644 index 000000000..9b0b129cf --- /dev/null +++ b/src/test/contracts/expected/lambda2.religo @@ -0,0 +1,5 @@ +type storage = unit; + +let main = + ((a, s): (unit, storage)): unit => + ((f: unit) => unit) => f(()))((useless: unit) => unit); diff --git a/src/test/contracts/expected/let_multiple.religo b/src/test/contracts/expected/let_multiple.religo new file mode 100644 index 000000000..449a434dc --- /dev/null +++ b/src/test/contracts/expected/let_multiple.religo @@ -0,0 +1,13 @@ +let (x: int, y: int) = (1, 2); + +let main = (p: unit): int => x + y; + +let (x: int, y: int) = (3, 3); + +let main_paren = (p: unit): int => x + y; + +let foobar: (int, int) = (23, 42); + +let (foo: int, bar: int) = foobar; + +let non_tuple_rhs = (p: unit): int => foo + bar; diff --git a/src/test/contracts/expected/letin.religo b/src/test/contracts/expected/letin.religo new file mode 100644 index 000000000..2e2c47239 --- /dev/null +++ b/src/test/contracts/expected/letin.religo @@ -0,0 +1,39 @@ +type storage = (int, int); + +let main = + (n: (int, storage)): (list(operation), storage) => + { + let x: (int, int) = + { + let x: int = 7; + (x + n[0], n[1.0] + n[1.1]) + }; + ([] : list(operation), x) + }; + +let f0 = (a: string) => true; + +let f1 = (a: string) => true; + +let f2 = (a: string) => true; + +let letin_nesting = + (_: unit) => + { + let s = "test"; + let p0 = f0(s); + assert(p0); + let p1 = f1(s); + assert(p1); + let p2 = f2(s); + assert(p2); + s + }; + +let letin_nesting2 = + (x: int) => + { + let y = 2; + let z = 3; + x + y + z + }; diff --git a/src/test/contracts/expected/list.religo b/src/test/contracts/expected/list.religo new file mode 100644 index 000000000..5985bf750 --- /dev/null +++ b/src/test/contracts/expected/list.religo @@ -0,0 +1,42 @@ +type storage = (int, list(int)); + +type parameter = list(int); + +type return = (list(operation), storage); + +let x: list(int) = []; + +let y: list(int) = [3, 4, 5]; + +let z: list(int) = [2, ...y]; + +let main = + ((action, s): (parameter, storage)): return => + { + let storage = + switch(action) { + | [] => s + | [hd, ...tl] => (s[0] + hd, tl) + }; + ([] : list(operation), storage) + }; + +let size_ = (s: list(int)): nat => List.length(s); + +let fold_op = + (s: list(int)): int => + { + let aggregate = (t: (int, int)) => t[0] + t[1]; + List.fold(aggregate s 10) + }; + +let map_op = + (s: list(int)): list(int) => + List.map((cur: int) => cur + 1 s); + +let iter_op = + (s: list(int)): unit => + { + let do_nothing = (useless: int) => unit; + List.iter(do_nothing s) + }; diff --git a/src/test/contracts/expected/loop.religo b/src/test/contracts/expected/loop.religo new file mode 100644 index 000000000..189373914 --- /dev/null +++ b/src/test/contracts/expected/loop.religo @@ -0,0 +1,51 @@ +let rec aux_simple = + (i: int): int => + if(i + < 100) { + aux_simple(i + 1) + } else { + i + }; + +let counter_simple = (n: int): int => aux_simple(n); + +type sum_aggregator = {counter: int, sum: int }; + +let counter = + (n: int): int => + { + let initial: sum_aggregator = {counter = 0, sum = 0 }; + let rec aggregate = + (prev: sum_aggregator): int => + if(prev[counter] + <= n) { + + + aggregate({ + counter = prev[counter] + 1, + sum = prev[counter] + prev[sum] + }) + } else { + prev[sum] + }; + aggregate(initial) + }; + +let rec aux_nest = + (prev: sum_aggregator): sum_aggregator => + if(prev[counter] + < 100) { + + let sum: int = prev[sum] + aux_simple(prev[counter]); + aux_nest({counter = prev[counter] + 1, sum = sum }) + } else { + ({counter = prev[counter], sum = prev[sum] }) + }; + +let counter_nest = + (n: int): int => + { + let initial: sum_aggregator = {counter = 0, sum = 0 }; + let out: sum_aggregator = aux_nest(initial); + out[sum] + }; diff --git a/src/test/contracts/expected/map.religo b/src/test/contracts/expected/map.religo new file mode 100644 index 000000000..8dd3a793a --- /dev/null +++ b/src/test/contracts/expected/map.religo @@ -0,0 +1,71 @@ +type foobar = map(int, int); + +let empty_map: foobar = Map.empty; + +let map1: foobar = + + Map.literal([(144, 23), + (51, 23), + (42, 23), + (120, 23), + (421, 23)]); + +let map2: foobar = Map.literal([(23, 0), (42, 0)]); + +let set_ = + (n: int, m: foobar): foobar => Map.update(23 Some (n) m); + +let add = (n: int, m: foobar): foobar => Map.add(23 n m); + +let rm = (m: foobar): foobar => Map.remove(42 m); + +let patch_ = + (m: foobar): foobar => + Map.literal([(0, 5), (1, 6), (2, 7)]); + +let patch_empty = + (m: foobar): foobar => + Map.literal([(0, 0), (1, 1), (2, 2)]); + +let patch_deep = + (m: (foobar, nat)): (foobar, nat) => + (Map.literal([(0, 0), (1, 9), (2, 2)]), 10n); + +let size_ = (m: foobar): nat => Map.size(m); + +let get = (m: foobar): option(int) => Map.find_opt(42 m); + +let get_ = (m: foobar): option(int) => Map.find_opt(42 m); + +let mem = (km: (int, foobar)): bool => Map.mem(km[0] km[1]); + +let iter_op = + (m: foobar): unit => + { + let assert_eq = (i: int, j: int) => assert(i == j); + Map.iter(assert_eq m) + }; + +let map_op = + (m: foobar): foobar => + { + let increment = (z: int, j: int) => j + 1; + Map.map(increment m) + }; + +let fold_op = + (m: foobar): foobar => + { + let aggregate = + (i: int, j: (int, int)) => i + j[0] + j[1]; + Map.fold(aggregate m 10) + }; + +let deep_op = + (m: foobar): foobar => + { + let coco = (0, m); + let coco = (0, Map.remove(42 coco[1])); + let coco = (0, Map.update(32 Some (16) coco[1])); + coco[1] + }; diff --git a/src/test/contracts/expected/match.religo b/src/test/contracts/expected/match.religo new file mode 100644 index 000000000..7dd01b0f5 --- /dev/null +++ b/src/test/contracts/expected/match.religo @@ -0,0 +1,17 @@ +type storage = int; + +type parameter = Add(int) | Sub(int); + +type return = (list(operation), storage); + +let main = + ((action, store): (parameter, storage)) => + { + let store = + store + + (switch(action) { + | Addn => n + | Subn => -n + }); + (([] : list(operation)), store) + }; diff --git a/src/test/contracts/expected/match_bis.religo b/src/test/contracts/expected/match_bis.religo new file mode 100644 index 000000000..59c76e0ec --- /dev/null +++ b/src/test/contracts/expected/match_bis.religo @@ -0,0 +1,18 @@ +type storage = int; + +type parameter = Increment(int) | Decrement(int); + +let add = (a: int, b: int) => a + b; + +let sub = (a: int, b: int) => a - b; + +let main = + ((action, store): (parameter, storage)) => + { + let store = + switch(action) { + | Incrementn => add(store n) + | Decrementn => sub(store n) + }; + (([] : list(operation)), store) + }; diff --git a/src/test/contracts/expected/michelson_pair_tree.religo b/src/test/contracts/expected/michelson_pair_tree.religo new file mode 100644 index 000000000..20e64dd2f --- /dev/null +++ b/src/test/contracts/expected/michelson_pair_tree.religo @@ -0,0 +1,13 @@ +type inner_storage = michelson_pair(int, "one", nat, "two"); + +type storage = michelson_pair + (int, "three", inner_storage, "four"); + +type return = (list(operation), storage); + +let main = + ((action, store): (unit, storage)): return => + { + let foo = (3, (1, 2n)); + (([] : list(operation)), (foo : storage)) + }; diff --git a/src/test/contracts/expected/multiple-parameters.religo b/src/test/contracts/expected/multiple-parameters.religo new file mode 100644 index 000000000..eac69a334 --- /dev/null +++ b/src/test/contracts/expected/multiple-parameters.religo @@ -0,0 +1,6 @@ +let abcde_curried = + (a: int, b: int, c: int, d: int, e: int): int => c + e + 3; + +let abcde = + (x: (int, int, int, int, int)): int => + abcde_curried(x[0] x[1] x[2] x[3] x[4]); diff --git a/src/test/contracts/expected/multisig.religo b/src/test/contracts/expected/multisig.religo new file mode 100644 index 000000000..1bb6ed29f --- /dev/null +++ b/src/test/contracts/expected/multisig.religo @@ -0,0 +1,97 @@ +type counter = nat; + +type threshold = nat; + +type authorized_keys = list(key); + +type id = string; + +type storage = { + id: id, + counter: counter, + threshold: threshold, + auth: authorized_keys +}; + +type message = unit) => list(operation); + +type dummy = (key_hash, signature); + +type signatures = list(dummy); + +type check_message_pt = { + counter: counter, + message: message, + signatures: signatures +}; + +type return = (list(operation), storage); + +type parameter = CheckMessage(check_message_pt); + +let check_message = + ((param, s): (check_message_pt, storage)): return => + { + let message: message = param[message]; + let s = + if(param[counter] + != s[counter]) { + (failwith("Counters does not match") : storage) + } else { + + let packed_payload: bytes = + + Bytes.pack((message, param[counter], s[id], + chain_id)); + let valid: nat = 0n; + let keys: authorized_keys = s[auth]; + let aux = + ((vk, pkh_sig): + ((nat, authorized_keys), (key_hash, signature))) + : + (nat, authorized_keys) => + { + let (valid, keys) = vk; + switch(keys) { + | [] => vk + | [key, ...keys] => + if(pkh_sig[0] + == Crypto.hash_key(key)) { + + let valid = + if( + Crypto.check(key + pkh_sig[1] + packed_payload)) { + valid + 1n + } else { + + (failwith("Invalid signature") + : nat) + }; + (valid, keys) + } else { + (valid, keys) + } + } + }; + let (valid, keys) = + List.fold(aux param[signatures] (valid, keys)); + if(valid + < s[threshold]) { + + ( + failwith("Not enough signatures passed the check") + : storage) + } else { + {...s, counter: s[counter] + 1n} + } + }; + (message(unit), s) + }; + +let main = + ((action, store): (parameter, storage)): return => + switch(action) { + | CheckMessagep => check_message((p, store)) + }; diff --git a/src/test/contracts/expected/no_semicolon.religo b/src/test/contracts/expected/no_semicolon.religo new file mode 100644 index 000000000..82db545df --- /dev/null +++ b/src/test/contracts/expected/no_semicolon.religo @@ -0,0 +1,18 @@ +type f = int; + +let a = + (b: f) => + { + if(b + == 2) { + 3 + } else { + 4 + } + }; + +let c = + (c: f) => + { + 3 + }; diff --git a/src/test/contracts/expected/pledge.religo b/src/test/contracts/expected/pledge.religo new file mode 100644 index 000000000..3d7fe2f46 --- /dev/null +++ b/src/test/contracts/expected/pledge.religo @@ -0,0 +1,35 @@ +type storage = address; + +type parameter = Donate(unit) +| Distribute((unit) => list(operation))); + +let donate = + ((p, s): (unit, storage)): (list(operation), storage) => + { + (([] : list(operation)), s) + }; + +let distribute = + ((p, s): (unit) => list(operation), storage)) + : + (list(operation), storage) => + { + if(Tezos.sender + == s) { + (p(()), s) + } else { + + ( + failwith("You're not the oracle for this distribution.") + : (list(operation), storage)) + } + }; + +let main = + ((p, s): (parameter, storage)): (list(operation), storage) => + { + switch(p) { + | Donate => donate(((), s)) + | Distributemsg => distribute((msg, s)) + } + }; diff --git a/src/test/contracts/expected/record.religo b/src/test/contracts/expected/record.religo new file mode 100644 index 000000000..8520955ee --- /dev/null +++ b/src/test/contracts/expected/record.religo @@ -0,0 +1,36 @@ +type foobar = {foo: int, bar: int }; + +let fb: foobar = {foo = 0, bar = 0 }; + +type abc = {a: int, b: int, c: int }; + +let abc: abc = {a = 42, b = 142, c = 242 }; + +let a: int = abc[a]; + +let b: int = abc[b]; + +let c: int = abc[c]; + +let projection = (r: foobar): int => r[foo] + r[bar]; + +let modify = + (r: foobar): foobar => {foo = 256, bar = r[bar] }; + +let modify_abc = (r: abc): abc => {...r, b: 2048, c: 42}; + +type big_record = {a: int, b: int, c: int, d: int, e: int }; + +let br: big_record = + { + a = 23, + b = 23, + c = 23, + d = 23, + e = 23 + }; + +type double_record = {inner: abc }; + +let modify_inner = + (r: double_record): double_record => {...r, inner.b: 2048}; diff --git a/src/test/contracts/expected/recursion.religo b/src/test/contracts/expected/recursion.religo new file mode 100644 index 000000000..5551c9a6c --- /dev/null +++ b/src/test/contracts/expected/recursion.religo @@ -0,0 +1,17 @@ +let rec sum = + ((n, acc): (int, int)): int => + if(n + < 1) { + acc + } else { + sum((n - 1, acc + n)) + }; + +let rec fibo = + ((n, n_1, n_0): (int, int, int)): int => + if(n + < 2) { + n_1 + } else { + fibo((n - 1, n_1 + n_0, n_1)) + }; diff --git a/src/test/contracts/expected/self_address.religo b/src/test/contracts/expected/self_address.religo new file mode 100644 index 000000000..db48e28df --- /dev/null +++ b/src/test/contracts/expected/self_address.religo @@ -0,0 +1 @@ +let main = (p: unit): address => Tezos.self_address; diff --git a/src/test/contracts/expected/set_arithmetic.religo b/src/test/contracts/expected/set_arithmetic.religo new file mode 100644 index 000000000..62cf2c971 --- /dev/null +++ b/src/test/contracts/expected/set_arithmetic.religo @@ -0,0 +1,17 @@ +let literal_op = + (p: unit): set(string) => + Set.literal(["foo", "bar", "foobar"]); + +let add_op = + (s: set(string)): set(string) => Set.add("foobar" s); + +let remove_op = + (s: set(string)): set(string) => Set.remove("foobar" s); + +let remove_deep = + (s: (set(string), nat)): set(string) => + Set.remove("foobar" s[0]); + +let mem_op = (s: set(string)): bool => Set.mem("foobar" s); + +let size_op = (s: set(string)): nat => Set.cardinal(s); diff --git a/src/test/contracts/expected/set_delegate.religo b/src/test/contracts/expected/set_delegate.religo new file mode 100644 index 000000000..278464cf6 --- /dev/null +++ b/src/test/contracts/expected/set_delegate.religo @@ -0,0 +1,6 @@ +let main = + (p: key_hash): list(operation) => + { + let unused: operation = (Tezos.set_delegate(Some (p))); + ([] : list(operation)) + }; diff --git a/src/test/contracts/expected/single_record_item.religo b/src/test/contracts/expected/single_record_item.religo new file mode 100644 index 000000000..d21e8d2a8 --- /dev/null +++ b/src/test/contracts/expected/single_record_item.religo @@ -0,0 +1,3 @@ +type p = {x: int }; + +let o = (p: int): p => {x = p }; diff --git a/src/test/contracts/expected/string_arithmetic.religo b/src/test/contracts/expected/string_arithmetic.religo new file mode 100644 index 000000000..741cf6c2f --- /dev/null +++ b/src/test/contracts/expected/string_arithmetic.religo @@ -0,0 +1,5 @@ +let size_op = (s: string): nat => String.length(s); + +let slice_op = (s: string): string => String.sub(1n 2n s); + +let concat_syntax = (s: string) => s ++ "test_literal"; diff --git a/src/test/contracts/expected/super-counter.religo b/src/test/contracts/expected/super-counter.religo new file mode 100644 index 000000000..de213ce92 --- /dev/null +++ b/src/test/contracts/expected/super-counter.religo @@ -0,0 +1,16 @@ +type parameter = Increment(int) | Decrement(int); + +type storage = int; + +type return = (list(operation), storage); + +let main = + ((action, store): (parameter, storage)): return => + { + let store = + switch(action) { + | Incrementn => store + n + | Decrementn => store - n + }; + ([] : list(operation), store) + }; diff --git a/src/test/contracts/expected/tuple.religo b/src/test/contracts/expected/tuple.religo new file mode 100644 index 000000000..d9c25255e --- /dev/null +++ b/src/test/contracts/expected/tuple.religo @@ -0,0 +1,13 @@ +type abc = (int, int, int); + +let projection_abc = (tpl: abc): int => tpl[1]; + +type foobar = (int, int); + +let fb: foobar = (0, 0); + +let projection = (tpl: foobar): int => tpl[0] + tpl[1]; + +type big_tuple = (int, int, int, int, int); + +let br: big_tuple = (23, 23, 23, 23, 23); diff --git a/src/test/contracts/expected/tuple_list.religo b/src/test/contracts/expected/tuple_list.religo new file mode 100644 index 000000000..534159047 --- /dev/null +++ b/src/test/contracts/expected/tuple_list.religo @@ -0,0 +1,3 @@ +type z = list((int, int)); + +let o: z = [(2, 4), (4, 6)]; diff --git a/src/test/contracts/expected/tuple_param_destruct.religo b/src/test/contracts/expected/tuple_param_destruct.religo new file mode 100644 index 000000000..e09319247 --- /dev/null +++ b/src/test/contracts/expected/tuple_param_destruct.religo @@ -0,0 +1,4 @@ +let sum = ((result, i): (int, int)): int => result - i; + +let parentheses = + ((result, i): (((int, int),),)): int => result - i; diff --git a/src/test/contracts/expected/tuple_type.religo b/src/test/contracts/expected/tuple_type.religo new file mode 100644 index 000000000..29d02a01e --- /dev/null +++ b/src/test/contracts/expected/tuple_type.religo @@ -0,0 +1,48 @@ +type fun_type = (int, int) => int; + +let arguments = + (b: int, c: int) => + { + b + c + }; + +let arguments_type_def = (b: fun_type) => b(5 3); + +let arguments_test = + (_: int) => arguments_type_def(arguments); + +type tuple_type = (int, int)) => int; + +let tuple = + ((a, b): (int, int)) => + { + a + b + }; + +let tuple_type_def = (b: tuple_type) => b((5, 3)); + +let tuple_test = (_: int) => tuple_type_def(tuple); + +let arguments_inline = + (b: int, c: int) => + { + b + c + }; + +let arguments_type_def_inline = + (b: (int, int) => int) => b(5 3); + +let arguments_test_inline = + (_: int) => arguments_type_def_inline(arguments_inline); + +let tuple_inline = + ((a, b): (int, int)) => + { + a + b + }; + +let tuple_type_def_inline = + (b: (int, int)) => int) => b((5, 3)); + +let tuple_test_inline = + (_: int) => tuple_type_def_inline(tuple_inline); diff --git a/src/test/contracts/expected/tuples_no_annotation.religo b/src/test/contracts/expected/tuples_no_annotation.religo new file mode 100644 index 000000000..7cd18c185 --- /dev/null +++ b/src/test/contracts/expected/tuples_no_annotation.religo @@ -0,0 +1,9 @@ +type storage = (int, string, nat, bool); + +type parameter = int; + +let main = + ((p, storage): (parameter, storage)) => + { + ([] : list(operation), (2, "2", 2n, false)) + }; diff --git a/src/test/contracts/expected/tuples_sequences_functions.religo b/src/test/contracts/expected/tuples_sequences_functions.religo new file mode 100644 index 000000000..edb34456b --- /dev/null +++ b/src/test/contracts/expected/tuples_sequences_functions.religo @@ -0,0 +1,65 @@ +let a = 1; + +let b = 1n; + +let c = 2mutez; + +let d = 1n + 2n; + +let e = 1mutez + 3mutez; + +let f = (a, c); + +let g = (a + 1, c); + +let h = ("a" ++ "2", d); + +let i = (a: int, b: int) => a + b; + +let j = (a: int, b: int) => a - b; + +let m = + { + let z = 3; + z + }; + +let n = (a: int): int => a + 1; + +let o = (a: int): int => a + 1; + +let n = (a: int, b: int): int => a + 1; + +let o = (a: int, b: int): int => a + 1; + +let p = + { + { + 3 + } + }; + +let q = + { + f = 3, + g = 6, + h = {i = "bla", j = 1 + 2, k = {l = 1, z = 2 } } + }; + +let s = + { + let a = 2; + { + z = a, + a = a + } + }; + +let t = (((((((2))))))); + +let u = + if(true) { + 1 + } else { + 2 + }; diff --git a/src/test/contracts/expected/variant.religo b/src/test/contracts/expected/variant.religo new file mode 100644 index 000000000..7846818c7 --- /dev/null +++ b/src/test/contracts/expected/variant.religo @@ -0,0 +1,7 @@ +type foobar = Foo(int) | Bar(bool) | Kee(nat); + +let foo: foobar = Foo (42); + +let bar: foobar = Bar (true); + +let kee: foobar = Kee (23n); diff --git a/src/test/contracts/expected/website2.religo b/src/test/contracts/expected/website2.religo new file mode 100644 index 000000000..852cf446b --- /dev/null +++ b/src/test/contracts/expected/website2.religo @@ -0,0 +1,18 @@ +type storage = int; + +type parameter = Increment(int) | Decrement(int); + +let add = ((a, b): (int, int)): int => a + b; + +let sub = ((a, b): (int, int)): int => a - b; + +let main = + ((p, storage): (parameter, storage)) => + { + let storage = + switch(p) { + | Incrementn => add((storage, n)) + | Decrementn => sub((storage, n)) + }; + ([] : list(operation), storage) + }; diff --git a/src/test/contracts/super-counter.religo b/src/test/contracts/super-counter.religo index 53eba61af..7245f15fc 100644 --- a/src/test/contracts/super-counter.religo +++ b/src/test/contracts/super-counter.religo @@ -6,7 +6,7 @@ type storage = int; type return = (list (operation), storage); -let main = ((action, store): (parameter, storage) : return => { +let main = ((action, store): (parameter, storage)) : return => { let store = switch (action) { | Increment (n) => store + n diff --git a/src/test/integration_tests.ml b/src/test/integration_tests.ml index bbe645b47..4ee2e841c 100644 --- a/src/test/integration_tests.ml +++ b/src/test/integration_tests.ml @@ -2492,6 +2492,7 @@ let main = test_suite "Integration (End to End)" [ test "counter contract" counter_contract ; test "super counter contract" super_counter_contract ; test "super counter contract" super_counter_contract_mligo ; + test "super counter contract (reasonligo)" super_counter_contract_religo ; test "dispatch counter contract" dispatch_counter_contract ; test "basic (mligo)" basic_mligo ; test "basic (religo)" basic_religo ; From c30ade3b85ecb9886ff984a8976acaed496fa4ff Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Thu, 4 Jun 2020 09:54:25 +0200 Subject: [PATCH 25/67] Contracts now compile. --- src/passes/1-parser/reasonligo/Pretty.ml | 24 +- src/test/contracts/dune | 218 +++++++++--------- src/test/contracts/expected/address.religo | 2 +- src/test/contracts/expected/amount.religo | 2 +- src/test/contracts/expected/arithmetic.religo | 18 +- .../expected/bad_address_format.religo | 2 +- .../expected/balance_constant.religo | 4 +- .../expected/bitwise_arithmetic.religo | 10 +- .../expected/boolean_operators.religo | 10 +- .../expected/bytes_arithmetic.religo | 7 +- .../contracts/expected/bytes_unpack.religo | 6 +- .../contracts/expected/check_signature.religo | 4 +- src/test/contracts/expected/closure.religo | 4 +- .../expected/condition-shadowing.religo | 2 +- src/test/contracts/expected/condition.religo | 2 +- src/test/contracts/expected/counter.religo | 2 +- src/test/contracts/expected/crypto.religo | 4 +- src/test/contracts/expected/empty_case.religo | 4 +- src/test/contracts/expected/eq_bool.religo | 2 +- src/test/contracts/expected/failwith.religo | 2 +- .../contracts/expected/function-shared.religo | 6 +- src/test/contracts/expected/high-order.religo | 38 +-- .../expected/implicit_account.religo | 2 +- src/test/contracts/expected/key_hash.religo | 2 +- src/test/contracts/expected/lambda.religo | 4 +- src/test/contracts/expected/lambda2.religo | 6 +- .../contracts/expected/let_multiple.religo | 12 +- src/test/contracts/expected/letin.religo | 14 +- src/test/contracts/expected/list.religo | 20 +- src/test/contracts/expected/loop.religo | 34 +-- src/test/contracts/expected/map.religo | 47 ++-- src/test/contracts/expected/match.religo | 6 +- src/test/contracts/expected/match_bis.religo | 10 +- .../expected/michelson_pair_tree.religo | 2 +- .../expected/multiple-parameters.religo | 7 +- src/test/contracts/expected/multisig.religo | 38 +-- .../contracts/expected/no_semicolon.religo | 4 +- src/test/contracts/expected/pledge.religo | 10 +- src/test/contracts/expected/record.religo | 29 +-- src/test/contracts/expected/recursion.religo | 4 +- .../contracts/expected/self_address.religo | 2 +- .../contracts/expected/set_arithmetic.religo | 15 +- .../contracts/expected/set_delegate.religo | 2 +- .../expected/single_record_item.religo | 2 +- .../expected/string_arithmetic.religo | 7 +- .../contracts/expected/super-counter.religo | 6 +- src/test/contracts/expected/tuple.religo | 4 +- .../expected/tuple_param_destruct.religo | 4 +- src/test/contracts/expected/tuple_type.religo | 26 +-- .../expected/tuples_no_annotation.religo | 2 +- .../tuples_sequences_functions.religo | 22 +- src/test/contracts/expected/website2.religo | 10 +- 52 files changed, 368 insertions(+), 358 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml index e6902eaee..ab0a3402d 100644 --- a/src/passes/1-parser/reasonligo/Pretty.ml +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -98,7 +98,7 @@ and pp_bytes {value; _} = string ("0x" ^ Hex.show (snd value)) and pp_ppar {value; _} = - nest 1 (pp_pattern value.inside) + string "(" ^^ nest 1 (pp_pattern value.inside) ^^ string ")" and pp_plist = function PListComp cmp -> pp_list_comp cmp @@ -286,7 +286,7 @@ and pp_record_expr ne_inj = pp_ne_injection pp_field_assign ne_inj and pp_field_assign {value; _} = let {field_name; field_expr; _} = value in - prefix 2 1 (pp_ident field_name ^^ string " =") (pp_expr field_expr) + prefix 2 1 (pp_ident field_name ^^ string ":") (pp_expr field_expr) and pp_ne_injection : 'a.('a -> document) -> 'a ne_injection reg -> document = @@ -313,15 +313,15 @@ and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = separate_map (break 1) printer (head::tail) and pp_projection {value; _} = - let {struct_name; field_path; _} = value in + let {struct_name; field_path; _ } = value in let fields = Utils.nsepseq_to_list field_path - and sep = string "." ^^ break 0 in + and sep = break 0 in let fields = separate_map sep pp_selection fields in - group (pp_ident struct_name ^^ break 0 ^^ string "[" ^^ fields ^^ string "]") + group (pp_ident struct_name ^^ break 0 ^^ fields) and pp_selection = function - FieldName v -> string v.value -| Component cmp -> cmp.value |> snd |> Z.to_string |> string + FieldName v -> string "." ^^ string v.value +| Component cmp -> string "[" ^^ (cmp.value |> snd |> Z.to_string |> string) ^^ string "]" and pp_update {value; _} = let {record; updates; _} = value in @@ -343,7 +343,10 @@ and pp_path = function and pp_call_expr {value; _} = let lambda, arguments = value in - let arguments = string "(" ^^ pp_nseq pp_expr arguments ^^ string ")" in + let arguments = Utils.nseq_to_list arguments in + let arguments = string "(" ^^ group (separate_map (string "," ^^ break 0 ^^ string " ") pp_expr arguments) ^^ string ")" in + + (* let arguments = string "(" ^^ pp_nseq pp_expr arguments ^^ string ")" in *) group (break 0 ^^ pp_expr lambda ^^ nest 2 arguments) and pp_tuple_expr {value; _} = @@ -412,7 +415,8 @@ and pp_cartesian {value; _} = | [e] -> group (break 1 ^^ pp_type_expr e) | e::items -> group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items - in string "(" ^^ pp_type_expr head ^^ string "," ^^ app (List.map snd tail) ^^ string ")" + in + string "(" ^^ pp_type_expr head ^^ (if tail <> [] then string "," else empty) ^^ app (List.map snd tail) ^^ string ")" and pp_variants {value; _} = let head, tail = value in @@ -473,7 +477,7 @@ and pp_fun_type {value; _} = let lhs, _, rhs = value in match rhs with | TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf - | _ -> group (pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) + | _ -> group (string "(" ^^ pp_type_expr lhs ^^ string " =>" ^/^ pp_type_expr rhs ^^ string ")") (* group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) *) diff --git a/src/test/contracts/dune b/src/test/contracts/dune index b1cec5a5b..748a48f1a 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -1,60 +1,60 @@ -(rule (targets address.output) (action (with-stdout-to address.output (run ligo "pretty-print" "address.religo")))) -(rule (targets amount.output) (action (with-stdout-to amount.output (run ligo "pretty-print" "amount.religo")))) -(rule (targets arithmetic.output) (action (with-stdout-to arithmetic.output (run ligo "pretty-print" "arithmetic.religo")))) -(rule (targets bad_address_format.output) (action (with-stdout-to bad_address_format.output (run ligo "pretty-print" "bad_address_format.religo")))) -(rule (targets balance_constant.output) (action (with-stdout-to balance_constant.output (run ligo "pretty-print" "balance_constant.religo")))) -(rule (targets bitwise_arithmetic.output) (action (with-stdout-to bitwise_arithmetic.output (run ligo "pretty-print" "bitwise_arithmetic.religo")))) -(rule (targets boolean_operators.output) (action (with-stdout-to boolean_operators.output (run ligo "pretty-print" "boolean_operators.religo")))) -(rule (targets bytes_arithmetic.output) (action (with-stdout-to bytes_arithmetic.output (run ligo "pretty-print" "bytes_arithmetic.religo")))) -(rule (targets bytes_unpack.output) (action (with-stdout-to bytes_unpack.output (run ligo "pretty-print" "bytes_unpack.religo")))) -(rule (targets check_signature.output) (action (with-stdout-to check_signature.output (run ligo "pretty-print" "check_signature.religo")))) -(rule (targets closure.output) (action (with-stdout-to closure.output (run ligo "pretty-print" "closure.religo")))) -(rule (targets condition-shadowing.output) (action (with-stdout-to condition-shadowing.output (run ligo "pretty-print" "condition-shadowing.religo")))) -(rule (targets condition.output) (action (with-stdout-to condition.output (run ligo "pretty-print" "condition.religo")))) -(rule (targets counter.output) (action (with-stdout-to counter.output (run ligo "pretty-print" "counter.religo")))) -(rule (targets crypto.output) (action (with-stdout-to crypto.output (run ligo "pretty-print" "crypto.religo")))) -(rule (targets empty_case.output) (action (with-stdout-to empty_case.output (run ligo "pretty-print" "empty_case.religo")))) -(rule (targets eq_bool.output) (action (with-stdout-to eq_bool.output (run ligo "pretty-print" "eq_bool.religo")))) -(rule (targets failwith.output) (action (with-stdout-to failwith.output (run ligo "pretty-print" "failwith.religo")))) -(rule (targets function-shared.output) (action (with-stdout-to function-shared.output (run ligo "pretty-print" "function-shared.religo")))) -(rule (targets high-order.output) (action (with-stdout-to high-order.output (run ligo "pretty-print" "high-order.religo")))) -(rule (targets implicit_account.output) (action (with-stdout-to implicit_account.output (run ligo "pretty-print" "implicit_account.religo")))) -(rule (targets included.output) (action (with-stdout-to included.output (run ligo "pretty-print" "included.religo")))) -(rule (targets includer.output) (action (with-stdout-to includer.output (run ligo "pretty-print" "includer.religo")))) -(rule (targets key_hash.output) (action (with-stdout-to key_hash.output (run ligo "pretty-print" "key_hash.religo")))) -(rule (targets lambda.output) (action (with-stdout-to lambda.output (run ligo "pretty-print" "lambda.religo")))) -(rule (targets lambda2.output) (action (with-stdout-to lambda2.output (run ligo "pretty-print" "lambda2.religo")))) -(rule (targets let_multiple.output) (action (with-stdout-to let_multiple.output (run ligo "pretty-print" "let_multiple.religo")))) -(rule (targets letin.output) (action (with-stdout-to letin.output (run ligo "pretty-print" "letin.religo")))) -(rule (targets list.output) (action (with-stdout-to list.output (run ligo "pretty-print" "list.religo")))) -(rule (targets loop.output) (action (with-stdout-to loop.output (run ligo "pretty-print" "loop.religo")))) -(rule (targets map.output) (action (with-stdout-to map.output (run ligo "pretty-print" "map.religo")))) -(rule (targets match_bis.output) (action (with-stdout-to match_bis.output (run ligo "pretty-print" "match_bis.religo")))) -(rule (targets match.output) (action (with-stdout-to match.output (run ligo "pretty-print" "match.religo")))) -(rule (targets michelson_pair_tree.output) (action (with-stdout-to michelson_pair_tree.output (run ligo "pretty-print" "michelson_pair_tree.religo")))) -(rule (targets multiple-parameters.output) (action (with-stdout-to multiple-parameters.output (run ligo "pretty-print" "multiple-parameters.religo")))) -(rule (targets multisig.output) (action (with-stdout-to multisig.output (run ligo "pretty-print" "multisig.religo")))) -(rule (targets no_semicolon.output) (action (with-stdout-to no_semicolon.output (run ligo "pretty-print" "no_semicolon.religo")))) -(rule (targets pledge.output) (action (with-stdout-to pledge.output (run ligo "pretty-print" "pledge.religo")))) -(rule (targets record.output) (action (with-stdout-to record.output (run ligo "pretty-print" "record.religo")))) -(rule (targets recursion.output) (action (with-stdout-to recursion.output (run ligo "pretty-print" "recursion.religo")))) -(rule (targets self_address.output) (action (with-stdout-to self_address.output (run ligo "pretty-print" "self_address.religo")))) -(rule (targets set_arithmetic.output) (action (with-stdout-to set_arithmetic.output (run ligo "pretty-print" "set_arithmetic.religo")))) -(rule (targets set_delegate.output) (action (with-stdout-to set_delegate.output (run ligo "pretty-print" "set_delegate.religo")))) -(rule (targets single_record_item.output) (action (with-stdout-to single_record_item.output (run ligo "pretty-print" "single_record_item.religo")))) -(rule (targets string_arithmetic.output) (action (with-stdout-to string_arithmetic.output (run ligo "pretty-print" "string_arithmetic.religo")))) -(rule (targets super-counter.output) (action (with-stdout-to super-counter.output (run ligo "pretty-print" "super-counter.religo")))) -(rule (targets tuple_list.output) (action (with-stdout-to tuple_list.output (run ligo "pretty-print" "tuple_list.religo")))) -(rule (targets tuple_param_destruct.output) (action (with-stdout-to tuple_param_destruct.output (run ligo "pretty-print" "tuple_param_destruct.religo")))) -(rule (targets tuple_type.output) (action (with-stdout-to tuple_type.output (run ligo "pretty-print" "tuple_type.religo")))) -(rule (targets tuple.output) (action (with-stdout-to tuple.output (run ligo "pretty-print" "tuple.religo")))) -(rule (targets tuples_no_annotation.output) (action (with-stdout-to tuples_no_annotation.output (run ligo "pretty-print" "tuples_no_annotation.religo")))) -(rule (targets tuples_sequences_functions.output) (action (with-stdout-to tuples_sequences_functions.output (run ligo "pretty-print" "tuples_sequences_functions.religo")))) -(rule (targets variant.output) (action (with-stdout-to variant.output (run ligo "pretty-print" "variant.religo")))) -(rule (targets website2.output) (action (with-stdout-to website2.output (run ligo "pretty-print" "website2.religo")))) +(rule (targets address.output) (action (with-stdout-to address.output (run ligo "pretty-print" "address.religo"))) (deps address.religo)) +(rule (targets amount.output) (action (with-stdout-to amount.output (run ligo "pretty-print" "amount.religo"))) (deps amount.religo)) +(rule (targets arithmetic.output) (action (with-stdout-to arithmetic.output (run ligo "pretty-print" "arithmetic.religo"))) (deps arithmetic.religo)) +(rule (targets bad_address_format.output) (action (with-stdout-to bad_address_format.output (run ligo "pretty-print" "bad_address_format.religo"))) (deps bad_address_format.religo)) +(rule (targets balance_constant.output) (action (with-stdout-to balance_constant.output (run ligo "pretty-print" "balance_constant.religo"))) (deps balance_constant.religo)) +(rule (targets bitwise_arithmetic.output) (action (with-stdout-to bitwise_arithmetic.output (run ligo "pretty-print" "bitwise_arithmetic.religo"))) (deps bitwise_arithmetic.religo)) +(rule (targets boolean_operators.output) (action (with-stdout-to boolean_operators.output (run ligo "pretty-print" "boolean_operators.religo"))) (deps boolean_operators.religo)) +(rule (targets bytes_arithmetic.output) (action (with-stdout-to bytes_arithmetic.output (run ligo "pretty-print" "bytes_arithmetic.religo"))) (deps bytes_arithmetic.religo)) +(rule (targets bytes_unpack.output) (action (with-stdout-to bytes_unpack.output (run ligo "pretty-print" "bytes_unpack.religo"))) (deps bytes_unpack.religo)) +(rule (targets check_signature.output) (action (with-stdout-to check_signature.output (run ligo "pretty-print" "check_signature.religo"))) (deps check_signature.religo)) +(rule (targets closure.output) (action (with-stdout-to closure.output (run ligo "pretty-print" "closure.religo"))) (deps closure.religo)) +(rule (targets condition-shadowing.output) (action (with-stdout-to condition-shadowing.output (run ligo "pretty-print" "condition-shadowing.religo"))) (deps condition-shadowing.religo)) +(rule (targets condition.output) (action (with-stdout-to condition.output (run ligo "pretty-print" "condition.religo"))) (deps condition.religo)) +(rule (targets counter.output) (action (with-stdout-to counter.output (run ligo "pretty-print" "counter.religo"))) (deps counter.religo)) +(rule (targets crypto.output) (action (with-stdout-to crypto.output (run ligo "pretty-print" "crypto.religo"))) (deps crypto.religo)) +(rule (targets empty_case.output) (action (with-stdout-to empty_case.output (run ligo "pretty-print" "empty_case.religo"))) (deps empty_case.religo)) +(rule (targets eq_bool.output) (action (with-stdout-to eq_bool.output (run ligo "pretty-print" "eq_bool.religo"))) (deps eq_bool.religo)) +(rule (targets failwith.output) (action (with-stdout-to failwith.output (run ligo "pretty-print" "failwith.religo"))) (deps failwith.religo)) +(rule (targets function-shared.output) (action (with-stdout-to function-shared.output (run ligo "pretty-print" "function-shared.religo"))) (deps function-shared.religo)) +(rule (targets high-order.output) (action (with-stdout-to high-order.output (run ligo "pretty-print" "high-order.religo"))) (deps high-order.religo)) +(rule (targets implicit_account.output) (action (with-stdout-to implicit_account.output (run ligo "pretty-print" "implicit_account.religo"))) (deps implicit_account.religo)) +(rule (targets included.output) (action (with-stdout-to included.output (run ligo "pretty-print" "included.religo"))) (deps included.religo)) +(rule (targets includer.output) (action (with-stdout-to includer.output (run ligo "pretty-print" "includer.religo"))) (deps includer.religo)) +(rule (targets key_hash.output) (action (with-stdout-to key_hash.output (run ligo "pretty-print" "key_hash.religo"))) (deps key_hash.religo)) +(rule (targets lambda.output) (action (with-stdout-to lambda.output (run ligo "pretty-print" "lambda.religo"))) (deps lambda.religo)) +(rule (targets lambda2.output) (action (with-stdout-to lambda2.output (run ligo "pretty-print" "lambda2.religo"))) (deps lambda2.religo)) +(rule (targets let_multiple.output) (action (with-stdout-to let_multiple.output (run ligo "pretty-print" "let_multiple.religo"))) (deps let_multiple.religo)) +(rule (targets letin.output) (action (with-stdout-to letin.output (run ligo "pretty-print" "letin.religo"))) (deps letin.religo)) +(rule (targets list.output) (action (with-stdout-to list.output (run ligo "pretty-print" "list.religo"))) (deps list.religo)) +(rule (targets loop.output) (action (with-stdout-to loop.output (run ligo "pretty-print" "loop.religo"))) (deps loop.religo)) +(rule (targets map.output) (action (with-stdout-to map.output (run ligo "pretty-print" "map.religo"))) (deps map.religo)) +(rule (targets match_bis.output) (action (with-stdout-to match_bis.output (run ligo "pretty-print" "match_bis.religo"))) (deps match_bis.religo)) +(rule (targets match.output) (action (with-stdout-to match.output (run ligo "pretty-print" "match.religo"))) (deps match.religo)) +(rule (targets michelson_pair_tree.output) (action (with-stdout-to michelson_pair_tree.output (run ligo "pretty-print" "michelson_pair_tree.religo"))) (deps michelson_pair_tree.religo)) +(rule (targets multiple-parameters.output) (action (with-stdout-to multiple-parameters.output (run ligo "pretty-print" "multiple-parameters.religo"))) (deps multiple-parameters.religo)) +(rule (targets multisig.output) (action (with-stdout-to multisig.output (run ligo "pretty-print" "multisig.religo"))) (deps multisig.religo)) +(rule (targets no_semicolon.output) (action (with-stdout-to no_semicolon.output (run ligo "pretty-print" "no_semicolon.religo"))) (deps no_semicolon.religo)) +(rule (targets pledge.output) (action (with-stdout-to pledge.output (run ligo "pretty-print" "pledge.religo"))) (deps pledge.religo)) +(rule (targets record.output) (action (with-stdout-to record.output (run ligo "pretty-print" "record.religo"))) (deps record.religo)) +(rule (targets recursion.output) (action (with-stdout-to recursion.output (run ligo "pretty-print" "recursion.religo"))) (deps recursion.religo)) +(rule (targets self_address.output) (action (with-stdout-to self_address.output (run ligo "pretty-print" "self_address.religo"))) (deps self_address.religo)) +(rule (targets set_arithmetic.output) (action (with-stdout-to set_arithmetic.output (run ligo "pretty-print" "set_arithmetic.religo"))) (deps set_arithmetic.religo)) +(rule (targets set_delegate.output) (action (with-stdout-to set_delegate.output (run ligo "pretty-print" "set_delegate.religo"))) (deps set_delegate.religo)) +(rule (targets single_record_item.output) (action (with-stdout-to single_record_item.output (run ligo "pretty-print" "single_record_item.religo"))) (deps single_record_item.religo)) +(rule (targets string_arithmetic.output) (action (with-stdout-to string_arithmetic.output (run ligo "pretty-print" "string_arithmetic.religo"))) (deps string_arithmetic.religo)) +(rule (targets super-counter.output) (action (with-stdout-to super-counter.output (run ligo "pretty-print" "super-counter.religo"))) (deps super-counter.religo)) +(rule (targets tuple_list.output) (action (with-stdout-to tuple_list.output (run ligo "pretty-print" "tuple_list.religo"))) (deps tuple_list.religo)) +(rule (targets tuple_param_destruct.output) (action (with-stdout-to tuple_param_destruct.output (run ligo "pretty-print" "tuple_param_destruct.religo"))) (deps tuple_param_destruct.religo)) +(rule (targets tuple_type.output) (action (with-stdout-to tuple_type.output (run ligo "pretty-print" "tuple_type.religo"))) (deps tuple_type.religo)) +(rule (targets tuple.output) (action (with-stdout-to tuple.output (run ligo "pretty-print" "tuple.religo"))) (deps tuple.religo)) +(rule (targets tuples_no_annotation.output) (action (with-stdout-to tuples_no_annotation.output (run ligo "pretty-print" "tuples_no_annotation.religo"))) (deps tuples_no_annotation.religo)) +(rule (targets tuples_sequences_functions.output) (action (with-stdout-to tuples_sequences_functions.output (run ligo "pretty-print" "tuples_sequences_functions.religo"))) (deps tuples_sequences_functions.religo)) +(rule (targets variant.output) (action (with-stdout-to variant.output (run ligo "pretty-print" "variant.religo"))) (deps variant.religo)) +(rule (targets website2.output) (action (with-stdout-to website2.output (run ligo "pretty-print" "website2.religo"))) (deps website2.religo)) -(alias (name runtest) (action (diff expected/address.religo address.output))) +(alias (name runtest) (action (diff expected/address.religo address.output))) (alias (name runtest) (action (diff expected/amount.religo amount.output))) (alias (name runtest) (action (diff expected/arithmetic.religo arithmetic.output))) (alias (name runtest) (action (diff expected/bad_address_format.religo bad_address_format.output))) @@ -109,57 +109,57 @@ (alias (name runtest) (action (diff expected/variant.religo variant.output))) (alias (name runtest) (action (diff expected/website2.religo website2.output))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_address_format.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-shadowing.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst high-order.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst implicit_account.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst included.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst includer.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda2.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst let_multiple.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst letin.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst list.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst map.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst match_bis.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst match.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst multiple-parameters.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst no_semicolon.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst pledge.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst record.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst recursion.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_address.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_delegate.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst single_record_item.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst string_arithmetic.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst super-counter.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_list.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_param_destruct.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_type.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_no_annotation.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_sequences_functions.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.output -s reasonligo)))) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.output -s reasonligo)))) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.output -s reasonligo))) (deps address.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.output -s reasonligo))) (deps amount.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.output -s reasonligo))) (deps arithmetic.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_address_format.output -s reasonligo))) (deps bad_address_format.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.output -s reasonligo))) (deps balance_constant.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.output -s reasonligo))) (deps bitwise_arithmetic.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.output -s reasonligo))) (deps boolean_operators.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.output -s reasonligo))) (deps bytes_arithmetic.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.output -s reasonligo))) (deps bytes_unpack.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.output -s reasonligo))) (deps check_signature.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.output -s reasonligo))) (deps closure.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-shadowing.output -s reasonligo))) (deps condition-shadowing.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.output -s reasonligo))) (deps condition.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.output -s reasonligo))) (deps counter.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.output -s reasonligo))) (deps crypto.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.output -s reasonligo))) (deps empty_case.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.output -s reasonligo))) (deps eq_bool.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.output -s reasonligo))) (deps failwith.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.output -s reasonligo))) (deps function-shared.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst high-order.output -s reasonligo))) (deps high-order.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst implicit_account.output -s reasonligo))) (deps implicit_account.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst included.output -s reasonligo))) (deps included.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst includer.output -s reasonligo))) (deps includer.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash.output -s reasonligo))) (deps key_hash.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda.output -s reasonligo))) (deps lambda.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda2.output -s reasonligo))) (deps lambda2.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst let_multiple.output -s reasonligo))) (deps let_multiple.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst letin.output -s reasonligo))) (deps letin.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst list.output -s reasonligo))) (deps list.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop.output -s reasonligo))) (deps loop.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst map.output -s reasonligo))) (deps map.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match_bis.output -s reasonligo))) (deps match_bis.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match.output -s reasonligo))) (deps match.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree.output -s reasonligo))) (deps michelson_pair_tree.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multiple-parameters.output -s reasonligo))) (deps multiple-parameters.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig.output -s reasonligo))) (deps multisig.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst no_semicolon.output -s reasonligo))) (deps no_semicolon.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst pledge.output -s reasonligo))) (deps pledge.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst record.output -s reasonligo))) (deps record.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst recursion.output -s reasonligo))) (deps recursion.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_address.output -s reasonligo))) (deps self_address.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic.output -s reasonligo))) (deps set_arithmetic.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_delegate.output -s reasonligo))) (deps set_delegate.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst single_record_item.output -s reasonligo))) (deps single_record_item.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst string_arithmetic.output -s reasonligo))) (deps string_arithmetic.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst super-counter.output -s reasonligo))) (deps super-counter.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_list.output -s reasonligo))) (deps tuple_list.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_param_destruct.output -s reasonligo))) (deps tuple_param_destruct.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_type.output -s reasonligo))) (deps tuple_type.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple.output -s reasonligo))) (deps tuple.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_no_annotation.output -s reasonligo))) (deps tuples_no_annotation.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.output -s reasonligo))) (deps variant.output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.output -s reasonligo))) (deps website2.output)) diff --git a/src/test/contracts/expected/address.religo b/src/test/contracts/expected/address.religo index 4979af040..7afb9b377 100644 --- a/src/test/contracts/expected/address.religo +++ b/src/test/contracts/expected/address.religo @@ -1,5 +1,5 @@ let main = - (p: key_hash): address => + ((p: key_hash)): address => { let c: contract(unit) = Tezos.implicit_account(p); Tezos.address(c) diff --git a/src/test/contracts/expected/amount.religo b/src/test/contracts/expected/amount.religo index 447dac88b..7543eb3fd 100644 --- a/src/test/contracts/expected/amount.religo +++ b/src/test/contracts/expected/amount.religo @@ -1,5 +1,5 @@ let check_ = - (p: unit): int => + ((p: unit)): int => if(Tezos.amount == 100000000mutez) { 42 diff --git a/src/test/contracts/expected/arithmetic.religo b/src/test/contracts/expected/arithmetic.religo index 08c3fcfee..52e01e696 100644 --- a/src/test/contracts/expected/arithmetic.religo +++ b/src/test/contracts/expected/arithmetic.religo @@ -1,17 +1,17 @@ -let mod_op = (n: int): nat => n mod 42; +let mod_op = ((n: int)): nat => n mod 42; -let plus_op = (n: int): int => n + 42; +let plus_op = ((n: int)): int => n + 42; -let minus_op = (n: int): int => n - 42; +let minus_op = ((n: int)): int => n - 42; -let times_op = (n: int): int => n * 42; +let times_op = ((n: int)): int => n * 42; -let div_op = (n: int): int => n / 2; +let div_op = ((n: int)): int => n / 2; -let neg_op = (n: int): int => -n; +let neg_op = ((n: int)): int => -n; -let foo = (n: int): int => n + 10; +let foo = ((n: int)): int => n + 10; -let neg_op_2 = (b: int): int => -foo(b); +let neg_op_2 = ((b: int)): int => -foo(b); -let ediv_op = (n: int): option((int, nat)) => ediv(n 2); +let ediv_op = ((n: int)): option((int, nat)) => ediv(n, 2); diff --git a/src/test/contracts/expected/bad_address_format.religo b/src/test/contracts/expected/bad_address_format.religo index ee7f13c0d..9000969ec 100644 --- a/src/test/contracts/expected/bad_address_format.religo +++ b/src/test/contracts/expected/bad_address_format.religo @@ -1,3 +1,3 @@ let main = - (parameter: int, storage: address) => + ((parameter: int), (storage: address)) => ([] : list(operation), "KT1badaddr" : address); diff --git a/src/test/contracts/expected/balance_constant.religo b/src/test/contracts/expected/balance_constant.religo index 03de78dc7..4082d7324 100644 --- a/src/test/contracts/expected/balance_constant.religo +++ b/src/test/contracts/expected/balance_constant.religo @@ -1,7 +1,7 @@ type storage = tez; let main2 = - (p: unit, s: storage) => + ((p: unit), (s: storage)) => ([] : list(operation), Tezos.balance); -let main = (x: (unit, storage)) => main2(x[0] x[1]); +let main = ((x: (unit, storage))) => main2(x[0], x[1]); diff --git a/src/test/contracts/expected/bitwise_arithmetic.religo b/src/test/contracts/expected/bitwise_arithmetic.religo index 8ea3f8d0b..91af7e540 100644 --- a/src/test/contracts/expected/bitwise_arithmetic.religo +++ b/src/test/contracts/expected/bitwise_arithmetic.religo @@ -1,9 +1,9 @@ -let or_op = (n: nat): nat => Bitwise.or(n 4n); +let or_op = ((n: nat)): nat => Bitwise.or(n, 4n); -let and_op = (n: nat): nat => Bitwise.and(n 7n); +let and_op = ((n: nat)): nat => Bitwise.and(n, 7n); -let xor_op = (n: nat): nat => Bitwise.xor(n 7n); +let xor_op = ((n: nat)): nat => Bitwise.xor(n, 7n); -let lsl_op = (n: nat): nat => Bitwise.shift_left(n 7n); +let lsl_op = ((n: nat)): nat => Bitwise.shift_left(n, 7n); -let lsr_op = (n: nat): nat => Bitwise.shift_right(n 7n); +let lsr_op = ((n: nat)): nat => Bitwise.shift_right(n, 7n); diff --git a/src/test/contracts/expected/boolean_operators.religo b/src/test/contracts/expected/boolean_operators.religo index 0c7f1ae28..a1f640409 100644 --- a/src/test/contracts/expected/boolean_operators.religo +++ b/src/test/contracts/expected/boolean_operators.religo @@ -1,9 +1,9 @@ -let or_true = (b: bool): bool => b || true; +let or_true = ((b: bool)): bool => b || true; -let or_false = (b: bool): bool => b || false; +let or_false = ((b: bool)): bool => b || false; -let and_true = (b: bool): bool => b && true; +let and_true = ((b: bool)): bool => b && true; -let and_false = (b: bool): bool => b && false; +let and_false = ((b: bool)): bool => b && false; -let not_bool = (b: bool): bool => ! b; +let not_bool = ((b: bool)): bool => ! b; diff --git a/src/test/contracts/expected/bytes_arithmetic.religo b/src/test/contracts/expected/bytes_arithmetic.religo index 372e268f1..7fef60bb1 100644 --- a/src/test/contracts/expected/bytes_arithmetic.religo +++ b/src/test/contracts/expected/bytes_arithmetic.religo @@ -1,5 +1,6 @@ -let concat_op = (s: bytes): bytes => Bytes.concat(s 0x7070); +let concat_op = + ((s: bytes)): bytes => Bytes.concat(s, 0x7070); -let slice_op = (s: bytes): bytes => Bytes.slice(1n 2n s); +let slice_op = ((s: bytes)): bytes => Bytes.slice(1n, 2n, s); -let hasherman = (s: bytes): bytes => Crypto.sha256(s); +let hasherman = ((s: bytes)): bytes => Crypto.sha256(s); diff --git a/src/test/contracts/expected/bytes_unpack.religo b/src/test/contracts/expected/bytes_unpack.religo index ab91a5324..65d3e2408 100644 --- a/src/test/contracts/expected/bytes_unpack.religo +++ b/src/test/contracts/expected/bytes_unpack.religo @@ -1,19 +1,19 @@ let id_string = - (p: string): option(string) => + ((p: string)): option(string) => { let packed: bytes = Bytes.pack(p); ((Bytes.unpack(packed)) : option(string)) }; let id_int = - (p: int): option(int) => + ((p: int)): option(int) => { let packed: bytes = Bytes.pack(p); ((Bytes.unpack(packed)) : option(int)) }; let id_address = - (p: address): option(address) => + ((p: address)): option(address) => { let packed: bytes = Bytes.pack(p); ((Bytes.unpack(packed)) : option(address)) diff --git a/src/test/contracts/expected/check_signature.religo b/src/test/contracts/expected/check_signature.religo index e4468ed5d..4080d6001 100644 --- a/src/test/contracts/expected/check_signature.religo +++ b/src/test/contracts/expected/check_signature.religo @@ -1,6 +1,6 @@ let check_signature = - (param: (key, signature, bytes)): bool => + ((param: (key, signature, bytes))): bool => { let (pk, signed, msg) = param; - Crypto.check(pk signed msg) + Crypto.check(pk, signed, msg) }; diff --git a/src/test/contracts/expected/closure.religo b/src/test/contracts/expected/closure.religo index 229a89e98..1bb5fee3f 100644 --- a/src/test/contracts/expected/closure.religo +++ b/src/test/contracts/expected/closure.religo @@ -1,8 +1,8 @@ let test = - (k: int): int => + ((k: int)): int => { let j: int = k + 5; - let close: (int) => int) = (i: int) => i + j; + let close: ((int => int)) = ((i: int)) => i + j; let j: int = 20; close(20) }; diff --git a/src/test/contracts/expected/condition-shadowing.religo b/src/test/contracts/expected/condition-shadowing.religo index a31570a05..a486a11a5 100644 --- a/src/test/contracts/expected/condition-shadowing.religo +++ b/src/test/contracts/expected/condition-shadowing.religo @@ -1,5 +1,5 @@ let main = - (i: int) => + ((i: int)) => { let result = 0; if(i diff --git a/src/test/contracts/expected/condition.religo b/src/test/contracts/expected/condition.religo index 5fdc354e3..cb9032b10 100644 --- a/src/test/contracts/expected/condition.religo +++ b/src/test/contracts/expected/condition.religo @@ -1,5 +1,5 @@ let main = - (i: int) => + ((i: int)) => if(i == 2) { 42 diff --git a/src/test/contracts/expected/counter.religo b/src/test/contracts/expected/counter.religo index 14af3847f..1cf29ecce 100644 --- a/src/test/contracts/expected/counter.religo +++ b/src/test/contracts/expected/counter.religo @@ -1,5 +1,5 @@ type storage = int; let main = - ((p, s): (int, storage)): (list(operation), storage) => + (((p, s): (int, storage))): (list(operation), storage) => ([] : list(operation), p + s); diff --git a/src/test/contracts/expected/crypto.religo b/src/test/contracts/expected/crypto.religo index 4afc4a41c..54b3fb1ff 100644 --- a/src/test/contracts/expected/crypto.religo +++ b/src/test/contracts/expected/crypto.religo @@ -1,3 +1,3 @@ -let hasherman512 = (s: bytes) => Crypto.sha512(s); +let hasherman512 = ((s: bytes)) => Crypto.sha512(s); -let hasherman_blake = (s: bytes) => Crypto.blake2b(s); +let hasherman_blake = ((s: bytes)) => Crypto.blake2b(s); diff --git a/src/test/contracts/expected/empty_case.religo b/src/test/contracts/expected/empty_case.religo index ebf6c24d6..10aee843c 100644 --- a/src/test/contracts/expected/empty_case.religo +++ b/src/test/contracts/expected/empty_case.religo @@ -1,8 +1,8 @@ type foo = Bar(int) | Baz; let main = - (f: foo): int => + ((f: foo)): int => switch(f) { - | Bari => i + | Bar(i) => i | Baz => (-1) }; diff --git a/src/test/contracts/expected/eq_bool.religo b/src/test/contracts/expected/eq_bool.religo index ec3bb0d3a..781ff1dcc 100644 --- a/src/test/contracts/expected/eq_bool.religo +++ b/src/test/contracts/expected/eq_bool.religo @@ -1,5 +1,5 @@ let main = - ((a, b): (bool, bool)) => + (((a, b): (bool, bool))) => if(a == b) { 999 diff --git a/src/test/contracts/expected/failwith.religo b/src/test/contracts/expected/failwith.religo index 5e9680040..aa3ca062c 100644 --- a/src/test/contracts/expected/failwith.religo +++ b/src/test/contracts/expected/failwith.religo @@ -1,7 +1,7 @@ type storage = unit; let main = - (p: unit, storage) => + ((p: unit), storage) => if(true) { failwith("This contract always fails") }; diff --git a/src/test/contracts/expected/function-shared.religo b/src/test/contracts/expected/function-shared.religo index ab4fcc3b2..652dd2e14 100644 --- a/src/test/contracts/expected/function-shared.religo +++ b/src/test/contracts/expected/function-shared.religo @@ -1,5 +1,5 @@ -let foo = (i: int): int => i + 20; +let foo = ((i: int)): int => i + 20; -let bar = (i: int): int => i + 50; +let bar = ((i: int)): int => i + 50; -let foobar = (i: int): int => foo(i) + bar(i); +let foobar = ((i: int)): int => foo(i) + bar(i); diff --git a/src/test/contracts/expected/high-order.religo b/src/test/contracts/expected/high-order.religo index 68fa5e33a..0c7dc4b4e 100644 --- a/src/test/contracts/expected/high-order.religo +++ b/src/test/contracts/expected/high-order.religo @@ -1,53 +1,53 @@ let foobar = - (i: int): int => + ((i: int)): int => { - let foo: int) => int = (i: int) => i; - let bar: (int) => int) => int) = - (f: int) => int) => f(i); + let foo: (int => int) = ((i: int)) => i; + let bar: (((int => int) => int)) = + ((f: (int => int))) => f(i); bar(foo) }; let higher2 = - (i: int, f: int) => int): int => + ((i: int), (f: (int => int))): int => { let ii: int = f(i); ii }; let foobar2 = - (i: int): int => + ((i: int)): int => { - let foo2: int) => int = (i: int) => i; - higher2(i foo2) + let foo2: (int => int) = ((i: int)) => i; + higher2(i, foo2) }; let a: int = 0; let foobar3 = - (i: int): int => + ((i: int)): int => { - let foo2: int) => int = (i: int) => a + i; - higher2(i foo2) + let foo2: (int => int) = ((i: int)) => a + i; + higher2(i, foo2) }; -let f = (i: int): int => i; +let f = ((i: int)): int => i; -let g = (i: int): int => f(i); +let g = ((i: int)): int => f(i); -let foobar4 = (i: int): int => g(g(i)); +let foobar4 = ((i: int)): int => g(g(i)); let higher3 = - (i: int, f: int) => int, g: int) => int): int => + ((i: int), (f: (int => int)), (g: (int => int))): int => { let ii: int = f(g(i)); ii }; let foobar5 = - (i: int): int => + ((i: int)): int => { let a: int = 0; - let foo: int) => int = (i: int) => a + i; - let goo: int) => int = (i: int) => foo(i); - higher3(i foo goo) + let foo: (int => int) = ((i: int)) => a + i; + let goo: (int => int) = ((i: int)) => foo(i); + higher3(i, foo, goo) }; diff --git a/src/test/contracts/expected/implicit_account.religo b/src/test/contracts/expected/implicit_account.religo index 8bfc216f8..a151ec548 100644 --- a/src/test/contracts/expected/implicit_account.religo +++ b/src/test/contracts/expected/implicit_account.religo @@ -1,3 +1,3 @@ let main = - (kh: key_hash): contract(unit) => + ((kh: key_hash)): contract(unit) => Tezos.implicit_account(kh); diff --git a/src/test/contracts/expected/key_hash.religo b/src/test/contracts/expected/key_hash.religo index bac557809..a5d51838f 100644 --- a/src/test/contracts/expected/key_hash.religo +++ b/src/test/contracts/expected/key_hash.religo @@ -1,5 +1,5 @@ let check_hash_key = - (kh1_k2: (key_hash, key)): (bool, key_hash) => + ((kh1_k2: (key_hash, key))): (bool, key_hash) => { let (kh1, k2) = kh1_k2; let kh2: key_hash = Crypto.hash_key(k2); diff --git a/src/test/contracts/expected/lambda.religo b/src/test/contracts/expected/lambda.religo index dfa575e18..d348ce6b3 100644 --- a/src/test/contracts/expected/lambda.religo +++ b/src/test/contracts/expected/lambda.religo @@ -1,5 +1,5 @@ type storage = unit; let main = - ((p, s): (unit, storage)): unit => - ((useless: unit) => ())(()); + (((p, s): (unit, storage))): unit => + ((((useless: unit))) => ())(()); diff --git a/src/test/contracts/expected/lambda2.religo b/src/test/contracts/expected/lambda2.religo index 9b0b129cf..6ccefae09 100644 --- a/src/test/contracts/expected/lambda2.religo +++ b/src/test/contracts/expected/lambda2.religo @@ -1,5 +1,7 @@ type storage = unit; let main = - ((a, s): (unit, storage)): unit => - ((f: unit) => unit) => f(()))((useless: unit) => unit); + (((a, s): (unit, storage))): unit => + + (((f: (unit => unit))) => f(()))(((useless: unit)) => + unit); diff --git a/src/test/contracts/expected/let_multiple.religo b/src/test/contracts/expected/let_multiple.religo index 449a434dc..b1e1a8cf9 100644 --- a/src/test/contracts/expected/let_multiple.religo +++ b/src/test/contracts/expected/let_multiple.religo @@ -1,13 +1,13 @@ -let (x: int, y: int) = (1, 2); +let (((x: int), (y: int))) = (1, 2); -let main = (p: unit): int => x + y; +let main = ((p: unit)): int => x + y; -let (x: int, y: int) = (3, 3); +let (((x: int), (y: int))) = (3, 3); -let main_paren = (p: unit): int => x + y; +let main_paren = ((p: unit)): int => x + y; let foobar: (int, int) = (23, 42); -let (foo: int, bar: int) = foobar; +let (((foo: int), (bar: int))) = foobar; -let non_tuple_rhs = (p: unit): int => foo + bar; +let non_tuple_rhs = ((p: unit)): int => foo + bar; diff --git a/src/test/contracts/expected/letin.religo b/src/test/contracts/expected/letin.religo index 2e2c47239..e5b2f209c 100644 --- a/src/test/contracts/expected/letin.religo +++ b/src/test/contracts/expected/letin.religo @@ -1,24 +1,24 @@ type storage = (int, int); let main = - (n: (int, storage)): (list(operation), storage) => + ((n: (int, storage))): (list(operation), storage) => { let x: (int, int) = { let x: int = 7; - (x + n[0], n[1.0] + n[1.1]) + (x + n[0], n[1][0] + n[1][1]) }; ([] : list(operation), x) }; -let f0 = (a: string) => true; +let f0 = ((a: string)) => true; -let f1 = (a: string) => true; +let f1 = ((a: string)) => true; -let f2 = (a: string) => true; +let f2 = ((a: string)) => true; let letin_nesting = - (_: unit) => + ((_: unit)) => { let s = "test"; let p0 = f0(s); @@ -31,7 +31,7 @@ let letin_nesting = }; let letin_nesting2 = - (x: int) => + ((x: int)) => { let y = 2; let z = 3; diff --git a/src/test/contracts/expected/list.religo b/src/test/contracts/expected/list.religo index 5985bf750..3869b3664 100644 --- a/src/test/contracts/expected/list.religo +++ b/src/test/contracts/expected/list.religo @@ -11,7 +11,7 @@ let y: list(int) = [3, 4, 5]; let z: list(int) = [2, ...y]; let main = - ((action, s): (parameter, storage)): return => + (((action, s): (parameter, storage))): return => { let storage = switch(action) { @@ -21,22 +21,22 @@ let main = ([] : list(operation), storage) }; -let size_ = (s: list(int)): nat => List.length(s); +let size_ = ((s: list(int))): nat => List.length(s); let fold_op = - (s: list(int)): int => + ((s: list(int))): int => { - let aggregate = (t: (int, int)) => t[0] + t[1]; - List.fold(aggregate s 10) + let aggregate = ((t: (int, int))) => t[0] + t[1]; + List.fold(aggregate, s, 10) }; let map_op = - (s: list(int)): list(int) => - List.map((cur: int) => cur + 1 s); + ((s: list(int))): list(int) => + List.map(((cur: int)) => cur + 1, s); let iter_op = - (s: list(int)): unit => + ((s: list(int))): unit => { - let do_nothing = (useless: int) => unit; - List.iter(do_nothing s) + let do_nothing = ((useless: int)) => unit; + List.iter(do_nothing, s) }; diff --git a/src/test/contracts/expected/loop.religo b/src/test/contracts/expected/loop.religo index 189373914..1df8dc726 100644 --- a/src/test/contracts/expected/loop.religo +++ b/src/test/contracts/expected/loop.religo @@ -1,5 +1,5 @@ let rec aux_simple = - (i: int): int => + ((i: int)): int => if(i < 100) { aux_simple(i + 1) @@ -7,45 +7,45 @@ let rec aux_simple = i }; -let counter_simple = (n: int): int => aux_simple(n); +let counter_simple = ((n: int)): int => aux_simple(n); type sum_aggregator = {counter: int, sum: int }; let counter = - (n: int): int => + ((n: int)): int => { - let initial: sum_aggregator = {counter = 0, sum = 0 }; + let initial: sum_aggregator = {counter: 0, sum: 0 }; let rec aggregate = - (prev: sum_aggregator): int => - if(prev[counter] + ((prev: sum_aggregator)): int => + if(prev.counter <= n) { aggregate({ - counter = prev[counter] + 1, - sum = prev[counter] + prev[sum] + counter: prev.counter + 1, + sum: prev.counter + prev.sum }) } else { - prev[sum] + prev.sum }; aggregate(initial) }; let rec aux_nest = - (prev: sum_aggregator): sum_aggregator => - if(prev[counter] + ((prev: sum_aggregator)): sum_aggregator => + if(prev.counter < 100) { - let sum: int = prev[sum] + aux_simple(prev[counter]); - aux_nest({counter = prev[counter] + 1, sum = sum }) + let sum: int = prev.sum + aux_simple(prev.counter); + aux_nest({counter: prev.counter + 1, sum: sum }) } else { - ({counter = prev[counter], sum = prev[sum] }) + ({counter: prev.counter, sum: prev.sum }) }; let counter_nest = - (n: int): int => + ((n: int)): int => { - let initial: sum_aggregator = {counter = 0, sum = 0 }; + let initial: sum_aggregator = {counter: 0, sum: 0 }; let out: sum_aggregator = aux_nest(initial); - out[sum] + out.sum }; diff --git a/src/test/contracts/expected/map.religo b/src/test/contracts/expected/map.religo index 8dd3a793a..682c6d0e7 100644 --- a/src/test/contracts/expected/map.religo +++ b/src/test/contracts/expected/map.religo @@ -13,59 +13,62 @@ let map1: foobar = let map2: foobar = Map.literal([(23, 0), (42, 0)]); let set_ = - (n: int, m: foobar): foobar => Map.update(23 Some (n) m); + ((n: int), (m: foobar)): foobar => + Map.update(23, Some (n), m); -let add = (n: int, m: foobar): foobar => Map.add(23 n m); +let add = + ((n: int), (m: foobar)): foobar => Map.add(23, n, m); -let rm = (m: foobar): foobar => Map.remove(42 m); +let rm = ((m: foobar)): foobar => Map.remove(42, m); let patch_ = - (m: foobar): foobar => + ((m: foobar)): foobar => Map.literal([(0, 5), (1, 6), (2, 7)]); let patch_empty = - (m: foobar): foobar => + ((m: foobar)): foobar => Map.literal([(0, 0), (1, 1), (2, 2)]); let patch_deep = - (m: (foobar, nat)): (foobar, nat) => + ((m: (foobar, nat))): (foobar, nat) => (Map.literal([(0, 0), (1, 9), (2, 2)]), 10n); -let size_ = (m: foobar): nat => Map.size(m); +let size_ = ((m: foobar)): nat => Map.size(m); -let get = (m: foobar): option(int) => Map.find_opt(42 m); +let get = ((m: foobar)): option(int) => Map.find_opt(42, m); -let get_ = (m: foobar): option(int) => Map.find_opt(42 m); +let get_ = ((m: foobar)): option(int) => Map.find_opt(42, m); -let mem = (km: (int, foobar)): bool => Map.mem(km[0] km[1]); +let mem = + ((km: (int, foobar))): bool => Map.mem(km[0], km[1]); let iter_op = - (m: foobar): unit => + ((m: foobar)): unit => { - let assert_eq = (i: int, j: int) => assert(i == j); - Map.iter(assert_eq m) + let assert_eq = ((i: int), (j: int)) => assert(i == j); + Map.iter(assert_eq, m) }; let map_op = - (m: foobar): foobar => + ((m: foobar)): foobar => { - let increment = (z: int, j: int) => j + 1; - Map.map(increment m) + let increment = ((z: int), (j: int)) => j + 1; + Map.map(increment, m) }; let fold_op = - (m: foobar): foobar => + ((m: foobar)): foobar => { let aggregate = - (i: int, j: (int, int)) => i + j[0] + j[1]; - Map.fold(aggregate m 10) + ((i: int), (j: (int, int))) => i + j[0] + j[1]; + Map.fold(aggregate, m, 10) }; let deep_op = - (m: foobar): foobar => + ((m: foobar)): foobar => { let coco = (0, m); - let coco = (0, Map.remove(42 coco[1])); - let coco = (0, Map.update(32 Some (16) coco[1])); + let coco = (0, Map.remove(42, coco[1])); + let coco = (0, Map.update(32, Some (16), coco[1])); coco[1] }; diff --git a/src/test/contracts/expected/match.religo b/src/test/contracts/expected/match.religo index 7dd01b0f5..0ed078673 100644 --- a/src/test/contracts/expected/match.religo +++ b/src/test/contracts/expected/match.religo @@ -5,13 +5,13 @@ type parameter = Add(int) | Sub(int); type return = (list(operation), storage); let main = - ((action, store): (parameter, storage)) => + (((action, store): (parameter, storage))) => { let store = store + (switch(action) { - | Addn => n - | Subn => -n + | Add(n) => n + | Sub(n) => -n }); (([] : list(operation)), store) }; diff --git a/src/test/contracts/expected/match_bis.religo b/src/test/contracts/expected/match_bis.religo index 59c76e0ec..4288f1b2b 100644 --- a/src/test/contracts/expected/match_bis.religo +++ b/src/test/contracts/expected/match_bis.religo @@ -2,17 +2,17 @@ type storage = int; type parameter = Increment(int) | Decrement(int); -let add = (a: int, b: int) => a + b; +let add = (((a: int)), ((b: int))) => a + b; -let sub = (a: int, b: int) => a - b; +let sub = (((a: int)), ((b: int))) => a - b; let main = - ((action, store): (parameter, storage)) => + (((action, store): (parameter, storage))) => { let store = switch(action) { - | Incrementn => add(store n) - | Decrementn => sub(store n) + | Increment(n) => add(store, n) + | Decrement(n) => sub(store, n) }; (([] : list(operation)), store) }; diff --git a/src/test/contracts/expected/michelson_pair_tree.religo b/src/test/contracts/expected/michelson_pair_tree.religo index 20e64dd2f..00d73e9e2 100644 --- a/src/test/contracts/expected/michelson_pair_tree.religo +++ b/src/test/contracts/expected/michelson_pair_tree.religo @@ -6,7 +6,7 @@ type storage = michelson_pair type return = (list(operation), storage); let main = - ((action, store): (unit, storage)): return => + (((action, store): (unit, storage))): return => { let foo = (3, (1, 2n)); (([] : list(operation)), (foo : storage)) diff --git a/src/test/contracts/expected/multiple-parameters.religo b/src/test/contracts/expected/multiple-parameters.religo index eac69a334..179f9f1b2 100644 --- a/src/test/contracts/expected/multiple-parameters.religo +++ b/src/test/contracts/expected/multiple-parameters.religo @@ -1,6 +1,7 @@ let abcde_curried = - (a: int, b: int, c: int, d: int, e: int): int => c + e + 3; + ((a: int), (b: int), (c: int), (d: int), (e: int)): int => + c + e + 3; let abcde = - (x: (int, int, int, int, int)): int => - abcde_curried(x[0] x[1] x[2] x[3] x[4]); + ((x: (int, int, int, int, int))): int => + abcde_curried(x[0], x[1], x[2], x[3], x[4]); diff --git a/src/test/contracts/expected/multisig.religo b/src/test/contracts/expected/multisig.religo index 1bb6ed29f..364d9292b 100644 --- a/src/test/contracts/expected/multisig.religo +++ b/src/test/contracts/expected/multisig.religo @@ -13,7 +13,7 @@ type storage = { auth: authorized_keys }; -type message = unit) => list(operation); +type message = (unit => list(operation)); type dummy = (key_hash, signature); @@ -30,28 +30,28 @@ type return = (list(operation), storage); type parameter = CheckMessage(check_message_pt); let check_message = - ((param, s): (check_message_pt, storage)): return => + (((param, s): (check_message_pt, storage))): return => { - let message: message = param[message]; + let message: message = param.message; let s = - if(param[counter] - != s[counter]) { + if(param.counter + != s.counter) { (failwith("Counters does not match") : storage) } else { let packed_payload: bytes = - Bytes.pack((message, param[counter], s[id], + Bytes.pack((message, param.counter, s.id, chain_id)); let valid: nat = 0n; - let keys: authorized_keys = s[auth]; + let keys: authorized_keys = s.auth; let aux = - ((vk, pkh_sig): - ((nat, authorized_keys), (key_hash, signature))) + (((vk, pkh_sig): + ((nat, authorized_keys), (key_hash, signature)))) : (nat, authorized_keys) => { - let (valid, keys) = vk; + let ((valid, keys)) = vk; switch(keys) { | [] => vk | [key, ...keys] => @@ -60,9 +60,9 @@ let check_message = let valid = if( - Crypto.check(key - pkh_sig[1] - packed_payload)) { + Crypto.check(key, + pkh_sig[1], + packed_payload)) { valid + 1n } else { @@ -75,23 +75,23 @@ let check_message = } } }; - let (valid, keys) = - List.fold(aux param[signatures] (valid, keys)); + let ((valid, keys)) = + List.fold(aux, param.signatures, (valid, keys)); if(valid - < s[threshold]) { + < s.threshold) { ( failwith("Not enough signatures passed the check") : storage) } else { - {...s, counter: s[counter] + 1n} + {...s, counter: s.counter + 1n} } }; (message(unit), s) }; let main = - ((action, store): (parameter, storage)): return => + (((action, store): (parameter, storage))): return => switch(action) { - | CheckMessagep => check_message((p, store)) + | CheckMessage(p) => check_message((p, store)) }; diff --git a/src/test/contracts/expected/no_semicolon.religo b/src/test/contracts/expected/no_semicolon.religo index 82db545df..d22ed1926 100644 --- a/src/test/contracts/expected/no_semicolon.religo +++ b/src/test/contracts/expected/no_semicolon.religo @@ -1,7 +1,7 @@ type f = int; let a = - (b: f) => + ((b: f)) => { if(b == 2) { @@ -12,7 +12,7 @@ let a = }; let c = - (c: f) => + ((c: f)) => { 3 }; diff --git a/src/test/contracts/expected/pledge.religo b/src/test/contracts/expected/pledge.religo index 3d7fe2f46..3f8424f06 100644 --- a/src/test/contracts/expected/pledge.religo +++ b/src/test/contracts/expected/pledge.religo @@ -1,16 +1,16 @@ type storage = address; type parameter = Donate(unit) -| Distribute((unit) => list(operation))); +| Distribute(((unit => list(operation)))); let donate = - ((p, s): (unit, storage)): (list(operation), storage) => + (((p, s): (unit, storage))): (list(operation), storage) => { (([] : list(operation)), s) }; let distribute = - ((p, s): (unit) => list(operation), storage)) + (((p, s): ((unit => list(operation)), storage))) : (list(operation), storage) => { @@ -26,7 +26,9 @@ let distribute = }; let main = - ((p, s): (parameter, storage)): (list(operation), storage) => + (((p, s): (parameter, storage))) + : + (list(operation), storage) => { switch(p) { | Donate => donate(((), s)) diff --git a/src/test/contracts/expected/record.religo b/src/test/contracts/expected/record.religo index 8520955ee..221e3d1dc 100644 --- a/src/test/contracts/expected/record.religo +++ b/src/test/contracts/expected/record.religo @@ -1,36 +1,31 @@ type foobar = {foo: int, bar: int }; -let fb: foobar = {foo = 0, bar = 0 }; +let fb: foobar = {foo: 0, bar: 0 }; type abc = {a: int, b: int, c: int }; -let abc: abc = {a = 42, b = 142, c = 242 }; +let abc: abc = {a: 42, b: 142, c: 242 }; -let a: int = abc[a]; +let a: int = abc.a; -let b: int = abc[b]; +let b: int = abc.b; -let c: int = abc[c]; +let c: int = abc.c; -let projection = (r: foobar): int => r[foo] + r[bar]; +let projection = ((r: foobar)): int => r.foo + r.bar; let modify = - (r: foobar): foobar => {foo = 256, bar = r[bar] }; + ((r: foobar)): foobar => {foo: 256, bar: r.bar }; -let modify_abc = (r: abc): abc => {...r, b: 2048, c: 42}; +let modify_abc = ((r: abc)): abc => {...r, b: 2048, c: 42}; type big_record = {a: int, b: int, c: int, d: int, e: int }; -let br: big_record = - { - a = 23, - b = 23, - c = 23, - d = 23, - e = 23 - }; +let br: big_record = {a: 23, b: 23, c: 23, d: 23, e: 23 }; type double_record = {inner: abc }; let modify_inner = - (r: double_record): double_record => {...r, inner.b: 2048}; + ((r: double_record)): double_record => + {...r, + inner.b: 2048}; diff --git a/src/test/contracts/expected/recursion.religo b/src/test/contracts/expected/recursion.religo index 5551c9a6c..232e7ce53 100644 --- a/src/test/contracts/expected/recursion.religo +++ b/src/test/contracts/expected/recursion.religo @@ -1,5 +1,5 @@ let rec sum = - ((n, acc): (int, int)): int => + (((n, acc): (int, int))): int => if(n < 1) { acc @@ -8,7 +8,7 @@ let rec sum = }; let rec fibo = - ((n, n_1, n_0): (int, int, int)): int => + (((n, n_1, n_0): (int, int, int))): int => if(n < 2) { n_1 diff --git a/src/test/contracts/expected/self_address.religo b/src/test/contracts/expected/self_address.religo index db48e28df..bb32977e1 100644 --- a/src/test/contracts/expected/self_address.religo +++ b/src/test/contracts/expected/self_address.religo @@ -1 +1 @@ -let main = (p: unit): address => Tezos.self_address; +let main = ((p: unit)): address => Tezos.self_address; diff --git a/src/test/contracts/expected/set_arithmetic.religo b/src/test/contracts/expected/set_arithmetic.religo index 62cf2c971..7032a3d74 100644 --- a/src/test/contracts/expected/set_arithmetic.religo +++ b/src/test/contracts/expected/set_arithmetic.religo @@ -1,17 +1,18 @@ let literal_op = - (p: unit): set(string) => + ((p: unit)): set(string) => Set.literal(["foo", "bar", "foobar"]); let add_op = - (s: set(string)): set(string) => Set.add("foobar" s); + ((s: set(string))): set(string) => Set.add("foobar", s); let remove_op = - (s: set(string)): set(string) => Set.remove("foobar" s); + ((s: set(string))): set(string) => Set.remove("foobar", s); let remove_deep = - (s: (set(string), nat)): set(string) => - Set.remove("foobar" s[0]); + ((s: (set(string), nat))): set(string) => + Set.remove("foobar", s[0]); -let mem_op = (s: set(string)): bool => Set.mem("foobar" s); +let mem_op = + ((s: set(string))): bool => Set.mem("foobar", s); -let size_op = (s: set(string)): nat => Set.cardinal(s); +let size_op = ((s: set(string))): nat => Set.cardinal(s); diff --git a/src/test/contracts/expected/set_delegate.religo b/src/test/contracts/expected/set_delegate.religo index 278464cf6..3cf594226 100644 --- a/src/test/contracts/expected/set_delegate.religo +++ b/src/test/contracts/expected/set_delegate.religo @@ -1,5 +1,5 @@ let main = - (p: key_hash): list(operation) => + ((p: key_hash)): list(operation) => { let unused: operation = (Tezos.set_delegate(Some (p))); ([] : list(operation)) diff --git a/src/test/contracts/expected/single_record_item.religo b/src/test/contracts/expected/single_record_item.religo index d21e8d2a8..e5a12aa07 100644 --- a/src/test/contracts/expected/single_record_item.religo +++ b/src/test/contracts/expected/single_record_item.religo @@ -1,3 +1,3 @@ type p = {x: int }; -let o = (p: int): p => {x = p }; +let o = ((p: int)): p => {x: p }; diff --git a/src/test/contracts/expected/string_arithmetic.religo b/src/test/contracts/expected/string_arithmetic.religo index 741cf6c2f..cd71b31ed 100644 --- a/src/test/contracts/expected/string_arithmetic.religo +++ b/src/test/contracts/expected/string_arithmetic.religo @@ -1,5 +1,6 @@ -let size_op = (s: string): nat => String.length(s); +let size_op = ((s: string)): nat => String.length(s); -let slice_op = (s: string): string => String.sub(1n 2n s); +let slice_op = + ((s: string)): string => String.sub(1n, 2n, s); -let concat_syntax = (s: string) => s ++ "test_literal"; +let concat_syntax = ((s: string)) => s ++ "test_literal"; diff --git a/src/test/contracts/expected/super-counter.religo b/src/test/contracts/expected/super-counter.religo index de213ce92..a0fc4ae4e 100644 --- a/src/test/contracts/expected/super-counter.religo +++ b/src/test/contracts/expected/super-counter.religo @@ -5,12 +5,12 @@ type storage = int; type return = (list(operation), storage); let main = - ((action, store): (parameter, storage)): return => + (((action, store): (parameter, storage))): return => { let store = switch(action) { - | Incrementn => store + n - | Decrementn => store - n + | Increment(n) => store + n + | Decrement(n) => store - n }; ([] : list(operation), store) }; diff --git a/src/test/contracts/expected/tuple.religo b/src/test/contracts/expected/tuple.religo index d9c25255e..233e676d9 100644 --- a/src/test/contracts/expected/tuple.religo +++ b/src/test/contracts/expected/tuple.religo @@ -1,12 +1,12 @@ type abc = (int, int, int); -let projection_abc = (tpl: abc): int => tpl[1]; +let projection_abc = ((tpl: abc)): int => tpl[1]; type foobar = (int, int); let fb: foobar = (0, 0); -let projection = (tpl: foobar): int => tpl[0] + tpl[1]; +let projection = ((tpl: foobar)): int => tpl[0] + tpl[1]; type big_tuple = (int, int, int, int, int); diff --git a/src/test/contracts/expected/tuple_param_destruct.religo b/src/test/contracts/expected/tuple_param_destruct.religo index e09319247..8ea7fb1ad 100644 --- a/src/test/contracts/expected/tuple_param_destruct.religo +++ b/src/test/contracts/expected/tuple_param_destruct.religo @@ -1,4 +1,4 @@ -let sum = ((result, i): (int, int)): int => result - i; +let sum = (((result, i): (int, int))): int => result - i; let parentheses = - ((result, i): (((int, int),),)): int => result - i; + ((((((result, i)))): (((int, int))))): int => result - i; diff --git a/src/test/contracts/expected/tuple_type.religo b/src/test/contracts/expected/tuple_type.religo index 29d02a01e..73a8e2ee8 100644 --- a/src/test/contracts/expected/tuple_type.religo +++ b/src/test/contracts/expected/tuple_type.religo @@ -1,48 +1,48 @@ type fun_type = (int, int) => int; let arguments = - (b: int, c: int) => + ((b: int), (c: int)) => { b + c }; -let arguments_type_def = (b: fun_type) => b(5 3); +let arguments_type_def = ((b: fun_type)) => b(5, 3); let arguments_test = - (_: int) => arguments_type_def(arguments); + ((_: int)) => arguments_type_def(arguments); -type tuple_type = (int, int)) => int; +type tuple_type = ((int, int) => int); let tuple = - ((a, b): (int, int)) => + (((a, b): (int, int))) => { a + b }; -let tuple_type_def = (b: tuple_type) => b((5, 3)); +let tuple_type_def = ((b: tuple_type)) => b((5, 3)); -let tuple_test = (_: int) => tuple_type_def(tuple); +let tuple_test = ((_: int)) => tuple_type_def(tuple); let arguments_inline = - (b: int, c: int) => + ((b: int), (c: int)) => { b + c }; let arguments_type_def_inline = - (b: (int, int) => int) => b(5 3); + (b: (int, int) => int) => b(5, 3); let arguments_test_inline = - (_: int) => arguments_type_def_inline(arguments_inline); + ((_: int)) => arguments_type_def_inline(arguments_inline); let tuple_inline = - ((a, b): (int, int)) => + (((a, b): (int, int))) => { a + b }; let tuple_type_def_inline = - (b: (int, int)) => int) => b((5, 3)); + (b: ((int, int) => int)) => b((5, 3)); let tuple_test_inline = - (_: int) => tuple_type_def_inline(tuple_inline); + ((_: int)) => tuple_type_def_inline(tuple_inline); diff --git a/src/test/contracts/expected/tuples_no_annotation.religo b/src/test/contracts/expected/tuples_no_annotation.religo index 7cd18c185..7a9253064 100644 --- a/src/test/contracts/expected/tuples_no_annotation.religo +++ b/src/test/contracts/expected/tuples_no_annotation.religo @@ -3,7 +3,7 @@ type storage = (int, string, nat, bool); type parameter = int; let main = - ((p, storage): (parameter, storage)) => + (((p, storage): (parameter, storage))) => { ([] : list(operation), (2, "2", 2n, false)) }; diff --git a/src/test/contracts/expected/tuples_sequences_functions.religo b/src/test/contracts/expected/tuples_sequences_functions.religo index edb34456b..22867281b 100644 --- a/src/test/contracts/expected/tuples_sequences_functions.religo +++ b/src/test/contracts/expected/tuples_sequences_functions.religo @@ -14,9 +14,9 @@ let g = (a + 1, c); let h = ("a" ++ "2", d); -let i = (a: int, b: int) => a + b; +let i = ((a: int), (b: int)) => a + b; -let j = (a: int, b: int) => a - b; +let j = ((a: int), (b: int)) => a - b; let m = { @@ -24,13 +24,13 @@ let m = z }; -let n = (a: int): int => a + 1; +let n = ((a: int)): int => a + 1; -let o = (a: int): int => a + 1; +let o = ((a: int)): int => a + 1; -let n = (a: int, b: int): int => a + 1; +let n = ((a: int), (b: int)): int => a + 1; -let o = (a: int, b: int): int => a + 1; +let o = ((a: int), (b: int)): int => a + 1; let p = { @@ -41,17 +41,17 @@ let p = let q = { - f = 3, - g = 6, - h = {i = "bla", j = 1 + 2, k = {l = 1, z = 2 } } + f: 3, + g: 6, + h: {i: "bla", j: 1 + 2, k: {l: 1, z: 2 } } }; let s = { let a = 2; { - z = a, - a = a + z: a, + a: a } }; diff --git a/src/test/contracts/expected/website2.religo b/src/test/contracts/expected/website2.religo index 852cf446b..233802380 100644 --- a/src/test/contracts/expected/website2.religo +++ b/src/test/contracts/expected/website2.religo @@ -2,17 +2,17 @@ type storage = int; type parameter = Increment(int) | Decrement(int); -let add = ((a, b): (int, int)): int => a + b; +let add = (((a, b): (int, int))): int => a + b; -let sub = ((a, b): (int, int)): int => a - b; +let sub = (((a, b): (int, int))): int => a - b; let main = - ((p, storage): (parameter, storage)) => + (((p, storage): (parameter, storage))) => { let storage = switch(p) { - | Incrementn => add((storage, n)) - | Decrementn => sub((storage, n)) + | Increment(n) => add((storage, n)) + | Decrement(n) => sub((storage, n)) }; ([] : list(operation), storage) }; From fbc854f4d185fbb89c90209d1b91f85f71d00cf9 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Thu, 4 Jun 2020 10:05:33 +0200 Subject: [PATCH 26/67] Improve ReasonLIGO pretty printing output. --- src/passes/1-parser/reasonligo/Parser.mly | 3 +-- src/test/contracts/expected/let_multiple.religo | 6 +++--- src/test/contracts/expected/multisig.religo | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index ef1e7b030..2b257d80c 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -278,8 +278,7 @@ let_binding: } | par(closed_irrefutable) type_annotation? "=" expr { wild_error $4; - Scoping.check_pattern $1.value.inside; - {binders = PPar $1, []; lhs_type=$2; eq=$3; let_rhs=$4} + {binders = $1.value.inside, []; lhs_type=$2; eq=$3; let_rhs=$4} } | tuple(sub_irrefutable) type_annotation? "=" expr { wild_error $4; diff --git a/src/test/contracts/expected/let_multiple.religo b/src/test/contracts/expected/let_multiple.religo index b1e1a8cf9..d961ba0ee 100644 --- a/src/test/contracts/expected/let_multiple.religo +++ b/src/test/contracts/expected/let_multiple.religo @@ -1,13 +1,13 @@ -let (((x: int), (y: int))) = (1, 2); +let ((x: int), (y: int)) = (1, 2); let main = ((p: unit)): int => x + y; -let (((x: int), (y: int))) = (3, 3); +let ((x: int), (y: int)) = (3, 3); let main_paren = ((p: unit)): int => x + y; let foobar: (int, int) = (23, 42); -let (((foo: int), (bar: int))) = foobar; +let ((foo: int), (bar: int)) = foobar; let non_tuple_rhs = ((p: unit)): int => foo + bar; diff --git a/src/test/contracts/expected/multisig.religo b/src/test/contracts/expected/multisig.religo index 364d9292b..2cb8c7bec 100644 --- a/src/test/contracts/expected/multisig.religo +++ b/src/test/contracts/expected/multisig.religo @@ -51,7 +51,7 @@ let check_message = : (nat, authorized_keys) => { - let ((valid, keys)) = vk; + let (valid, keys) = vk; switch(keys) { | [] => vk | [key, ...keys] => @@ -75,7 +75,7 @@ let check_message = } } }; - let ((valid, keys)) = + let (valid, keys) = List.fold(aux, param.signatures, (valid, keys)); if(valid < s.threshold) { From adee60c4443b1ccc828647defe82bdb1ff6f77ca Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 4 Jun 2020 13:26:03 +0200 Subject: [PATCH 27/67] Improved example for testing the pretty-printer. --- src/passes/1-parser/cameligo/Tests/pp.mligo | 4 +--- src/passes/1-parser/pascaligo/Tests/pp.ligo | 19 ++++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/passes/1-parser/cameligo/Tests/pp.mligo b/src/passes/1-parser/cameligo/Tests/pp.mligo index 1a70c1e6a..e68de8216 100644 --- a/src/passes/1-parser/cameligo/Tests/pp.mligo +++ b/src/passes/1-parser/cameligo/Tests/pp.mligo @@ -1,6 +1,5 @@ let patch_ (m : foobar) : foobar = Map.literal [(0, 5); (1, 6); (2, 7)] -(* let (greet_num : int), (greeting : string), one_more_component = different_types of_many_things + ffffff 124312 @@ -14,7 +13,7 @@ let main (n : int * storage) in ([] : operation list), x let y : t = - if true then -30000 * 10000 - 100000 + f x x y y y y - ((x / 4000) * -5) else (10000 + 100000) / 10000000000 + if true then ffffffffff (-30000 * 10000 - 100000 + f x x y y y y - ((x / 4000) * -5), 103+5) else (10000 + 100000) / 10000000000 type return = operation list * (storage * fsdgsdgf * sdfsdfsdf * ssdf) let xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx = ttttttttttttt <= (aaaaaaaaaaaaaaaaaaaaaaaa - bbbbbbbbbbbbbbbbbbbb) @@ -53,4 +52,3 @@ let w = match f 3 with None -> [] | Some (1::[2;3;4;5;6]) -> [4;5]::[] - *) diff --git a/src/passes/1-parser/pascaligo/Tests/pp.ligo b/src/passes/1-parser/pascaligo/Tests/pp.ligo index 2cd411592..da28debcd 100644 --- a/src/passes/1-parser/pascaligo/Tests/pp.ligo +++ b/src/passes/1-parser/pascaligo/Tests/pp.ligo @@ -1,7 +1,7 @@ type t is timestamp * nat -> map (string, address) type u is A | B of t * int | C of int -> (string -> int) -type v is record a : t; b : record c : string end end - +type v is record aaaaaa : ttttttt; bbbbbb : record ccccccccc : string end end +(* function back (var store : store) : list (operation) * store is begin var operations : list (operation) := list []; @@ -52,11 +52,12 @@ function back (var store : store) : list (operation) * store is | B (x, C (y,z)) -> skip | False#True#Unit#0xAA#"hi"#4#nil -> skip ] - end with (operations, store) - -function claim (var store : store) : list (operation) * store is + end with (operations, store, (more_stuff, and_here_too)) +*) + function claim (var store : store; const bar : t; const baz : u; var z : operations * store * (more_stuff * and_here_too)) : list (operation) * store * timestamp * nat -> map (string, address) is begin - var operations : list (operation) := nil; + var operations : list (operation * map (address, map (longname, domain))) := nilllllllllll; + attributes ["foo"; "inline"]; if now <= store.deadline then failwith ("Too soon.") else @@ -72,8 +73,11 @@ function claim (var store : store) : list (operation) * store is remove sender from map store.backers end end - end with (operations, store) + end with long_function_name (operations, store, (more_stuff, (and_here_too, well_in_here_too), hello)) +attributes ["inline"; "foo"] + +(* function withdraw (var store : store) : list (operation) * store is begin var operations : list (operation) := list end; @@ -91,3 +95,4 @@ function withdraw (var store : store) : list (operation) * store is nil -> (operations, (store : store)) | _ -> (operations, store) end +*) From 3bec051115c7dd41ef769fcc8b31810427387c92 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 4 Jun 2020 13:32:35 +0200 Subject: [PATCH 28/67] Added back test LIGO input. --- src/passes/1-parser/cameligo/Tests/pp.mligo | 29 +++++++ src/passes/1-parser/pascaligo/Tests/pp.ligo | 91 +++++++++++++++++++++ 2 files changed, 120 insertions(+) create mode 100644 src/passes/1-parser/cameligo/Tests/pp.mligo create mode 100644 src/passes/1-parser/pascaligo/Tests/pp.ligo diff --git a/src/passes/1-parser/cameligo/Tests/pp.mligo b/src/passes/1-parser/cameligo/Tests/pp.mligo new file mode 100644 index 000000000..d84c270aa --- /dev/null +++ b/src/passes/1-parser/cameligo/Tests/pp.mligo @@ -0,0 +1,29 @@ +type q = {a: int; b: {c: string}} +type r = int list +type s = (int, address) map +type t = int +type u = {a: int; b: t * char} +type v = int * (string * address) +type w = timestamp * nat -> (string, address) map +type x = A | B of t * int | C of int -> (string -> int) + +let x = 4 +let y : t = (if true then -3 + f x x else 0) - 1 +let f (x: int) y = (x : int) +let z : (t) = y +let w = + match f 3 with + None -> [] + | Some (1::[2;3]) -> [4;5]::[] +let n : nat = 0n +let a = A +let b = B a +let c = C (a, B (a)) +let d = None +let e = Some (a, B b) +let z = z.1.2 +let v = "hello" ^ "world" ^ "!" +let w = Map.literal [(1,"1"); (2,"2")] + +let r = { field = 0} +let r = { r with field = 42} diff --git a/src/passes/1-parser/pascaligo/Tests/pp.ligo b/src/passes/1-parser/pascaligo/Tests/pp.ligo new file mode 100644 index 000000000..f4b185f69 --- /dev/null +++ b/src/passes/1-parser/pascaligo/Tests/pp.ligo @@ -0,0 +1,91 @@ +type t is timestamp * nat -> map (string, address) +type u is A | B of t * int | C of int -> (string -> int) +type v is record a : t; b : record c : string end end + +function back (var store : store) : list (operation) * store is + var operations : list (operation) := list [] + begin + const a : nat = 0n; + x0 := record foo = "1"; bar = 4n end; + x1 := nil; + x2 := list end; + x3 := 3#4# list [5; 6]; + case foo of + 10n -> skip + end; + if s contains x then skip else skip; + s := set [3_000mtz; -2; 1n]; + a := A; + b := B (a); + c := C (a, B (a)); + d := None; + e := Some (a, B (b)); + z := z.1.2; + x := map [1 -> "1"; 2 -> "2"]; + y := a.b.c[3]; + a := "hello " ^ "world" ^ "!"; + patch store.backers with set [(1); f(2*3)]; + remove (1,2,3) from set foo.bar; + remove 3 from map foo.bar; + patch store.backers with map [sender -> amount]; + if now > store.deadline and (not True) then + begin + f (x,1); + for k -> d : int * string in map m block { skip }; + for x : int in set s block { skip }; + while i < 10n + begin + acc := 2 - (if toggle then f(x) else Unit); + end; + for i := 1n to 10n + begin + acc := acc + i; + end; + failwith ("Deadline passed"); + end + else + case store.backers[sender] of [ + None -> store.0.backers[sender] := amount + | Some (_) -> skip + | B (x, C (y,z)) -> skip + | False#True#Unit#0xAA#"hi"#4#nil -> skip + ] + end with (operations, store) + +function claim (var store : store) : list (operation) * store is + var operations : list (operation) := nil + begin + if now <= store.deadline then + failwith ("Too soon.") + else + case store.backers[sender] of + None -> + failwith ("Not a backer.") + | Some (amount) -> + if balance >= store.goal or store.funded then + failwith ("Goal reached: no refund.") + else + begin + operations.0.foo := list [transaction (unit, sender, amount)]; + remove sender from map store.backers + end + end + end with (operations, store) + +function withdraw (var store : store) : list (operation) * store is + var operations : list (operation) := list end + begin + if sender = owner then + if now >= store.deadline then + if balance >= store.goal then { +// store.funded := True; + patch store with record funded = True; a = b end; + operations := list [Transfer (owner, balance)]; + }; + else failwith ("Below target.") + else failwith ("Too soon."); + else skip + end with case (foo: bar) of + nil -> (operations, (store : store)) + | _ -> (operations, store) + end From 8606528ddb8568a4d7d634eb5f923aa7a08f595c Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 4 Jun 2020 14:55:40 +0200 Subject: [PATCH 29/67] More pretty-printing. --- src/passes/1-parser/cameligo/Pretty.ml | 3 +- src/passes/1-parser/pascaligo/Pretty.ml | 92 +++++++++++++++++-------- 2 files changed, 63 insertions(+), 32 deletions(-) diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml index 4351b7bad..0ab052a7a 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/1-parser/cameligo/Pretty.ml @@ -404,8 +404,7 @@ and pp_cartesian {value; _} = and pp_variants {value; _} = let head, tail = value in let head = pp_variant head in - let head = if tail = [] then head - else ifflat head (string " " ^^ head) in + let head = if tail = [] then head else ifflat head (blank 2 ^^ head) in let rest = List.map snd tail in let app variant = break 1 ^^ string "| " ^^ pp_variant variant in head ^^ concat_map app rest diff --git a/src/passes/1-parser/pascaligo/Pretty.ml b/src/passes/1-parser/pascaligo/Pretty.ml index bdd92dc8c..287a53608 100644 --- a/src/passes/1-parser/pascaligo/Pretty.ml +++ b/src/passes/1-parser/pascaligo/Pretty.ml @@ -5,8 +5,17 @@ module Region = Simple_utils.Region open! Region open! PPrint -let pp_par (printer: 'a -> document) ({value; _} : 'a par reg) = - string "(" ^^ nest 1 (printer value.inside ^^ string ")") +let pp_par : ('a -> document) -> 'a par reg -> document = + fun printer {value; _} -> + string "(" ^^ nest 1 (printer value.inside ^^ string ")") + +let pp_brackets : ('a -> document) -> 'a brackets reg -> document = + fun printer {value; _} -> + string "[" ^^ nest 1 (printer value.inside ^^ string "]") + +let pp_braces : ('a -> document) -> 'a braces reg -> document = + fun printer {value; _} -> + string "{" ^^ nest 1 (printer value.inside ^^ string "}") let rec print ast = let app decl = group (pp_declaration decl) in @@ -123,7 +132,7 @@ and pp_fun_decl {value; _} = match block_with with None -> empty, empty, empty | Some (b,_) -> - hardline ^^ string "is block [", pp_block b, string "] with " in + hardline ^^ string "is block [", pp_block b, string "] with" in let expr = pp_expr return in let attr = match attributes with None -> empty @@ -132,7 +141,7 @@ and pp_fun_decl {value; _} = ^/^ string ": " ^^ nest 2 return_t ^^ blk_opening ^^ nest 2 (break 0 ^^ blk_in) - ^/^ blk_closing ^^ nest 4 (break 1 ^^ expr) + ^/^ group (blk_closing ^^ nest 4 (break 1 ^^ expr)) ^^ attr and pp_parameters p = pp_nsepseq ";" pp_param_decl p @@ -203,20 +212,20 @@ and pp_cond_expr {value; _} = string "TODO:pp_cond_expr" and pp_conditional {value; _} = let {test; ifso; ifnot; _} : conditional = value in - let if_then = - string "if " ^^ group (nest 3 (pp_expr test)) ^/^ string "then" - ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) in - let if_else = - string "else" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifnot)) - in if_then ^/^ if_else + let if_then = string "if " ^^ group (nest 3 (pp_expr test)) in + let ifso = prefix 2 1 (string "then") (pp_if_clause ifso) in + let ifnot = + string "else" ^^ group (nest 2 (blank 1 ^^ pp_if_clause ifnot)) + in group (if_then ^/^ ifso ^/^ ifnot) and pp_if_clause = function - ClauseInstr i -> pp_instruction i -| ClauseBlock b -> pp_clause_block b + ClauseInstr i -> nest 1 (pp_instruction i) +| ClauseBlock b -> + string "{" ^^ hardline ^^ pp_clause_block b ^^ hardline ^^ string "}" and pp_clause_block = function - LongBlock b -> pp_block b -| ShortBlock b -> pp_short_block b + LongBlock b -> pp_block b +| ShortBlock {value; _} -> Utils.(pp_statements <@ fst) value.inside and pp_short_block {value; _} = string "TODO:pp_short_block" @@ -226,8 +235,9 @@ and pp_case : 'a.('a -> document) -> 'a case Region.reg -> document = fun printer {value; _} -> let {expr; cases; _} = value in - group (string "case " ^^ nest 5 (pp_expr expr) ^/^ string "of") - ^^ hardline ^^ nest 2 (pp_cases printer cases) + group (string "case " ^^ nest 5 (pp_expr expr) ^/^ string "of [") + ^^ hardline ^^ pp_cases printer cases + ^^ hardline ^^ string "]" and pp_cases : 'a.('a -> document) -> @@ -235,23 +245,25 @@ and pp_cases : fun printer {value; _} -> let head, tail = value in let head = pp_case_clause printer head in - let head = if tail = [] then head - else string " " ^^ head in + let head = if tail = [] then head else blank 4 ^^ head in let rest = List.map snd tail in let app clause = break 1 ^^ string "| " ^^ pp_case_clause printer clause - in head ^^ concat_map app rest + in head ^^ concat_map app rest and pp_case_clause : 'a.('a -> document) -> 'a case_clause Region.reg -> document = - fun printer clause -> string "TODO:pp_case_clause" + fun printer {value; _} -> + let {pattern; rhs; _} = value in + prefix 4 1 (pp_pattern pattern ^^ string " ->") (printer rhs) + and pp_assignment {value; _} = let {lhs; rhs; _} = value in prefix 2 1 (pp_lhs lhs ^^ string " :=") (pp_expr rhs) and pp_lhs : lhs -> document = function - Path p -> pp_path p + Path p -> pp_path p | MapPath p -> pp_map_lookup p and pp_loop = function @@ -279,12 +291,12 @@ and pp_collection = function and pp_expr = function ECase e -> pp_case pp_expr e -| ECond e -> pp_cond_expr e +| ECond e -> group (pp_cond_expr e) | EAnnot e -> pp_annot_expr e | ELogic e -> pp_logic_expr e -| EArith e -> pp_arith_expr e +| EArith e -> group (pp_arith_expr e) | EString e -> pp_string_expr e -| EList e -> pp_list_expr e +| EList e -> group (pp_list_expr e) | ESet e -> pp_set_expr e | EConstr e -> pp_constr_expr e | ERecord e -> pp_record e @@ -307,10 +319,11 @@ and pp_set_expr = function and pp_map_expr = function MapLookUp fetch -> pp_map_lookup fetch -| MapInj inj -> pp_injection pp_binding inj -| BigMapInj inj -> pp_injection pp_binding inj +| MapInj inj -> pp_injection pp_binding inj +| BigMapInj inj -> pp_injection pp_binding inj -and pp_map_lookup {value; _} = string "TODO:pp_map_lookup" +and pp_map_lookup {value; _} = + pp_path value.path ^^ pp_brackets pp_expr value.index and pp_path = function Name v -> pp_ident v @@ -386,14 +399,19 @@ and pp_field_assign {value; _} = string "TODO:pp_field_assign" and pp_record ne_inj = group (pp_ne_injection pp_field_assign ne_inj) -and pp_projection {value; _} = string "TODO:pp_projection" +and pp_projection {value; _} = + let {struct_name; field_path; _} = value in + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let fields = separate_map sep pp_selection fields in + group (pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields) and pp_update {value; _} = string "TODO:pp_update" and pp_field_path_assign {value; _} = string "TODO:pp_field_path_assign" and pp_selection = function - FieldName _ -> string "TODO:pp_selection:FieldName" + FieldName v -> string v.value | Component cmp -> cmp.value |> snd |> Z.to_string |> string and pp_tuple_expr {value; _} = @@ -420,7 +438,21 @@ and pp_arguments v = pp_tuple_expr v and pp_injection : 'a.('a -> document) -> 'a injection reg -> document = - fun printer {value; _} -> string "TODO:pp_injection" + fun printer {value; _} -> + let {kind; enclosing; elements; _} = value in + let sep = string ";" ^^ break 1 in + let elements = Utils.sepseq_to_list elements in + let elements = separate_map sep printer elements in + let kwd = pp_injection_kwd kind in + let offset = String.length kwd + 2 in + string (kwd ^ " [") + ^^ group (nest 2 (break 0 ^^ elements ^^ string "]")) + +and pp_injection_kwd = function + InjSet _ -> "set" +| InjMap _ -> "map" +| InjBigMap _ -> "big_map" +| InjList _ -> "list" and pp_ne_injection : 'a.('a -> document) -> 'a ne_injection reg -> document = From a6972bf28b00baef294427846d5fbc5a848d7d1b Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 4 Jun 2020 14:59:15 +0200 Subject: [PATCH 30/67] Putting back .links. --- src/passes/1-parser/cameligo/.links | 23 ++++++++++++++++++++ src/passes/1-parser/pascaligo/.links | 25 +++++++++++++++++++++ src/passes/1-parser/reasonligo/.links | 31 +++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 src/passes/1-parser/cameligo/.links create mode 100644 src/passes/1-parser/pascaligo/.links create mode 100644 src/passes/1-parser/reasonligo/.links diff --git a/src/passes/1-parser/cameligo/.links b/src/passes/1-parser/cameligo/.links new file mode 100644 index 000000000..fc8466c8e --- /dev/null +++ b/src/passes/1-parser/cameligo/.links @@ -0,0 +1,23 @@ +$HOME/git/OCaml-build/Makefile + +../shared/Lexer.mli +../shared/Lexer.mll +../shared/LexerLib.ml +../shared/EvalOpt.ml +../shared/EvalOpt.mli +../shared/FQueue.ml +../shared/FQueue.mli +../shared/LexerLog.mli +../shared/LexerLog.ml +../shared/Markup.ml +../shared/Markup.mli +../shared/Utils.mli +../shared/Utils.ml +../shared/ParserAPI.mli +../shared/ParserAPI.ml +../shared/LexerUnit.mli +../shared/LexerUnit.ml +../shared/ParserUnit.mli +../shared/ParserUnit.ml + +$HOME/git/ligo/_build/default/src/passes/1-parser/cameligo/ParErr.ml \ No newline at end of file diff --git a/src/passes/1-parser/pascaligo/.links b/src/passes/1-parser/pascaligo/.links new file mode 100644 index 000000000..45c9a4602 --- /dev/null +++ b/src/passes/1-parser/pascaligo/.links @@ -0,0 +1,25 @@ +$HOME/git/OCaml-build/Makefile + +../shared/Lexer.mli +../shared/Lexer.mll +../shared/LexerLib.mli +../shared/LexerLib.ml +../shared/EvalOpt.ml +../shared/EvalOpt.mli +../shared/FQueue.ml +../shared/FQueue.mli +../shared/LexerLog.mli +../shared/LexerLog.ml +../shared/Markup.ml +../shared/Markup.mli +../shared/Utils.mli +../shared/Utils.ml +../shared/ParserAPI.mli +../shared/ParserAPI.ml +../shared/LexerUnit.mli +../shared/LexerUnit.ml +../shared/ParserUnit.mli +../shared/ParserUnit.ml +../shared/LexerLib.ml + +$HOME/git/ligo/_build/default/src/passes/1-parser/pascaligo/ParErr.ml diff --git a/src/passes/1-parser/reasonligo/.links b/src/passes/1-parser/reasonligo/.links new file mode 100644 index 000000000..214b46e6c --- /dev/null +++ b/src/passes/1-parser/reasonligo/.links @@ -0,0 +1,31 @@ +$HOME/git/OCaml-build/Makefile + +../shared/Lexer.mli +../shared/Lexer.mll +../shared/LexerLib.ml +../shared/EvalOpt.ml +../shared/EvalOpt.mli +../shared/FQueue.ml +../shared/FQueue.mli +../shared/LexerLog.mli +../shared/LexerLog.ml +../shared/Markup.ml +../shared/Markup.mli +../shared/Utils.mli +../shared/Utils.ml +../shared/ParserAPI.mli +../shared/ParserAPI.ml +../shared/LexerUnit.mli +../shared/LexerUnit.ml +../shared/ParserUnit.mli +../shared/ParserUnit.ml + +Stubs/Parser_cameligo.ml + +../cameligo/AST.ml +../cameligo/ParserLog.mli +../cameligo/ParserLog.ml +../cameligo/Scoping.mli +../cameligo/Scoping.ml + +$HOME/git/ligo/_build/default/src/passes/1-parser/reasonligo/ParErr.ml From 5896b2a63aebf7d44a7541de1323032e31238db9 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Thu, 4 Jun 2020 15:30:14 +0200 Subject: [PATCH 31/67] Add new matching cases and fix compilation of match_tuples --- .../02-concrete_to_imperative/cameligo.ml | 8 +- .../02-concrete_to_imperative/pascaligo.ml | 6 +- src/passes/03-self_ast_imperative/helpers.ml | 122 +++++++++++------- .../imperative_to_sugar.ml | 62 +++++---- src/passes/05-self_ast_sugar/helpers.ml | 122 +++++++++++------- src/passes/06-sugar_to_core/sugar_to_core.ml | 76 +++++++---- src/passes/07-self_ast_core/helpers.ml | 42 +++--- .../08-typer-new/todo_use_fold_generator.ml | 1 + src/passes/08-typer-new/typer.ml | 18 +-- src/passes/08-typer-new/untyper.ml | 13 +- src/passes/08-typer-old/typer.ml | 40 +----- src/passes/09-self_ast_typed/helpers.ml | 12 -- .../09-self_ast_typed/tail_recursion.ml | 3 - src/passes/10-transpiler/transpiler.ml | 12 -- src/stages/1-ast_imperative/PP.ml | 26 ++-- src/stages/1-ast_imperative/combinators.ml | 7 +- src/stages/1-ast_imperative/combinators.mli | 5 +- src/stages/1-ast_imperative/types.ml | 15 ++- src/stages/2-ast_sugar/PP.ml | 26 ++-- src/stages/2-ast_sugar/types.ml | 15 ++- src/stages/3-ast_core/PP.ml | 16 +-- src/stages/3-ast_core/combinators.ml | 2 +- src/stages/3-ast_core/combinators.mli | 2 +- src/stages/3-ast_core/types.ml | 12 +- src/stages/4-ast_typed/PP.ml | 2 - src/stages/4-ast_typed/ast.ml | 7 - src/stages/4-ast_typed/compute_environment.ml | 15 --- src/stages/4-ast_typed/misc.ml | 2 - src/stages/4-ast_typed/misc_smart.ml | 2 - src/stages/common/ast_common.ml | 2 + src/stages/common/types.ml | 13 +- 31 files changed, 369 insertions(+), 337 deletions(-) diff --git a/src/passes/02-concrete_to_imperative/cameligo.ml b/src/passes/02-concrete_to_imperative/cameligo.ml index 9df82adb1..04ac16fe0 100644 --- a/src/passes/02-concrete_to_imperative/cameligo.ml +++ b/src/passes/02-concrete_to_imperative/cameligo.ml @@ -960,7 +960,7 @@ and compile_declaration : Raw.declaration -> declaration Location.wrap list resu ok @@ [loc x @@ (Declaration_constant (Var.of_name var.value , lhs_type , inline, rhs'))] ) -and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_content result = +and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fun t -> let open Raw in let rec get_var (t:Raw.pattern) = @@ -1031,7 +1031,7 @@ and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_conten match patterns with | [(PFalse _, f) ; (PTrue _, t)] | [(PTrue _, t) ; (PFalse _, f)] -> - ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)], ()) + ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)]) | [(PList (PCons c), cons); (PList (PListComp sugar_nil), nil)] | [(PList (PListComp sugar_nil), nil); (PList (PCons c), cons)] -> let%bind () = @@ -1044,7 +1044,7 @@ and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_conten let%bind a = get_var a in let%bind b = get_var b in ok (a, b) in - ok @@ Match_list {match_cons=(Var.of_name a, Var.of_name b, cons, ()); match_nil=nil} + ok @@ Match_list {match_cons=(Var.of_name a, Var.of_name b, cons); match_nil=nil} | lst -> let error x = let title () = "Pattern" in @@ -1075,7 +1075,7 @@ and compile_cases : type a . (Raw.pattern * a) list -> (a, unit) matching_conten | [ (("None", None), none_expr); (("Some", Some some_var), some_expr) ] -> ok @@ Match_option { - match_some = (Var.of_name some_var, some_expr, ()); + match_some = (Var.of_name some_var, some_expr); match_none = none_expr } | _ -> simple_fail "bad option pattern" in bind_or (as_option () , as_variant ()) diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index b0c2820f3..9b653c280 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -1059,14 +1059,14 @@ and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fu match patterns with | [(PConstr PFalse _ , f) ; (PConstr PTrue _ , t)] | [(PConstr PTrue _ , t) ; (PConstr PFalse _ , f)] -> - ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)], ()) + ok @@ Match_variant ([((Constructor "true", Var.of_name "_"), t); ((Constructor "false", Var.of_name "_"), f)]) | [(PConstr PSomeApp v , some) ; (PConstr PNone _ , none)] | [(PConstr PNone _ , none) ; (PConstr PSomeApp v , some)] -> ( let (_, v) = v.value in let%bind v = match v.value.inside with | PVar v -> ok v.value | p -> fail @@ unsupported_deep_Some_patterns p in - ok @@ Match_option {match_none = none ; match_some = (Var.of_name v, some, ()) } + ok @@ Match_option {match_none = none ; match_some = (Var.of_name v, some) } ) | [(PList PCons c, cons) ; (PList (PNil _), nil)] | [(PList (PNil _), nil) ; (PList PCons c, cons)] -> @@ -1079,7 +1079,7 @@ and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fu | _ -> fail @@ unsupported_deep_list_patterns c in - ok @@ Match_list {match_cons = (Var.of_name a, Var.of_name b, cons,()) ; match_nil = nil} + ok @@ Match_list {match_cons = (Var.of_name a, Var.of_name b, cons) ; match_nil = nil} | lst -> trace (simple_info "currently, only booleans, options, lists and \ user-defined constructors are supported in patterns") @@ diff --git a/src/passes/03-self_ast_imperative/helpers.ml b/src/passes/03-self_ast_imperative/helpers.ml index 018219a78..6a0d90946 100644 --- a/src/passes/03-self_ast_imperative/helpers.ml +++ b/src/passes/03-self_ast_imperative/helpers.ml @@ -114,31 +114,37 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = self res body in ok res - - and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (_ , _ , cons, _) } -> ( - let%bind res = fold_expression f init match_nil in - let%bind res = fold_expression f res cons in - ok res - ) - | Match_option { match_none ; match_some = (_ , some, _) } -> ( - let%bind res = fold_expression f init match_none in - let%bind res = fold_expression f res some in - ok res - ) - | Match_tuple ((_ , e), _) -> ( - let%bind res = fold_expression f init e in - ok res - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init' ((_ , _) , e) = let%bind res' = fold_expression f init' e in ok res' in let%bind res = bind_fold_list aux init lst in ok res ) + | Match_list { match_nil ; match_cons = (_ , _ , cons) } -> ( + let%bind res = fold_expression f init match_nil in + let%bind res = fold_expression f res cons in + ok res + ) + | Match_option { match_none ; match_some = (_ , some) } -> ( + let%bind res = fold_expression f init match_none in + let%bind res = fold_expression f res some in + ok res + ) + | Match_record (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_tuple (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_variable (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) type exp_mapper = expression -> expression result type ty_exp_mapper = type_expression -> type_expression result @@ -284,27 +290,35 @@ and map_type_expression : ty_exp_mapper -> type_expression -> type_expression re and map_cases : exp_mapper -> matching_expr -> matching_expr result = fun f m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind match_nil = map_expression f match_nil in - let%bind cons = map_expression f cons in - ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons, ()) } - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind match_none = map_expression f match_none in - let%bind some = map_expression f some in - ok @@ Match_option { match_none ; match_some = (name , some, ()) } - ) - | Match_tuple ((names , e), _) -> ( - let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux ((a , b) , e) = let%bind e' = map_expression f e in ok ((a , b) , e') in let%bind lst' = bind_map_list aux lst in - ok @@ Match_variant (lst', ()) + ok @@ Match_variant lst' + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind match_nil = map_expression f match_nil in + let%bind cons = map_expression f cons in + ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons) } + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind match_none = map_expression f match_none in + let%bind some = map_expression f some in + ok @@ Match_option { match_none ; match_some = (name , some) } + ) + | Match_record (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_record (names, ty_opt, e') + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_tuple (names, ty_opt, e') + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_variable (name, ty_opt, e') ) and map_program : abs_mapper -> program -> program result = fun m p -> @@ -440,25 +454,33 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind (init, match_nil) = fold_map_expression f init match_nil in - let%bind (init, cons) = fold_map_expression f init cons in - ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons, ()) }) - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind (init, match_none) = fold_map_expression f init match_none in - let%bind (init, some) = fold_map_expression f init some in - ok @@ (init, Match_option { match_none ; match_some = (name , some, ()) }) - ) - | Match_tuple ((names , e), _) -> ( - let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init ((a , b) , e) = let%bind (init,e') = fold_map_expression f init e in ok (init, ((a , b) , e')) in let%bind (init,lst') = bind_fold_map_list aux init lst in - ok @@ (init, Match_variant (lst', ())) - ) + ok @@ (init, Match_variant lst') + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind (init, match_nil) = fold_map_expression f init match_nil in + let%bind (init, cons) = fold_map_expression f init cons in + ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons) }) + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind (init, match_none) = fold_map_expression f init match_none in + let%bind (init, some) = fold_map_expression f init some in + ok @@ (init, Match_option { match_none ; match_some = (name , some) }) + ) + | Match_record (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_record (names, ty_opt, e')) + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_tuple (names, ty_opt, e')) + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_variable (name, ty_opt, e')) + ) diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index 4017db346..b9604aedc 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -365,7 +365,7 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp match cases with | I.Match_option {match_none;match_some} -> let%bind match_none' = compile_expression match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr' = compile_expression expr in let env = Var.fresh () in let%bind ((_,free_vars_none), match_none) = repair_mutable_variable_in_matching match_none' [] env in @@ -374,7 +374,7 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp let expr = add_to_end expr (O.e_variable env) in let free_vars = List.sort_uniq Var.compare @@ free_vars_none @ free_vars_some in if (List.length free_vars != 0) then - let match_expr = O.e_matching matchee (O.Match_option {match_none; match_some=(n,expr,tv)}) in + let match_expr = O.e_matching matchee (O.Match_option {match_none; match_some=(n,expr)}) in let return_expr = fun expr -> O.e_let_in (env,None) false false (store_mutable_variable free_vars) @@ O.e_let_in (env,None) false false match_expr @@ @@ -382,19 +382,19 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp in ok @@ restore_mutable_variable return_expr free_vars env else - return @@ O.e_matching ~loc matchee @@ O.Match_option {match_none=match_none'; match_some=(n,expr',tv)} + return @@ O.e_matching ~loc matchee @@ O.Match_option {match_none=match_none'; match_some=(n,expr')} | I.Match_list {match_nil;match_cons} -> let%bind match_nil' = compile_expression match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr' = compile_expression expr in let env = Var.fresh () in let%bind ((_,free_vars_nil), match_nil) = repair_mutable_variable_in_matching match_nil' [] env in let%bind ((_,free_vars_cons), expr) = repair_mutable_variable_in_matching expr' [hd;tl] env in let match_nil = add_to_end match_nil (O.e_variable env) in - let expr = add_to_end expr (O.e_variable env) in + let expr = add_to_end expr (O.e_variable env) in let free_vars = List.sort_uniq Var.compare @@ free_vars_nil @ free_vars_cons in if (List.length free_vars != 0) then - let match_expr = O.e_matching matchee (O.Match_list {match_nil; match_cons=(hd,tl,expr,tv)}) in + let match_expr = O.e_matching matchee (O.Match_list {match_nil; match_cons=(hd,tl,expr)}) in let return_expr = fun expr -> O.e_let_in (env,None) false false (store_mutable_variable free_vars) @@ O.e_let_in (env,None) false false match_expr @@ @@ -402,11 +402,8 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp in ok @@ restore_mutable_variable return_expr free_vars env else - return @@ O.e_matching ~loc matchee @@ O.Match_list {match_nil=match_nil'; match_cons=(hd,tl,expr',tv)} - | I.Match_tuple ((lst,expr), tv) -> - let%bind expr = compile_expression expr in - return @@ O.e_matching ~loc matchee @@ O.Match_tuple ((lst,expr), tv) - | I.Match_variant (lst,tv) -> + return @@ O.e_matching ~loc matchee @@ O.Match_list {match_nil=match_nil'; match_cons=(hd,tl,expr')} + | I.Match_variant lst -> let env = Var.fresh () in let aux fv ((c,n),expr) = let%bind expr = compile_expression expr in @@ -418,10 +415,10 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp let free_vars = List.sort_uniq Var.compare @@ List.concat fv in if (List.length free_vars == 0) then ( let cases = List.map (fun case -> let (a,_,b) = case in (a,b)) cases in - return @@ O.e_matching ~loc matchee @@ O.Match_variant (cases,tv) + return @@ O.e_matching ~loc matchee @@ O.Match_variant cases ) else ( let cases = List.map (fun case -> let (a,b,_) = case in (a,b)) cases in - let match_expr = O.e_matching matchee @@ O.Match_variant (cases,tv) in + let match_expr = O.e_matching matchee @@ O.Match_variant cases in let return_expr = fun expr -> O.e_let_in (env,None) false false (store_mutable_variable free_vars) @@ O.e_let_in (env,None) false false match_expr @@ @@ -429,6 +426,18 @@ and compile_matching : I.matching -> Location.t -> (O.expression option -> O.exp in ok @@ restore_mutable_variable return_expr free_vars env ) + | I.Match_record (lst,ty_opt,expr) -> + let%bind expr = compile_expression expr in + let%bind ty_opt = bind_map_option (bind_map_list compile_type_expression) ty_opt in + return @@ O.e_matching ~loc matchee @@ O.Match_record (lst,ty_opt,expr) + | I.Match_tuple (lst,ty_opt,expr) -> + let%bind expr = compile_expression expr in + let%bind ty_opt = bind_map_option (bind_map_list compile_type_expression) ty_opt in + return @@ O.e_matching ~loc matchee @@ O.Match_tuple (lst,ty_opt,expr) + | I.Match_variable (lst,ty_opt,expr) -> + let%bind expr = compile_expression expr in + let%bind ty_opt = bind_map_option compile_type_expression ty_opt in + return @@ O.e_matching ~loc matchee @@ O.Match_variable (lst,ty_opt,expr) and compile_while I.{condition;body} = let env_rec = Var.fresh () in @@ -707,22 +716,31 @@ and uncompile_matching : O.matching_expr -> I.matching_expr result = match m with | O.Match_list {match_nil;match_cons} -> let%bind match_nil = uncompile_expression' match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr = uncompile_expression' expr in - ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr,tv)} + ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr)} | O.Match_option {match_none;match_some} -> let%bind match_none = uncompile_expression' match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr = uncompile_expression' expr in - ok @@ I.Match_option {match_none; match_some=(n,expr,tv)} - | O.Match_tuple ((lst,expr), tv) -> - let%bind expr = uncompile_expression' expr in - ok @@ O.Match_tuple ((lst,expr), tv) - | O.Match_variant (lst,tv) -> + ok @@ I.Match_option {match_none; match_some=(n,expr)} + | O.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> let%bind expr = uncompile_expression' expr in ok @@ ((c,n),expr) ) lst in - ok @@ I.Match_variant (lst,tv) + ok @@ I.Match_variant lst + | O.Match_record (lst,ty_opt,expr) -> + let%bind expr = uncompile_expression' expr in + let%bind ty_opt = bind_map_option (bind_map_list uncompile_type_expression) ty_opt in + ok @@ I.Match_record (lst,ty_opt,expr) + | O.Match_tuple (lst,ty_opt,expr) -> + let%bind expr = uncompile_expression' expr in + let%bind ty_opt = bind_map_option (bind_map_list uncompile_type_expression) ty_opt in + ok @@ I.Match_tuple (lst,ty_opt,expr) + | O.Match_variable (lst,ty_opt,expr) -> + let%bind expr = uncompile_expression' expr in + let%bind ty_opt = bind_map_option uncompile_type_expression ty_opt in + ok @@ I.Match_variable (lst,ty_opt,expr) diff --git a/src/passes/05-self_ast_sugar/helpers.ml b/src/passes/05-self_ast_sugar/helpers.ml index 953a8910f..bb8b37fb7 100644 --- a/src/passes/05-self_ast_sugar/helpers.ml +++ b/src/passes/05-self_ast_sugar/helpers.ml @@ -100,30 +100,37 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini ok res ) - and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (_ , _ , cons, _) } -> ( - let%bind res = fold_expression f init match_nil in - let%bind res = fold_expression f res cons in - ok res - ) - | Match_option { match_none ; match_some = (_ , some, _) } -> ( - let%bind res = fold_expression f init match_none in - let%bind res = fold_expression f res some in - ok res - ) - | Match_tuple ((_ , e), _) -> ( - let%bind res = fold_expression f init e in - ok res - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init' ((_ , _) , e) = let%bind res' = fold_expression f init' e in ok res' in let%bind res = bind_fold_list aux init lst in ok res ) + | Match_list { match_nil ; match_cons = (_ , _ , cons) } -> ( + let%bind res = fold_expression f init match_nil in + let%bind res = fold_expression f res cons in + ok res + ) + | Match_option { match_none ; match_some = (_ , some) } -> ( + let%bind res = fold_expression f init match_none in + let%bind res = fold_expression f res some in + ok res + ) + | Match_record (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_tuple (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) + | Match_variable (_, _, e) -> ( + let%bind res = fold_expression f init e in + ok res + ) type exp_mapper = expression -> expression result type ty_exp_mapper = type_expression -> type_expression result @@ -250,27 +257,35 @@ and map_type_expression : ty_exp_mapper -> type_expression -> type_expression re and map_cases : exp_mapper -> matching_expr -> matching_expr result = fun f m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind match_nil = map_expression f match_nil in - let%bind cons = map_expression f cons in - ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons, ()) } - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind match_none = map_expression f match_none in - let%bind some = map_expression f some in - ok @@ Match_option { match_none ; match_some = (name , some, ()) } - ) - | Match_tuple ((names , e), _) -> ( - let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux ((a , b) , e) = let%bind e' = map_expression f e in ok ((a , b) , e') in let%bind lst' = bind_map_list aux lst in - ok @@ Match_variant (lst', ()) + ok @@ Match_variant lst' + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind match_nil = map_expression f match_nil in + let%bind cons = map_expression f cons in + ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons) } + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind match_none = map_expression f match_none in + let%bind some = map_expression f some in + ok @@ Match_option { match_none ; match_some = (name , some) } + ) + | Match_record (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_record (names, ty_opt, e') + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_tuple (names, ty_opt, e') + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind e' = map_expression f e in + ok @@ Match_variable (name, ty_opt, e') ) and map_program : abs_mapper -> program -> program result = fun m p -> @@ -389,28 +404,35 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres ok (res, return @@ E_sequence {expr1;expr2}) ) | E_literal _ | E_variable _ | E_skip as e' -> ok (init', return e') - and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( - let%bind (init, match_nil) = fold_map_expression f init match_nil in - let%bind (init, cons) = fold_map_expression f init cons in - ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons, ()) }) - ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( - let%bind (init, match_none) = fold_map_expression f init match_none in - let%bind (init, some) = fold_map_expression f init some in - ok @@ (init, Match_option { match_none ; match_some = (name , some, ()) }) - ) - | Match_tuple ((names , e), _) -> ( - let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init ((a , b) , e) = let%bind (init,e') = fold_map_expression f init e in ok (init, ((a , b) , e')) in let%bind (init,lst') = bind_fold_map_list aux init lst in - ok @@ (init, Match_variant (lst', ())) - ) + ok @@ (init, Match_variant lst') + ) + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( + let%bind (init, match_nil) = fold_map_expression f init match_nil in + let%bind (init, cons) = fold_map_expression f init cons in + ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons) }) + ) + | Match_option { match_none ; match_some = (name , some) } -> ( + let%bind (init, match_none) = fold_map_expression f init match_none in + let%bind (init, some) = fold_map_expression f init some in + ok @@ (init, Match_option { match_none ; match_some = (name , some) }) + ) + | Match_record (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_record (names, ty_opt, e')) + ) + | Match_tuple (names, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_tuple (names, ty_opt, e')) + ) + | Match_variable (name, ty_opt, e) -> ( + let%bind (init, e') = fold_map_expression f init e in + ok @@ (init, Match_variable (name, ty_opt, e')) + ) diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index 3a106a3ce..ba6e8f441 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -76,8 +76,7 @@ let rec compile_expression : I.expression -> O.expression result = return @@ O.E_constructor {constructor;element} | I.E_matching {matchee; cases} -> let%bind matchee = compile_expression matchee in - let%bind cases = compile_matching cases in - return @@ O.E_matching {matchee;cases} + compile_matching e.location matchee cases | I.E_record record -> let record = I.LMap.to_kv_list record in let%bind record = @@ -137,7 +136,7 @@ let rec compile_expression : I.expression -> O.expression result = let%bind matchee = compile_expression condition in let%bind match_true = compile_expression then_clause in let%bind match_false = compile_expression else_clause in - return @@ O.E_matching {matchee; cases=Match_variant ([((Constructor "true", Var.of_name "_"),match_true);((Constructor "false", Var.of_name "_"), match_false)],())} + return @@ O.E_matching {matchee; cases=Match_variant ([((Constructor "true", Var.of_name "_"),match_true);((Constructor "false", Var.of_name "_"), match_false)])} | I.E_sequence {expr1; expr2} -> let%bind expr1 = compile_expression expr1 in let%bind expr2 = compile_expression expr2 in @@ -166,30 +165,64 @@ and compile_lambda : I.lambda -> O.lambda result = let%bind output_type = bind_map_option idle_type_expression output_type in let%bind result = compile_expression result in ok @@ O.{binder;input_type;output_type;result} -and compile_matching : I.matching_expr -> O.matching_expr result = - fun m -> +and compile_matching : Location.t -> O.expression -> I.matching_expr -> O.expression result = + fun loc e m -> match m with | I.Match_list {match_nil;match_cons} -> let%bind match_nil = compile_expression match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr = compile_expression expr in - ok @@ O.Match_list {match_nil; match_cons=(hd,tl,expr,tv)} + ok @@ O.e_matching ~loc e @@ O.Match_list {match_nil; match_cons=(hd,tl,expr)} | I.Match_option {match_none;match_some} -> let%bind match_none = compile_expression match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr = compile_expression expr in - ok @@ O.Match_option {match_none; match_some=(n,expr,tv)} - | I.Match_tuple ((lst,expr), tv) -> - let%bind expr = compile_expression expr in - ok @@ O.Match_tuple ((lst,expr), tv) - | I.Match_variant (lst,tv) -> + ok @@ O.e_matching ~loc e @@ O.Match_option {match_none; match_some=(n,expr)} + | I.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> let%bind expr = compile_expression expr in ok @@ ((c,n),expr) ) lst in - ok @@ O.Match_variant (lst,tv) + ok @@ O.e_matching ~loc e @@ O.Match_variant lst + | I.Match_record (fields,field_types, expr) -> + let combine fields field_types = + match field_types with + Some ft -> List.combine fields @@ List.map (fun x -> Some x) ft + | None -> List.map (fun x -> (x, None)) fields + in + let%bind next = compile_expression expr in + let%bind field_types = bind_map_option (bind_map_list idle_type_expression) field_types in + let aux ((index,expr) : int * _ ) ((field,name): (O.label * (O.expression_variable * O.type_expression option))) = + let f = fun expr' -> O.e_let_in name false (O.e_record_accessor e field) expr' in + (index+1, fun expr' -> expr (f expr')) + in + let (_,header) = List.fold_left aux (0, fun e -> e) @@ + List.map (fun ((a,b),c) -> (a,(b,c))) @@ + combine fields field_types + in + ok @@ header next + | I.Match_tuple (fields,field_types, expr) -> + let combine fields field_types = + match field_types with + Some ft -> List.combine fields @@ List.map (fun x -> Some x) ft + | None -> List.map (fun x -> (x, None)) fields + in + let%bind next = compile_expression expr in + let%bind field_types = bind_map_option (bind_map_list idle_type_expression) field_types in + let aux ((index,expr) : int * _ ) (field: O.expression_variable * O.type_expression option) = + let f = fun expr' -> O.e_let_in field false (O.e_record_accessor e (Label (string_of_int index))) expr' in + (index+1, fun expr' -> expr (f expr')) + in + let (_,header) = List.fold_left aux (0, fun e -> e) @@ + combine fields field_types + in + ok @@ header next + | I.Match_variable (a, ty_opt, expr) -> + let%bind ty_opt = bind_map_option idle_type_expression ty_opt in + let%bind expr = compile_expression expr in + ok @@ O.e_let_in (a,ty_opt) false e expr let compile_declaration : I.declaration Location.wrap -> _ = fun {wrap_content=declaration;location} -> @@ -313,22 +346,19 @@ and uncompile_matching : O.matching_expr -> I.matching_expr result = match m with | O.Match_list {match_nil;match_cons} -> let%bind match_nil = uncompile_expression match_nil in - let (hd,tl,expr,tv) = match_cons in + let (hd,tl,expr) = match_cons in let%bind expr = uncompile_expression expr in - ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr,tv)} + ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr)} | O.Match_option {match_none;match_some} -> let%bind match_none = uncompile_expression match_none in - let (n,expr,tv) = match_some in + let (n,expr) = match_some in let%bind expr = uncompile_expression expr in - ok @@ I.Match_option {match_none; match_some=(n,expr,tv)} - | O.Match_tuple ((lst,expr), tv) -> - let%bind expr = uncompile_expression expr in - ok @@ O.Match_tuple ((lst,expr), tv) - | O.Match_variant (lst,tv) -> + ok @@ I.Match_option {match_none; match_some=(n,expr)} + | O.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> let%bind expr = uncompile_expression expr in ok @@ ((c,n),expr) ) lst in - ok @@ I.Match_variant (lst,tv) + ok @@ I.Match_variant lst diff --git a/src/passes/07-self_ast_core/helpers.ml b/src/passes/07-self_ast_core/helpers.ml index d4311211e..572da1832 100644 --- a/src/passes/07-self_ast_core/helpers.ml +++ b/src/passes/07-self_ast_core/helpers.ml @@ -72,21 +72,17 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (_ , _ , cons, _) } -> ( + | Match_list { match_nil ; match_cons = (_ , _ , cons) } -> ( let%bind res = fold_expression f init match_nil in let%bind res = fold_expression f res cons in ok res ) - | Match_option { match_none ; match_some = (_ , some, _) } -> ( + | Match_option { match_none ; match_some = (_ , some) } -> ( let%bind res = fold_expression f init match_none in let%bind res = fold_expression f res some in ok res ) - | Match_tuple ((_ , e), _) -> ( - let%bind res = fold_expression f init e in - ok res - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init' ((_ , _) , e) = let%bind res' = fold_expression f init' e in ok res' in @@ -174,27 +170,23 @@ and map_type_expression : ty_exp_mapper -> type_expression -> type_expression re and map_cases : exp_mapper -> matching_expr -> matching_expr result = fun f m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( let%bind match_nil = map_expression f match_nil in let%bind cons = map_expression f cons in - ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons, ()) } + ok @@ Match_list { match_nil ; match_cons = (hd , tl , cons) } ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( + | Match_option { match_none ; match_some = (name , some) } -> ( let%bind match_none = map_expression f match_none in let%bind some = map_expression f some in - ok @@ Match_option { match_none ; match_some = (name , some, ()) } + ok @@ Match_option { match_none ; match_some = (name , some) } ) - | Match_tuple ((names , e), _) -> ( - let%bind e' = map_expression f e in - ok @@ Match_tuple ((names , e'), []) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux ((a , b) , e) = let%bind e' = map_expression f e in ok ((a , b) , e') in let%bind lst' = bind_map_list aux lst in - ok @@ Match_variant (lst', ()) + ok @@ Match_variant lst' ) and map_program : abs_mapper -> program -> program result = fun m p -> @@ -274,25 +266,21 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres and fold_map_cases : 'a fold_mapper -> 'a -> matching_expr -> ('a * matching_expr) result = fun f init m -> match m with - | Match_list { match_nil ; match_cons = (hd , tl , cons, _) } -> ( + | Match_list { match_nil ; match_cons = (hd , tl , cons) } -> ( let%bind (init, match_nil) = fold_map_expression f init match_nil in let%bind (init, cons) = fold_map_expression f init cons in - ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons, ()) }) + ok @@ (init, Match_list { match_nil ; match_cons = (hd , tl , cons) }) ) - | Match_option { match_none ; match_some = (name , some, _) } -> ( + | Match_option { match_none ; match_some = (name , some) } -> ( let%bind (init, match_none) = fold_map_expression f init match_none in let%bind (init, some) = fold_map_expression f init some in - ok @@ (init, Match_option { match_none ; match_some = (name , some, ()) }) + ok @@ (init, Match_option { match_none ; match_some = (name , some) }) ) - | Match_tuple ((names , e), _) -> ( - let%bind (init, e') = fold_map_expression f init e in - ok @@ (init, Match_tuple ((names , e'), [])) - ) - | Match_variant (lst, _) -> ( + | Match_variant lst -> ( let aux init ((a , b) , e) = let%bind (init,e') = fold_map_expression f init e in ok (init, ((a , b) , e')) in let%bind (init,lst') = bind_fold_map_list aux init lst in - ok @@ (init, Match_variant (lst', ())) + ok @@ (init, Match_variant lst') ) diff --git a/src/passes/08-typer-new/todo_use_fold_generator.ml b/src/passes/08-typer-new/todo_use_fold_generator.ml index 22346cbf1..9580cc00c 100644 --- a/src/passes/08-typer-new/todo_use_fold_generator.ml +++ b/src/passes/08-typer-new/todo_use_fold_generator.ml @@ -3,6 +3,7 @@ module O = Ast_typed let convert_constructor' (I.Constructor c) = O.Constructor c let convert_label (I.Label c) = O.Label c + let convert_type_constant : I.type_constant -> O.type_constant = function | TC_unit -> TC_unit | TC_string -> TC_string diff --git a/src/passes/08-typer-new/typer.ml b/src/passes/08-typer-new/typer.ml index cd2c3ce12..59a2dff94 100644 --- a/src/passes/08-typer-new/typer.ml +++ b/src/passes/08-typer-new/typer.ml @@ -40,7 +40,7 @@ and type_match : environment -> O'.typer_state -> O.type_expression -> I.matchin trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_option t in let%bind (match_none , state') = type_expression e state match_none in - let (opt, b, _) = match_some in + let (opt, b) = match_some in let e' = Environment.add_ez_binder opt tv e in let%bind (body , state'') = type_expression e' state' b in ok (O.Match_option {match_none ; match_some = { opt; body; tv}} , state'') @@ -49,23 +49,12 @@ and type_match : environment -> O'.typer_state -> O.type_expression -> I.matchin trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_list t in let%bind (match_nil , state') = type_expression e state match_nil in - let (hd, tl, b, _) = match_cons in + let (hd, tl, b) = match_cons in let e' = Environment.add_ez_binder hd t_elt e in let e' = Environment.add_ez_binder tl t e' in let%bind (body , state'') = type_expression e' state' b in ok (O.Match_list {match_nil ; match_cons = {hd; tl; body;tv=t}} , state'') - | Match_tuple ((vars, b),_) -> - let%bind tvs = - trace_strong (match_error ~expected:i ~actual:t loc) - @@ get_t_tuple t in - let%bind lst' = - generic_try (match_tuple_wrong_arity tvs vars loc) - @@ (fun () -> List.combine vars tvs) in - let aux prev (name, tv) = Environment.add_ez_binder name tv prev in - let e' = List.fold_left aux e lst' in - let%bind (body , state') = type_expression e' state b in - ok (O.Match_tuple {vars ; body ; tvs} , state') - | Match_variant (lst,_) -> + | Match_variant lst -> let%bind variant_opt = let aux acc ((constructor_name , _) , _) = let%bind (_ , variant) = @@ -362,7 +351,6 @@ and type_expression : environment -> O'.typer_state -> ?tv_opt:O.type_expression match cur with | Match_list { match_nil ; match_cons = { hd=_ ; tl=_ ; body ; tv=_} } -> [ match_nil ; body ] | Match_option { match_none ; match_some = {opt=_; body; tv=_} } -> [ match_none ; body ] - | Match_tuple { vars=_ ; body ; tvs=_ } -> [ body ] | Match_variant { cases ; tv=_ } -> List.map (fun ({constructor=_; pattern=_; body} : O.matching_content_case) -> body) cases in List.map get_type_expression @@ aux m' in let%bind () = match tvs with diff --git a/src/passes/08-typer-new/untyper.ml b/src/passes/08-typer-new/untyper.ml index 91d554664..da478365d 100644 --- a/src/passes/08-typer-new/untyper.ml +++ b/src/passes/08-typer-new/untyper.ml @@ -264,8 +264,8 @@ let rec untype_expression (e:O.expression) : (I.expression) result = return (e_record @@ LMap.of_list r') | E_record_accessor {record; path} -> let%bind r' = untype_expression record in - let Label s = path in - return (e_record_accessor r' s) + let Label path = path in + return (e_record_accessor r' (Label path)) | E_record_update {record; path; update} -> let%bind r' = untype_expression record in let%bind e = untype_expression update in @@ -299,22 +299,19 @@ and untype_lambda ty {binder; result} : I.lambda result = and untype_matching : (O.expression -> I.expression result) -> O.matching_expr -> I.matching_expr result = fun f m -> let open I in match m with - | Match_tuple { vars ; body ; tvs=_ } -> - let%bind b = f body in - ok @@ I.Match_tuple ((vars, b),[]) | Match_option {match_none ; match_some = {opt; body;tv=_}} -> let%bind match_none = f match_none in let%bind some = f body in - let match_some = opt, some, () in + let match_some = opt, some in ok @@ Match_option {match_none ; match_some} | Match_list {match_nil ; match_cons = {hd;tl;body;tv=_}} -> let%bind match_nil = f match_nil in let%bind cons = f body in - let match_cons = hd , tl , cons, () in + let match_cons = hd , tl , cons in ok @@ Match_list {match_nil ; match_cons} | Match_variant { cases ; tv=_ } -> let aux ({constructor;pattern;body} : O.matching_content_case) = let%bind body = f body in ok ((unconvert_constructor' constructor,pattern),body) in let%bind lst' = bind_map_list aux cases in - ok @@ Match_variant (lst',()) + ok @@ Match_variant lst' diff --git a/src/passes/08-typer-old/typer.ml b/src/passes/08-typer-old/typer.ml index 1dc92eb28..f60c868ef 100644 --- a/src/passes/08-typer-old/typer.ml +++ b/src/passes/08-typer-old/typer.ml @@ -125,17 +125,6 @@ module Errors = struct ] in error ~data title message () - - let match_tuple_wrong_arity (expected:'a list) (actual:'b list) (loc:Location.t) () = - let title () = "matching tuple of different size" in - let message () = "" in - let data = [ - ("expected" , fun () -> Format.asprintf "%d" (List.length expected)) ; - ("actual" , fun () -> Format.asprintf "%d" (List.length actual)) ; - ("location" , fun () -> Format.asprintf "%a" Location.pp loc) - ] in - error ~data title message () - (* TODO: this should be a trace_info? *) let program_error (p:I.program) () = let message () = "" in @@ -528,7 +517,7 @@ and type_match : (environment -> I.expression -> O.expression result) -> environ trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_option t in let%bind match_none = f e match_none in - let (opt, b,_) = match_some in + let (opt, b) = match_some in let e' = Environment.add_ez_binder opt tv e in let%bind body = f e' b in ok (O.Match_option {match_none ; match_some = {opt; body; tv}}) @@ -537,23 +526,12 @@ and type_match : (environment -> I.expression -> O.expression result) -> environ trace_strong (match_error ~expected:i ~actual:t loc) @@ get_t_list t in let%bind match_nil = f e match_nil in - let (hd, tl, b,_) = match_cons in + let (hd, tl, b) = match_cons in let e' = Environment.add_ez_binder hd t_elt e in let e' = Environment.add_ez_binder tl t e' in let%bind body = f e' b in ok (O.Match_list {match_nil ; match_cons = {hd; tl; body; tv=t_elt}}) - | Match_tuple ((vars, b),_) -> - let%bind tvs = - trace_strong (match_error ~expected:i ~actual:t loc) - @@ get_t_tuple t in - let%bind vars' = - generic_try (match_tuple_wrong_arity tvs vars loc) - @@ (fun () -> List.combine vars tvs) in - let aux prev (name, tv) = Environment.add_ez_binder name tv prev in - let e' = List.fold_left aux e vars' in - let%bind body = f e' b in - ok (O.Match_tuple { vars ; body ; tvs}) - | Match_variant (lst,_) -> + | Match_variant lst -> let%bind variant_cases' = trace (match_error ~expected:i ~actual:t loc) @@ Ast_typed.Combinators.get_t_sum t in @@ -937,7 +915,6 @@ and type_expression' : environment -> ?tv_opt:O.type_expression -> I.expression match cur with | Match_list { match_nil ; match_cons = {hd=_ ; tl=_ ; body ; tv=_} } -> [ match_nil ; body ] | Match_option { match_none ; match_some = {opt=_ ; body ; tv=_ } } -> [ match_none ; body ] - | Match_tuple {vars=_;body;tvs=_} -> [ body ] | Match_variant {cases; tv=_} -> List.map (fun (c : O.matching_content_case) -> c.body) cases in List.map get_type_expression @@ aux m' in let aux prec cur = @@ -1081,7 +1058,7 @@ let rec untype_expression (e:O.expression) : (I.expression) result = | E_record_accessor {record; path} -> let%bind r' = untype_expression record in let Label s = path in - return (e_record_accessor r' s) + return (e_record_accessor r' (Label s)) | E_record_update {record=r; path=O.Label l; update=e} -> let%bind r' = untype_expression r in let%bind e = untype_expression e in @@ -1104,22 +1081,19 @@ let rec untype_expression (e:O.expression) : (I.expression) result = and untype_matching : (O.expression -> I.expression result) -> O.matching_expr -> I.matching_expr result = fun f m -> let open I in match m with - | Match_tuple {vars; body;tvs=_} -> - let%bind b = f body in - ok @@ I.Match_tuple ((vars, b),[]) | Match_option {match_none ; match_some = {opt; body ; tv=_}} -> let%bind match_none = f match_none in let%bind some = f body in - let match_some = opt, some, () in + let match_some = opt, some in ok @@ Match_option {match_none ; match_some} | Match_list {match_nil ; match_cons = {hd ; tl ; body ; tv=_}} -> let%bind match_nil = f match_nil in let%bind cons = f body in - let match_cons = hd , tl , cons, () in + let match_cons = hd , tl , cons in ok @@ Match_list {match_nil ; match_cons} | Match_variant {cases;tv=_} -> let aux ({constructor;pattern;body} : O.matching_content_case) = let%bind c' = f body in ok ((unconvert_constructor' constructor,pattern),c') in let%bind lst' = bind_map_list aux cases in - ok @@ Match_variant (lst',()) + ok @@ Match_variant lst' diff --git a/src/passes/09-self_ast_typed/helpers.ml b/src/passes/09-self_ast_typed/helpers.ml index a63a2893a..a22518a97 100644 --- a/src/passes/09-self_ast_typed/helpers.ml +++ b/src/passes/09-self_ast_typed/helpers.ml @@ -63,10 +63,6 @@ and fold_cases : 'a . 'a folder -> 'a -> matching_expr -> 'a result = fun f init let%bind res = fold_expression f res body in ok res ) - | Match_tuple {vars=_ ; body; tvs=_} -> ( - let%bind res = fold_expression f init body in - ok res - ) | Match_variant {cases;tv=_} -> ( let aux init' {constructor=_; pattern=_ ; body} = let%bind res' = fold_expression f init' body in @@ -140,10 +136,6 @@ and map_cases : mapper -> matching_expr -> matching_expr result = fun f m -> let%bind body = map_expression f body in ok @@ Match_option { match_none ; match_some = { opt ; body ; tv } } ) - | Match_tuple { vars ; body ; tvs } -> ( - let%bind body = map_expression f body in - ok @@ Match_tuple { vars ; body ; tvs } - ) | Match_variant {cases;tv} -> ( let aux { constructor ; pattern ; body } = let%bind body = map_expression f body in @@ -231,10 +223,6 @@ and fold_map_cases : 'a . 'a fold_mapper -> 'a -> matching_expr -> ('a * matchin let%bind (init, body) = fold_map_expression f init body in ok @@ (init, Match_option { match_none ; match_some = { opt ; body ; tv } }) ) - | Match_tuple { vars ; body ; tvs } -> ( - let%bind (init, body) = fold_map_expression f init body in - ok @@ (init, Match_tuple {vars ; body ; tvs }) - ) | Match_variant {cases ; tv} -> ( let aux init {constructor ; pattern ; body} = let%bind (init, body) = fold_map_expression f init body in diff --git a/src/passes/09-self_ast_typed/tail_recursion.ml b/src/passes/09-self_ast_typed/tail_recursion.ml index ef4098c36..ce9e3bd27 100644 --- a/src/passes/09-self_ast_typed/tail_recursion.ml +++ b/src/passes/09-self_ast_typed/tail_recursion.ml @@ -67,9 +67,6 @@ and check_recursive_call_in_matching = fun n final_path c -> let%bind _ = check_recursive_call n final_path match_none in let%bind _ = check_recursive_call n final_path body in ok () - | Match_tuple {vars=_;body;tvs=_} -> - let%bind _ = check_recursive_call n final_path body in - ok () | Match_variant {cases;tv=_} -> let aux {constructor=_; pattern=_; body} = let%bind _ = check_recursive_call n final_path body in diff --git a/src/passes/10-transpiler/transpiler.ml b/src/passes/10-transpiler/transpiler.ml index 5ea4ea43f..6f643098b 100644 --- a/src/passes/10-transpiler/transpiler.ml +++ b/src/passes/10-transpiler/transpiler.ml @@ -32,16 +32,6 @@ them. please report this to the developers." in let content () = Format.asprintf "%a" Var.pp name in error title content - let row_loc l = ("location" , fun () -> Format.asprintf "%a" Location.pp l) - - let unsupported_pattern_matching kind location = - let title () = "unsupported pattern-matching" in - let content () = Format.asprintf "%s patterns aren't supported yet" kind in - let data = [ - row_loc location ; - ] in - error ~data title content - let not_functional_main location = let title () = "not functional main" in let content () = "main should be a function" in @@ -615,7 +605,6 @@ and transpile_annotated_expression (ae:AST.expression) : expression result = trace_strong (corner_case ~loc:__LOC__ "building constructor") @@ aux expr' tree'' ) - | AST.Match_tuple _ -> fail @@ unsupported_pattern_matching "tuple" ae.location ) and transpile_lambda l (input_type , output_type) = @@ -739,7 +728,6 @@ and transpile_recursive {fun_name; fun_type; lambda} = trace_strong (corner_case ~loc:__LOC__ "building constructor") @@ aux expr tree'' ) - | AST.Match_tuple _ -> failwith "match_tuple not supported" in let%bind fun_type = transpile_type fun_type in let%bind (input_type,output_type) = get_t_function fun_type in diff --git a/src/stages/1-ast_imperative/PP.ml b/src/stages/1-ast_imperative/PP.ml index 986c200ba..03fa88165 100644 --- a/src/stages/1-ast_imperative/PP.ml +++ b/src/stages/1-ast_imperative/PP.ml @@ -184,27 +184,35 @@ and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * ex fun f ppf ((c,n),a) -> fprintf ppf "| %a %a -> %a" constructor c expression_variable n f a -and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = +and matching : (formatter -> expression -> unit) -> formatter -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple ((lst, b), _) -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) lst f b - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) lst - | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> + | Match_list {match_nil ; match_cons = (hd, tl, match_cons)} -> fprintf ppf "| Nil -> %a @.| %a :: %a -> %a" f match_nil expression_variable hd expression_variable tl f match_cons - | Match_option {match_none ; match_some = (some, match_some, _)} -> + | Match_option {match_none ; match_some = (some, match_some)} -> fprintf ppf "| None -> %a @.| Some %a -> %a" f match_none expression_variable some f match_some + | Match_tuple (lst, _,b) -> + fprintf ppf "(%a) -> %a" (list_sep_d expression_variable) lst f b + | Match_record (lst, _,b) -> + fprintf ppf "{%a} -> %a" (list_sep_d (fun ppf (a,b) -> fprintf ppf "%a = %a" label a expression_variable b)) lst f b + | Match_variable (a, _,b) -> + fprintf ppf "%a -> %a" expression_variable a f b (* Shows the type expected for the matched value *) and matching_type ppf m = match m with - | Match_tuple _ -> - fprintf ppf "tuple" - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "variant %a" (list_sep matching_variant_case_type (tag "@.")) lst | Match_list _ -> fprintf ppf "list" | Match_option _ -> fprintf ppf "option" + | Match_tuple _ -> + fprintf ppf "tuple" + | Match_record _ -> + fprintf ppf "record" + | Match_variable _ -> + fprintf ppf "variable" and matching_variant_case_type ppf ((c,n),_a) = fprintf ppf "| %a %a" constructor c expression_variable n diff --git a/src/stages/1-ast_imperative/combinators.ml b/src/stages/1-ast_imperative/combinators.ml index aaf589c9a..c30f5b433 100644 --- a/src/stages/1-ast_imperative/combinators.ml +++ b/src/stages/1-ast_imperative/combinators.ml @@ -148,9 +148,14 @@ let e_bool ?loc b : expression = e_constructor ?loc (string_of_bool b) (e_unit let ez_match_variant (lst : ((string * string) * 'a) list) = let lst = List.map (fun ((c,n),a) -> ((Constructor c, Var.of_name n), a) ) lst in - Match_variant (lst,()) + Match_variant lst let e_matching_variant ?loc a (lst : ((string * string)* 'a) list) = e_matching ?loc a (ez_match_variant lst) + +let e_matching_record ?loc m lst ty_opt expr = e_matching ?loc m @@ Match_record (lst,ty_opt, expr) +let e_matching_tuple ?loc m lst ty_opt expr = e_matching ?loc m @@ Match_tuple (lst,ty_opt, expr) +let e_matching_variable ?loc m var ty_opt expr = e_matching ?loc m @@ Match_variable (var,ty_opt, expr) + let e_record_ez ?loc (lst : (string * expr) list) : expression = let map = List.fold_left (fun m (x, y) -> LMap.add (Label x) y m) LMap.empty lst in make_e ?loc @@ E_record map diff --git a/src/stages/1-ast_imperative/combinators.mli b/src/stages/1-ast_imperative/combinators.mli index 0bb23e660..ac835c221 100644 --- a/src/stages/1-ast_imperative/combinators.mli +++ b/src/stages/1-ast_imperative/combinators.mli @@ -98,8 +98,11 @@ val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option val e_constructor : ?loc:Location.t -> string -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression -val ez_match_variant : ((string * string ) * 'a ) list -> ('a,unit) matching_content +val ez_match_variant : ((string * string ) * expression) list -> matching_expr val e_matching_variant : ?loc:Location.t -> expression -> ((string * string) * expression) list -> expression +val e_matching_record : ?loc:Location.t -> expression -> (label * expression_variable) list -> type_expression list option -> expression -> expression +val e_matching_tuple : ?loc:Location.t -> expression -> expression_variable list -> type_expression list option -> expression -> expression +val e_matching_variable: ?loc:Location.t -> expression -> expression_variable -> type_expression option -> expression -> expression val e_record : ?loc:Location.t -> expr Map.String.t -> expression val e_record_ez : ?loc:Location.t -> ( string * expr ) list -> expression diff --git a/src/stages/1-ast_imperative/types.ml b/src/stages/1-ast_imperative/types.ml index 877a7cf39..f932904d5 100644 --- a/src/stages/1-ast_imperative/types.ml +++ b/src/stages/1-ast_imperative/types.ml @@ -110,7 +110,20 @@ and record_update = {record: expression; path: label ; update: expression} -and matching_expr = (expr,unit) matching_content +and matching_expr = + | Match_variant of ((constructor' * expression_variable) * expression) list + | Match_list of { + match_nil : expression ; + match_cons : expression_variable * expression_variable * expression ; + } + | Match_option of { + match_none : expression ; + match_some : expression_variable * expression ; + } + | Match_tuple of expression_variable list * type_expression list option * expression + | Match_record of (label * expression_variable) list * type_expression list option * expression + | Match_variable of expression_variable * type_expression option * expression + and matching = { matchee: expression ; cases: matching_expr diff --git a/src/stages/2-ast_sugar/PP.ml b/src/stages/2-ast_sugar/PP.ml index cb48c7ec0..49b3404ea 100644 --- a/src/stages/2-ast_sugar/PP.ml +++ b/src/stages/2-ast_sugar/PP.ml @@ -150,27 +150,35 @@ and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * ex fun f ppf ((c,n),a) -> fprintf ppf "| %a %a -> %a" constructor c expression_variable n f a -and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = +and matching : (formatter -> expression -> unit) -> formatter -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple ((lst, b), _) -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) lst f b - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) lst - | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> + | Match_list {match_nil ; match_cons = (hd, tl, match_cons)} -> fprintf ppf "| Nil -> %a @.| %a :: %a -> %a" f match_nil expression_variable hd expression_variable tl f match_cons - | Match_option {match_none ; match_some = (some, match_some, _)} -> + | Match_option {match_none ; match_some = (some, match_some)} -> fprintf ppf "| None -> %a @.| Some %a -> %a" f match_none expression_variable some f match_some + | Match_tuple (lst, _,b) -> + fprintf ppf "(%a) -> %a" (list_sep_d expression_variable) lst f b + | Match_record (lst, _,b) -> + fprintf ppf "{%a} -> %a" (list_sep_d (fun ppf (a,b) -> fprintf ppf "%a = %a" label a expression_variable b)) lst f b + | Match_variable (a, _,b) -> + fprintf ppf "%a -> %a" expression_variable a f b (* Shows the type expected for the matched value *) and matching_type ppf m = match m with - | Match_tuple _ -> - fprintf ppf "tuple" - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "variant %a" (list_sep matching_variant_case_type (tag "@.")) lst | Match_list _ -> fprintf ppf "list" | Match_option _ -> fprintf ppf "option" + | Match_tuple _ -> + fprintf ppf "tuple" + | Match_record _ -> + fprintf ppf "record" + | Match_variable _ -> + fprintf ppf "variable" and matching_variant_case_type ppf ((c,n),_a) = fprintf ppf "| %a %a" constructor c expression_variable n diff --git a/src/stages/2-ast_sugar/types.ml b/src/stages/2-ast_sugar/types.ml index bdf2f660b..f62904220 100644 --- a/src/stages/2-ast_sugar/types.ml +++ b/src/stages/2-ast_sugar/types.ml @@ -106,7 +106,20 @@ and constructor = {constructor: constructor'; element: expression} and record_accessor = {record: expression; path: label} and record_update = {record: expression; path: label ; update: expression} -and matching_expr = (expr,unit) matching_content +and matching_expr = + | Match_variant of ((constructor' * expression_variable) * expression) list + | Match_list of { + match_nil : expression ; + match_cons : expression_variable * expression_variable * expression ; + } + | Match_option of { + match_none : expression ; + match_some : expression_variable * expression ; + } + | Match_tuple of expression_variable list * type_expression list option * expression + | Match_record of (label * expression_variable) list * type_expression list option * expression + | Match_variable of expression_variable * type_expression option * expression + and matching = { matchee: expression ; cases: matching_expr diff --git a/src/stages/3-ast_core/PP.ml b/src/stages/3-ast_core/PP.ml index cd269dcd6..465107275 100644 --- a/src/stages/3-ast_core/PP.ml +++ b/src/stages/3-ast_core/PP.ml @@ -66,26 +66,22 @@ and assoc_expression ppf : expr * expr -> unit = and single_record_patch ppf ((p, expr) : label * expr) = fprintf ppf "%a <- %a" label p expression expr -and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * expression_variable) * a -> unit = +and matching_variant_case : (_ -> expression -> unit) -> _ -> (constructor' * expression_variable) * expression -> unit = fun f ppf ((c,n),a) -> fprintf ppf "| %a %a ->@;<1 2>%a@ " constructor c expression_variable n f a -and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = +and matching : (formatter -> expression -> unit) -> formatter -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple ((lst, b), _) -> - fprintf ppf "@[| (%a) ->@;<1 2>%a@]" (list_sep_d expression_variable) lst f b - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "@[%a@]" (list_sep (matching_variant_case f) (tag "@ ")) lst - | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> + | Match_list {match_nil ; match_cons = (hd, tl, match_cons)} -> fprintf ppf "@[| Nil ->@;<1 2>%a@ | %a :: %a ->@;<1 2>%a@]" f match_nil expression_variable hd expression_variable tl f match_cons - | Match_option {match_none ; match_some = (some, match_some, _)} -> + | Match_option {match_none ; match_some = (some, match_some)} -> fprintf ppf "@[| None ->@;<1 2>%a@ | Some %a ->@;<1 2>%a@]" f match_none expression_variable some f match_some (* Shows the type expected for the matched value *) and matching_type ppf m = match m with - | Match_tuple _ -> - fprintf ppf "tuple" - | Match_variant (lst, _) -> + | Match_variant lst -> fprintf ppf "variant %a" (list_sep matching_variant_case_type (tag "@.")) lst | Match_list _ -> fprintf ppf "list" diff --git a/src/stages/3-ast_core/combinators.ml b/src/stages/3-ast_core/combinators.ml index cb24f203d..5b6cca73c 100644 --- a/src/stages/3-ast_core/combinators.ml +++ b/src/stages/3-ast_core/combinators.ml @@ -107,7 +107,7 @@ let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constru let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} let e_record ?loc map = make_e ?loc @@ E_record map -let e_record_accessor ?loc a b = make_e ?loc @@ E_record_accessor {record = a; path = Label b} +let e_record_accessor ?loc a b = make_e ?loc @@ E_record_accessor {record = a; path = b} let e_record_update ?loc record path update = make_e ?loc @@ E_record_update {record; path; update} let e_annotation ?loc anno_expr ty = make_e ?loc @@ E_ascription {anno_expr; type_annotation = ty} diff --git a/src/stages/3-ast_core/combinators.mli b/src/stages/3-ast_core/combinators.mli index 550f87883..10d8f6459 100644 --- a/src/stages/3-ast_core/combinators.mli +++ b/src/stages/3-ast_core/combinators.mli @@ -74,7 +74,7 @@ val e_string_cat : ?loc:Location.t -> expression -> expression -> expression val e_map_add : ?loc:Location.t -> expression -> expression -> expression -> expression val e_constructor : ?loc:Location.t -> string -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression -val e_record_accessor : ?loc:Location.t -> expression -> string -> expression +val e_record_accessor : ?loc:Location.t -> expression -> label -> expression val e_variable : ?loc:Location.t -> expression_variable -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> expression -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression diff --git a/src/stages/3-ast_core/types.ml b/src/stages/3-ast_core/types.ml index 2a76591df..ca9a97a8f 100644 --- a/src/stages/3-ast_core/types.ml +++ b/src/stages/3-ast_core/types.ml @@ -76,7 +76,17 @@ and constructor = {constructor: constructor'; element: expression} and record_accessor = {record: expression; path: label} and record_update = {record: expression; path: label ; update: expression} -and matching_expr = (expr,unit) matching_content +and matching_expr = + | Match_list of { + match_nil : expression ; + match_cons : expression_variable * expression_variable * expression ; + } + | Match_option of { + match_none : expression ; + match_some : expression_variable * expression ; + } + | Match_variant of ((constructor' * expression_variable) * expression) list + and matching = { matchee: expression ; cases: matching_expr diff --git a/src/stages/4-ast_typed/PP.ml b/src/stages/4-ast_typed/PP.ml index 08e2f778c..98a18bf07 100644 --- a/src/stages/4-ast_typed/PP.ml +++ b/src/stages/4-ast_typed/PP.ml @@ -315,8 +315,6 @@ and matching_variant_case : (_ -> expression -> unit) -> _ -> matching_content_c fprintf ppf "| %a %a -> %a" constructor c expression_variable pattern f body and matching : (formatter -> expression -> unit) -> _ -> matching_expr -> unit = fun f ppf m -> match m with - | Match_tuple {vars; body; tvs=_} -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) vars f body | Match_variant {cases ; tv=_} -> fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) cases | Match_list {match_nil ; match_cons = {hd; tl; body; tv=_}} -> diff --git a/src/stages/4-ast_typed/ast.ml b/src/stages/4-ast_typed/ast.ml index 84a939ba4..6534fc5d5 100644 --- a/src/stages/4-ast_typed/ast.ml +++ b/src/stages/4-ast_typed/ast.ml @@ -124,12 +124,6 @@ and matching_content_option = { and expression_variable_list = expression_variable list and type_expression_list = type_expression list -and matching_content_tuple = { - vars : expression_variable_list ; - body : expression ; - tvs : type_expression_list ; - } - and matching_content_case = { constructor : constructor' ; pattern : expression_variable ; @@ -146,7 +140,6 @@ and matching_content_variant = { and matching_expr = | Match_list of matching_content_list | Match_option of matching_content_option - | Match_tuple of matching_content_tuple | Match_variant of matching_content_variant and constant' = diff --git a/src/stages/4-ast_typed/compute_environment.ml b/src/stages/4-ast_typed/compute_environment.ml index ce4013a28..cde26d1d1 100644 --- a/src/stages/4-ast_typed/compute_environment.ml +++ b/src/stages/4-ast_typed/compute_environment.ml @@ -92,21 +92,6 @@ and cases : environment -> matching_expr -> matching_expr = fun env cs -> in return @@ Match_option { match_none ; match_some } ) - | Match_tuple c -> ( - let var_tvs = - try ( - List.combine c.vars c.tvs - ) with _ -> raise (Failure ("Internal error: broken invariant at " ^ __LOC__)) - in - let env' = - let aux prev (var , tv) = - Environment.add_ez_binder var tv prev - in - List.fold_left aux env var_tvs - in - let body = self ~env' c.body in - return @@ Match_tuple { c with body } - ) | Match_variant c -> ( let variant_type = Combinators.get_t_sum_exn c.tv in let cases = diff --git a/src/stages/4-ast_typed/misc.ml b/src/stages/4-ast_typed/misc.ml index 537a734f3..ae8136654 100644 --- a/src/stages/4-ast_typed/misc.ml +++ b/src/stages/4-ast_typed/misc.ml @@ -236,8 +236,6 @@ module Free_variables = struct match m with | Match_list { match_nil = n ; match_cons = {hd; tl; body; tv=_} } -> union (f b n) (f (union (of_list [hd ; tl]) b) body) | Match_option { match_none = n ; match_some = {opt; body; tv=_} } -> union (f b n) (f (union (singleton opt) b) body) - | Match_tuple { vars ; body ; tvs=_ } -> - f (union (of_list vars) b) body | Match_variant { cases ; tv=_ } -> unions @@ List.map (matching_variant_case f b) cases and matching_expression = fun x -> matching expression x diff --git a/src/stages/4-ast_typed/misc_smart.ml b/src/stages/4-ast_typed/misc_smart.ml index d62665149..20e0fec3a 100644 --- a/src/stages/4-ast_typed/misc_smart.ml +++ b/src/stages/4-ast_typed/misc_smart.ml @@ -90,8 +90,6 @@ module Captured_variables = struct let%bind n' = f b n in let%bind s' = f (union (singleton opt) b) body in ok @@ union n' s' - | Match_tuple { vars ; body ; tvs=_ } -> - f (union (of_list vars) b) body | Match_variant { cases ; tv=_ } -> let%bind lst' = bind_map_list (matching_variant_case f b) cases in ok @@ unions lst' diff --git a/src/stages/common/ast_common.ml b/src/stages/common/ast_common.ml index eefa2903c..605fd90c8 100644 --- a/src/stages/common/ast_common.ml +++ b/src/stages/common/ast_common.ml @@ -1,3 +1,5 @@ +include Types + module Types = Types module PP = PP module Helpers = Helpers diff --git a/src/stages/common/types.ml b/src/stages/common/types.ml index 01b657289..cf9ad3817 100644 --- a/src/stages/common/types.ml +++ b/src/stages/common/types.ml @@ -11,6 +11,7 @@ type label = Label of string module CMap = Map.Make( struct type t = constructor' let compare (Constructor a) (Constructor b) = compare a b end) module LMap = Map.Make( struct type t = label let compare (Label a) (Label b) = String.compare a b end) + type 'a label_map = 'a LMap.t type 'a constructor_map = 'a CMap.t @@ -169,18 +170,6 @@ type literal = | Literal_void | Literal_operation of Memory_proto_alpha.Protocol.Alpha_context.packed_internal_operation -and ('a,'tv) matching_content = - | Match_list of { - match_nil : 'a ; - match_cons : expression_variable * expression_variable * 'a * 'tv; - } - | Match_option of { - match_none : 'a ; - match_some : expression_variable * 'a * 'tv; - } - | Match_tuple of (expression_variable list * 'a) * 'tv list - | Match_variant of ((constructor' * expression_variable) * 'a) list * 'tv - and constant' = | C_INT | C_UNIT From 6f56b297f2bfcfe3ca0fd234a04441c6c34b952d Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Thu, 4 Jun 2020 19:01:31 +0200 Subject: [PATCH 32/67] Improved the pretty-printers. --- .../cameligo/Pretty.ml | 35 ++++++-------- .../pascaligo/Pretty.ml | 47 ++++++++++--------- src/passes/1-parser/cameligo/.links | 23 --------- src/passes/1-parser/pascaligo/.links | 25 ---------- src/passes/1-parser/reasonligo/.links | 31 ------------ 5 files changed, 41 insertions(+), 120 deletions(-) rename src/passes/{1-parser => 01-parser}/cameligo/Pretty.ml (91%) rename src/passes/{1-parser => 01-parser}/pascaligo/Pretty.ml (93%) delete mode 100644 src/passes/1-parser/cameligo/.links delete mode 100644 src/passes/1-parser/pascaligo/.links delete mode 100644 src/passes/1-parser/reasonligo/.links diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/01-parser/cameligo/Pretty.ml similarity index 91% rename from src/passes/1-parser/cameligo/Pretty.ml rename to src/passes/01-parser/cameligo/Pretty.ml index 0ab052a7a..50a16afb4 100644 --- a/src/passes/1-parser/cameligo/Pretty.ml +++ b/src/passes/01-parser/cameligo/Pretty.ml @@ -25,7 +25,7 @@ and pp_let_decl {value; _} = | Some _ -> "let rec " in let binding = pp_let_binding binding and attr = pp_attributes attr - in string let_str ^^ nest 4 binding ^^ attr + in string let_str ^^ binding ^^ attr and pp_attributes = function [] -> empty @@ -44,12 +44,11 @@ and pp_let_binding (binding : let_binding) = let patterns = Utils.nseq_to_list binders in let patterns = group (separate_map (break 1) pp_pattern patterns) in let lhs = + patterns ^^ match lhs_type with - None -> patterns - | Some (_,e) -> - patterns ^^ group (break 1 ^^ string ": " ^^ pp_type_expr e) - and rhs = group (break 1 ^^ string "= " ^^ nest 2 (pp_expr let_rhs)) - in lhs ^^ rhs + None -> empty + | Some (_,e) -> group (break 1 ^^ string ": " ^^ pp_type_expr e) + in prefix 2 1 (lhs ^^ string " =") (pp_expr let_rhs) and pp_pattern = function PConstr p -> pp_pconstr p @@ -155,14 +154,13 @@ and pp_expr = function and pp_case_expr {value; _} = let {expr; cases; _} = value in group (string "match " ^^ nest 6 (pp_expr expr) ^/^ string "with") - ^^ hardline ^^ nest 2 (pp_cases cases) + ^^ hardline ^^ pp_cases cases and pp_cases {value; _} = let head, tail = value in - let head = pp_clause head in - let head = if tail = [] then head - else string " " ^^ head in - let rest = List.map snd tail in + let head = pp_clause head in + let head = if tail = [] then head else blank 2 ^^ head in + let rest = List.map snd tail in let app clause = break 1 ^^ string "| " ^^ pp_clause clause in head ^^ concat_map app rest @@ -172,14 +170,11 @@ and pp_clause {value; _} = and pp_cond_expr {value; _} = let {test; ifso; kwd_else; ifnot; _} = value in - let if_then = - string "if " ^^ group (nest 3 (pp_expr test)) ^/^ string "then" - ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) in - if kwd_else#is_ghost then - if_then - else - if_then - ^/^ string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) + let test = string "if " ^^ group (nest 3 (pp_expr test)) + and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) + and ifnot = string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) + in if kwd_else#is_ghost then test ^/^ ifso + else test ^/^ ifso ^/^ ifnot and pp_annot_expr {value; _} = let expr, _, type_expr = value.inside in @@ -356,7 +351,7 @@ and pp_let_in {value; _} = | Some _ -> "let rec " in let binding = pp_let_binding binding and attr = pp_attributes attributes - in string let_str ^^ nest 4 binding ^^ attr + in string let_str ^^ binding ^^ attr ^^ hardline ^^ group (string "in " ^^ nest 3 (pp_expr body)) and pp_fun {value; _} = diff --git a/src/passes/1-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml similarity index 93% rename from src/passes/1-parser/pascaligo/Pretty.ml rename to src/passes/01-parser/pascaligo/Pretty.ml index 287a53608..37ee63569 100644 --- a/src/passes/1-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -180,11 +180,11 @@ and pp_var_decl {value; _} = let {name; var_type; init; _} = value in let start = string ("var " ^ name.value ^ " :") in let t_expr = pp_type_expr var_type - in prefix 2 1 start t_expr - ^/^ prefix 2 1 (string ":=") (pp_expr init) + in prefix 2 1 start + (t_expr ^/^ prefix 2 1 (string ":=") (pp_expr init)) and pp_instruction = function - Cond i -> pp_conditional i + Cond i -> group (pp_conditional i) | CaseInstr i -> pp_case pp_if_clause i | Assign i -> pp_assignment i | Loop i -> pp_loop i @@ -212,23 +212,29 @@ and pp_cond_expr {value; _} = string "TODO:pp_cond_expr" and pp_conditional {value; _} = let {test; ifso; ifnot; _} : conditional = value in - let if_then = string "if " ^^ group (nest 3 (pp_expr test)) in - let ifso = prefix 2 1 (string "then") (pp_if_clause ifso) in - let ifnot = - string "else" ^^ group (nest 2 (blank 1 ^^ pp_if_clause ifnot)) - in group (if_then ^/^ ifso ^/^ ifnot) + let test = string "if " ^^ group (nest 3 (pp_expr test)) + and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) + and ifnot = + if is_clause_block ifnot then + string "else {" + ^^ group (nest 2 (hardline ^^ pp_if_clause ifnot)) + ^^ hardline ^^ string "}" + else + string "else" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifnot)) + in test ^/^ ifso ^/^ ifnot and pp_if_clause = function - ClauseInstr i -> nest 1 (pp_instruction i) -| ClauseBlock b -> - string "{" ^^ hardline ^^ pp_clause_block b ^^ hardline ^^ string "}" + ClauseInstr i -> pp_instruction i +| ClauseBlock b -> pp_clause_block b + +and is_clause_block = function + ClauseInstr _ -> false +| ClauseBlock _ -> true and pp_clause_block = function LongBlock b -> pp_block b | ShortBlock {value; _} -> Utils.(pp_statements <@ fst) value.inside -and pp_short_block {value; _} = string "TODO:pp_short_block" - and pp_set_membership {value; _} = string "TODO:pp_set_membership" and pp_case : @@ -244,12 +250,11 @@ and pp_cases : ('a case_clause reg, vbar) Utils.nsepseq Region.reg -> document = fun printer {value; _} -> let head, tail = value in - let head = pp_case_clause printer head in - let head = if tail = [] then head else blank 4 ^^ head in - let rest = List.map snd tail in - let app clause = - break 1 ^^ string "| " ^^ pp_case_clause printer clause - in head ^^ concat_map app rest + let head = pp_case_clause printer head in + let head = if tail = [] then head else blank 2 ^^ head in + let rest = List.map snd tail in + let app clause = break 1 ^^ string "| " ^^ pp_case_clause printer clause + in head ^^ concat_map app rest and pp_case_clause : 'a.('a -> document) -> 'a case_clause Region.reg -> document = @@ -268,7 +273,7 @@ and pp_lhs : lhs -> document = function and pp_loop = function While l -> pp_while_loop l -| For f -> pp_for_loop f +| For f -> pp_for_loop f and pp_while_loop {value; _} = string "TODO:pp_while_loop" @@ -323,7 +328,7 @@ and pp_map_expr = function | BigMapInj inj -> pp_injection pp_binding inj and pp_map_lookup {value; _} = - pp_path value.path ^^ pp_brackets pp_expr value.index + pp_path value.path ^^ blank 1 ^^ pp_brackets pp_expr value.index and pp_path = function Name v -> pp_ident v diff --git a/src/passes/1-parser/cameligo/.links b/src/passes/1-parser/cameligo/.links deleted file mode 100644 index fc8466c8e..000000000 --- a/src/passes/1-parser/cameligo/.links +++ /dev/null @@ -1,23 +0,0 @@ -$HOME/git/OCaml-build/Makefile - -../shared/Lexer.mli -../shared/Lexer.mll -../shared/LexerLib.ml -../shared/EvalOpt.ml -../shared/EvalOpt.mli -../shared/FQueue.ml -../shared/FQueue.mli -../shared/LexerLog.mli -../shared/LexerLog.ml -../shared/Markup.ml -../shared/Markup.mli -../shared/Utils.mli -../shared/Utils.ml -../shared/ParserAPI.mli -../shared/ParserAPI.ml -../shared/LexerUnit.mli -../shared/LexerUnit.ml -../shared/ParserUnit.mli -../shared/ParserUnit.ml - -$HOME/git/ligo/_build/default/src/passes/1-parser/cameligo/ParErr.ml \ No newline at end of file diff --git a/src/passes/1-parser/pascaligo/.links b/src/passes/1-parser/pascaligo/.links deleted file mode 100644 index 45c9a4602..000000000 --- a/src/passes/1-parser/pascaligo/.links +++ /dev/null @@ -1,25 +0,0 @@ -$HOME/git/OCaml-build/Makefile - -../shared/Lexer.mli -../shared/Lexer.mll -../shared/LexerLib.mli -../shared/LexerLib.ml -../shared/EvalOpt.ml -../shared/EvalOpt.mli -../shared/FQueue.ml -../shared/FQueue.mli -../shared/LexerLog.mli -../shared/LexerLog.ml -../shared/Markup.ml -../shared/Markup.mli -../shared/Utils.mli -../shared/Utils.ml -../shared/ParserAPI.mli -../shared/ParserAPI.ml -../shared/LexerUnit.mli -../shared/LexerUnit.ml -../shared/ParserUnit.mli -../shared/ParserUnit.ml -../shared/LexerLib.ml - -$HOME/git/ligo/_build/default/src/passes/1-parser/pascaligo/ParErr.ml diff --git a/src/passes/1-parser/reasonligo/.links b/src/passes/1-parser/reasonligo/.links deleted file mode 100644 index 214b46e6c..000000000 --- a/src/passes/1-parser/reasonligo/.links +++ /dev/null @@ -1,31 +0,0 @@ -$HOME/git/OCaml-build/Makefile - -../shared/Lexer.mli -../shared/Lexer.mll -../shared/LexerLib.ml -../shared/EvalOpt.ml -../shared/EvalOpt.mli -../shared/FQueue.ml -../shared/FQueue.mli -../shared/LexerLog.mli -../shared/LexerLog.ml -../shared/Markup.ml -../shared/Markup.mli -../shared/Utils.mli -../shared/Utils.ml -../shared/ParserAPI.mli -../shared/ParserAPI.ml -../shared/LexerUnit.mli -../shared/LexerUnit.ml -../shared/ParserUnit.mli -../shared/ParserUnit.ml - -Stubs/Parser_cameligo.ml - -../cameligo/AST.ml -../cameligo/ParserLog.mli -../cameligo/ParserLog.ml -../cameligo/Scoping.mli -../cameligo/Scoping.ml - -$HOME/git/ligo/_build/default/src/passes/1-parser/reasonligo/ParErr.ml From 57caa4ea85598e0c2bfd7afdef9d1484d294ae63 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Thu, 4 Jun 2020 21:36:12 +0200 Subject: [PATCH 33/67] More testing and fine tuning. --- src/passes/1-parser/reasonligo/Parser.mly | 1 + src/passes/1-parser/reasonligo/Pretty.ml | 12 +- src/test/contracts/dune | 277 +++++++++++++++++- src/test/contracts/expected/address.religo | 2 +- src/test/contracts/expected/amount.religo | 2 +- src/test/contracts/expected/arithmetic.religo | 18 +- .../expected/bad_address_format.religo | 2 +- .../expected/balance_constant.religo | 4 +- .../expected/bitwise_arithmetic.religo | 10 +- .../expected/boolean_operators.religo | 10 +- .../expected/bytes_arithmetic.religo | 7 +- .../contracts/expected/bytes_unpack.religo | 6 +- .../contracts/expected/check_signature.religo | 2 +- src/test/contracts/expected/closure.religo | 4 +- .../expected/condition-shadowing.religo | 2 +- src/test/contracts/expected/condition.religo | 2 +- src/test/contracts/expected/counter.religo | 2 +- src/test/contracts/expected/crypto.religo | 4 +- src/test/contracts/expected/empty_case.religo | 2 +- src/test/contracts/expected/eq_bool.religo | 2 +- src/test/contracts/expected/failwith.religo | 2 +- .../contracts/expected/function-shared.religo | 6 +- src/test/contracts/expected/high-order.religo | 32 +- .../expected/implicit_account.religo | 2 +- src/test/contracts/expected/key_hash.religo | 2 +- src/test/contracts/expected/lambda.religo | 4 +- src/test/contracts/expected/lambda2.religo | 6 +- .../contracts/expected/let_multiple.religo | 6 +- src/test/contracts/expected/letin.religo | 12 +- src/test/contracts/expected/list.religo | 16 +- src/test/contracts/expected/loop.religo | 12 +- src/test/contracts/expected/map.religo | 37 ++- src/test/contracts/expected/match.religo | 2 +- src/test/contracts/expected/match_bis.religo | 6 +- .../expected/michelson_pair_tree.religo | 2 +- .../expected/multiple-parameters.religo | 5 +- src/test/contracts/expected/multisig.religo | 10 +- .../contracts/expected/no_semicolon.religo | 4 +- src/test/contracts/expected/pledge.religo | 10 +- src/test/contracts/expected/record.religo | 11 +- src/test/contracts/expected/recursion.religo | 4 +- .../contracts/expected/self_address.religo | 2 +- .../contracts/expected/set_arithmetic.religo | 13 +- .../contracts/expected/set_delegate.religo | 2 +- .../expected/single_record_item.religo | 2 +- .../expected/string_arithmetic.religo | 7 +- .../contracts/expected/super-counter.religo | 2 +- src/test/contracts/expected/tuple.religo | 4 +- .../expected/tuple_param_destruct.religo | 4 +- src/test/contracts/expected/tuple_type.religo | 24 +- .../expected/tuples_no_annotation.religo | 2 +- .../tuples_sequences_functions.religo | 12 +- src/test/contracts/expected/website2.religo | 6 +- 53 files changed, 454 insertions(+), 188 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 2b257d80c..88c01af3b 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -278,6 +278,7 @@ let_binding: } | par(closed_irrefutable) type_annotation? "=" expr { wild_error $4; + Scoping.check_pattern $1.value.inside; {binders = $1.value.inside, []; lhs_type=$2; eq=$3; let_rhs=$4} } | tuple(sub_irrefutable) type_annotation? "=" expr { diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml index c4cec4c65..634e4d5a4 100644 --- a/src/passes/1-parser/reasonligo/Pretty.ml +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -98,7 +98,10 @@ and pp_bytes {value; _} = string ("0x" ^ Hex.show (snd value)) and pp_ppar {value; _} = - string "(" ^^ nest 1 (pp_pattern value.inside) ^^ string ")" + if value.lpar = Region.ghost then + nest 1 (pp_pattern value.inside) + else + string "(" ^^ nest 1 (pp_pattern value.inside) ^^ string ")" and pp_plist = function PListComp cmp -> pp_list_comp cmp @@ -475,9 +478,10 @@ and pp_fun_args {value; _} = and pp_fun_type {value; _} = let lhs, _, rhs = value in - match rhs with - | TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf - | _ -> group (string "(" ^^ pp_type_expr lhs ^^ string " =>" ^/^ pp_type_expr rhs ^^ string ")") + match lhs, rhs with + | _, TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf + | TVar _ , _ -> group (pp_type_expr lhs ^^ string " =>" ^/^ pp_type_expr rhs) + | _ -> group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) (* group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) *) diff --git a/src/test/contracts/dune b/src/test/contracts/dune index 748a48f1a..586fdf5e5 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -1,3 +1,4 @@ +;; pretty print contracts to an output file (rule (targets address.output) (action (with-stdout-to address.output (run ligo "pretty-print" "address.religo"))) (deps address.religo)) (rule (targets amount.output) (action (with-stdout-to amount.output (run ligo "pretty-print" "amount.religo"))) (deps amount.religo)) (rule (targets arithmetic.output) (action (with-stdout-to arithmetic.output (run ligo "pretty-print" "arithmetic.religo"))) (deps arithmetic.religo)) @@ -53,7 +54,7 @@ (rule (targets variant.output) (action (with-stdout-to variant.output (run ligo "pretty-print" "variant.religo"))) (deps variant.religo)) (rule (targets website2.output) (action (with-stdout-to website2.output (run ligo "pretty-print" "website2.religo"))) (deps website2.religo)) - +;; compare the output with the expected result (alias (name runtest) (action (diff expected/address.religo address.output))) (alias (name runtest) (action (diff expected/amount.religo amount.output))) (alias (name runtest) (action (diff expected/arithmetic.religo arithmetic.output))) @@ -109,6 +110,7 @@ (alias (name runtest) (action (diff expected/variant.religo variant.output))) (alias (name runtest) (action (diff expected/website2.religo website2.output))) +;; try to parse the generated contracts (alias (name runtest) (action (ignore-stdout (run ligo print-cst address.output -s reasonligo))) (deps address.output)) (alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.output -s reasonligo))) (deps amount.output)) (alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.output -s reasonligo))) (deps arithmetic.output)) @@ -163,3 +165,276 @@ (alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) (alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.output -s reasonligo))) (deps variant.output)) (alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.output -s reasonligo))) (deps website2.output)) + +;; pretty print with the former pretty printed contracts as input +(rule (targets address.output2) (action (with-stdout-to address.output2 (run ligo pretty-print address.output -s reasonligo))) (deps address.output)) +(rule (targets amount.output2) (action (with-stdout-to amount.output2 (run ligo pretty-print amount.output -s reasonligo))) (deps amount.output)) +(rule (targets arithmetic.output2) (action (with-stdout-to arithmetic.output2 (run ligo pretty-print arithmetic.output -s reasonligo))) (deps arithmetic.output)) +(rule (targets bad_address_format.output2) (action (with-stdout-to bad_address_format.output2 (run ligo pretty-print bad_address_format.output -s reasonligo))) (deps bad_address_format.output)) +(rule (targets balance_constant.output2) (action (with-stdout-to balance_constant.output2 (run ligo pretty-print balance_constant.output -s reasonligo))) (deps balance_constant.output)) +(rule (targets bitwise_arithmetic.output2) (action (with-stdout-to bitwise_arithmetic.output2 (run ligo pretty-print bitwise_arithmetic.output -s reasonligo))) (deps bitwise_arithmetic.output)) +(rule (targets boolean_operators.output2) (action (with-stdout-to boolean_operators.output2 (run ligo pretty-print boolean_operators.output -s reasonligo))) (deps boolean_operators.output)) +(rule (targets bytes_arithmetic.output2) (action (with-stdout-to bytes_arithmetic.output2 (run ligo pretty-print bytes_arithmetic.output -s reasonligo))) (deps bytes_arithmetic.output)) +(rule (targets bytes_unpack.output2) (action (with-stdout-to bytes_unpack.output2 (run ligo pretty-print bytes_unpack.output -s reasonligo))) (deps bytes_unpack.output)) +(rule (targets check_signature.output2) (action (with-stdout-to check_signature.output2 (run ligo pretty-print check_signature.output -s reasonligo))) (deps check_signature.output)) +(rule (targets closure.output2) (action (with-stdout-to closure.output2 (run ligo pretty-print closure.output -s reasonligo))) (deps closure.output)) +(rule (targets condition-shadowing.output2) (action (with-stdout-to condition-shadowing.output2 (run ligo pretty-print condition-shadowing.output -s reasonligo))) (deps condition-shadowing.output)) +(rule (targets condition.output2) (action (with-stdout-to condition.output2 (run ligo pretty-print condition.output -s reasonligo))) (deps condition.output)) +(rule (targets counter.output2) (action (with-stdout-to counter.output2 (run ligo pretty-print counter.output -s reasonligo))) (deps counter.output)) +(rule (targets crypto.output2) (action (with-stdout-to crypto.output2 (run ligo pretty-print crypto.output -s reasonligo))) (deps crypto.output)) +(rule (targets empty_case.output2) (action (with-stdout-to empty_case.output2 (run ligo pretty-print empty_case.output -s reasonligo))) (deps empty_case.output)) +(rule (targets eq_bool.output2) (action (with-stdout-to eq_bool.output2 (run ligo pretty-print eq_bool.output -s reasonligo))) (deps eq_bool.output)) +(rule (targets failwith.output2) (action (with-stdout-to failwith.output2 (run ligo pretty-print failwith.output -s reasonligo))) (deps failwith.output)) +(rule (targets function-shared.output2) (action (with-stdout-to function-shared.output2 (run ligo pretty-print function-shared.output -s reasonligo))) (deps function-shared.output)) +(rule (targets high-order.output2) (action (with-stdout-to high-order.output2 (run ligo pretty-print high-order.output -s reasonligo))) (deps high-order.output)) +(rule (targets implicit_account.output2) (action (with-stdout-to implicit_account.output2 (run ligo pretty-print implicit_account.output -s reasonligo))) (deps implicit_account.output)) +(rule (targets included.output2) (action (with-stdout-to included.output2 (run ligo pretty-print included.output -s reasonligo))) (deps included.output)) + +(rule (targets includer.output2) (action (with-stdout-to includer.output2 (run ligo pretty-print includer.output -s reasonligo))) (deps includer.output)) +(rule (targets key_hash.output2) (action (with-stdout-to key_hash.output2 (run ligo pretty-print key_hash.output -s reasonligo))) (deps key_hash.output)) +(rule (targets lambda.output2) (action (with-stdout-to lambda.output2 (run ligo pretty-print lambda.output -s reasonligo))) (deps lambda.output)) +(rule (targets lambda2.output2) (action (with-stdout-to lambda2.output2 (run ligo pretty-print lambda2.output -s reasonligo))) (deps lambda2.output)) +(rule (targets let_multiple.output2) (action (with-stdout-to let_multiple.output2 (run ligo pretty-print let_multiple.output -s reasonligo))) (deps let_multiple.output)) +(rule (targets letin.output2) (action (with-stdout-to letin.output2 (run ligo pretty-print letin.output -s reasonligo))) (deps letin.output)) +(rule (targets list.output2) (action (with-stdout-to list.output2 (run ligo pretty-print list.output -s reasonligo))) (deps list.output)) +(rule (targets loop.output2) (action (with-stdout-to loop.output2 (run ligo pretty-print loop.output -s reasonligo))) (deps loop.output)) +(rule (targets map.output2) (action (with-stdout-to map.output2 (run ligo pretty-print map.output -s reasonligo))) (deps map.output)) +(rule (targets match_bis.output2) (action (with-stdout-to match_bis.output2 (run ligo pretty-print match_bis.output -s reasonligo))) (deps match_bis.output)) +(rule (targets match.output2) (action (with-stdout-to match.output2 (run ligo pretty-print match.output -s reasonligo))) (deps match.output)) +(rule (targets michelson_pair_tree.output2) (action (with-stdout-to michelson_pair_tree.output2 (run ligo pretty-print michelson_pair_tree.output -s reasonligo))) (deps michelson_pair_tree.output)) +(rule (targets multiple-parameters.output2) (action (with-stdout-to multiple-parameters.output2 (run ligo pretty-print multiple-parameters.output -s reasonligo))) (deps multiple-parameters.output)) +(rule (targets multisig.output2) (action (with-stdout-to multisig.output2 (run ligo pretty-print multisig.output -s reasonligo))) (deps multisig.output)) +(rule (targets no_semicolon.output2) (action (with-stdout-to no_semicolon.output2 (run ligo pretty-print no_semicolon.output -s reasonligo))) (deps no_semicolon.output)) +(rule (targets pledge.output2) (action (with-stdout-to pledge.output2 (run ligo pretty-print pledge.output -s reasonligo))) (deps pledge.output)) +(rule (targets record.output2) (action (with-stdout-to record.output2 (run ligo pretty-print record.output -s reasonligo))) (deps record.output)) +(rule (targets recursion.output2) (action (with-stdout-to recursion.output2 (run ligo pretty-print recursion.output -s reasonligo))) (deps recursion.output)) +(rule (targets self_address.output2) (action (with-stdout-to self_address.output2 (run ligo pretty-print self_address.output -s reasonligo))) (deps self_address.output)) +(rule (targets set_arithmetic.output2) (action (with-stdout-to set_arithmetic.output2 (run ligo pretty-print set_arithmetic.output -s reasonligo))) (deps set_arithmetic.output)) +(rule (targets set_delegate.output2) (action (with-stdout-to set_delegate.output2 (run ligo pretty-print set_delegate.output -s reasonligo))) (deps set_delegate.output)) +(rule (targets single_record_item.output2) (action (with-stdout-to single_record_item.output2 (run ligo pretty-print single_record_item.output -s reasonligo))) (deps single_record_item.output)) +(rule (targets string_arithmetic.output2) (action (with-stdout-to string_arithmetic.output2 (run ligo pretty-print string_arithmetic.output -s reasonligo))) (deps string_arithmetic.output)) +(rule (targets super-counter.output2) (action (with-stdout-to super-counter.output2 (run ligo pretty-print super-counter.output -s reasonligo))) (deps super-counter.output)) +(rule (targets tuple_list.output2) (action (with-stdout-to tuple_list.output2 (run ligo pretty-print tuple_list.output -s reasonligo))) (deps tuple_list.output)) +(rule (targets tuple_param_destruct.output2) (action (with-stdout-to tuple_param_destruct.output2 (run ligo pretty-print tuple_param_destruct.output -s reasonligo))) (deps tuple_param_destruct.output)) +(rule (targets tuple_type.output2) (action (with-stdout-to tuple_type.output2 (run ligo pretty-print tuple_type.output -s reasonligo))) (deps tuple_type.output)) +(rule (targets tuple.output2) (action (with-stdout-to tuple.output2 (run ligo pretty-print tuple.output -s reasonligo))) (deps tuple.output)) +(rule (targets tuples_no_annotation.output2) (action (with-stdout-to tuples_no_annotation.output2 (run ligo pretty-print tuples_no_annotation.output -s reasonligo))) (deps tuples_no_annotation.output)) +(rule (targets tuples_sequences_functions.output2) (action (with-stdout-to tuples_sequences_functions.output2 (run ligo pretty-print tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) +(rule (targets variant.output2) (action (with-stdout-to variant.output2 (run ligo pretty-print variant.output -s reasonligo))) (deps variant.output)) +(rule (targets website2.output2) (action (with-stdout-to website2.output2 (run ligo pretty-print website2.output -s reasonligo))) (deps website2.output)) + +;; diff the pretty printed contract with the pretty printed pretty printed contract +(alias (name runtest) (action (diff address.output address.output2)) (deps address.output address.output2)) +(alias (name runtest) (action (diff amount.output amount.output2)) (deps amount.output amount.output2)) +(alias (name runtest) (action (diff arithmetic.output arithmetic.output2)) (deps arithmetic.output arithmetic.output2)) +(alias (name runtest) (action (diff bad_address_format.output bad_address_format.output2)) (deps bad_address_format.output bad_address_format.output2)) +(alias (name runtest) (action (diff balance_constant.output balance_constant.output2)) (deps balance_constant.output balance_constant.output2)) +(alias (name runtest) (action (diff bitwise_arithmetic.output bitwise_arithmetic.output2)) (deps bitwise_arithmetic.output bitwise_arithmetic.output2)) +(alias (name runtest) (action (diff boolean_operators.output boolean_operators.output2)) (deps boolean_operators.output boolean_operators.output2)) +(alias (name runtest) (action (diff bytes_arithmetic.output bytes_arithmetic.output2)) (deps bytes_arithmetic.output bytes_arithmetic.output2)) +(alias (name runtest) (action (diff bytes_unpack.output bytes_unpack.output2)) (deps bytes_unpack.output bytes_unpack.output2)) +(alias (name runtest) (action (diff check_signature.output check_signature.output2)) (deps check_signature.output check_signature.output2)) +(alias (name runtest) (action (diff closure.output closure.output2)) (deps closure.output closure.output2)) +(alias (name runtest) (action (diff condition-shadowing.output condition-shadowing.output2)) (deps condition-shadowing.output condition-shadowing.output2)) +(alias (name runtest) (action (diff condition.output condition.output2)) (deps condition.output condition.output2)) +(alias (name runtest) (action (diff counter.output counter.output2)) (deps counter.output counter.output2)) +(alias (name runtest) (action (diff crypto.output crypto.output2)) (deps crypto.output crypto.output2)) +(alias (name runtest) (action (diff empty_case.output empty_case.output2)) (deps empty_case.output empty_case.output2)) +(alias (name runtest) (action (diff eq_bool.output eq_bool.output2)) (deps eq_bool.output eq_bool.output2)) +(alias (name runtest) (action (diff failwith.output failwith.output2)) (deps failwith.output failwith.output2)) +(alias (name runtest) (action (diff function-shared.output function-shared.output2)) (deps function-shared.output function-shared.output2)) +(alias (name runtest) (action (diff high-order.output high-order.output2)) (deps high-order.output high-order.output2)) +(alias (name runtest) (action (diff implicit_account.output implicit_account.output2)) (deps implicit_account.output implicit_account.output2)) +(alias (name runtest) (action (diff included.output included.output2)) (deps included.output included.output2)) +(alias (name runtest) (action (diff includer.output includer.output2)) (deps includer.output includer.output2)) +(alias (name runtest) (action (diff key_hash.output key_hash.output2)) (deps key_hash.output key_hash.output2)) +(alias (name runtest) (action (diff lambda.output lambda.output2)) (deps lambda.output lambda.output2)) +(alias (name runtest) (action (diff lambda2.output lambda2.output2)) (deps lambda2.output lambda2.output2)) +(alias (name runtest) (action (diff let_multiple.output let_multiple.output2)) (deps let_multiple.output let_multiple.output2)) +(alias (name runtest) (action (diff letin.output letin.output2)) (deps letin.output letin.output2)) +(alias (name runtest) (action (diff list.output list.output2)) (deps list.output list.output2)) +(alias (name runtest) (action (diff loop.output loop.output2)) (deps loop.output loop.output2)) +(alias (name runtest) (action (diff map.output map.output2)) (deps map.output map.output2)) +(alias (name runtest) (action (diff match_bis.output match_bis.output2)) (deps match_bis.output match_bis.output2)) +(alias (name runtest) (action (diff match.output match.output2)) (deps match.output match.output2)) +(alias (name runtest) (action (diff michelson_pair_tree.output michelson_pair_tree.output2)) (deps michelson_pair_tree.output michelson_pair_tree.output2)) +(alias (name runtest) (action (diff multiple-parameters.output multiple-parameters.output2)) (deps multiple-parameters.output multiple-parameters.output2)) +(alias (name runtest) (action (diff multisig.output multisig.output2)) (deps multisig.output multisig.output2)) +(alias (name runtest) (action (diff no_semicolon.output no_semicolon.output2)) (deps no_semicolon.output no_semicolon.output2)) +(alias (name runtest) (action (diff pledge.output pledge.output2)) (deps pledge.output pledge.output2)) +(alias (name runtest) (action (diff record.output record.output2)) (deps record.output record.output2)) +(alias (name runtest) (action (diff recursion.output recursion.output2)) (deps recursion.output recursion.output2)) +(alias (name runtest) (action (diff self_address.output self_address.output2)) (deps self_address.output self_address.output2)) +(alias (name runtest) (action (diff set_arithmetic.output set_arithmetic.output2)) (deps set_arithmetic.output set_arithmetic.output2)) +(alias (name runtest) (action (diff set_delegate.output set_delegate.output2)) (deps set_delegate.output set_delegate.output2)) +(alias (name runtest) (action (diff single_record_item.output single_record_item.output2)) (deps single_record_item.output single_record_item.output2)) +(alias (name runtest) (action (diff string_arithmetic.output string_arithmetic.output2)) (deps string_arithmetic.output string_arithmetic.output2)) +(alias (name runtest) (action (diff super-counter.output super-counter.output2)) (deps super-counter.output super-counter.output2)) +(alias (name runtest) (action (diff tuple_list.output tuple_list.output2)) (deps tuple_list.output tuple_list.output2)) +(alias (name runtest) (action (diff tuple_param_destruct.output tuple_param_destruct.output2)) (deps tuple_param_destruct.output tuple_param_destruct.output2)) +(alias (name runtest) (action (diff tuple_type.output tuple_type.output2)) (deps tuple_type.output tuple_type.output2)) +(alias (name runtest) (action (diff tuple.output tuple.output2)) (deps tuple.output tuple.output2)) +(alias (name runtest) (action (diff tuples_no_annotation.output tuples_no_annotation.output2)) (deps tuples_no_annotation.output tuples_no_annotation.output2)) +(alias (name runtest) (action (diff tuples_sequences_functions.output tuples_sequences_functions.output2)) (deps tuples_sequences_functions.output tuples_sequences_functions.output2)) +(alias (name runtest) (action (diff variant.output variant.output2)) (deps variant.output variant.output2)) +(alias (name runtest) (action (diff website2.output website2.output2)) (deps website2.output website2.output2)) + +(rule (targets address.ast) (action (with-stdout-to address.ast (run ligo print-ast address.religo -s reasonligo))) (deps address.religo)) +(rule (targets amount.ast) (action (with-stdout-to amount.ast (run ligo print-ast amount.religo -s reasonligo))) (deps amount.religo)) +(rule (targets arithmetic.ast) (action (with-stdout-to arithmetic.ast (run ligo print-ast arithmetic.religo -s reasonligo))) (deps arithmetic.religo)) +(rule (targets balance_constant.ast) (action (with-stdout-to balance_constant.ast (run ligo print-ast balance_constant.religo -s reasonligo))) (deps balance_constant.religo)) +(rule (targets bitwise_arithmetic.ast) (action (with-stdout-to bitwise_arithmetic.ast (run ligo print-ast bitwise_arithmetic.religo -s reasonligo))) (deps bitwise_arithmetic.religo)) +(rule (targets boolean_operators.ast) (action (with-stdout-to boolean_operators.ast (run ligo print-ast boolean_operators.religo -s reasonligo))) (deps boolean_operators.religo)) +(rule (targets bytes_arithmetic.ast) (action (with-stdout-to bytes_arithmetic.ast (run ligo print-ast bytes_arithmetic.religo -s reasonligo))) (deps bytes_arithmetic.religo)) +(rule (targets bytes_unpack.ast) (action (with-stdout-to bytes_unpack.ast (run ligo print-ast bytes_unpack.religo -s reasonligo))) (deps bytes_unpack.religo)) +(rule (targets check_signature.ast) (action (with-stdout-to check_signature.ast (run ligo print-ast check_signature.religo -s reasonligo))) (deps check_signature.religo)) +(rule (targets closure.ast) (action (with-stdout-to closure.ast (run ligo print-ast closure.religo -s reasonligo))) (deps closure.religo)) +(rule (targets condition-shadowing.ast) (action (with-stdout-to condition-shadowing.ast (run ligo print-ast condition-shadowing.religo -s reasonligo))) (deps condition-shadowing.religo)) +(rule (targets condition.ast) (action (with-stdout-to condition.ast (run ligo print-ast condition.religo -s reasonligo))) (deps condition.religo)) +(rule (targets counter.ast) (action (with-stdout-to counter.ast (run ligo print-ast counter.religo -s reasonligo))) (deps counter.religo)) +(rule (targets crypto.ast) (action (with-stdout-to crypto.ast (run ligo print-ast crypto.religo -s reasonligo))) (deps crypto.religo)) +(rule (targets empty_case.ast) (action (with-stdout-to empty_case.ast (run ligo print-ast empty_case.religo -s reasonligo))) (deps empty_case.religo)) +(rule (targets eq_bool.ast) (action (with-stdout-to eq_bool.ast (run ligo print-ast eq_bool.religo -s reasonligo))) (deps eq_bool.religo)) +(rule (targets function-shared.ast) (action (with-stdout-to function-shared.ast (run ligo print-ast function-shared.religo -s reasonligo))) (deps function-shared.religo)) +(rule (targets high-order.ast) (action (with-stdout-to high-order.ast (run ligo print-ast high-order.religo -s reasonligo))) (deps high-order.religo)) +(rule (targets implicit_account.ast) (action (with-stdout-to implicit_account.ast (run ligo print-ast implicit_account.religo -s reasonligo))) (deps implicit_account.religo)) +(rule (targets included.ast) (action (with-stdout-to included.ast (run ligo print-ast included.religo -s reasonligo))) (deps included.religo)) +(rule (targets includer.ast) (action (with-stdout-to includer.ast (run ligo print-ast includer.religo -s reasonligo))) (deps includer.religo)) +(rule (targets key_hash.ast) (action (with-stdout-to key_hash.ast (run ligo print-ast key_hash.religo -s reasonligo))) (deps key_hash.religo)) +(rule (targets lambda.ast) (action (with-stdout-to lambda.ast (run ligo print-ast lambda.religo -s reasonligo))) (deps lambda.religo)) +(rule (targets lambda2.ast) (action (with-stdout-to lambda2.ast (run ligo print-ast lambda2.religo -s reasonligo))) (deps lambda2.religo)) +(rule (targets let_multiple.ast) (action (with-stdout-to let_multiple.ast (run ligo print-ast let_multiple.religo -s reasonligo))) (deps let_multiple.religo)) +(rule (targets letin.ast) (action (with-stdout-to letin.ast (run ligo print-ast letin.religo -s reasonligo))) (deps letin.religo)) +(rule (targets list.ast) (action (with-stdout-to list.ast (run ligo print-ast list.religo -s reasonligo))) (deps list.religo)) +(rule (targets loop.ast) (action (with-stdout-to loop.ast (run ligo print-ast loop.religo -s reasonligo))) (deps loop.religo)) +(rule (targets map.ast) (action (with-stdout-to map.ast (run ligo print-ast map.religo -s reasonligo))) (deps map.religo)) +(rule (targets match_bis.ast) (action (with-stdout-to match_bis.ast (run ligo print-ast match_bis.religo -s reasonligo))) (deps match_bis.religo)) +(rule (targets match.ast) (action (with-stdout-to match.ast (run ligo print-ast match.religo -s reasonligo))) (deps match.religo)) +(rule (targets michelson_pair_tree.ast) (action (with-stdout-to michelson_pair_tree.ast (run ligo print-ast michelson_pair_tree.religo -s reasonligo))) (deps michelson_pair_tree.religo)) +(rule (targets multiple-parameters.ast) (action (with-stdout-to multiple-parameters.ast (run ligo print-ast multiple-parameters.religo -s reasonligo))) (deps multiple-parameters.religo)) +(rule (targets multisig.ast) (action (with-stdout-to multisig.ast (run ligo print-ast multisig.religo -s reasonligo))) (deps multisig.religo)) +(rule (targets no_semicolon.ast) (action (with-stdout-to no_semicolon.ast (run ligo print-ast no_semicolon.religo -s reasonligo))) (deps no_semicolon.religo)) +(rule (targets pledge.ast) (action (with-stdout-to pledge.ast (run ligo print-ast pledge.religo -s reasonligo))) (deps pledge.religo)) +(rule (targets record.ast) (action (with-stdout-to record.ast (run ligo print-ast record.religo -s reasonligo))) (deps record.religo)) +(rule (targets recursion.ast) (action (with-stdout-to recursion.ast (run ligo print-ast recursion.religo -s reasonligo))) (deps recursion.religo)) +(rule (targets self_address.ast) (action (with-stdout-to self_address.ast (run ligo print-ast self_address.religo -s reasonligo))) (deps self_address.religo)) +(rule (targets set_arithmetic.ast) (action (with-stdout-to set_arithmetic.ast (run ligo print-ast set_arithmetic.religo -s reasonligo))) (deps set_arithmetic.religo)) +(rule (targets set_delegate.ast) (action (with-stdout-to set_delegate.ast (run ligo print-ast set_delegate.religo -s reasonligo))) (deps set_delegate.religo)) +(rule (targets single_record_item.ast) (action (with-stdout-to single_record_item.ast (run ligo print-ast single_record_item.religo -s reasonligo))) (deps single_record_item.religo)) +(rule (targets string_arithmetic.ast) (action (with-stdout-to string_arithmetic.ast (run ligo print-ast string_arithmetic.religo -s reasonligo))) (deps string_arithmetic.religo)) +(rule (targets super-counter.ast) (action (with-stdout-to super-counter.ast (run ligo print-ast super-counter.religo -s reasonligo))) (deps super-counter.religo)) +(rule (targets tuple_list.ast) (action (with-stdout-to tuple_list.ast (run ligo print-ast tuple_list.religo -s reasonligo))) (deps tuple_list.religo)) +(rule (targets tuple_param_destruct.ast) (action (with-stdout-to tuple_param_destruct.ast (run ligo print-ast tuple_param_destruct.religo -s reasonligo))) (deps tuple_param_destruct.religo)) +(rule (targets tuple_type.ast) (action (with-stdout-to tuple_type.ast (run ligo print-ast tuple_type.religo -s reasonligo))) (deps tuple_type.religo)) +(rule (targets tuple.ast) (action (with-stdout-to tuple.ast (run ligo print-ast tuple.religo -s reasonligo))) (deps tuple.religo)) +(rule (targets tuples_no_annotation.ast) (action (with-stdout-to tuples_no_annotation.ast (run ligo print-ast tuples_no_annotation.religo -s reasonligo))) (deps tuples_no_annotation.religo)) +(rule (targets tuples_sequences_functions.ast) (action (with-stdout-to tuples_sequences_functions.ast (run ligo print-ast tuples_sequences_functions.religo -s reasonligo))) (deps tuples_sequences_functions.religo)) +(rule (targets variant.ast) (action (with-stdout-to variant.ast (run ligo print-ast variant.religo -s reasonligo))) (deps variant.religo)) +(rule (targets website2.ast) (action (with-stdout-to website2.ast (run ligo print-ast website2.religo -s reasonligo))) (deps website2.religo)) + + +(rule (targets address.ast_pretty) (action (with-stdout-to address.ast_pretty (run ligo print-ast address.output -s reasonligo))) (deps address.output)) +(rule (targets amount.ast_pretty) (action (with-stdout-to amount.ast_pretty (run ligo print-ast amount.output -s reasonligo))) (deps amount.output)) +(rule (targets arithmetic.ast_pretty) (action (with-stdout-to arithmetic.ast_pretty (run ligo print-ast arithmetic.output -s reasonligo))) (deps arithmetic.output)) +(rule (targets balance_constant.ast_pretty) (action (with-stdout-to balance_constant.ast_pretty (run ligo print-ast balance_constant.output -s reasonligo))) (deps balance_constant.output)) +(rule (targets bitwise_arithmetic.ast_pretty) (action (with-stdout-to bitwise_arithmetic.ast_pretty (run ligo print-ast bitwise_arithmetic.output -s reasonligo))) (deps bitwise_arithmetic.output)) +(rule (targets boolean_operators.ast_pretty) (action (with-stdout-to boolean_operators.ast_pretty (run ligo print-ast boolean_operators.output -s reasonligo))) (deps boolean_operators.output)) +(rule (targets bytes_arithmetic.ast_pretty) (action (with-stdout-to bytes_arithmetic.ast_pretty (run ligo print-ast bytes_arithmetic.output -s reasonligo))) (deps bytes_arithmetic.output)) +(rule (targets bytes_unpack.ast_pretty) (action (with-stdout-to bytes_unpack.ast_pretty (run ligo print-ast bytes_unpack.output -s reasonligo))) (deps bytes_unpack.output)) +(rule (targets check_signature.ast_pretty) (action (with-stdout-to check_signature.ast_pretty (run ligo print-ast check_signature.output -s reasonligo))) (deps check_signature.output)) +(rule (targets closure.ast_pretty) (action (with-stdout-to closure.ast_pretty (run ligo print-ast closure.output -s reasonligo))) (deps closure.output)) +(rule (targets condition-shadowing.ast_pretty) (action (with-stdout-to condition-shadowing.ast_pretty (run ligo print-ast condition-shadowing.output -s reasonligo))) (deps condition-shadowing.output)) +(rule (targets condition.ast_pretty) (action (with-stdout-to condition.ast_pretty (run ligo print-ast condition.output -s reasonligo))) (deps condition.output)) +(rule (targets counter.ast_pretty) (action (with-stdout-to counter.ast_pretty (run ligo print-ast counter.output -s reasonligo))) (deps counter.output)) +(rule (targets crypto.ast_pretty) (action (with-stdout-to crypto.ast_pretty (run ligo print-ast crypto.output -s reasonligo))) (deps crypto.output)) +(rule (targets empty_case.ast_pretty) (action (with-stdout-to empty_case.ast_pretty (run ligo print-ast empty_case.output -s reasonligo))) (deps empty_case.output)) +(rule (targets eq_bool.ast_pretty) (action (with-stdout-to eq_bool.ast_pretty (run ligo print-ast eq_bool.output -s reasonligo))) (deps eq_bool.output)) +(rule (targets function-shared.ast_pretty) (action (with-stdout-to function-shared.ast_pretty (run ligo print-ast function-shared.output -s reasonligo))) (deps function-shared.output)) +(rule (targets high-order.ast_pretty) (action (with-stdout-to high-order.ast_pretty (run ligo print-ast high-order.output -s reasonligo))) (deps high-order.output)) +(rule (targets implicit_account.ast_pretty) (action (with-stdout-to implicit_account.ast_pretty (run ligo print-ast implicit_account.output -s reasonligo))) (deps implicit_account.output)) +(rule (targets included.ast_pretty) (action (with-stdout-to included.ast_pretty (run ligo print-ast included.output -s reasonligo))) (deps included.output)) +(rule (targets includer.ast_pretty) (action (with-stdout-to includer.ast_pretty (run ligo print-ast includer.output -s reasonligo))) (deps includer.output)) +(rule (targets key_hash.ast_pretty) (action (with-stdout-to key_hash.ast_pretty (run ligo print-ast key_hash.output -s reasonligo))) (deps key_hash.output)) +(rule (targets lambda.ast_pretty) (action (with-stdout-to lambda.ast_pretty (run ligo print-ast lambda.output -s reasonligo))) (deps lambda.output)) +(rule (targets lambda2.ast_pretty) (action (with-stdout-to lambda2.ast_pretty (run ligo print-ast lambda2.output -s reasonligo))) (deps lambda2.output)) +(rule (targets let_multiple.ast_pretty) (action (with-stdout-to let_multiple.ast_pretty (run ligo print-ast let_multiple.output -s reasonligo))) (deps let_multiple.output)) +(rule (targets letin.ast_pretty) (action (with-stdout-to letin.ast_pretty (run ligo print-ast letin.output -s reasonligo))) (deps letin.output)) +(rule (targets list.ast_pretty) (action (with-stdout-to list.ast_pretty (run ligo print-ast list.output -s reasonligo))) (deps list.output)) +(rule (targets loop.ast_pretty) (action (with-stdout-to loop.ast_pretty (run ligo print-ast loop.output -s reasonligo))) (deps loop.output)) +(rule (targets map.ast_pretty) (action (with-stdout-to map.ast_pretty (run ligo print-ast map.output -s reasonligo))) (deps map.output)) +(rule (targets match_bis.ast_pretty) (action (with-stdout-to match_bis.ast_pretty (run ligo print-ast match_bis.output -s reasonligo))) (deps match_bis.output)) +(rule (targets match.ast_pretty) (action (with-stdout-to match.ast_pretty (run ligo print-ast match.output -s reasonligo))) (deps match.output)) +(rule (targets michelson_pair_tree.ast_pretty) (action (with-stdout-to michelson_pair_tree.ast_pretty (run ligo print-ast michelson_pair_tree.output -s reasonligo))) (deps michelson_pair_tree.output)) +(rule (targets multiple-parameters.ast_pretty) (action (with-stdout-to multiple-parameters.ast_pretty (run ligo print-ast multiple-parameters.output -s reasonligo))) (deps multiple-parameters.output)) +(rule (targets multisig.ast_pretty) (action (with-stdout-to multisig.ast_pretty (run ligo print-ast multisig.output -s reasonligo))) (deps multisig.output)) +(rule (targets no_semicolon.ast_pretty) (action (with-stdout-to no_semicolon.ast_pretty (run ligo print-ast no_semicolon.output -s reasonligo))) (deps no_semicolon.output)) +(rule (targets pledge.ast_pretty) (action (with-stdout-to pledge.ast_pretty (run ligo print-ast pledge.output -s reasonligo))) (deps pledge.output)) +(rule (targets record.ast_pretty) (action (with-stdout-to record.ast_pretty (run ligo print-ast record.output -s reasonligo))) (deps record.output)) +(rule (targets recursion.ast_pretty) (action (with-stdout-to recursion.ast_pretty (run ligo print-ast recursion.output -s reasonligo))) (deps recursion.output)) +(rule (targets self_address.ast_pretty) (action (with-stdout-to self_address.ast_pretty (run ligo print-ast self_address.output -s reasonligo))) (deps self_address.output)) +(rule (targets set_arithmetic.ast_pretty) (action (with-stdout-to set_arithmetic.ast_pretty (run ligo print-ast set_arithmetic.output -s reasonligo))) (deps set_arithmetic.output)) +(rule (targets set_delegate.ast_pretty) (action (with-stdout-to set_delegate.ast_pretty (run ligo print-ast set_delegate.output -s reasonligo))) (deps set_delegate.output)) +(rule (targets single_record_item.ast_pretty) (action (with-stdout-to single_record_item.ast_pretty (run ligo print-ast single_record_item.output -s reasonligo))) (deps single_record_item.output)) +(rule (targets string_arithmetic.ast_pretty) (action (with-stdout-to string_arithmetic.ast_pretty (run ligo print-ast string_arithmetic.output -s reasonligo))) (deps string_arithmetic.output)) +(rule (targets super-counter.ast_pretty) (action (with-stdout-to super-counter.ast_pretty (run ligo print-ast super-counter.output -s reasonligo))) (deps super-counter.output)) +(rule (targets tuple_list.ast_pretty) (action (with-stdout-to tuple_list.ast_pretty (run ligo print-ast tuple_list.output -s reasonligo))) (deps tuple_list.output)) +(rule (targets tuple_param_destruct.ast_pretty) (action (with-stdout-to tuple_param_destruct.ast_pretty (run ligo print-ast tuple_param_destruct.output -s reasonligo))) (deps tuple_param_destruct.output)) +(rule (targets tuple_type.ast_pretty) (action (with-stdout-to tuple_type.ast_pretty (run ligo print-ast tuple_type.output -s reasonligo))) (deps tuple_type.output)) +(rule (targets tuple.ast_pretty) (action (with-stdout-to tuple.ast_pretty (run ligo print-ast tuple.output -s reasonligo))) (deps tuple.output)) +(rule (targets tuples_no_annotation.ast_pretty) (action (with-stdout-to tuples_no_annotation.ast_pretty (run ligo print-ast tuples_no_annotation.output -s reasonligo))) (deps tuples_no_annotation.output)) +(rule (targets tuples_sequences_functions.ast_pretty) (action (with-stdout-to tuples_sequences_functions.ast_pretty (run ligo print-ast tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) +(rule (targets variant.ast_pretty) (action (with-stdout-to variant.ast_pretty (run ligo print-ast variant.output -s reasonligo))) (deps variant.output)) +(rule (targets website2.ast_pretty) (action (with-stdout-to website2.ast_pretty (run ligo print-ast website2.output -s reasonligo))) (deps website2.output)) + +(alias (name runtest) (action (diff address.ast address.ast_pretty)) (deps address.ast address.ast_pretty)) +(alias (name runtest) (action (diff amount.ast amount.ast_pretty)) (deps amount.ast amount.ast_pretty)) +(alias (name runtest) (action (diff arithmetic.ast arithmetic.ast_pretty)) (deps arithmetic.ast arithmetic.ast_pretty)) +(alias (name runtest) (action (diff balance_constant.ast balance_constant.ast_pretty)) (deps balance_constant.ast balance_constant.ast_pretty)) +(alias (name runtest) (action (diff bitwise_arithmetic.ast bitwise_arithmetic.ast_pretty)) (deps bitwise_arithmetic.ast bitwise_arithmetic.ast_pretty)) +(alias (name runtest) (action (diff boolean_operators.ast boolean_operators.ast_pretty)) (deps boolean_operators.ast boolean_operators.ast_pretty)) +(alias (name runtest) (action (diff bytes_arithmetic.ast bytes_arithmetic.ast_pretty)) (deps bytes_arithmetic.ast bytes_arithmetic.ast_pretty)) +(alias (name runtest) (action (diff bytes_unpack.ast bytes_unpack.ast_pretty)) (deps bytes_unpack.ast bytes_unpack.ast_pretty)) +(alias (name runtest) (action (diff check_signature.ast check_signature.ast_pretty)) (deps check_signature.ast check_signature.ast_pretty)) +(alias (name runtest) (action (diff closure.ast closure.ast_pretty)) (deps closure.ast closure.ast_pretty)) +(alias (name runtest) (action (diff condition-shadowing.ast condition-shadowing.ast_pretty)) (deps condition-shadowing.ast condition-shadowing.ast_pretty)) +(alias (name runtest) (action (diff condition.ast condition.ast_pretty)) (deps condition.ast condition.ast_pretty)) +(alias (name runtest) (action (diff counter.ast counter.ast_pretty)) (deps counter.ast counter.ast_pretty)) +(alias (name runtest) (action (diff crypto.ast crypto.ast_pretty)) (deps crypto.ast crypto.ast_pretty)) +(alias (name runtest) (action (diff empty_case.ast empty_case.ast_pretty)) (deps empty_case.ast empty_case.ast_pretty)) +(alias (name runtest) (action (diff eq_bool.ast eq_bool.ast_pretty)) (deps eq_bool.ast eq_bool.ast_pretty)) +(alias (name runtest) (action (diff function-shared.ast function-shared.ast_pretty)) (deps function-shared.ast function-shared.ast_pretty)) +(alias (name runtest) (action (diff high-order.ast high-order.ast_pretty)) (deps high-order.ast high-order.ast_pretty)) +(alias (name runtest) (action (diff implicit_account.ast implicit_account.ast_pretty)) (deps implicit_account.ast implicit_account.ast_pretty)) +(alias (name runtest) (action (diff included.ast included.ast_pretty)) (deps included.ast included.ast_pretty)) +(alias (name runtest) (action (diff includer.ast includer.ast_pretty)) (deps includer.ast includer.ast_pretty)) +(alias (name runtest) (action (diff key_hash.ast key_hash.ast_pretty)) (deps key_hash.ast key_hash.ast_pretty)) +(alias (name runtest) (action (diff lambda.ast lambda.ast_pretty)) (deps lambda.ast lambda.ast_pretty)) +(alias (name runtest) (action (diff lambda2.ast lambda2.ast_pretty)) (deps lambda2.ast lambda2.ast_pretty)) +(alias (name runtest) (action (diff let_multiple.ast let_multiple.ast_pretty)) (deps let_multiple.ast let_multiple.ast_pretty)) +(alias (name runtest) (action (diff letin.ast letin.ast_pretty)) (deps letin.ast letin.ast_pretty)) +(alias (name runtest) (action (diff list.ast list.ast_pretty)) (deps list.ast list.ast_pretty)) +(alias (name runtest) (action (diff loop.ast loop.ast_pretty)) (deps loop.ast loop.ast_pretty)) +(alias (name runtest) (action (diff map.ast map.ast_pretty)) (deps map.ast map.ast_pretty)) +(alias (name runtest) (action (diff match_bis.ast match_bis.ast_pretty)) (deps match_bis.ast match_bis.ast_pretty)) +(alias (name runtest) (action (diff match.ast match.ast_pretty)) (deps match.ast match.ast_pretty)) +(alias (name runtest) (action (diff michelson_pair_tree.ast michelson_pair_tree.ast_pretty)) (deps michelson_pair_tree.ast michelson_pair_tree.ast_pretty)) +(alias (name runtest) (action (diff multiple-parameters.ast multiple-parameters.ast_pretty)) (deps multiple-parameters.ast multiple-parameters.ast_pretty)) +(alias (name runtest) (action (diff multisig.ast multisig.ast_pretty)) (deps multisig.ast multisig.ast_pretty)) +(alias (name runtest) (action (diff no_semicolon.ast no_semicolon.ast_pretty)) (deps no_semicolon.ast no_semicolon.ast_pretty)) +(alias (name runtest) (action (diff pledge.ast pledge.ast_pretty)) (deps pledge.ast pledge.ast_pretty)) +(alias (name runtest) (action (diff record.ast record.ast_pretty)) (deps record.ast record.ast_pretty)) +(alias (name runtest) (action (diff recursion.ast recursion.ast_pretty)) (deps recursion.ast recursion.ast_pretty)) +(alias (name runtest) (action (diff self_address.ast self_address.ast_pretty)) (deps self_address.ast self_address.ast_pretty)) +(alias (name runtest) (action (diff set_arithmetic.ast set_arithmetic.ast_pretty)) (deps set_arithmetic.ast set_arithmetic.ast_pretty)) +(alias (name runtest) (action (diff set_delegate.ast set_delegate.ast_pretty)) (deps set_delegate.ast set_delegate.ast_pretty)) +(alias (name runtest) (action (diff single_record_item.ast single_record_item.ast_pretty)) (deps single_record_item.ast single_record_item.ast_pretty)) +(alias (name runtest) (action (diff string_arithmetic.ast string_arithmetic.ast_pretty)) (deps string_arithmetic.ast string_arithmetic.ast_pretty)) +(alias (name runtest) (action (diff super-counter.ast super-counter.ast_pretty)) (deps super-counter.ast super-counter.ast_pretty)) +(alias (name runtest) (action (diff tuple_list.ast tuple_list.ast_pretty)) (deps tuple_list.ast tuple_list.ast_pretty)) +(alias (name runtest) (action (diff tuple_param_destruct.ast tuple_param_destruct.ast_pretty)) (deps tuple_param_destruct.ast tuple_param_destruct.ast_pretty)) +(alias (name runtest) (action (diff tuple_type.ast tuple_type.ast_pretty)) (deps tuple_type.ast tuple_type.ast_pretty)) +(alias (name runtest) (action (diff tuple.ast tuple.ast_pretty)) (deps tuple.ast tuple.ast_pretty)) +(alias (name runtest) (action (diff tuples_no_annotation.ast tuples_no_annotation.ast_pretty)) (deps tuples_no_annotation.ast tuples_no_annotation.ast_pretty)) +(alias (name runtest) (action (diff tuples_sequences_functions.ast tuples_sequences_functions.ast_pretty)) (deps tuples_sequences_functions.ast tuples_sequences_functions.ast_pretty)) +(alias (name runtest) (action (diff variant.ast variant.ast_pretty)) (deps variant.ast variant.ast_pretty)) +(alias (name runtest) (action (diff website2.ast website2.ast_pretty)) (deps website2.ast website2.ast_pretty)) \ No newline at end of file diff --git a/src/test/contracts/expected/address.religo b/src/test/contracts/expected/address.religo index 7afb9b377..4979af040 100644 --- a/src/test/contracts/expected/address.religo +++ b/src/test/contracts/expected/address.religo @@ -1,5 +1,5 @@ let main = - ((p: key_hash)): address => + (p: key_hash): address => { let c: contract(unit) = Tezos.implicit_account(p); Tezos.address(c) diff --git a/src/test/contracts/expected/amount.religo b/src/test/contracts/expected/amount.religo index 7543eb3fd..447dac88b 100644 --- a/src/test/contracts/expected/amount.religo +++ b/src/test/contracts/expected/amount.religo @@ -1,5 +1,5 @@ let check_ = - ((p: unit)): int => + (p: unit): int => if(Tezos.amount == 100000000mutez) { 42 diff --git a/src/test/contracts/expected/arithmetic.religo b/src/test/contracts/expected/arithmetic.religo index 52e01e696..af641c76e 100644 --- a/src/test/contracts/expected/arithmetic.religo +++ b/src/test/contracts/expected/arithmetic.religo @@ -1,17 +1,17 @@ -let mod_op = ((n: int)): nat => n mod 42; +let mod_op = (n: int): nat => n mod 42; -let plus_op = ((n: int)): int => n + 42; +let plus_op = (n: int): int => n + 42; -let minus_op = ((n: int)): int => n - 42; +let minus_op = (n: int): int => n - 42; -let times_op = ((n: int)): int => n * 42; +let times_op = (n: int): int => n * 42; -let div_op = ((n: int)): int => n / 2; +let div_op = (n: int): int => n / 2; -let neg_op = ((n: int)): int => -n; +let neg_op = (n: int): int => -n; -let foo = ((n: int)): int => n + 10; +let foo = (n: int): int => n + 10; -let neg_op_2 = ((b: int)): int => -foo(b); +let neg_op_2 = (b: int): int => -foo(b); -let ediv_op = ((n: int)): option((int, nat)) => ediv(n, 2); +let ediv_op = (n: int): option((int, nat)) => ediv(n, 2); diff --git a/src/test/contracts/expected/bad_address_format.religo b/src/test/contracts/expected/bad_address_format.religo index 9000969ec..ee7f13c0d 100644 --- a/src/test/contracts/expected/bad_address_format.religo +++ b/src/test/contracts/expected/bad_address_format.religo @@ -1,3 +1,3 @@ let main = - ((parameter: int), (storage: address)) => + (parameter: int, storage: address) => ([] : list(operation), "KT1badaddr" : address); diff --git a/src/test/contracts/expected/balance_constant.religo b/src/test/contracts/expected/balance_constant.religo index 4082d7324..6ae8a6f74 100644 --- a/src/test/contracts/expected/balance_constant.religo +++ b/src/test/contracts/expected/balance_constant.religo @@ -1,7 +1,7 @@ type storage = tez; let main2 = - ((p: unit), (s: storage)) => + (p: unit, s: storage) => ([] : list(operation), Tezos.balance); -let main = ((x: (unit, storage))) => main2(x[0], x[1]); +let main = (x: (unit, storage)) => main2(x[0], x[1]); diff --git a/src/test/contracts/expected/bitwise_arithmetic.religo b/src/test/contracts/expected/bitwise_arithmetic.religo index 91af7e540..9468c4d57 100644 --- a/src/test/contracts/expected/bitwise_arithmetic.religo +++ b/src/test/contracts/expected/bitwise_arithmetic.religo @@ -1,9 +1,9 @@ -let or_op = ((n: nat)): nat => Bitwise.or(n, 4n); +let or_op = (n: nat): nat => Bitwise.or(n, 4n); -let and_op = ((n: nat)): nat => Bitwise.and(n, 7n); +let and_op = (n: nat): nat => Bitwise.and(n, 7n); -let xor_op = ((n: nat)): nat => Bitwise.xor(n, 7n); +let xor_op = (n: nat): nat => Bitwise.xor(n, 7n); -let lsl_op = ((n: nat)): nat => Bitwise.shift_left(n, 7n); +let lsl_op = (n: nat): nat => Bitwise.shift_left(n, 7n); -let lsr_op = ((n: nat)): nat => Bitwise.shift_right(n, 7n); +let lsr_op = (n: nat): nat => Bitwise.shift_right(n, 7n); diff --git a/src/test/contracts/expected/boolean_operators.religo b/src/test/contracts/expected/boolean_operators.religo index a1f640409..0c7f1ae28 100644 --- a/src/test/contracts/expected/boolean_operators.religo +++ b/src/test/contracts/expected/boolean_operators.religo @@ -1,9 +1,9 @@ -let or_true = ((b: bool)): bool => b || true; +let or_true = (b: bool): bool => b || true; -let or_false = ((b: bool)): bool => b || false; +let or_false = (b: bool): bool => b || false; -let and_true = ((b: bool)): bool => b && true; +let and_true = (b: bool): bool => b && true; -let and_false = ((b: bool)): bool => b && false; +let and_false = (b: bool): bool => b && false; -let not_bool = ((b: bool)): bool => ! b; +let not_bool = (b: bool): bool => ! b; diff --git a/src/test/contracts/expected/bytes_arithmetic.religo b/src/test/contracts/expected/bytes_arithmetic.religo index 7fef60bb1..c04599411 100644 --- a/src/test/contracts/expected/bytes_arithmetic.religo +++ b/src/test/contracts/expected/bytes_arithmetic.religo @@ -1,6 +1,5 @@ -let concat_op = - ((s: bytes)): bytes => Bytes.concat(s, 0x7070); +let concat_op = (s: bytes): bytes => Bytes.concat(s, 0x7070); -let slice_op = ((s: bytes)): bytes => Bytes.slice(1n, 2n, s); +let slice_op = (s: bytes): bytes => Bytes.slice(1n, 2n, s); -let hasherman = ((s: bytes)): bytes => Crypto.sha256(s); +let hasherman = (s: bytes): bytes => Crypto.sha256(s); diff --git a/src/test/contracts/expected/bytes_unpack.religo b/src/test/contracts/expected/bytes_unpack.religo index 65d3e2408..ab91a5324 100644 --- a/src/test/contracts/expected/bytes_unpack.religo +++ b/src/test/contracts/expected/bytes_unpack.religo @@ -1,19 +1,19 @@ let id_string = - ((p: string)): option(string) => + (p: string): option(string) => { let packed: bytes = Bytes.pack(p); ((Bytes.unpack(packed)) : option(string)) }; let id_int = - ((p: int)): option(int) => + (p: int): option(int) => { let packed: bytes = Bytes.pack(p); ((Bytes.unpack(packed)) : option(int)) }; let id_address = - ((p: address)): option(address) => + (p: address): option(address) => { let packed: bytes = Bytes.pack(p); ((Bytes.unpack(packed)) : option(address)) diff --git a/src/test/contracts/expected/check_signature.religo b/src/test/contracts/expected/check_signature.religo index 4080d6001..c19cd6a53 100644 --- a/src/test/contracts/expected/check_signature.religo +++ b/src/test/contracts/expected/check_signature.religo @@ -1,5 +1,5 @@ let check_signature = - ((param: (key, signature, bytes))): bool => + (param: (key, signature, bytes)): bool => { let (pk, signed, msg) = param; Crypto.check(pk, signed, msg) diff --git a/src/test/contracts/expected/closure.religo b/src/test/contracts/expected/closure.religo index 1bb5fee3f..1f9bc3ff9 100644 --- a/src/test/contracts/expected/closure.religo +++ b/src/test/contracts/expected/closure.religo @@ -1,8 +1,8 @@ let test = - ((k: int)): int => + (k: int): int => { let j: int = k + 5; - let close: ((int => int)) = ((i: int)) => i + j; + let close: (int => int) = (i: int) => i + j; let j: int = 20; close(20) }; diff --git a/src/test/contracts/expected/condition-shadowing.religo b/src/test/contracts/expected/condition-shadowing.religo index a486a11a5..a31570a05 100644 --- a/src/test/contracts/expected/condition-shadowing.religo +++ b/src/test/contracts/expected/condition-shadowing.religo @@ -1,5 +1,5 @@ let main = - ((i: int)) => + (i: int) => { let result = 0; if(i diff --git a/src/test/contracts/expected/condition.religo b/src/test/contracts/expected/condition.religo index cb9032b10..5fdc354e3 100644 --- a/src/test/contracts/expected/condition.religo +++ b/src/test/contracts/expected/condition.religo @@ -1,5 +1,5 @@ let main = - ((i: int)) => + (i: int) => if(i == 2) { 42 diff --git a/src/test/contracts/expected/counter.religo b/src/test/contracts/expected/counter.religo index 1cf29ecce..14af3847f 100644 --- a/src/test/contracts/expected/counter.religo +++ b/src/test/contracts/expected/counter.religo @@ -1,5 +1,5 @@ type storage = int; let main = - (((p, s): (int, storage))): (list(operation), storage) => + ((p, s): (int, storage)): (list(operation), storage) => ([] : list(operation), p + s); diff --git a/src/test/contracts/expected/crypto.religo b/src/test/contracts/expected/crypto.religo index 54b3fb1ff..4afc4a41c 100644 --- a/src/test/contracts/expected/crypto.religo +++ b/src/test/contracts/expected/crypto.religo @@ -1,3 +1,3 @@ -let hasherman512 = ((s: bytes)) => Crypto.sha512(s); +let hasherman512 = (s: bytes) => Crypto.sha512(s); -let hasherman_blake = ((s: bytes)) => Crypto.blake2b(s); +let hasherman_blake = (s: bytes) => Crypto.blake2b(s); diff --git a/src/test/contracts/expected/empty_case.religo b/src/test/contracts/expected/empty_case.religo index 10aee843c..6705b108c 100644 --- a/src/test/contracts/expected/empty_case.religo +++ b/src/test/contracts/expected/empty_case.religo @@ -1,7 +1,7 @@ type foo = Bar(int) | Baz; let main = - ((f: foo)): int => + (f: foo): int => switch(f) { | Bar(i) => i | Baz => (-1) diff --git a/src/test/contracts/expected/eq_bool.religo b/src/test/contracts/expected/eq_bool.religo index 781ff1dcc..ec3bb0d3a 100644 --- a/src/test/contracts/expected/eq_bool.religo +++ b/src/test/contracts/expected/eq_bool.religo @@ -1,5 +1,5 @@ let main = - (((a, b): (bool, bool))) => + ((a, b): (bool, bool)) => if(a == b) { 999 diff --git a/src/test/contracts/expected/failwith.religo b/src/test/contracts/expected/failwith.religo index aa3ca062c..5e9680040 100644 --- a/src/test/contracts/expected/failwith.religo +++ b/src/test/contracts/expected/failwith.religo @@ -1,7 +1,7 @@ type storage = unit; let main = - ((p: unit), storage) => + (p: unit, storage) => if(true) { failwith("This contract always fails") }; diff --git a/src/test/contracts/expected/function-shared.religo b/src/test/contracts/expected/function-shared.religo index 652dd2e14..ab4fcc3b2 100644 --- a/src/test/contracts/expected/function-shared.religo +++ b/src/test/contracts/expected/function-shared.religo @@ -1,5 +1,5 @@ -let foo = ((i: int)): int => i + 20; +let foo = (i: int): int => i + 20; -let bar = ((i: int)): int => i + 50; +let bar = (i: int): int => i + 50; -let foobar = ((i: int)): int => foo(i) + bar(i); +let foobar = (i: int): int => foo(i) + bar(i); diff --git a/src/test/contracts/expected/high-order.religo b/src/test/contracts/expected/high-order.religo index 0c7dc4b4e..e4e0652d9 100644 --- a/src/test/contracts/expected/high-order.religo +++ b/src/test/contracts/expected/high-order.religo @@ -1,53 +1,53 @@ let foobar = - ((i: int)): int => + (i: int): int => { - let foo: (int => int) = ((i: int)) => i; - let bar: (((int => int) => int)) = - ((f: (int => int))) => f(i); + let foo: int => int = (i: int) => i; + let bar: ((int => int) => int) = + (f: int => int) => f(i); bar(foo) }; let higher2 = - ((i: int), (f: (int => int))): int => + (i: int, f: int => int): int => { let ii: int = f(i); ii }; let foobar2 = - ((i: int)): int => + (i: int): int => { - let foo2: (int => int) = ((i: int)) => i; + let foo2: int => int = (i: int) => i; higher2(i, foo2) }; let a: int = 0; let foobar3 = - ((i: int)): int => + (i: int): int => { - let foo2: (int => int) = ((i: int)) => a + i; + let foo2: int => int = (i: int) => a + i; higher2(i, foo2) }; -let f = ((i: int)): int => i; +let f = (i: int): int => i; -let g = ((i: int)): int => f(i); +let g = (i: int): int => f(i); -let foobar4 = ((i: int)): int => g(g(i)); +let foobar4 = (i: int): int => g(g(i)); let higher3 = - ((i: int), (f: (int => int)), (g: (int => int))): int => + (i: int, f: int => int, g: int => int): int => { let ii: int = f(g(i)); ii }; let foobar5 = - ((i: int)): int => + (i: int): int => { let a: int = 0; - let foo: (int => int) = ((i: int)) => a + i; - let goo: (int => int) = ((i: int)) => foo(i); + let foo: int => int = (i: int) => a + i; + let goo: int => int = (i: int) => foo(i); higher3(i, foo, goo) }; diff --git a/src/test/contracts/expected/implicit_account.religo b/src/test/contracts/expected/implicit_account.religo index a151ec548..8bfc216f8 100644 --- a/src/test/contracts/expected/implicit_account.religo +++ b/src/test/contracts/expected/implicit_account.religo @@ -1,3 +1,3 @@ let main = - ((kh: key_hash)): contract(unit) => + (kh: key_hash): contract(unit) => Tezos.implicit_account(kh); diff --git a/src/test/contracts/expected/key_hash.religo b/src/test/contracts/expected/key_hash.religo index a5d51838f..bac557809 100644 --- a/src/test/contracts/expected/key_hash.religo +++ b/src/test/contracts/expected/key_hash.religo @@ -1,5 +1,5 @@ let check_hash_key = - ((kh1_k2: (key_hash, key))): (bool, key_hash) => + (kh1_k2: (key_hash, key)): (bool, key_hash) => { let (kh1, k2) = kh1_k2; let kh2: key_hash = Crypto.hash_key(k2); diff --git a/src/test/contracts/expected/lambda.religo b/src/test/contracts/expected/lambda.religo index d348ce6b3..2de46c15d 100644 --- a/src/test/contracts/expected/lambda.religo +++ b/src/test/contracts/expected/lambda.religo @@ -1,5 +1,5 @@ type storage = unit; let main = - (((p, s): (unit, storage))): unit => - ((((useless: unit))) => ())(()); + ((p, s): (unit, storage)): unit => + (((useless: unit)) => ())(()); diff --git a/src/test/contracts/expected/lambda2.religo b/src/test/contracts/expected/lambda2.religo index 6ccefae09..d3026ba76 100644 --- a/src/test/contracts/expected/lambda2.religo +++ b/src/test/contracts/expected/lambda2.religo @@ -1,7 +1,5 @@ type storage = unit; let main = - (((a, s): (unit, storage))): unit => - - (((f: (unit => unit))) => f(()))(((useless: unit)) => - unit); + ((a, s): (unit, storage)): unit => + ((f: unit => unit) => f(()))((useless: unit) => unit); diff --git a/src/test/contracts/expected/let_multiple.religo b/src/test/contracts/expected/let_multiple.religo index d961ba0ee..9292412d7 100644 --- a/src/test/contracts/expected/let_multiple.religo +++ b/src/test/contracts/expected/let_multiple.religo @@ -1,13 +1,13 @@ let ((x: int), (y: int)) = (1, 2); -let main = ((p: unit)): int => x + y; +let main = (p: unit): int => x + y; let ((x: int), (y: int)) = (3, 3); -let main_paren = ((p: unit)): int => x + y; +let main_paren = (p: unit): int => x + y; let foobar: (int, int) = (23, 42); let ((foo: int), (bar: int)) = foobar; -let non_tuple_rhs = ((p: unit)): int => foo + bar; +let non_tuple_rhs = (p: unit): int => foo + bar; diff --git a/src/test/contracts/expected/letin.religo b/src/test/contracts/expected/letin.religo index e5b2f209c..1a5b07bc9 100644 --- a/src/test/contracts/expected/letin.religo +++ b/src/test/contracts/expected/letin.religo @@ -1,7 +1,7 @@ type storage = (int, int); let main = - ((n: (int, storage))): (list(operation), storage) => + (n: (int, storage)): (list(operation), storage) => { let x: (int, int) = { @@ -11,14 +11,14 @@ let main = ([] : list(operation), x) }; -let f0 = ((a: string)) => true; +let f0 = (a: string) => true; -let f1 = ((a: string)) => true; +let f1 = (a: string) => true; -let f2 = ((a: string)) => true; +let f2 = (a: string) => true; let letin_nesting = - ((_: unit)) => + (_: unit) => { let s = "test"; let p0 = f0(s); @@ -31,7 +31,7 @@ let letin_nesting = }; let letin_nesting2 = - ((x: int)) => + (x: int) => { let y = 2; let z = 3; diff --git a/src/test/contracts/expected/list.religo b/src/test/contracts/expected/list.religo index 3869b3664..4971c3c0b 100644 --- a/src/test/contracts/expected/list.religo +++ b/src/test/contracts/expected/list.religo @@ -11,7 +11,7 @@ let y: list(int) = [3, 4, 5]; let z: list(int) = [2, ...y]; let main = - (((action, s): (parameter, storage))): return => + ((action, s): (parameter, storage)): return => { let storage = switch(action) { @@ -21,22 +21,22 @@ let main = ([] : list(operation), storage) }; -let size_ = ((s: list(int))): nat => List.length(s); +let size_ = (s: list(int)): nat => List.length(s); let fold_op = - ((s: list(int))): int => + (s: list(int)): int => { - let aggregate = ((t: (int, int))) => t[0] + t[1]; + let aggregate = (t: (int, int)) => t[0] + t[1]; List.fold(aggregate, s, 10) }; let map_op = - ((s: list(int))): list(int) => - List.map(((cur: int)) => cur + 1, s); + (s: list(int)): list(int) => + List.map((cur: int) => cur + 1, s); let iter_op = - ((s: list(int))): unit => + (s: list(int)): unit => { - let do_nothing = ((useless: int)) => unit; + let do_nothing = (useless: int) => unit; List.iter(do_nothing, s) }; diff --git a/src/test/contracts/expected/loop.religo b/src/test/contracts/expected/loop.religo index 1df8dc726..710c09880 100644 --- a/src/test/contracts/expected/loop.religo +++ b/src/test/contracts/expected/loop.religo @@ -1,5 +1,5 @@ let rec aux_simple = - ((i: int)): int => + (i: int): int => if(i < 100) { aux_simple(i + 1) @@ -7,16 +7,16 @@ let rec aux_simple = i }; -let counter_simple = ((n: int)): int => aux_simple(n); +let counter_simple = (n: int): int => aux_simple(n); type sum_aggregator = {counter: int, sum: int }; let counter = - ((n: int)): int => + (n: int): int => { let initial: sum_aggregator = {counter: 0, sum: 0 }; let rec aggregate = - ((prev: sum_aggregator)): int => + (prev: sum_aggregator): int => if(prev.counter <= n) { @@ -32,7 +32,7 @@ let counter = }; let rec aux_nest = - ((prev: sum_aggregator)): sum_aggregator => + (prev: sum_aggregator): sum_aggregator => if(prev.counter < 100) { @@ -43,7 +43,7 @@ let rec aux_nest = }; let counter_nest = - ((n: int)): int => + (n: int): int => { let initial: sum_aggregator = {counter: 0, sum: 0 }; let out: sum_aggregator = aux_nest(initial); diff --git a/src/test/contracts/expected/map.religo b/src/test/contracts/expected/map.religo index 682c6d0e7..bb4443927 100644 --- a/src/test/contracts/expected/map.religo +++ b/src/test/contracts/expected/map.religo @@ -13,59 +13,56 @@ let map1: foobar = let map2: foobar = Map.literal([(23, 0), (42, 0)]); let set_ = - ((n: int), (m: foobar)): foobar => - Map.update(23, Some (n), m); + (n: int, m: foobar): foobar => Map.update(23, Some (n), m); -let add = - ((n: int), (m: foobar)): foobar => Map.add(23, n, m); +let add = (n: int, m: foobar): foobar => Map.add(23, n, m); -let rm = ((m: foobar)): foobar => Map.remove(42, m); +let rm = (m: foobar): foobar => Map.remove(42, m); let patch_ = - ((m: foobar)): foobar => + (m: foobar): foobar => Map.literal([(0, 5), (1, 6), (2, 7)]); let patch_empty = - ((m: foobar)): foobar => + (m: foobar): foobar => Map.literal([(0, 0), (1, 1), (2, 2)]); let patch_deep = - ((m: (foobar, nat))): (foobar, nat) => + (m: (foobar, nat)): (foobar, nat) => (Map.literal([(0, 0), (1, 9), (2, 2)]), 10n); -let size_ = ((m: foobar)): nat => Map.size(m); +let size_ = (m: foobar): nat => Map.size(m); -let get = ((m: foobar)): option(int) => Map.find_opt(42, m); +let get = (m: foobar): option(int) => Map.find_opt(42, m); -let get_ = ((m: foobar)): option(int) => Map.find_opt(42, m); +let get_ = (m: foobar): option(int) => Map.find_opt(42, m); -let mem = - ((km: (int, foobar))): bool => Map.mem(km[0], km[1]); +let mem = (km: (int, foobar)): bool => Map.mem(km[0], km[1]); let iter_op = - ((m: foobar)): unit => + (m: foobar): unit => { - let assert_eq = ((i: int), (j: int)) => assert(i == j); + let assert_eq = (i: int, j: int) => assert(i == j); Map.iter(assert_eq, m) }; let map_op = - ((m: foobar)): foobar => + (m: foobar): foobar => { - let increment = ((z: int), (j: int)) => j + 1; + let increment = (z: int, j: int) => j + 1; Map.map(increment, m) }; let fold_op = - ((m: foobar)): foobar => + (m: foobar): foobar => { let aggregate = - ((i: int), (j: (int, int))) => i + j[0] + j[1]; + (i: int, j: (int, int)) => i + j[0] + j[1]; Map.fold(aggregate, m, 10) }; let deep_op = - ((m: foobar)): foobar => + (m: foobar): foobar => { let coco = (0, m); let coco = (0, Map.remove(42, coco[1])); diff --git a/src/test/contracts/expected/match.religo b/src/test/contracts/expected/match.religo index 0ed078673..63a45c86f 100644 --- a/src/test/contracts/expected/match.religo +++ b/src/test/contracts/expected/match.religo @@ -5,7 +5,7 @@ type parameter = Add(int) | Sub(int); type return = (list(operation), storage); let main = - (((action, store): (parameter, storage))) => + ((action, store): (parameter, storage)) => { let store = store diff --git a/src/test/contracts/expected/match_bis.religo b/src/test/contracts/expected/match_bis.religo index 4288f1b2b..e9b4f21f7 100644 --- a/src/test/contracts/expected/match_bis.religo +++ b/src/test/contracts/expected/match_bis.religo @@ -2,12 +2,12 @@ type storage = int; type parameter = Increment(int) | Decrement(int); -let add = (((a: int)), ((b: int))) => a + b; +let add = ((a: int), (b: int)) => a + b; -let sub = (((a: int)), ((b: int))) => a - b; +let sub = ((a: int), (b: int)) => a - b; let main = - (((action, store): (parameter, storage))) => + ((action, store): (parameter, storage)) => { let store = switch(action) { diff --git a/src/test/contracts/expected/michelson_pair_tree.religo b/src/test/contracts/expected/michelson_pair_tree.religo index 00d73e9e2..20e64dd2f 100644 --- a/src/test/contracts/expected/michelson_pair_tree.religo +++ b/src/test/contracts/expected/michelson_pair_tree.religo @@ -6,7 +6,7 @@ type storage = michelson_pair type return = (list(operation), storage); let main = - (((action, store): (unit, storage))): return => + ((action, store): (unit, storage)): return => { let foo = (3, (1, 2n)); (([] : list(operation)), (foo : storage)) diff --git a/src/test/contracts/expected/multiple-parameters.religo b/src/test/contracts/expected/multiple-parameters.religo index 179f9f1b2..7c5a6d198 100644 --- a/src/test/contracts/expected/multiple-parameters.religo +++ b/src/test/contracts/expected/multiple-parameters.religo @@ -1,7 +1,6 @@ let abcde_curried = - ((a: int), (b: int), (c: int), (d: int), (e: int)): int => - c + e + 3; + (a: int, b: int, c: int, d: int, e: int): int => c + e + 3; let abcde = - ((x: (int, int, int, int, int))): int => + (x: (int, int, int, int, int)): int => abcde_curried(x[0], x[1], x[2], x[3], x[4]); diff --git a/src/test/contracts/expected/multisig.religo b/src/test/contracts/expected/multisig.religo index 2cb8c7bec..e53b47ad9 100644 --- a/src/test/contracts/expected/multisig.religo +++ b/src/test/contracts/expected/multisig.religo @@ -13,7 +13,7 @@ type storage = { auth: authorized_keys }; -type message = (unit => list(operation)); +type message = unit => list(operation); type dummy = (key_hash, signature); @@ -30,7 +30,7 @@ type return = (list(operation), storage); type parameter = CheckMessage(check_message_pt); let check_message = - (((param, s): (check_message_pt, storage))): return => + ((param, s): (check_message_pt, storage)): return => { let message: message = param.message; let s = @@ -46,8 +46,8 @@ let check_message = let valid: nat = 0n; let keys: authorized_keys = s.auth; let aux = - (((vk, pkh_sig): - ((nat, authorized_keys), (key_hash, signature)))) + ((vk, pkh_sig): + ((nat, authorized_keys), (key_hash, signature))) : (nat, authorized_keys) => { @@ -91,7 +91,7 @@ let check_message = }; let main = - (((action, store): (parameter, storage))): return => + ((action, store): (parameter, storage)): return => switch(action) { | CheckMessage(p) => check_message((p, store)) }; diff --git a/src/test/contracts/expected/no_semicolon.religo b/src/test/contracts/expected/no_semicolon.religo index d22ed1926..82db545df 100644 --- a/src/test/contracts/expected/no_semicolon.religo +++ b/src/test/contracts/expected/no_semicolon.religo @@ -1,7 +1,7 @@ type f = int; let a = - ((b: f)) => + (b: f) => { if(b == 2) { @@ -12,7 +12,7 @@ let a = }; let c = - ((c: f)) => + (c: f) => { 3 }; diff --git a/src/test/contracts/expected/pledge.religo b/src/test/contracts/expected/pledge.religo index 3f8424f06..763ab7bb2 100644 --- a/src/test/contracts/expected/pledge.religo +++ b/src/test/contracts/expected/pledge.religo @@ -1,16 +1,16 @@ type storage = address; type parameter = Donate(unit) -| Distribute(((unit => list(operation)))); +| Distribute((unit => list(operation))); let donate = - (((p, s): (unit, storage))): (list(operation), storage) => + ((p, s): (unit, storage)): (list(operation), storage) => { (([] : list(operation)), s) }; let distribute = - (((p, s): ((unit => list(operation)), storage))) + ((p, s): (unit => list(operation), storage)) : (list(operation), storage) => { @@ -26,9 +26,7 @@ let distribute = }; let main = - (((p, s): (parameter, storage))) - : - (list(operation), storage) => + ((p, s): (parameter, storage)): (list(operation), storage) => { switch(p) { | Donate => donate(((), s)) diff --git a/src/test/contracts/expected/record.religo b/src/test/contracts/expected/record.religo index 221e3d1dc..c41cc77f9 100644 --- a/src/test/contracts/expected/record.religo +++ b/src/test/contracts/expected/record.religo @@ -12,12 +12,11 @@ let b: int = abc.b; let c: int = abc.c; -let projection = ((r: foobar)): int => r.foo + r.bar; +let projection = (r: foobar): int => r.foo + r.bar; -let modify = - ((r: foobar)): foobar => {foo: 256, bar: r.bar }; +let modify = (r: foobar): foobar => {foo: 256, bar: r.bar }; -let modify_abc = ((r: abc)): abc => {...r, b: 2048, c: 42}; +let modify_abc = (r: abc): abc => {...r, b: 2048, c: 42}; type big_record = {a: int, b: int, c: int, d: int, e: int }; @@ -26,6 +25,4 @@ let br: big_record = {a: 23, b: 23, c: 23, d: 23, e: 23 }; type double_record = {inner: abc }; let modify_inner = - ((r: double_record)): double_record => - {...r, - inner.b: 2048}; + (r: double_record): double_record => {...r, inner.b: 2048}; diff --git a/src/test/contracts/expected/recursion.religo b/src/test/contracts/expected/recursion.religo index 232e7ce53..5551c9a6c 100644 --- a/src/test/contracts/expected/recursion.religo +++ b/src/test/contracts/expected/recursion.religo @@ -1,5 +1,5 @@ let rec sum = - (((n, acc): (int, int))): int => + ((n, acc): (int, int)): int => if(n < 1) { acc @@ -8,7 +8,7 @@ let rec sum = }; let rec fibo = - (((n, n_1, n_0): (int, int, int))): int => + ((n, n_1, n_0): (int, int, int)): int => if(n < 2) { n_1 diff --git a/src/test/contracts/expected/self_address.religo b/src/test/contracts/expected/self_address.religo index bb32977e1..db48e28df 100644 --- a/src/test/contracts/expected/self_address.religo +++ b/src/test/contracts/expected/self_address.religo @@ -1 +1 @@ -let main = ((p: unit)): address => Tezos.self_address; +let main = (p: unit): address => Tezos.self_address; diff --git a/src/test/contracts/expected/set_arithmetic.religo b/src/test/contracts/expected/set_arithmetic.religo index 7032a3d74..7c9edfd3b 100644 --- a/src/test/contracts/expected/set_arithmetic.religo +++ b/src/test/contracts/expected/set_arithmetic.religo @@ -1,18 +1,17 @@ let literal_op = - ((p: unit)): set(string) => + (p: unit): set(string) => Set.literal(["foo", "bar", "foobar"]); let add_op = - ((s: set(string))): set(string) => Set.add("foobar", s); + (s: set(string)): set(string) => Set.add("foobar", s); let remove_op = - ((s: set(string))): set(string) => Set.remove("foobar", s); + (s: set(string)): set(string) => Set.remove("foobar", s); let remove_deep = - ((s: (set(string), nat))): set(string) => + (s: (set(string), nat)): set(string) => Set.remove("foobar", s[0]); -let mem_op = - ((s: set(string))): bool => Set.mem("foobar", s); +let mem_op = (s: set(string)): bool => Set.mem("foobar", s); -let size_op = ((s: set(string))): nat => Set.cardinal(s); +let size_op = (s: set(string)): nat => Set.cardinal(s); diff --git a/src/test/contracts/expected/set_delegate.religo b/src/test/contracts/expected/set_delegate.religo index 3cf594226..278464cf6 100644 --- a/src/test/contracts/expected/set_delegate.religo +++ b/src/test/contracts/expected/set_delegate.religo @@ -1,5 +1,5 @@ let main = - ((p: key_hash)): list(operation) => + (p: key_hash): list(operation) => { let unused: operation = (Tezos.set_delegate(Some (p))); ([] : list(operation)) diff --git a/src/test/contracts/expected/single_record_item.religo b/src/test/contracts/expected/single_record_item.religo index e5a12aa07..8fc4e2a1e 100644 --- a/src/test/contracts/expected/single_record_item.religo +++ b/src/test/contracts/expected/single_record_item.religo @@ -1,3 +1,3 @@ type p = {x: int }; -let o = ((p: int)): p => {x: p }; +let o = (p: int): p => {x: p }; diff --git a/src/test/contracts/expected/string_arithmetic.religo b/src/test/contracts/expected/string_arithmetic.religo index cd71b31ed..396a023e1 100644 --- a/src/test/contracts/expected/string_arithmetic.religo +++ b/src/test/contracts/expected/string_arithmetic.religo @@ -1,6 +1,5 @@ -let size_op = ((s: string)): nat => String.length(s); +let size_op = (s: string): nat => String.length(s); -let slice_op = - ((s: string)): string => String.sub(1n, 2n, s); +let slice_op = (s: string): string => String.sub(1n, 2n, s); -let concat_syntax = ((s: string)) => s ++ "test_literal"; +let concat_syntax = (s: string) => s ++ "test_literal"; diff --git a/src/test/contracts/expected/super-counter.religo b/src/test/contracts/expected/super-counter.religo index a0fc4ae4e..a7445c5cb 100644 --- a/src/test/contracts/expected/super-counter.religo +++ b/src/test/contracts/expected/super-counter.religo @@ -5,7 +5,7 @@ type storage = int; type return = (list(operation), storage); let main = - (((action, store): (parameter, storage))): return => + ((action, store): (parameter, storage)): return => { let store = switch(action) { diff --git a/src/test/contracts/expected/tuple.religo b/src/test/contracts/expected/tuple.religo index 233e676d9..d9c25255e 100644 --- a/src/test/contracts/expected/tuple.religo +++ b/src/test/contracts/expected/tuple.religo @@ -1,12 +1,12 @@ type abc = (int, int, int); -let projection_abc = ((tpl: abc)): int => tpl[1]; +let projection_abc = (tpl: abc): int => tpl[1]; type foobar = (int, int); let fb: foobar = (0, 0); -let projection = ((tpl: foobar)): int => tpl[0] + tpl[1]; +let projection = (tpl: foobar): int => tpl[0] + tpl[1]; type big_tuple = (int, int, int, int, int); diff --git a/src/test/contracts/expected/tuple_param_destruct.religo b/src/test/contracts/expected/tuple_param_destruct.religo index 8ea7fb1ad..c5d0d7deb 100644 --- a/src/test/contracts/expected/tuple_param_destruct.religo +++ b/src/test/contracts/expected/tuple_param_destruct.religo @@ -1,4 +1,4 @@ -let sum = (((result, i): (int, int))): int => result - i; +let sum = ((result, i): (int, int)): int => result - i; let parentheses = - ((((((result, i)))): (((int, int))))): int => result - i; + (((((result, i)))): (((int, int)))): int => result - i; diff --git a/src/test/contracts/expected/tuple_type.religo b/src/test/contracts/expected/tuple_type.religo index 73a8e2ee8..8b608cd6c 100644 --- a/src/test/contracts/expected/tuple_type.religo +++ b/src/test/contracts/expected/tuple_type.religo @@ -1,30 +1,30 @@ type fun_type = (int, int) => int; let arguments = - ((b: int), (c: int)) => + (b: int, c: int) => { b + c }; -let arguments_type_def = ((b: fun_type)) => b(5, 3); +let arguments_type_def = (b: fun_type) => b(5, 3); let arguments_test = - ((_: int)) => arguments_type_def(arguments); + (_: int) => arguments_type_def(arguments); -type tuple_type = ((int, int) => int); +type tuple_type = ((int, int)) => int; let tuple = - (((a, b): (int, int))) => + ((a, b): (int, int)) => { a + b }; -let tuple_type_def = ((b: tuple_type)) => b((5, 3)); +let tuple_type_def = (b: tuple_type) => b((5, 3)); -let tuple_test = ((_: int)) => tuple_type_def(tuple); +let tuple_test = (_: int) => tuple_type_def(tuple); let arguments_inline = - ((b: int), (c: int)) => + (b: int, c: int) => { b + c }; @@ -33,16 +33,16 @@ let arguments_type_def_inline = (b: (int, int) => int) => b(5, 3); let arguments_test_inline = - ((_: int)) => arguments_type_def_inline(arguments_inline); + (_: int) => arguments_type_def_inline(arguments_inline); let tuple_inline = - (((a, b): (int, int))) => + ((a, b): (int, int)) => { a + b }; let tuple_type_def_inline = - (b: ((int, int) => int)) => b((5, 3)); + (b: ((int, int)) => int) => b((5, 3)); let tuple_test_inline = - ((_: int)) => tuple_type_def_inline(tuple_inline); + (_: int) => tuple_type_def_inline(tuple_inline); diff --git a/src/test/contracts/expected/tuples_no_annotation.religo b/src/test/contracts/expected/tuples_no_annotation.religo index 7a9253064..7cd18c185 100644 --- a/src/test/contracts/expected/tuples_no_annotation.religo +++ b/src/test/contracts/expected/tuples_no_annotation.religo @@ -3,7 +3,7 @@ type storage = (int, string, nat, bool); type parameter = int; let main = - (((p, storage): (parameter, storage))) => + ((p, storage): (parameter, storage)) => { ([] : list(operation), (2, "2", 2n, false)) }; diff --git a/src/test/contracts/expected/tuples_sequences_functions.religo b/src/test/contracts/expected/tuples_sequences_functions.religo index 22867281b..12c911779 100644 --- a/src/test/contracts/expected/tuples_sequences_functions.religo +++ b/src/test/contracts/expected/tuples_sequences_functions.religo @@ -14,9 +14,9 @@ let g = (a + 1, c); let h = ("a" ++ "2", d); -let i = ((a: int), (b: int)) => a + b; +let i = (a: int, b: int) => a + b; -let j = ((a: int), (b: int)) => a - b; +let j = (a: int, b: int) => a - b; let m = { @@ -24,13 +24,13 @@ let m = z }; -let n = ((a: int)): int => a + 1; +let n = (a: int): int => a + 1; -let o = ((a: int)): int => a + 1; +let o = (a: int): int => a + 1; -let n = ((a: int), (b: int)): int => a + 1; +let n = (a: int, b: int): int => a + 1; -let o = ((a: int), (b: int)): int => a + 1; +let o = (a: int, b: int): int => a + 1; let p = { diff --git a/src/test/contracts/expected/website2.religo b/src/test/contracts/expected/website2.religo index 233802380..44eedaf67 100644 --- a/src/test/contracts/expected/website2.religo +++ b/src/test/contracts/expected/website2.religo @@ -2,12 +2,12 @@ type storage = int; type parameter = Increment(int) | Decrement(int); -let add = (((a, b): (int, int))): int => a + b; +let add = ((a, b): (int, int)): int => a + b; -let sub = (((a, b): (int, int))): int => a - b; +let sub = ((a, b): (int, int)): int => a - b; let main = - (((p, storage): (parameter, storage))) => + ((p, storage): (parameter, storage)) => { let storage = switch(p) { From a952cc496dce4c2c35ecf241e20a383669806901 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 10:47:23 +0200 Subject: [PATCH 34/67] Fix not properly handling function types as arguments. --- src/passes/1-parser/reasonligo/Parser.mly | 13 ++++++++++++- src/passes/1-parser/reasonligo/Pretty.ml | 9 +++------ src/test/contracts/expected/high-order.religo | 6 +++--- src/test/contracts/expected/lambda2.religo | 2 +- src/test/contracts/expected/pledge.religo | 5 +++-- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 88c01af3b..4199b85e3 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -430,7 +430,18 @@ type_expr_simple: TProd {region = cover $1 $3; value=$2} } | "(" type_expr_simple "=>" type_expr_simple ")" { - TFun {region = cover $1 $5; value=$2,$3,$4} } + TPar { + value = { + lpar = $1; + rpar = $5; + inside = TFun { + region = cover (type_expr_to_region $2) (type_expr_to_region $4); + value=$2,$3,$4 + } + }; + region = cover $1 $5; + } +} type_annotation_simple: ":" type_expr_simple { $1,$2 } diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml index 634e4d5a4..1ac0371c4 100644 --- a/src/passes/1-parser/reasonligo/Pretty.ml +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -50,11 +50,8 @@ and pp_let_binding let_ (binding : let_binding) = | Some (_,e) -> patterns ^^ group (break 0 ^^ string ": " ^^ pp_type_expr e ^^ string " = ") in - match let_rhs with - (* | EFun { } -> *) - | e -> - let rhs = pp_expr e - in prefix 2 0 lhs rhs + let rhs = pp_expr let_rhs + in prefix 2 0 lhs rhs and pp_pattern = function PConstr p -> pp_pconstr p @@ -403,7 +400,7 @@ and pp_seq {value; _} = and pp_type_expr = function TProd t -> pp_cartesian t -| TSum t -> pp_variants t +| TSum t -> break 0 ^^ pp_variants t | TRecord t -> pp_fields t | TApp t -> pp_type_app t | TFun t -> pp_fun_type t diff --git a/src/test/contracts/expected/high-order.religo b/src/test/contracts/expected/high-order.religo index e4e0652d9..eb3de997d 100644 --- a/src/test/contracts/expected/high-order.religo +++ b/src/test/contracts/expected/high-order.religo @@ -3,12 +3,12 @@ let foobar = { let foo: int => int = (i: int) => i; let bar: ((int => int) => int) = - (f: int => int) => f(i); + (f: (int => int)) => f(i); bar(foo) }; let higher2 = - (i: int, f: int => int): int => + (i: int, f: (int => int)): int => { let ii: int = f(i); ii @@ -37,7 +37,7 @@ let g = (i: int): int => f(i); let foobar4 = (i: int): int => g(g(i)); let higher3 = - (i: int, f: int => int, g: int => int): int => + (i: int, f: (int => int), g: (int => int)): int => { let ii: int = f(g(i)); ii diff --git a/src/test/contracts/expected/lambda2.religo b/src/test/contracts/expected/lambda2.religo index d3026ba76..e434e61c9 100644 --- a/src/test/contracts/expected/lambda2.religo +++ b/src/test/contracts/expected/lambda2.religo @@ -2,4 +2,4 @@ type storage = unit; let main = ((a, s): (unit, storage)): unit => - ((f: unit => unit) => f(()))((useless: unit) => unit); + ((f: (unit => unit)) => f(()))((useless: unit) => unit); diff --git a/src/test/contracts/expected/pledge.religo b/src/test/contracts/expected/pledge.religo index 763ab7bb2..a8ef96c34 100644 --- a/src/test/contracts/expected/pledge.religo +++ b/src/test/contracts/expected/pledge.religo @@ -1,6 +1,7 @@ type storage = address; -type parameter = Donate(unit) +type parameter = + Donate(unit) | Distribute((unit => list(operation))); let donate = @@ -10,7 +11,7 @@ let donate = }; let distribute = - ((p, s): (unit => list(operation), storage)) + ((p, s): ((unit => list(operation)), storage)) : (list(operation), storage) => { From 4c2a27189804ebcf59bc2c2c91bcac970b6e7df7 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 11:32:30 +0200 Subject: [PATCH 35/67] Fix small printing bug. --- src/passes/1-parser/reasonligo/Pretty.ml | 4 +++- src/test/contracts/expected/pledge.religo | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml index 1ac0371c4..495c6fdbc 100644 --- a/src/passes/1-parser/reasonligo/Pretty.ml +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -79,7 +79,9 @@ and pp_pconstr = function and pp_patt_c_app {value; _} = match value with constr, None -> pp_ident constr - | constr, Some pat -> + | constr, Some (PVar _ as pat) -> + prefix 2 1 (pp_ident constr) (pp_pattern pat) + | constr, Some (_ as pat)-> prefix 2 0 (pp_ident constr) (pp_pattern pat) and pp_patt_some {value; _} = diff --git a/src/test/contracts/expected/pledge.religo b/src/test/contracts/expected/pledge.religo index a8ef96c34..0bac36b18 100644 --- a/src/test/contracts/expected/pledge.religo +++ b/src/test/contracts/expected/pledge.religo @@ -31,6 +31,6 @@ let main = { switch(p) { | Donate => donate(((), s)) - | Distributemsg => distribute((msg, s)) + | Distribute msg => distribute((msg, s)) } }; From 3dd4568a3d751dada7f81cfba1aaf301003ce700 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 12:21:40 +0200 Subject: [PATCH 36/67] Cleanup. --- src/passes/1-parser/reasonligo/Pretty.ml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/1-parser/reasonligo/Pretty.ml index 495c6fdbc..ccf15310f 100644 --- a/src/passes/1-parser/reasonligo/Pretty.ml +++ b/src/passes/1-parser/reasonligo/Pretty.ml @@ -5,14 +5,10 @@ module Region = Simple_utils.Region open! Region open! PPrint -(*let paragraph (s : string) = flow (break 1) (words s)*) - let rec print ast = let app decl = group (pp_declaration decl) in separate_map (hardline ^^ hardline) app (Utils.nseq_to_list ast.decl) -(* and indent_x = *) - and pp_declaration = function Let decl -> pp_let_decl decl | TypeDecl decl -> pp_type_decl decl @@ -167,9 +163,6 @@ and pp_case_expr {value; _} = and pp_cases {value; _} = let head, tail = value in - (* let head = pp_clause head in *) - (* let head = if tail = [] then head - else string "| " ^^ head in *) let rest = List.map snd tail in let app clause = break 1 ^^ string "| " ^^ pp_clause clause in concat_map app (head :: rest) @@ -241,10 +234,6 @@ and pp_string_expr = function | Verbatim e -> pp_verbatim e and pp_list_expr = function -(* let {arg1; arg2; _} = value - and length = String.length op + 1 in - pp_expr arg1 ^/^ string (op ^ " ") ^^ nest length (pp_expr arg2) *) - | ECons {value = {arg1; arg2; _}; _ } -> string "[" ^^ pp_expr arg1 ^^ string "," ^^ break 1 ^^ string "..." ^^ pp_expr arg2 ^^ string "]" | EListComp e -> group (pp_injection pp_expr e) @@ -347,8 +336,6 @@ and pp_call_expr {value; _} = let lambda, arguments = value in let arguments = Utils.nseq_to_list arguments in let arguments = string "(" ^^ group (separate_map (string "," ^^ break 0 ^^ string " ") pp_expr arguments) ^^ string ")" in - - (* let arguments = string "(" ^^ pp_nseq pp_expr arguments ^^ string ")" in *) group (break 0 ^^ pp_expr lambda ^^ nest 2 arguments) and pp_tuple_expr {value; _} = @@ -481,8 +468,6 @@ and pp_fun_type {value; _} = | _, TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf | TVar _ , _ -> group (pp_type_expr lhs ^^ string " =>" ^/^ pp_type_expr rhs) | _ -> group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) - - (* group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) *) and pp_type_par {value; _} = string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") From 54cefddd5107d045dd6da5ebda1870c122fc32e5 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 12:27:06 +0200 Subject: [PATCH 37/67] Merge --- .../reasonligo/Pretty.ml | 0 src/passes/1-parser/cameligo/Tests/pp.mligo | 29 ------ src/passes/1-parser/pascaligo/Tests/pp.ligo | 91 ------------------- 3 files changed, 120 deletions(-) rename src/passes/{1-parser => 01-parser}/reasonligo/Pretty.ml (100%) delete mode 100644 src/passes/1-parser/cameligo/Tests/pp.mligo delete mode 100644 src/passes/1-parser/pascaligo/Tests/pp.ligo diff --git a/src/passes/1-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml similarity index 100% rename from src/passes/1-parser/reasonligo/Pretty.ml rename to src/passes/01-parser/reasonligo/Pretty.ml diff --git a/src/passes/1-parser/cameligo/Tests/pp.mligo b/src/passes/1-parser/cameligo/Tests/pp.mligo deleted file mode 100644 index d84c270aa..000000000 --- a/src/passes/1-parser/cameligo/Tests/pp.mligo +++ /dev/null @@ -1,29 +0,0 @@ -type q = {a: int; b: {c: string}} -type r = int list -type s = (int, address) map -type t = int -type u = {a: int; b: t * char} -type v = int * (string * address) -type w = timestamp * nat -> (string, address) map -type x = A | B of t * int | C of int -> (string -> int) - -let x = 4 -let y : t = (if true then -3 + f x x else 0) - 1 -let f (x: int) y = (x : int) -let z : (t) = y -let w = - match f 3 with - None -> [] - | Some (1::[2;3]) -> [4;5]::[] -let n : nat = 0n -let a = A -let b = B a -let c = C (a, B (a)) -let d = None -let e = Some (a, B b) -let z = z.1.2 -let v = "hello" ^ "world" ^ "!" -let w = Map.literal [(1,"1"); (2,"2")] - -let r = { field = 0} -let r = { r with field = 42} diff --git a/src/passes/1-parser/pascaligo/Tests/pp.ligo b/src/passes/1-parser/pascaligo/Tests/pp.ligo deleted file mode 100644 index f4b185f69..000000000 --- a/src/passes/1-parser/pascaligo/Tests/pp.ligo +++ /dev/null @@ -1,91 +0,0 @@ -type t is timestamp * nat -> map (string, address) -type u is A | B of t * int | C of int -> (string -> int) -type v is record a : t; b : record c : string end end - -function back (var store : store) : list (operation) * store is - var operations : list (operation) := list [] - begin - const a : nat = 0n; - x0 := record foo = "1"; bar = 4n end; - x1 := nil; - x2 := list end; - x3 := 3#4# list [5; 6]; - case foo of - 10n -> skip - end; - if s contains x then skip else skip; - s := set [3_000mtz; -2; 1n]; - a := A; - b := B (a); - c := C (a, B (a)); - d := None; - e := Some (a, B (b)); - z := z.1.2; - x := map [1 -> "1"; 2 -> "2"]; - y := a.b.c[3]; - a := "hello " ^ "world" ^ "!"; - patch store.backers with set [(1); f(2*3)]; - remove (1,2,3) from set foo.bar; - remove 3 from map foo.bar; - patch store.backers with map [sender -> amount]; - if now > store.deadline and (not True) then - begin - f (x,1); - for k -> d : int * string in map m block { skip }; - for x : int in set s block { skip }; - while i < 10n - begin - acc := 2 - (if toggle then f(x) else Unit); - end; - for i := 1n to 10n - begin - acc := acc + i; - end; - failwith ("Deadline passed"); - end - else - case store.backers[sender] of [ - None -> store.0.backers[sender] := amount - | Some (_) -> skip - | B (x, C (y,z)) -> skip - | False#True#Unit#0xAA#"hi"#4#nil -> skip - ] - end with (operations, store) - -function claim (var store : store) : list (operation) * store is - var operations : list (operation) := nil - begin - if now <= store.deadline then - failwith ("Too soon.") - else - case store.backers[sender] of - None -> - failwith ("Not a backer.") - | Some (amount) -> - if balance >= store.goal or store.funded then - failwith ("Goal reached: no refund.") - else - begin - operations.0.foo := list [transaction (unit, sender, amount)]; - remove sender from map store.backers - end - end - end with (operations, store) - -function withdraw (var store : store) : list (operation) * store is - var operations : list (operation) := list end - begin - if sender = owner then - if now >= store.deadline then - if balance >= store.goal then { -// store.funded := True; - patch store with record funded = True; a = b end; - operations := list [Transfer (owner, balance)]; - }; - else failwith ("Below target.") - else failwith ("Too soon."); - else skip - end with case (foo: bar) of - nil -> (operations, (store : store)) - | _ -> (operations, store) - end From 623e6f12519183c1efa6ad04652d6ede5654e9e5 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 12:51:37 +0200 Subject: [PATCH 38/67] Add tests for CameLIGO. --- src/test/contracts/dune | 1140 +++++++++++------ src/test/contracts/expected/FA1.2.mligo | 136 ++ src/test/contracts/expected/address.mligo | 3 + src/test/contracts/expected/amount.mligo | 2 + .../contracts/expected/amount_lambda.mligo | 10 + src/test/contracts/expected/arithmetic.mligo | 17 + src/test/contracts/expected/assert.mligo | 3 + src/test/contracts/expected/attributes.mligo | 14 + .../contracts/expected/balance_constant.mligo | 8 + src/test/contracts/expected/basic.mligo | 3 + src/test/contracts/expected/big_map.mligo | 22 + .../expected/bitwise_arithmetic.mligo | 9 + .../expected/boolean_operators.mligo | 9 + .../contracts/expected/bytes_arithmetic.mligo | 5 + .../contracts/expected/bytes_unpack.mligo | 11 + .../contracts/expected/check_signature.mligo | 11 + src/test/contracts/expected/closure.mligo | 5 + src/test/contracts/expected/comparable.mligo | 28 + .../contracts/expected/condition-annot.mligo | 4 + .../expected/condition-shadowing.mligo | 9 + src/test/contracts/expected/condition.mligo | 1 + src/test/contracts/expected/counter.mligo | 4 + .../contracts/expected/create_contract.mligo | 11 + src/test/contracts/expected/crypto.mligo | 3 + src/test/contracts/expected/curry.mligo | 9 + .../expected/double_michelson_or.mligo | 10 + src/test/contracts/expected/empty_case.mligo | 6 + src/test/contracts/expected/eq_bool.mligo | 1 + src/test/contracts/expected/failwith.mligo | 6 + src/test/contracts/expected/fibo.mligo | 13 + src/test/contracts/expected/fibo2.mligo | 10 + src/test/contracts/expected/fibo3.mligo | 12 + src/test/contracts/expected/fibo4.mligo | 6 + .../contracts/expected/function-shared.mligo | 5 + .../contracts/expected/guess_string.mligo | 17 + 35 files changed, 1137 insertions(+), 426 deletions(-) create mode 100644 src/test/contracts/expected/FA1.2.mligo create mode 100644 src/test/contracts/expected/address.mligo create mode 100644 src/test/contracts/expected/amount.mligo create mode 100644 src/test/contracts/expected/amount_lambda.mligo create mode 100644 src/test/contracts/expected/arithmetic.mligo create mode 100644 src/test/contracts/expected/assert.mligo create mode 100644 src/test/contracts/expected/attributes.mligo create mode 100644 src/test/contracts/expected/balance_constant.mligo create mode 100644 src/test/contracts/expected/basic.mligo create mode 100644 src/test/contracts/expected/big_map.mligo create mode 100644 src/test/contracts/expected/bitwise_arithmetic.mligo create mode 100644 src/test/contracts/expected/boolean_operators.mligo create mode 100644 src/test/contracts/expected/bytes_arithmetic.mligo create mode 100644 src/test/contracts/expected/bytes_unpack.mligo create mode 100644 src/test/contracts/expected/check_signature.mligo create mode 100644 src/test/contracts/expected/closure.mligo create mode 100644 src/test/contracts/expected/comparable.mligo create mode 100644 src/test/contracts/expected/condition-annot.mligo create mode 100644 src/test/contracts/expected/condition-shadowing.mligo create mode 100644 src/test/contracts/expected/condition.mligo create mode 100644 src/test/contracts/expected/counter.mligo create mode 100644 src/test/contracts/expected/create_contract.mligo create mode 100644 src/test/contracts/expected/crypto.mligo create mode 100644 src/test/contracts/expected/curry.mligo create mode 100644 src/test/contracts/expected/double_michelson_or.mligo create mode 100644 src/test/contracts/expected/empty_case.mligo create mode 100644 src/test/contracts/expected/eq_bool.mligo create mode 100644 src/test/contracts/expected/failwith.mligo create mode 100644 src/test/contracts/expected/fibo.mligo create mode 100644 src/test/contracts/expected/fibo2.mligo create mode 100644 src/test/contracts/expected/fibo3.mligo create mode 100644 src/test/contracts/expected/fibo4.mligo create mode 100644 src/test/contracts/expected/function-shared.mligo create mode 100644 src/test/contracts/expected/guess_string.mligo diff --git a/src/test/contracts/dune b/src/test/contracts/dune index 586fdf5e5..55c1ace75 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -1,440 +1,728 @@ ;; pretty print contracts to an output file -(rule (targets address.output) (action (with-stdout-to address.output (run ligo "pretty-print" "address.religo"))) (deps address.religo)) -(rule (targets amount.output) (action (with-stdout-to amount.output (run ligo "pretty-print" "amount.religo"))) (deps amount.religo)) -(rule (targets arithmetic.output) (action (with-stdout-to arithmetic.output (run ligo "pretty-print" "arithmetic.religo"))) (deps arithmetic.religo)) -(rule (targets bad_address_format.output) (action (with-stdout-to bad_address_format.output (run ligo "pretty-print" "bad_address_format.religo"))) (deps bad_address_format.religo)) -(rule (targets balance_constant.output) (action (with-stdout-to balance_constant.output (run ligo "pretty-print" "balance_constant.religo"))) (deps balance_constant.religo)) -(rule (targets bitwise_arithmetic.output) (action (with-stdout-to bitwise_arithmetic.output (run ligo "pretty-print" "bitwise_arithmetic.religo"))) (deps bitwise_arithmetic.religo)) -(rule (targets boolean_operators.output) (action (with-stdout-to boolean_operators.output (run ligo "pretty-print" "boolean_operators.religo"))) (deps boolean_operators.religo)) -(rule (targets bytes_arithmetic.output) (action (with-stdout-to bytes_arithmetic.output (run ligo "pretty-print" "bytes_arithmetic.religo"))) (deps bytes_arithmetic.religo)) -(rule (targets bytes_unpack.output) (action (with-stdout-to bytes_unpack.output (run ligo "pretty-print" "bytes_unpack.religo"))) (deps bytes_unpack.religo)) -(rule (targets check_signature.output) (action (with-stdout-to check_signature.output (run ligo "pretty-print" "check_signature.religo"))) (deps check_signature.religo)) -(rule (targets closure.output) (action (with-stdout-to closure.output (run ligo "pretty-print" "closure.religo"))) (deps closure.religo)) -(rule (targets condition-shadowing.output) (action (with-stdout-to condition-shadowing.output (run ligo "pretty-print" "condition-shadowing.religo"))) (deps condition-shadowing.religo)) -(rule (targets condition.output) (action (with-stdout-to condition.output (run ligo "pretty-print" "condition.religo"))) (deps condition.religo)) -(rule (targets counter.output) (action (with-stdout-to counter.output (run ligo "pretty-print" "counter.religo"))) (deps counter.religo)) -(rule (targets crypto.output) (action (with-stdout-to crypto.output (run ligo "pretty-print" "crypto.religo"))) (deps crypto.religo)) -(rule (targets empty_case.output) (action (with-stdout-to empty_case.output (run ligo "pretty-print" "empty_case.religo"))) (deps empty_case.religo)) -(rule (targets eq_bool.output) (action (with-stdout-to eq_bool.output (run ligo "pretty-print" "eq_bool.religo"))) (deps eq_bool.religo)) -(rule (targets failwith.output) (action (with-stdout-to failwith.output (run ligo "pretty-print" "failwith.religo"))) (deps failwith.religo)) -(rule (targets function-shared.output) (action (with-stdout-to function-shared.output (run ligo "pretty-print" "function-shared.religo"))) (deps function-shared.religo)) -(rule (targets high-order.output) (action (with-stdout-to high-order.output (run ligo "pretty-print" "high-order.religo"))) (deps high-order.religo)) -(rule (targets implicit_account.output) (action (with-stdout-to implicit_account.output (run ligo "pretty-print" "implicit_account.religo"))) (deps implicit_account.religo)) -(rule (targets included.output) (action (with-stdout-to included.output (run ligo "pretty-print" "included.religo"))) (deps included.religo)) -(rule (targets includer.output) (action (with-stdout-to includer.output (run ligo "pretty-print" "includer.religo"))) (deps includer.religo)) -(rule (targets key_hash.output) (action (with-stdout-to key_hash.output (run ligo "pretty-print" "key_hash.religo"))) (deps key_hash.religo)) -(rule (targets lambda.output) (action (with-stdout-to lambda.output (run ligo "pretty-print" "lambda.religo"))) (deps lambda.religo)) -(rule (targets lambda2.output) (action (with-stdout-to lambda2.output (run ligo "pretty-print" "lambda2.religo"))) (deps lambda2.religo)) -(rule (targets let_multiple.output) (action (with-stdout-to let_multiple.output (run ligo "pretty-print" "let_multiple.religo"))) (deps let_multiple.religo)) -(rule (targets letin.output) (action (with-stdout-to letin.output (run ligo "pretty-print" "letin.religo"))) (deps letin.religo)) -(rule (targets list.output) (action (with-stdout-to list.output (run ligo "pretty-print" "list.religo"))) (deps list.religo)) -(rule (targets loop.output) (action (with-stdout-to loop.output (run ligo "pretty-print" "loop.religo"))) (deps loop.religo)) -(rule (targets map.output) (action (with-stdout-to map.output (run ligo "pretty-print" "map.religo"))) (deps map.religo)) -(rule (targets match_bis.output) (action (with-stdout-to match_bis.output (run ligo "pretty-print" "match_bis.religo"))) (deps match_bis.religo)) -(rule (targets match.output) (action (with-stdout-to match.output (run ligo "pretty-print" "match.religo"))) (deps match.religo)) -(rule (targets michelson_pair_tree.output) (action (with-stdout-to michelson_pair_tree.output (run ligo "pretty-print" "michelson_pair_tree.religo"))) (deps michelson_pair_tree.religo)) -(rule (targets multiple-parameters.output) (action (with-stdout-to multiple-parameters.output (run ligo "pretty-print" "multiple-parameters.religo"))) (deps multiple-parameters.religo)) -(rule (targets multisig.output) (action (with-stdout-to multisig.output (run ligo "pretty-print" "multisig.religo"))) (deps multisig.religo)) -(rule (targets no_semicolon.output) (action (with-stdout-to no_semicolon.output (run ligo "pretty-print" "no_semicolon.religo"))) (deps no_semicolon.religo)) -(rule (targets pledge.output) (action (with-stdout-to pledge.output (run ligo "pretty-print" "pledge.religo"))) (deps pledge.religo)) -(rule (targets record.output) (action (with-stdout-to record.output (run ligo "pretty-print" "record.religo"))) (deps record.religo)) -(rule (targets recursion.output) (action (with-stdout-to recursion.output (run ligo "pretty-print" "recursion.religo"))) (deps recursion.religo)) -(rule (targets self_address.output) (action (with-stdout-to self_address.output (run ligo "pretty-print" "self_address.religo"))) (deps self_address.religo)) -(rule (targets set_arithmetic.output) (action (with-stdout-to set_arithmetic.output (run ligo "pretty-print" "set_arithmetic.religo"))) (deps set_arithmetic.religo)) -(rule (targets set_delegate.output) (action (with-stdout-to set_delegate.output (run ligo "pretty-print" "set_delegate.religo"))) (deps set_delegate.religo)) -(rule (targets single_record_item.output) (action (with-stdout-to single_record_item.output (run ligo "pretty-print" "single_record_item.religo"))) (deps single_record_item.religo)) -(rule (targets string_arithmetic.output) (action (with-stdout-to string_arithmetic.output (run ligo "pretty-print" "string_arithmetic.religo"))) (deps string_arithmetic.religo)) -(rule (targets super-counter.output) (action (with-stdout-to super-counter.output (run ligo "pretty-print" "super-counter.religo"))) (deps super-counter.religo)) -(rule (targets tuple_list.output) (action (with-stdout-to tuple_list.output (run ligo "pretty-print" "tuple_list.religo"))) (deps tuple_list.religo)) -(rule (targets tuple_param_destruct.output) (action (with-stdout-to tuple_param_destruct.output (run ligo "pretty-print" "tuple_param_destruct.religo"))) (deps tuple_param_destruct.religo)) -(rule (targets tuple_type.output) (action (with-stdout-to tuple_type.output (run ligo "pretty-print" "tuple_type.religo"))) (deps tuple_type.religo)) -(rule (targets tuple.output) (action (with-stdout-to tuple.output (run ligo "pretty-print" "tuple.religo"))) (deps tuple.religo)) -(rule (targets tuples_no_annotation.output) (action (with-stdout-to tuples_no_annotation.output (run ligo "pretty-print" "tuples_no_annotation.religo"))) (deps tuples_no_annotation.religo)) -(rule (targets tuples_sequences_functions.output) (action (with-stdout-to tuples_sequences_functions.output (run ligo "pretty-print" "tuples_sequences_functions.religo"))) (deps tuples_sequences_functions.religo)) -(rule (targets variant.output) (action (with-stdout-to variant.output (run ligo "pretty-print" "variant.religo"))) (deps variant.religo)) -(rule (targets website2.output) (action (with-stdout-to website2.output (run ligo "pretty-print" "website2.religo"))) (deps website2.religo)) +;; reasonligo +(rule (targets address.religo_output) (action (with-stdout-to address.religo_output (run ligo "pretty-print" "address.religo"))) (deps address.religo)) +(rule (targets amount.religo_output) (action (with-stdout-to amount.religo_output (run ligo "pretty-print" "amount.religo"))) (deps amount.religo)) +(rule (targets arithmetic.religo_output) (action (with-stdout-to arithmetic.religo_output (run ligo "pretty-print" "arithmetic.religo"))) (deps arithmetic.religo)) +(rule (targets bad_address_format.religo_output) (action (with-stdout-to bad_address_format.religo_output (run ligo "pretty-print" "bad_address_format.religo"))) (deps bad_address_format.religo)) +(rule (targets balance_constant.religo_output) (action (with-stdout-to balance_constant.religo_output (run ligo "pretty-print" "balance_constant.religo"))) (deps balance_constant.religo)) +(rule (targets bitwise_arithmetic.religo_output) (action (with-stdout-to bitwise_arithmetic.religo_output (run ligo "pretty-print" "bitwise_arithmetic.religo"))) (deps bitwise_arithmetic.religo)) +(rule (targets boolean_operators.religo_output) (action (with-stdout-to boolean_operators.religo_output (run ligo "pretty-print" "boolean_operators.religo"))) (deps boolean_operators.religo)) +(rule (targets bytes_arithmetic.religo_output) (action (with-stdout-to bytes_arithmetic.religo_output (run ligo "pretty-print" "bytes_arithmetic.religo"))) (deps bytes_arithmetic.religo)) +(rule (targets bytes_unpack.religo_output) (action (with-stdout-to bytes_unpack.religo_output (run ligo "pretty-print" "bytes_unpack.religo"))) (deps bytes_unpack.religo)) +(rule (targets check_signature.religo_output) (action (with-stdout-to check_signature.religo_output (run ligo "pretty-print" "check_signature.religo"))) (deps check_signature.religo)) +(rule (targets closure.religo_output) (action (with-stdout-to closure.religo_output (run ligo "pretty-print" "closure.religo"))) (deps closure.religo)) +(rule (targets condition-shadowing.religo_output) (action (with-stdout-to condition-shadowing.religo_output (run ligo "pretty-print" "condition-shadowing.religo"))) (deps condition-shadowing.religo)) +(rule (targets condition.religo_output) (action (with-stdout-to condition.religo_output (run ligo "pretty-print" "condition.religo"))) (deps condition.religo)) +(rule (targets counter.religo_output) (action (with-stdout-to counter.religo_output (run ligo "pretty-print" "counter.religo"))) (deps counter.religo)) +(rule (targets crypto.religo_output) (action (with-stdout-to crypto.religo_output (run ligo "pretty-print" "crypto.religo"))) (deps crypto.religo)) +(rule (targets empty_case.religo_output) (action (with-stdout-to empty_case.religo_output (run ligo "pretty-print" "empty_case.religo"))) (deps empty_case.religo)) +(rule (targets eq_bool.religo_output) (action (with-stdout-to eq_bool.religo_output (run ligo "pretty-print" "eq_bool.religo"))) (deps eq_bool.religo)) +(rule (targets failwith.religo_output) (action (with-stdout-to failwith.religo_output (run ligo "pretty-print" "failwith.religo"))) (deps failwith.religo)) +(rule (targets function-shared.religo_output) (action (with-stdout-to function-shared.religo_output (run ligo "pretty-print" "function-shared.religo"))) (deps function-shared.religo)) +(rule (targets high-order.religo_output) (action (with-stdout-to high-order.religo_output (run ligo "pretty-print" "high-order.religo"))) (deps high-order.religo)) +(rule (targets implicit_account.religo_output) (action (with-stdout-to implicit_account.religo_output (run ligo "pretty-print" "implicit_account.religo"))) (deps implicit_account.religo)) +(rule (targets included.religo_output) (action (with-stdout-to included.religo_output (run ligo "pretty-print" "included.religo"))) (deps included.religo)) +(rule (targets includer.religo_output) (action (with-stdout-to includer.religo_output (run ligo "pretty-print" "includer.religo"))) (deps includer.religo)) +(rule (targets key_hash.religo_output) (action (with-stdout-to key_hash.religo_output (run ligo "pretty-print" "key_hash.religo"))) (deps key_hash.religo)) +(rule (targets lambda.religo_output) (action (with-stdout-to lambda.religo_output (run ligo "pretty-print" "lambda.religo"))) (deps lambda.religo)) +(rule (targets lambda2.religo_output) (action (with-stdout-to lambda2.religo_output (run ligo "pretty-print" "lambda2.religo"))) (deps lambda2.religo)) +(rule (targets let_multiple.religo_output) (action (with-stdout-to let_multiple.religo_output (run ligo "pretty-print" "let_multiple.religo"))) (deps let_multiple.religo)) +(rule (targets letin.religo_output) (action (with-stdout-to letin.religo_output (run ligo "pretty-print" "letin.religo"))) (deps letin.religo)) +(rule (targets list.religo_output) (action (with-stdout-to list.religo_output (run ligo "pretty-print" "list.religo"))) (deps list.religo)) +(rule (targets loop.religo_output) (action (with-stdout-to loop.religo_output (run ligo "pretty-print" "loop.religo"))) (deps loop.religo)) +(rule (targets map.religo_output) (action (with-stdout-to map.religo_output (run ligo "pretty-print" "map.religo"))) (deps map.religo)) +(rule (targets match_bis.religo_output) (action (with-stdout-to match_bis.religo_output (run ligo "pretty-print" "match_bis.religo"))) (deps match_bis.religo)) +(rule (targets match.religo_output) (action (with-stdout-to match.religo_output (run ligo "pretty-print" "match.religo"))) (deps match.religo)) +(rule (targets michelson_pair_tree.religo_output) (action (with-stdout-to michelson_pair_tree.religo_output (run ligo "pretty-print" "michelson_pair_tree.religo"))) (deps michelson_pair_tree.religo)) +(rule (targets multiple-parameters.religo_output) (action (with-stdout-to multiple-parameters.religo_output (run ligo "pretty-print" "multiple-parameters.religo"))) (deps multiple-parameters.religo)) +(rule (targets multisig.religo_output) (action (with-stdout-to multisig.religo_output (run ligo "pretty-print" "multisig.religo"))) (deps multisig.religo)) +(rule (targets no_semicolon.religo_output) (action (with-stdout-to no_semicolon.religo_output (run ligo "pretty-print" "no_semicolon.religo"))) (deps no_semicolon.religo)) +(rule (targets pledge.religo_output) (action (with-stdout-to pledge.religo_output (run ligo "pretty-print" "pledge.religo"))) (deps pledge.religo)) +(rule (targets record.religo_output) (action (with-stdout-to record.religo_output (run ligo "pretty-print" "record.religo"))) (deps record.religo)) +(rule (targets recursion.religo_output) (action (with-stdout-to recursion.religo_output (run ligo "pretty-print" "recursion.religo"))) (deps recursion.religo)) +(rule (targets self_address.religo_output) (action (with-stdout-to self_address.religo_output (run ligo "pretty-print" "self_address.religo"))) (deps self_address.religo)) +(rule (targets set_arithmetic.religo_output) (action (with-stdout-to set_arithmetic.religo_output (run ligo "pretty-print" "set_arithmetic.religo"))) (deps set_arithmetic.religo)) +(rule (targets set_delegate.religo_output) (action (with-stdout-to set_delegate.religo_output (run ligo "pretty-print" "set_delegate.religo"))) (deps set_delegate.religo)) +(rule (targets single_record_item.religo_output) (action (with-stdout-to single_record_item.religo_output (run ligo "pretty-print" "single_record_item.religo"))) (deps single_record_item.religo)) +(rule (targets string_arithmetic.religo_output) (action (with-stdout-to string_arithmetic.religo_output (run ligo "pretty-print" "string_arithmetic.religo"))) (deps string_arithmetic.religo)) +(rule (targets super-counter.religo_output) (action (with-stdout-to super-counter.religo_output (run ligo "pretty-print" "super-counter.religo"))) (deps super-counter.religo)) +(rule (targets tuple_list.religo_output) (action (with-stdout-to tuple_list.religo_output (run ligo "pretty-print" "tuple_list.religo"))) (deps tuple_list.religo)) +(rule (targets tuple_param_destruct.religo_output) (action (with-stdout-to tuple_param_destruct.religo_output (run ligo "pretty-print" "tuple_param_destruct.religo"))) (deps tuple_param_destruct.religo)) +(rule (targets tuple_type.religo_output) (action (with-stdout-to tuple_type.religo_output (run ligo "pretty-print" "tuple_type.religo"))) (deps tuple_type.religo)) +(rule (targets tuple.religo_output) (action (with-stdout-to tuple.religo_output (run ligo "pretty-print" "tuple.religo"))) (deps tuple.religo)) +(rule (targets tuples_no_annotation.religo_output) (action (with-stdout-to tuples_no_annotation.religo_output (run ligo "pretty-print" "tuples_no_annotation.religo"))) (deps tuples_no_annotation.religo)) +(rule (targets tuples_sequences_functions.religo_output) (action (with-stdout-to tuples_sequences_functions.religo_output (run ligo "pretty-print" "tuples_sequences_functions.religo"))) (deps tuples_sequences_functions.religo)) +(rule (targets variant.religo_output) (action (with-stdout-to variant.religo_output (run ligo "pretty-print" "variant.religo"))) (deps variant.religo)) +(rule (targets website2.religo_output) (action (with-stdout-to website2.religo_output (run ligo "pretty-print" "website2.religo"))) (deps website2.religo)) + +;; cameligo +(rule (targets assert.mligo_output) (action (with-stdout-to assert.mligo_output (run ligo pretty-print assert.mligo))) (deps assert.mligo)) +(rule (targets address.mligo_output) (action (with-stdout-to address.mligo_output (run ligo pretty-print address.mligo))) (deps address.mligo)) +(rule (targets amount_lambda.mligo_output) (action (with-stdout-to amount_lambda.mligo_output (run ligo pretty-print amount_lambda.mligo))) (deps amount_lambda.mligo)) +(rule (targets amount.mligo_output) (action (with-stdout-to amount.mligo_output (run ligo pretty-print amount.mligo))) (deps amount.mligo)) +(rule (targets arithmetic.mligo_output) (action (with-stdout-to arithmetic.mligo_output (run ligo pretty-print arithmetic.mligo))) (deps arithmetic.mligo)) +(rule (targets attributes.mligo_output) (action (with-stdout-to attributes.mligo_output (run ligo pretty-print attributes.mligo))) (deps attributes.mligo)) +(rule (targets balance_constant.mligo_output) (action (with-stdout-to balance_constant.mligo_output (run ligo pretty-print balance_constant.mligo))) (deps balance_constant.mligo)) +(rule (targets basic.mligo_output) (action (with-stdout-to basic.mligo_output (run ligo pretty-print basic.mligo))) (deps basic.mligo)) +(rule (targets big_map.mligo_output) (action (with-stdout-to big_map.mligo_output (run ligo pretty-print big_map.mligo))) (deps big_map.mligo)) +(rule (targets bitwise_arithmetic.mligo_output) (action (with-stdout-to bitwise_arithmetic.mligo_output (run ligo pretty-print bitwise_arithmetic.mligo))) (deps bitwise_arithmetic.mligo)) +(rule (targets boolean_operators.mligo_output) (action (with-stdout-to boolean_operators.mligo_output (run ligo pretty-print boolean_operators.mligo))) (deps boolean_operators.mligo)) +(rule (targets bytes_arithmetic.mligo_output) (action (with-stdout-to bytes_arithmetic.mligo_output (run ligo pretty-print bytes_arithmetic.mligo))) (deps bytes_arithmetic.mligo)) +(rule (targets bytes_unpack.mligo_output) (action (with-stdout-to bytes_unpack.mligo_output (run ligo pretty-print bytes_unpack.mligo))) (deps bytes_unpack.mligo)) +(rule (targets check_signature.mligo_output) (action (with-stdout-to check_signature.mligo_output (run ligo pretty-print check_signature.mligo))) (deps check_signature.mligo)) +(rule (targets closure.mligo_output) (action (with-stdout-to closure.mligo_output (run ligo pretty-print closure.mligo))) (deps closure.mligo)) +(rule (targets comparable.mligo_output) (action (with-stdout-to comparable.mligo_output (run ligo pretty-print comparable.mligo))) (deps comparable.mligo)) +(rule (targets condition-annot.mligo_output) (action (with-stdout-to condition-annot.mligo_output (run ligo pretty-print condition-annot.mligo))) (deps condition-annot.mligo)) +(rule (targets condition-shadowing.mligo_output) (action (with-stdout-to condition-shadowing.mligo_output (run ligo pretty-print condition-shadowing.mligo))) (deps condition-shadowing.mligo)) +(rule (targets condition.mligo_output) (action (with-stdout-to condition.mligo_output (run ligo pretty-print condition.mligo))) (deps condition.mligo)) +(rule (targets counter.mligo_output) (action (with-stdout-to counter.mligo_output (run ligo pretty-print counter.mligo))) (deps counter.mligo)) +(rule (targets create_contract.mligo_output) (action (with-stdout-to create_contract.mligo_output (run ligo pretty-print create_contract.mligo))) (deps create_contract.mligo)) +(rule (targets crypto.mligo_output) (action (with-stdout-to crypto.mligo_output (run ligo pretty-print crypto.mligo))) (deps crypto.mligo)) +(rule (targets curry.mligo_output) (action (with-stdout-to curry.mligo_output (run ligo pretty-print curry.mligo))) (deps curry.mligo)) +(rule (targets double_michelson_or.mligo_output) (action (with-stdout-to double_michelson_or.mligo_output (run ligo pretty-print double_michelson_or.mligo))) (deps double_michelson_or.mligo)) +(rule (targets empty_case.mligo_output) (action (with-stdout-to empty_case.mligo_output (run ligo pretty-print empty_case.mligo))) (deps empty_case.mligo)) +(rule (targets eq_bool.mligo_output) (action (with-stdout-to eq_bool.mligo_output (run ligo pretty-print eq_bool.mligo))) (deps eq_bool.mligo)) +(rule (targets FA1.2.mligo_output) (action (with-stdout-to FA1.2.mligo_output (run ligo pretty-print FA1.2.mligo))) (deps FA1.2.mligo)) +(rule (targets failwith.mligo_output) (action (with-stdout-to failwith.mligo_output (run ligo pretty-print failwith.mligo))) (deps failwith.mligo)) +(rule (targets fibo.mligo_output) (action (with-stdout-to fibo.mligo_output (run ligo pretty-print fibo.mligo))) (deps fibo.mligo)) +(rule (targets fibo2.mligo_output) (action (with-stdout-to fibo2.mligo_output (run ligo pretty-print fibo2.mligo))) (deps fibo2.mligo)) +(rule (targets fibo3.mligo_output) (action (with-stdout-to fibo3.mligo_output (run ligo pretty-print fibo3.mligo))) (deps fibo3.mligo)) +(rule (targets fibo4.mligo_output) (action (with-stdout-to fibo4.mligo_output (run ligo pretty-print fibo4.mligo))) (deps fibo4.mligo)) +(rule (targets function-shared.mligo_output) (action (with-stdout-to function-shared.mligo_output (run ligo pretty-print function-shared.mligo))) (deps function-shared.mligo)) +(rule (targets guess_string.mligo_output) (action (with-stdout-to guess_string.mligo_output (run ligo pretty-print guess_string.mligo))) (deps guess_string.mligo)) + ;; compare the output with the expected result -(alias (name runtest) (action (diff expected/address.religo address.output))) -(alias (name runtest) (action (diff expected/amount.religo amount.output))) -(alias (name runtest) (action (diff expected/arithmetic.religo arithmetic.output))) -(alias (name runtest) (action (diff expected/bad_address_format.religo bad_address_format.output))) -(alias (name runtest) (action (diff expected/balance_constant.religo balance_constant.output))) -(alias (name runtest) (action (diff expected/bitwise_arithmetic.religo bitwise_arithmetic.output))) -(alias (name runtest) (action (diff expected/boolean_operators.religo boolean_operators.output))) -(alias (name runtest) (action (diff expected/bytes_arithmetic.religo bytes_arithmetic.output))) -(alias (name runtest) (action (diff expected/bytes_unpack.religo bytes_unpack.output))) -(alias (name runtest) (action (diff expected/check_signature.religo check_signature.output))) -(alias (name runtest) (action (diff expected/closure.religo closure.output))) -(alias (name runtest) (action (diff expected/condition-shadowing.religo condition-shadowing.output))) -(alias (name runtest) (action (diff expected/condition.religo condition.output))) -(alias (name runtest) (action (diff expected/counter.religo counter.output))) -(alias (name runtest) (action (diff expected/crypto.religo crypto.output))) -(alias (name runtest) (action (diff expected/empty_case.religo empty_case.output))) -(alias (name runtest) (action (diff expected/eq_bool.religo eq_bool.output))) -(alias (name runtest) (action (diff expected/failwith.religo failwith.output))) -(alias (name runtest) (action (diff expected/function-shared.religo function-shared.output))) -(alias (name runtest) (action (diff expected/high-order.religo high-order.output))) -(alias (name runtest) (action (diff expected/implicit_account.religo implicit_account.output))) -(alias (name runtest) (action (diff expected/included.religo included.output))) -(alias (name runtest) (action (diff expected/includer.religo includer.output))) -(alias (name runtest) (action (diff expected/key_hash.religo key_hash.output))) -(alias (name runtest) (action (diff expected/lambda.religo lambda.output))) -(alias (name runtest) (action (diff expected/lambda2.religo lambda2.output))) -(alias (name runtest) (action (diff expected/let_multiple.religo let_multiple.output))) -(alias (name runtest) (action (diff expected/letin.religo letin.output))) -(alias (name runtest) (action (diff expected/list.religo list.output))) -(alias (name runtest) (action (diff expected/loop.religo loop.output))) -(alias (name runtest) (action (diff expected/map.religo map.output))) -(alias (name runtest) (action (diff expected/match_bis.religo match_bis.output))) -(alias (name runtest) (action (diff expected/match.religo match.output))) -(alias (name runtest) (action (diff expected/michelson_pair_tree.religo michelson_pair_tree.output))) -(alias (name runtest) (action (diff expected/multiple-parameters.religo multiple-parameters.output))) -(alias (name runtest) (action (diff expected/multisig.religo multisig.output))) -(alias (name runtest) (action (diff expected/no_semicolon.religo no_semicolon.output))) -(alias (name runtest) (action (diff expected/pledge.religo pledge.output))) -(alias (name runtest) (action (diff expected/record.religo record.output))) -(alias (name runtest) (action (diff expected/recursion.religo recursion.output))) -(alias (name runtest) (action (diff expected/self_address.religo self_address.output))) -(alias (name runtest) (action (diff expected/set_arithmetic.religo set_arithmetic.output))) -(alias (name runtest) (action (diff expected/set_delegate.religo set_delegate.output))) -(alias (name runtest) (action (diff expected/single_record_item.religo single_record_item.output))) -(alias (name runtest) (action (diff expected/string_arithmetic.religo string_arithmetic.output))) -(alias (name runtest) (action (diff expected/super-counter.religo super-counter.output))) -(alias (name runtest) (action (diff expected/tuple_list.religo tuple_list.output))) -(alias (name runtest) (action (diff expected/tuple_param_destruct.religo tuple_param_destruct.output))) -(alias (name runtest) (action (diff expected/tuple_type.religo tuple_type.output))) -(alias (name runtest) (action (diff expected/tuple.religo tuple.output))) -(alias (name runtest) (action (diff expected/tuples_no_annotation.religo tuples_no_annotation.output))) -(alias (name runtest) (action (diff expected/tuples_sequences_functions.religo tuples_sequences_functions.output))) -(alias (name runtest) (action (diff expected/variant.religo variant.output))) -(alias (name runtest) (action (diff expected/website2.religo website2.output))) +;; reasonligo +(alias (name runtest) (action (diff expected/address.religo address.religo_output))) +(alias (name runtest) (action (diff expected/amount.religo amount.religo_output))) +(alias (name runtest) (action (diff expected/arithmetic.religo arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/bad_address_format.religo bad_address_format.religo_output))) +(alias (name runtest) (action (diff expected/balance_constant.religo balance_constant.religo_output))) +(alias (name runtest) (action (diff expected/bitwise_arithmetic.religo bitwise_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/boolean_operators.religo boolean_operators.religo_output))) +(alias (name runtest) (action (diff expected/bytes_arithmetic.religo bytes_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/bytes_unpack.religo bytes_unpack.religo_output))) +(alias (name runtest) (action (diff expected/check_signature.religo check_signature.religo_output))) +(alias (name runtest) (action (diff expected/closure.religo closure.religo_output))) +(alias (name runtest) (action (diff expected/condition-shadowing.religo condition-shadowing.religo_output))) +(alias (name runtest) (action (diff expected/condition.religo condition.religo_output))) +(alias (name runtest) (action (diff expected/counter.religo counter.religo_output))) +(alias (name runtest) (action (diff expected/crypto.religo crypto.religo_output))) +(alias (name runtest) (action (diff expected/empty_case.religo empty_case.religo_output))) +(alias (name runtest) (action (diff expected/eq_bool.religo eq_bool.religo_output))) +(alias (name runtest) (action (diff expected/failwith.religo failwith.religo_output))) +(alias (name runtest) (action (diff expected/function-shared.religo function-shared.religo_output))) +(alias (name runtest) (action (diff expected/high-order.religo high-order.religo_output))) +(alias (name runtest) (action (diff expected/implicit_account.religo implicit_account.religo_output))) +(alias (name runtest) (action (diff expected/included.religo included.religo_output))) +(alias (name runtest) (action (diff expected/includer.religo includer.religo_output))) +(alias (name runtest) (action (diff expected/key_hash.religo key_hash.religo_output))) +(alias (name runtest) (action (diff expected/lambda.religo lambda.religo_output))) +(alias (name runtest) (action (diff expected/lambda2.religo lambda2.religo_output))) +(alias (name runtest) (action (diff expected/let_multiple.religo let_multiple.religo_output))) +(alias (name runtest) (action (diff expected/letin.religo letin.religo_output))) +(alias (name runtest) (action (diff expected/list.religo list.religo_output))) +(alias (name runtest) (action (diff expected/loop.religo loop.religo_output))) +(alias (name runtest) (action (diff expected/map.religo map.religo_output))) +(alias (name runtest) (action (diff expected/match_bis.religo match_bis.religo_output))) +(alias (name runtest) (action (diff expected/match.religo match.religo_output))) +(alias (name runtest) (action (diff expected/michelson_pair_tree.religo michelson_pair_tree.religo_output))) +(alias (name runtest) (action (diff expected/multiple-parameters.religo multiple-parameters.religo_output))) +(alias (name runtest) (action (diff expected/multisig.religo multisig.religo_output))) +(alias (name runtest) (action (diff expected/no_semicolon.religo no_semicolon.religo_output))) +(alias (name runtest) (action (diff expected/pledge.religo pledge.religo_output))) +(alias (name runtest) (action (diff expected/record.religo record.religo_output))) +(alias (name runtest) (action (diff expected/recursion.religo recursion.religo_output))) +(alias (name runtest) (action (diff expected/self_address.religo self_address.religo_output))) +(alias (name runtest) (action (diff expected/set_arithmetic.religo set_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/set_delegate.religo set_delegate.religo_output))) +(alias (name runtest) (action (diff expected/single_record_item.religo single_record_item.religo_output))) +(alias (name runtest) (action (diff expected/string_arithmetic.religo string_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/super-counter.religo super-counter.religo_output))) +(alias (name runtest) (action (diff expected/tuple_list.religo tuple_list.religo_output))) +(alias (name runtest) (action (diff expected/tuple_param_destruct.religo tuple_param_destruct.religo_output))) +(alias (name runtest) (action (diff expected/tuple_type.religo tuple_type.religo_output))) +(alias (name runtest) (action (diff expected/tuple.religo tuple.religo_output))) +(alias (name runtest) (action (diff expected/tuples_no_annotation.religo tuples_no_annotation.religo_output))) +(alias (name runtest) (action (diff expected/tuples_sequences_functions.religo tuples_sequences_functions.religo_output))) +(alias (name runtest) (action (diff expected/variant.religo variant.religo_output))) +(alias (name runtest) (action (diff expected/website2.religo website2.religo_output))) + +;; cameligo +(alias (name runtest) (action (diff expected/assert.mligo assert.mligo_output))) +(alias (name runtest) (action (diff expected/address.mligo address.mligo_output))) +(alias (name runtest) (action (diff expected/amount_lambda.mligo amount_lambda.mligo_output))) +(alias (name runtest) (action (diff expected/amount.mligo amount.mligo_output))) +(alias (name runtest) (action (diff expected/arithmetic.mligo arithmetic.mligo_output))) +(alias (name runtest) (action (diff expected/attributes.mligo attributes.mligo_output))) +(alias (name runtest) (action (diff expected/balance_constant.mligo balance_constant.mligo_output))) +(alias (name runtest) (action (diff expected/basic.mligo basic.mligo_output))) +(alias (name runtest) (action (diff expected/big_map.mligo big_map.mligo_output))) +(alias (name runtest) (action (diff expected/bitwise_arithmetic.mligo bitwise_arithmetic.mligo_output))) +(alias (name runtest) (action (diff expected/boolean_operators.mligo boolean_operators.mligo_output))) +(alias (name runtest) (action (diff expected/bytes_arithmetic.mligo bytes_arithmetic.mligo_output))) +(alias (name runtest) (action (diff expected/bytes_unpack.mligo bytes_unpack.mligo_output))) +(alias (name runtest) (action (diff expected/check_signature.mligo check_signature.mligo_output))) +(alias (name runtest) (action (diff expected/closure.mligo closure.mligo_output))) +(alias (name runtest) (action (diff expected/comparable.mligo comparable.mligo_output))) +(alias (name runtest) (action (diff expected/condition-annot.mligo condition-annot.mligo_output))) +(alias (name runtest) (action (diff expected/condition-shadowing.mligo condition-shadowing.mligo_output))) +(alias (name runtest) (action (diff expected/condition.mligo condition.mligo_output))) +(alias (name runtest) (action (diff expected/counter.mligo counter.mligo_output))) +(alias (name runtest) (action (diff expected/create_contract.mligo create_contract.mligo_output))) +(alias (name runtest) (action (diff expected/crypto.mligo crypto.mligo_output))) +(alias (name runtest) (action (diff expected/curry.mligo curry.mligo_output))) +(alias (name runtest) (action (diff expected/double_michelson_or.mligo double_michelson_or.mligo_output))) +(alias (name runtest) (action (diff expected/empty_case.mligo empty_case.mligo_output))) +(alias (name runtest) (action (diff expected/eq_bool.mligo eq_bool.mligo_output))) +(alias (name runtest) (action (diff expected/FA1.2.mligo FA1.2.mligo_output))) +(alias (name runtest) (action (diff expected/failwith.mligo failwith.mligo_output))) +(alias (name runtest) (action (diff expected/fibo.mligo fibo.mligo_output))) +(alias (name runtest) (action (diff expected/fibo2.mligo fibo2.mligo_output))) +(alias (name runtest) (action (diff expected/fibo3.mligo fibo3.mligo_output))) +(alias (name runtest) (action (diff expected/fibo4.mligo fibo4.mligo_output))) +(alias (name runtest) (action (diff expected/function-shared.mligo function-shared.mligo_output))) +(alias (name runtest) (action (diff expected/guess_string.mligo guess_string.mligo_output))) ;; try to parse the generated contracts -(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.output -s reasonligo))) (deps address.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.output -s reasonligo))) (deps amount.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.output -s reasonligo))) (deps arithmetic.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_address_format.output -s reasonligo))) (deps bad_address_format.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.output -s reasonligo))) (deps balance_constant.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.output -s reasonligo))) (deps bitwise_arithmetic.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.output -s reasonligo))) (deps boolean_operators.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.output -s reasonligo))) (deps bytes_arithmetic.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.output -s reasonligo))) (deps bytes_unpack.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.output -s reasonligo))) (deps check_signature.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.output -s reasonligo))) (deps closure.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-shadowing.output -s reasonligo))) (deps condition-shadowing.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.output -s reasonligo))) (deps condition.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.output -s reasonligo))) (deps counter.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.output -s reasonligo))) (deps crypto.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.output -s reasonligo))) (deps empty_case.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.output -s reasonligo))) (deps eq_bool.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.output -s reasonligo))) (deps failwith.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.output -s reasonligo))) (deps function-shared.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst high-order.output -s reasonligo))) (deps high-order.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst implicit_account.output -s reasonligo))) (deps implicit_account.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst included.output -s reasonligo))) (deps included.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst includer.output -s reasonligo))) (deps includer.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash.output -s reasonligo))) (deps key_hash.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda.output -s reasonligo))) (deps lambda.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda2.output -s reasonligo))) (deps lambda2.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst let_multiple.output -s reasonligo))) (deps let_multiple.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst letin.output -s reasonligo))) (deps letin.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst list.output -s reasonligo))) (deps list.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop.output -s reasonligo))) (deps loop.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst map.output -s reasonligo))) (deps map.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst match_bis.output -s reasonligo))) (deps match_bis.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst match.output -s reasonligo))) (deps match.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree.output -s reasonligo))) (deps michelson_pair_tree.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst multiple-parameters.output -s reasonligo))) (deps multiple-parameters.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig.output -s reasonligo))) (deps multisig.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst no_semicolon.output -s reasonligo))) (deps no_semicolon.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst pledge.output -s reasonligo))) (deps pledge.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst record.output -s reasonligo))) (deps record.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst recursion.output -s reasonligo))) (deps recursion.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_address.output -s reasonligo))) (deps self_address.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic.output -s reasonligo))) (deps set_arithmetic.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_delegate.output -s reasonligo))) (deps set_delegate.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst single_record_item.output -s reasonligo))) (deps single_record_item.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst string_arithmetic.output -s reasonligo))) (deps string_arithmetic.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst super-counter.output -s reasonligo))) (deps super-counter.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_list.output -s reasonligo))) (deps tuple_list.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_param_destruct.output -s reasonligo))) (deps tuple_param_destruct.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_type.output -s reasonligo))) (deps tuple_type.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple.output -s reasonligo))) (deps tuple.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_no_annotation.output -s reasonligo))) (deps tuples_no_annotation.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.output -s reasonligo))) (deps variant.output)) -(alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.output -s reasonligo))) (deps website2.output)) +;; reasonligo +(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.religo_output -s reasonligo))) (deps address.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.religo_output -s reasonligo))) (deps amount.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.religo_output -s reasonligo))) (deps arithmetic.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_address_format.religo_output -s reasonligo))) (deps bad_address_format.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.religo_output -s reasonligo))) (deps balance_constant.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.religo_output -s reasonligo))) (deps bitwise_arithmetic.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.religo_output -s reasonligo))) (deps boolean_operators.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.religo_output -s reasonligo))) (deps bytes_arithmetic.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.religo_output -s reasonligo))) (deps bytes_unpack.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.religo_output -s reasonligo))) (deps check_signature.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.religo_output -s reasonligo))) (deps closure.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-shadowing.religo_output -s reasonligo))) (deps condition-shadowing.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.religo_output -s reasonligo))) (deps condition.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.religo_output -s reasonligo))) (deps counter.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.religo_output -s reasonligo))) (deps crypto.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.religo_output -s reasonligo))) (deps empty_case.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.religo_output -s reasonligo))) (deps eq_bool.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.religo_output -s reasonligo))) (deps failwith.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.religo_output -s reasonligo))) (deps function-shared.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst high-order.religo_output -s reasonligo))) (deps high-order.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst implicit_account.religo_output -s reasonligo))) (deps implicit_account.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst included.religo_output -s reasonligo))) (deps included.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst includer.religo_output -s reasonligo))) (deps includer.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash.religo_output -s reasonligo))) (deps key_hash.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda.religo_output -s reasonligo))) (deps lambda.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda2.religo_output -s reasonligo))) (deps lambda2.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst let_multiple.religo_output -s reasonligo))) (deps let_multiple.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst letin.religo_output -s reasonligo))) (deps letin.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst list.religo_output -s reasonligo))) (deps list.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop.religo_output -s reasonligo))) (deps loop.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst map.religo_output -s reasonligo))) (deps map.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match_bis.religo_output -s reasonligo))) (deps match_bis.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match.religo_output -s reasonligo))) (deps match.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree.religo_output -s reasonligo))) (deps michelson_pair_tree.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multiple-parameters.religo_output -s reasonligo))) (deps multiple-parameters.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig.religo_output -s reasonligo))) (deps multisig.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst no_semicolon.religo_output -s reasonligo))) (deps no_semicolon.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst pledge.religo_output -s reasonligo))) (deps pledge.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst record.religo_output -s reasonligo))) (deps record.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst recursion.religo_output -s reasonligo))) (deps recursion.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_address.religo_output -s reasonligo))) (deps self_address.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic.religo_output -s reasonligo))) (deps set_arithmetic.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_delegate.religo_output -s reasonligo))) (deps set_delegate.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst single_record_item.religo_output -s reasonligo))) (deps single_record_item.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst string_arithmetic.religo_output -s reasonligo))) (deps string_arithmetic.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst super-counter.religo_output -s reasonligo))) (deps super-counter.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_list.religo_output -s reasonligo))) (deps tuple_list.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_param_destruct.religo_output -s reasonligo))) (deps tuple_param_destruct.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple_type.religo_output -s reasonligo))) (deps tuple_type.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple.religo_output -s reasonligo))) (deps tuple.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_no_annotation.religo_output -s reasonligo))) (deps tuples_no_annotation.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuples_sequences_functions.religo_output -s reasonligo))) (deps tuples_sequences_functions.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.religo_output -s reasonligo))) (deps variant.religo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.religo_output -s reasonligo))) (deps website2.religo_output)) + +;; cameligo +(alias (name runtest) (action (ignore-stdout (run ligo print-cst assert.mligo_output -s cameligo))) (deps assert.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.mligo_output -s cameligo))) (deps address.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount_lambda.mligo_output -s cameligo))) (deps amount_lambda.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.mligo_output -s cameligo))) (deps amount.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.mligo_output -s cameligo))) (deps arithmetic.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst attributes.mligo_output -s cameligo))) (deps attributes.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.mligo_output -s cameligo))) (deps balance_constant.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst basic.mligo_output -s cameligo))) (deps basic.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst big_map.mligo_output -s cameligo))) (deps big_map.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.mligo_output -s cameligo))) (deps bitwise_arithmetic.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.mligo_output -s cameligo))) (deps boolean_operators.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.mligo_output -s cameligo))) (deps bytes_arithmetic.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.mligo_output -s cameligo))) (deps bytes_unpack.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.mligo_output -s cameligo))) (deps check_signature.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.mligo_output -s cameligo))) (deps closure.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst comparable.mligo_output -s cameligo))) (deps comparable.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-annot.mligo_output -s cameligo))) (deps condition-annot.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-shadowing.mligo_output -s cameligo))) (deps condition-shadowing.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.mligo_output -s cameligo))) (deps condition.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.mligo_output -s cameligo))) (deps counter.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst create_contract.mligo_output -s cameligo))) (deps create_contract.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.mligo_output -s cameligo))) (deps crypto.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst curry.mligo_output -s cameligo))) (deps curry.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst double_michelson_or.mligo_output -s cameligo))) (deps double_michelson_or.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.mligo_output -s cameligo))) (deps empty_case.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.mligo_output -s cameligo))) (deps eq_bool.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst FA1.2.mligo_output -s cameligo))) (deps FA1.2.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.mligo_output -s cameligo))) (deps failwith.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst fibo.mligo_output -s cameligo))) (deps fibo.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst fibo2.mligo_output -s cameligo))) (deps fibo2.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst fibo3.mligo_output -s cameligo))) (deps fibo3.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst fibo4.mligo_output -s cameligo))) (deps fibo4.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.mligo_output -s cameligo))) (deps function-shared.mligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst guess_string.mligo_output -s cameligo))) (deps guess_string.mligo_output)) ;; pretty print with the former pretty printed contracts as input -(rule (targets address.output2) (action (with-stdout-to address.output2 (run ligo pretty-print address.output -s reasonligo))) (deps address.output)) -(rule (targets amount.output2) (action (with-stdout-to amount.output2 (run ligo pretty-print amount.output -s reasonligo))) (deps amount.output)) -(rule (targets arithmetic.output2) (action (with-stdout-to arithmetic.output2 (run ligo pretty-print arithmetic.output -s reasonligo))) (deps arithmetic.output)) -(rule (targets bad_address_format.output2) (action (with-stdout-to bad_address_format.output2 (run ligo pretty-print bad_address_format.output -s reasonligo))) (deps bad_address_format.output)) -(rule (targets balance_constant.output2) (action (with-stdout-to balance_constant.output2 (run ligo pretty-print balance_constant.output -s reasonligo))) (deps balance_constant.output)) -(rule (targets bitwise_arithmetic.output2) (action (with-stdout-to bitwise_arithmetic.output2 (run ligo pretty-print bitwise_arithmetic.output -s reasonligo))) (deps bitwise_arithmetic.output)) -(rule (targets boolean_operators.output2) (action (with-stdout-to boolean_operators.output2 (run ligo pretty-print boolean_operators.output -s reasonligo))) (deps boolean_operators.output)) -(rule (targets bytes_arithmetic.output2) (action (with-stdout-to bytes_arithmetic.output2 (run ligo pretty-print bytes_arithmetic.output -s reasonligo))) (deps bytes_arithmetic.output)) -(rule (targets bytes_unpack.output2) (action (with-stdout-to bytes_unpack.output2 (run ligo pretty-print bytes_unpack.output -s reasonligo))) (deps bytes_unpack.output)) -(rule (targets check_signature.output2) (action (with-stdout-to check_signature.output2 (run ligo pretty-print check_signature.output -s reasonligo))) (deps check_signature.output)) -(rule (targets closure.output2) (action (with-stdout-to closure.output2 (run ligo pretty-print closure.output -s reasonligo))) (deps closure.output)) -(rule (targets condition-shadowing.output2) (action (with-stdout-to condition-shadowing.output2 (run ligo pretty-print condition-shadowing.output -s reasonligo))) (deps condition-shadowing.output)) -(rule (targets condition.output2) (action (with-stdout-to condition.output2 (run ligo pretty-print condition.output -s reasonligo))) (deps condition.output)) -(rule (targets counter.output2) (action (with-stdout-to counter.output2 (run ligo pretty-print counter.output -s reasonligo))) (deps counter.output)) -(rule (targets crypto.output2) (action (with-stdout-to crypto.output2 (run ligo pretty-print crypto.output -s reasonligo))) (deps crypto.output)) -(rule (targets empty_case.output2) (action (with-stdout-to empty_case.output2 (run ligo pretty-print empty_case.output -s reasonligo))) (deps empty_case.output)) -(rule (targets eq_bool.output2) (action (with-stdout-to eq_bool.output2 (run ligo pretty-print eq_bool.output -s reasonligo))) (deps eq_bool.output)) -(rule (targets failwith.output2) (action (with-stdout-to failwith.output2 (run ligo pretty-print failwith.output -s reasonligo))) (deps failwith.output)) -(rule (targets function-shared.output2) (action (with-stdout-to function-shared.output2 (run ligo pretty-print function-shared.output -s reasonligo))) (deps function-shared.output)) -(rule (targets high-order.output2) (action (with-stdout-to high-order.output2 (run ligo pretty-print high-order.output -s reasonligo))) (deps high-order.output)) -(rule (targets implicit_account.output2) (action (with-stdout-to implicit_account.output2 (run ligo pretty-print implicit_account.output -s reasonligo))) (deps implicit_account.output)) -(rule (targets included.output2) (action (with-stdout-to included.output2 (run ligo pretty-print included.output -s reasonligo))) (deps included.output)) +;; reasonligo +(rule (targets address.religo_output2) (action (with-stdout-to address.religo_output2 (run ligo pretty-print address.religo_output -s reasonligo))) (deps address.religo_output)) +(rule (targets amount.religo_output2) (action (with-stdout-to amount.religo_output2 (run ligo pretty-print amount.religo_output -s reasonligo))) (deps amount.religo_output)) +(rule (targets arithmetic.religo_output2) (action (with-stdout-to arithmetic.religo_output2 (run ligo pretty-print arithmetic.religo_output -s reasonligo))) (deps arithmetic.religo_output)) +(rule (targets bad_address_format.religo_output2) (action (with-stdout-to bad_address_format.religo_output2 (run ligo pretty-print bad_address_format.religo_output -s reasonligo))) (deps bad_address_format.religo_output)) +(rule (targets balance_constant.religo_output2) (action (with-stdout-to balance_constant.religo_output2 (run ligo pretty-print balance_constant.religo_output -s reasonligo))) (deps balance_constant.religo_output)) +(rule (targets bitwise_arithmetic.religo_output2) (action (with-stdout-to bitwise_arithmetic.religo_output2 (run ligo pretty-print bitwise_arithmetic.religo_output -s reasonligo))) (deps bitwise_arithmetic.religo_output)) +(rule (targets boolean_operators.religo_output2) (action (with-stdout-to boolean_operators.religo_output2 (run ligo pretty-print boolean_operators.religo_output -s reasonligo))) (deps boolean_operators.religo_output)) +(rule (targets bytes_arithmetic.religo_output2) (action (with-stdout-to bytes_arithmetic.religo_output2 (run ligo pretty-print bytes_arithmetic.religo_output -s reasonligo))) (deps bytes_arithmetic.religo_output)) +(rule (targets bytes_unpack.religo_output2) (action (with-stdout-to bytes_unpack.religo_output2 (run ligo pretty-print bytes_unpack.religo_output -s reasonligo))) (deps bytes_unpack.religo_output)) +(rule (targets check_signature.religo_output2) (action (with-stdout-to check_signature.religo_output2 (run ligo pretty-print check_signature.religo_output -s reasonligo))) (deps check_signature.religo_output)) +(rule (targets closure.religo_output2) (action (with-stdout-to closure.religo_output2 (run ligo pretty-print closure.religo_output -s reasonligo))) (deps closure.religo_output)) +(rule (targets condition-shadowing.religo_output2) (action (with-stdout-to condition-shadowing.religo_output2 (run ligo pretty-print condition-shadowing.religo_output -s reasonligo))) (deps condition-shadowing.religo_output)) +(rule (targets condition.religo_output2) (action (with-stdout-to condition.religo_output2 (run ligo pretty-print condition.religo_output -s reasonligo))) (deps condition.religo_output)) +(rule (targets counter.religo_output2) (action (with-stdout-to counter.religo_output2 (run ligo pretty-print counter.religo_output -s reasonligo))) (deps counter.religo_output)) +(rule (targets crypto.religo_output2) (action (with-stdout-to crypto.religo_output2 (run ligo pretty-print crypto.religo_output -s reasonligo))) (deps crypto.religo_output)) +(rule (targets empty_case.religo_output2) (action (with-stdout-to empty_case.religo_output2 (run ligo pretty-print empty_case.religo_output -s reasonligo))) (deps empty_case.religo_output)) +(rule (targets eq_bool.religo_output2) (action (with-stdout-to eq_bool.religo_output2 (run ligo pretty-print eq_bool.religo_output -s reasonligo))) (deps eq_bool.religo_output)) +(rule (targets failwith.religo_output2) (action (with-stdout-to failwith.religo_output2 (run ligo pretty-print failwith.religo_output -s reasonligo))) (deps failwith.religo_output)) +(rule (targets function-shared.religo_output2) (action (with-stdout-to function-shared.religo_output2 (run ligo pretty-print function-shared.religo_output -s reasonligo))) (deps function-shared.religo_output)) +(rule (targets high-order.religo_output2) (action (with-stdout-to high-order.religo_output2 (run ligo pretty-print high-order.religo_output -s reasonligo))) (deps high-order.religo_output)) +(rule (targets implicit_account.religo_output2) (action (with-stdout-to implicit_account.religo_output2 (run ligo pretty-print implicit_account.religo_output -s reasonligo))) (deps implicit_account.religo_output)) +(rule (targets included.religo_output2) (action (with-stdout-to included.religo_output2 (run ligo pretty-print included.religo_output -s reasonligo))) (deps included.religo_output)) +(rule (targets includer.religo_output2) (action (with-stdout-to includer.religo_output2 (run ligo pretty-print includer.religo_output -s reasonligo))) (deps includer.religo_output)) +(rule (targets key_hash.religo_output2) (action (with-stdout-to key_hash.religo_output2 (run ligo pretty-print key_hash.religo_output -s reasonligo))) (deps key_hash.religo_output)) +(rule (targets lambda.religo_output2) (action (with-stdout-to lambda.religo_output2 (run ligo pretty-print lambda.religo_output -s reasonligo))) (deps lambda.religo_output)) +(rule (targets lambda2.religo_output2) (action (with-stdout-to lambda2.religo_output2 (run ligo pretty-print lambda2.religo_output -s reasonligo))) (deps lambda2.religo_output)) +(rule (targets let_multiple.religo_output2) (action (with-stdout-to let_multiple.religo_output2 (run ligo pretty-print let_multiple.religo_output -s reasonligo))) (deps let_multiple.religo_output)) +(rule (targets letin.religo_output2) (action (with-stdout-to letin.religo_output2 (run ligo pretty-print letin.religo_output -s reasonligo))) (deps letin.religo_output)) +(rule (targets list.religo_output2) (action (with-stdout-to list.religo_output2 (run ligo pretty-print list.religo_output -s reasonligo))) (deps list.religo_output)) +(rule (targets loop.religo_output2) (action (with-stdout-to loop.religo_output2 (run ligo pretty-print loop.religo_output -s reasonligo))) (deps loop.religo_output)) +(rule (targets map.religo_output2) (action (with-stdout-to map.religo_output2 (run ligo pretty-print map.religo_output -s reasonligo))) (deps map.religo_output)) +(rule (targets match_bis.religo_output2) (action (with-stdout-to match_bis.religo_output2 (run ligo pretty-print match_bis.religo_output -s reasonligo))) (deps match_bis.religo_output)) +(rule (targets match.religo_output2) (action (with-stdout-to match.religo_output2 (run ligo pretty-print match.religo_output -s reasonligo))) (deps match.religo_output)) +(rule (targets michelson_pair_tree.religo_output2) (action (with-stdout-to michelson_pair_tree.religo_output2 (run ligo pretty-print michelson_pair_tree.religo_output -s reasonligo))) (deps michelson_pair_tree.religo_output)) +(rule (targets multiple-parameters.religo_output2) (action (with-stdout-to multiple-parameters.religo_output2 (run ligo pretty-print multiple-parameters.religo_output -s reasonligo))) (deps multiple-parameters.religo_output)) +(rule (targets multisig.religo_output2) (action (with-stdout-to multisig.religo_output2 (run ligo pretty-print multisig.religo_output -s reasonligo))) (deps multisig.religo_output)) +(rule (targets no_semicolon.religo_output2) (action (with-stdout-to no_semicolon.religo_output2 (run ligo pretty-print no_semicolon.religo_output -s reasonligo))) (deps no_semicolon.religo_output)) +(rule (targets pledge.religo_output2) (action (with-stdout-to pledge.religo_output2 (run ligo pretty-print pledge.religo_output -s reasonligo))) (deps pledge.religo_output)) +(rule (targets record.religo_output2) (action (with-stdout-to record.religo_output2 (run ligo pretty-print record.religo_output -s reasonligo))) (deps record.religo_output)) +(rule (targets recursion.religo_output2) (action (with-stdout-to recursion.religo_output2 (run ligo pretty-print recursion.religo_output -s reasonligo))) (deps recursion.religo_output)) +(rule (targets self_address.religo_output2) (action (with-stdout-to self_address.religo_output2 (run ligo pretty-print self_address.religo_output -s reasonligo))) (deps self_address.religo_output)) +(rule (targets set_arithmetic.religo_output2) (action (with-stdout-to set_arithmetic.religo_output2 (run ligo pretty-print set_arithmetic.religo_output -s reasonligo))) (deps set_arithmetic.religo_output)) +(rule (targets set_delegate.religo_output2) (action (with-stdout-to set_delegate.religo_output2 (run ligo pretty-print set_delegate.religo_output -s reasonligo))) (deps set_delegate.religo_output)) +(rule (targets single_record_item.religo_output2) (action (with-stdout-to single_record_item.religo_output2 (run ligo pretty-print single_record_item.religo_output -s reasonligo))) (deps single_record_item.religo_output)) +(rule (targets string_arithmetic.religo_output2) (action (with-stdout-to string_arithmetic.religo_output2 (run ligo pretty-print string_arithmetic.religo_output -s reasonligo))) (deps string_arithmetic.religo_output)) +(rule (targets super-counter.religo_output2) (action (with-stdout-to super-counter.religo_output2 (run ligo pretty-print super-counter.religo_output -s reasonligo))) (deps super-counter.religo_output)) +(rule (targets tuple_list.religo_output2) (action (with-stdout-to tuple_list.religo_output2 (run ligo pretty-print tuple_list.religo_output -s reasonligo))) (deps tuple_list.religo_output)) +(rule (targets tuple_param_destruct.religo_output2) (action (with-stdout-to tuple_param_destruct.religo_output2 (run ligo pretty-print tuple_param_destruct.religo_output -s reasonligo))) (deps tuple_param_destruct.religo_output)) +(rule (targets tuple_type.religo_output2) (action (with-stdout-to tuple_type.religo_output2 (run ligo pretty-print tuple_type.religo_output -s reasonligo))) (deps tuple_type.religo_output)) +(rule (targets tuple.religo_output2) (action (with-stdout-to tuple.religo_output2 (run ligo pretty-print tuple.religo_output -s reasonligo))) (deps tuple.religo_output)) +(rule (targets tuples_no_annotation.religo_output2) (action (with-stdout-to tuples_no_annotation.religo_output2 (run ligo pretty-print tuples_no_annotation.religo_output -s reasonligo))) (deps tuples_no_annotation.religo_output)) +(rule (targets tuples_sequences_functions.religo_output2) (action (with-stdout-to tuples_sequences_functions.religo_output2 (run ligo pretty-print tuples_sequences_functions.religo_output -s reasonligo))) (deps tuples_sequences_functions.religo_output)) +(rule (targets variant.religo_output2) (action (with-stdout-to variant.religo_output2 (run ligo pretty-print variant.religo_output -s reasonligo))) (deps variant.religo_output)) +(rule (targets website2.religo_output2) (action (with-stdout-to website2.religo_output2 (run ligo pretty-print website2.religo_output -s reasonligo))) (deps website2.religo_output)) -(rule (targets includer.output2) (action (with-stdout-to includer.output2 (run ligo pretty-print includer.output -s reasonligo))) (deps includer.output)) -(rule (targets key_hash.output2) (action (with-stdout-to key_hash.output2 (run ligo pretty-print key_hash.output -s reasonligo))) (deps key_hash.output)) -(rule (targets lambda.output2) (action (with-stdout-to lambda.output2 (run ligo pretty-print lambda.output -s reasonligo))) (deps lambda.output)) -(rule (targets lambda2.output2) (action (with-stdout-to lambda2.output2 (run ligo pretty-print lambda2.output -s reasonligo))) (deps lambda2.output)) -(rule (targets let_multiple.output2) (action (with-stdout-to let_multiple.output2 (run ligo pretty-print let_multiple.output -s reasonligo))) (deps let_multiple.output)) -(rule (targets letin.output2) (action (with-stdout-to letin.output2 (run ligo pretty-print letin.output -s reasonligo))) (deps letin.output)) -(rule (targets list.output2) (action (with-stdout-to list.output2 (run ligo pretty-print list.output -s reasonligo))) (deps list.output)) -(rule (targets loop.output2) (action (with-stdout-to loop.output2 (run ligo pretty-print loop.output -s reasonligo))) (deps loop.output)) -(rule (targets map.output2) (action (with-stdout-to map.output2 (run ligo pretty-print map.output -s reasonligo))) (deps map.output)) -(rule (targets match_bis.output2) (action (with-stdout-to match_bis.output2 (run ligo pretty-print match_bis.output -s reasonligo))) (deps match_bis.output)) -(rule (targets match.output2) (action (with-stdout-to match.output2 (run ligo pretty-print match.output -s reasonligo))) (deps match.output)) -(rule (targets michelson_pair_tree.output2) (action (with-stdout-to michelson_pair_tree.output2 (run ligo pretty-print michelson_pair_tree.output -s reasonligo))) (deps michelson_pair_tree.output)) -(rule (targets multiple-parameters.output2) (action (with-stdout-to multiple-parameters.output2 (run ligo pretty-print multiple-parameters.output -s reasonligo))) (deps multiple-parameters.output)) -(rule (targets multisig.output2) (action (with-stdout-to multisig.output2 (run ligo pretty-print multisig.output -s reasonligo))) (deps multisig.output)) -(rule (targets no_semicolon.output2) (action (with-stdout-to no_semicolon.output2 (run ligo pretty-print no_semicolon.output -s reasonligo))) (deps no_semicolon.output)) -(rule (targets pledge.output2) (action (with-stdout-to pledge.output2 (run ligo pretty-print pledge.output -s reasonligo))) (deps pledge.output)) -(rule (targets record.output2) (action (with-stdout-to record.output2 (run ligo pretty-print record.output -s reasonligo))) (deps record.output)) -(rule (targets recursion.output2) (action (with-stdout-to recursion.output2 (run ligo pretty-print recursion.output -s reasonligo))) (deps recursion.output)) -(rule (targets self_address.output2) (action (with-stdout-to self_address.output2 (run ligo pretty-print self_address.output -s reasonligo))) (deps self_address.output)) -(rule (targets set_arithmetic.output2) (action (with-stdout-to set_arithmetic.output2 (run ligo pretty-print set_arithmetic.output -s reasonligo))) (deps set_arithmetic.output)) -(rule (targets set_delegate.output2) (action (with-stdout-to set_delegate.output2 (run ligo pretty-print set_delegate.output -s reasonligo))) (deps set_delegate.output)) -(rule (targets single_record_item.output2) (action (with-stdout-to single_record_item.output2 (run ligo pretty-print single_record_item.output -s reasonligo))) (deps single_record_item.output)) -(rule (targets string_arithmetic.output2) (action (with-stdout-to string_arithmetic.output2 (run ligo pretty-print string_arithmetic.output -s reasonligo))) (deps string_arithmetic.output)) -(rule (targets super-counter.output2) (action (with-stdout-to super-counter.output2 (run ligo pretty-print super-counter.output -s reasonligo))) (deps super-counter.output)) -(rule (targets tuple_list.output2) (action (with-stdout-to tuple_list.output2 (run ligo pretty-print tuple_list.output -s reasonligo))) (deps tuple_list.output)) -(rule (targets tuple_param_destruct.output2) (action (with-stdout-to tuple_param_destruct.output2 (run ligo pretty-print tuple_param_destruct.output -s reasonligo))) (deps tuple_param_destruct.output)) -(rule (targets tuple_type.output2) (action (with-stdout-to tuple_type.output2 (run ligo pretty-print tuple_type.output -s reasonligo))) (deps tuple_type.output)) -(rule (targets tuple.output2) (action (with-stdout-to tuple.output2 (run ligo pretty-print tuple.output -s reasonligo))) (deps tuple.output)) -(rule (targets tuples_no_annotation.output2) (action (with-stdout-to tuples_no_annotation.output2 (run ligo pretty-print tuples_no_annotation.output -s reasonligo))) (deps tuples_no_annotation.output)) -(rule (targets tuples_sequences_functions.output2) (action (with-stdout-to tuples_sequences_functions.output2 (run ligo pretty-print tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) -(rule (targets variant.output2) (action (with-stdout-to variant.output2 (run ligo pretty-print variant.output -s reasonligo))) (deps variant.output)) -(rule (targets website2.output2) (action (with-stdout-to website2.output2 (run ligo pretty-print website2.output -s reasonligo))) (deps website2.output)) +(rule (targets assert.mligo_output2) (action (with-stdout-to assert.mligo_output2 (run ligo pretty-print assert.mligo -s cameligo))) (deps assert.mligo_output)) +(rule (targets address.mligo_output2) (action (with-stdout-to address.mligo_output2 (run ligo pretty-print address.mligo -s cameligo))) (deps address.mligo_output)) +(rule (targets amount_lambda.mligo_output2) (action (with-stdout-to amount_lambda.mligo_output2 (run ligo pretty-print amount_lambda.mligo -s cameligo))) (deps amount_lambda.mligo_output)) +(rule (targets amount.mligo_output2) (action (with-stdout-to amount.mligo_output2 (run ligo pretty-print amount.mligo -s cameligo))) (deps amount.mligo_output)) +(rule (targets arithmetic.mligo_output2) (action (with-stdout-to arithmetic.mligo_output2 (run ligo pretty-print arithmetic.mligo -s cameligo))) (deps arithmetic.mligo_output)) +(rule (targets attributes.mligo_output2) (action (with-stdout-to attributes.mligo_output2 (run ligo pretty-print attributes.mligo -s cameligo))) (deps attributes.mligo_output)) +(rule (targets balance_constant.mligo_output2) (action (with-stdout-to balance_constant.mligo_output2 (run ligo pretty-print balance_constant.mligo -s cameligo))) (deps balance_constant.mligo_output)) +(rule (targets basic.mligo_output2) (action (with-stdout-to basic.mligo_output2 (run ligo pretty-print basic.mligo -s cameligo))) (deps basic.mligo_output)) +(rule (targets big_map.mligo_output2) (action (with-stdout-to big_map.mligo_output2 (run ligo pretty-print big_map.mligo -s cameligo))) (deps big_map.mligo_output)) +(rule (targets bitwise_arithmetic.mligo_output2) (action (with-stdout-to bitwise_arithmetic.mligo_output2 (run ligo pretty-print bitwise_arithmetic.mligo -s cameligo))) (deps bitwise_arithmetic.mligo_output)) +(rule (targets boolean_operators.mligo_output2) (action (with-stdout-to boolean_operators.mligo_output2 (run ligo pretty-print boolean_operators.mligo -s cameligo))) (deps boolean_operators.mligo_output)) +(rule (targets bytes_arithmetic.mligo_output2) (action (with-stdout-to bytes_arithmetic.mligo_output2 (run ligo pretty-print bytes_arithmetic.mligo -s cameligo))) (deps bytes_arithmetic.mligo_output)) +(rule (targets bytes_unpack.mligo_output2) (action (with-stdout-to bytes_unpack.mligo_output2 (run ligo pretty-print bytes_unpack.mligo -s cameligo))) (deps bytes_unpack.mligo_output)) +(rule (targets check_signature.mligo_output2) (action (with-stdout-to check_signature.mligo_output2 (run ligo pretty-print check_signature.mligo -s cameligo))) (deps check_signature.mligo_output)) +(rule (targets closure.mligo_output2) (action (with-stdout-to closure.mligo_output2 (run ligo pretty-print closure.mligo -s cameligo))) (deps closure.mligo_output)) +(rule (targets comparable.mligo_output2) (action (with-stdout-to comparable.mligo_output2 (run ligo pretty-print comparable.mligo -s cameligo))) (deps comparable.mligo_output)) +(rule (targets condition-annot.mligo_output2) (action (with-stdout-to condition-annot.mligo_output2 (run ligo pretty-print condition-annot.mligo -s cameligo))) (deps condition-annot.mligo_output)) +(rule (targets condition-shadowing.mligo_output2) (action (with-stdout-to condition-shadowing.mligo_output2 (run ligo pretty-print condition-shadowing.mligo -s cameligo))) (deps condition-shadowing.mligo_output)) +(rule (targets condition.mligo_output2) (action (with-stdout-to condition.mligo_output2 (run ligo pretty-print condition.mligo -s cameligo))) (deps condition.mligo_output)) +(rule (targets counter.mligo_output2) (action (with-stdout-to counter.mligo_output2 (run ligo pretty-print counter.mligo -s cameligo))) (deps counter.mligo_output)) +(rule (targets create_contract.mligo_output2) (action (with-stdout-to create_contract.mligo_output2 (run ligo pretty-print create_contract.mligo -s cameligo))) (deps create_contract.mligo_output)) +(rule (targets crypto.mligo_output2) (action (with-stdout-to crypto.mligo_output2 (run ligo pretty-print crypto.mligo -s cameligo))) (deps crypto.mligo_output)) +(rule (targets curry.mligo_output2) (action (with-stdout-to curry.mligo_output2 (run ligo pretty-print curry.mligo -s cameligo))) (deps curry.mligo_output)) +(rule (targets double_michelson_or.mligo_output2) (action (with-stdout-to double_michelson_or.mligo_output2 (run ligo pretty-print double_michelson_or.mligo -s cameligo))) (deps double_michelson_or.mligo_output)) +(rule (targets empty_case.mligo_output2) (action (with-stdout-to empty_case.mligo_output2 (run ligo pretty-print empty_case.mligo -s cameligo))) (deps empty_case.mligo_output)) +(rule (targets eq_bool.mligo_output2) (action (with-stdout-to eq_bool.mligo_output2 (run ligo pretty-print eq_bool.mligo -s cameligo))) (deps eq_bool.mligo_output)) +(rule (targets FA1.2.mligo_output2) (action (with-stdout-to FA1.2.mligo_output2 (run ligo pretty-print FA1.2.mligo -s cameligo))) (deps FA1.2.mligo_output)) +(rule (targets failwith.mligo_output2) (action (with-stdout-to failwith.mligo_output2 (run ligo pretty-print failwith.mligo -s cameligo))) (deps failwith.mligo_output)) +(rule (targets fibo.mligo_output2) (action (with-stdout-to fibo.mligo_output2 (run ligo pretty-print fibo.mligo -s cameligo))) (deps fibo.mligo_output)) +(rule (targets fibo2.mligo_output2) (action (with-stdout-to fibo2.mligo_output2 (run ligo pretty-print fibo2.mligo -s cameligo))) (deps fibo2.mligo_output)) +(rule (targets fibo3.mligo_output2) (action (with-stdout-to fibo3.mligo_output2 (run ligo pretty-print fibo3.mligo -s cameligo))) (deps fibo3.mligo_output)) +(rule (targets fibo4.mligo_output2) (action (with-stdout-to fibo4.mligo_output2 (run ligo pretty-print fibo4.mligo -s cameligo))) (deps fibo4.mligo_output)) +(rule (targets function-shared.mligo_output2) (action (with-stdout-to function-shared.mligo_output2 (run ligo pretty-print function-shared.mligo -s cameligo))) (deps function-shared.mligo_output)) +(rule (targets guess_string.mligo_output2) (action (with-stdout-to guess_string.mligo_output2 (run ligo pretty-print guess_string.mligo -s cameligo))) (deps guess_string.mligo_output)) ;; diff the pretty printed contract with the pretty printed pretty printed contract -(alias (name runtest) (action (diff address.output address.output2)) (deps address.output address.output2)) -(alias (name runtest) (action (diff amount.output amount.output2)) (deps amount.output amount.output2)) -(alias (name runtest) (action (diff arithmetic.output arithmetic.output2)) (deps arithmetic.output arithmetic.output2)) -(alias (name runtest) (action (diff bad_address_format.output bad_address_format.output2)) (deps bad_address_format.output bad_address_format.output2)) -(alias (name runtest) (action (diff balance_constant.output balance_constant.output2)) (deps balance_constant.output balance_constant.output2)) -(alias (name runtest) (action (diff bitwise_arithmetic.output bitwise_arithmetic.output2)) (deps bitwise_arithmetic.output bitwise_arithmetic.output2)) -(alias (name runtest) (action (diff boolean_operators.output boolean_operators.output2)) (deps boolean_operators.output boolean_operators.output2)) -(alias (name runtest) (action (diff bytes_arithmetic.output bytes_arithmetic.output2)) (deps bytes_arithmetic.output bytes_arithmetic.output2)) -(alias (name runtest) (action (diff bytes_unpack.output bytes_unpack.output2)) (deps bytes_unpack.output bytes_unpack.output2)) -(alias (name runtest) (action (diff check_signature.output check_signature.output2)) (deps check_signature.output check_signature.output2)) -(alias (name runtest) (action (diff closure.output closure.output2)) (deps closure.output closure.output2)) -(alias (name runtest) (action (diff condition-shadowing.output condition-shadowing.output2)) (deps condition-shadowing.output condition-shadowing.output2)) -(alias (name runtest) (action (diff condition.output condition.output2)) (deps condition.output condition.output2)) -(alias (name runtest) (action (diff counter.output counter.output2)) (deps counter.output counter.output2)) -(alias (name runtest) (action (diff crypto.output crypto.output2)) (deps crypto.output crypto.output2)) -(alias (name runtest) (action (diff empty_case.output empty_case.output2)) (deps empty_case.output empty_case.output2)) -(alias (name runtest) (action (diff eq_bool.output eq_bool.output2)) (deps eq_bool.output eq_bool.output2)) -(alias (name runtest) (action (diff failwith.output failwith.output2)) (deps failwith.output failwith.output2)) -(alias (name runtest) (action (diff function-shared.output function-shared.output2)) (deps function-shared.output function-shared.output2)) -(alias (name runtest) (action (diff high-order.output high-order.output2)) (deps high-order.output high-order.output2)) -(alias (name runtest) (action (diff implicit_account.output implicit_account.output2)) (deps implicit_account.output implicit_account.output2)) -(alias (name runtest) (action (diff included.output included.output2)) (deps included.output included.output2)) -(alias (name runtest) (action (diff includer.output includer.output2)) (deps includer.output includer.output2)) -(alias (name runtest) (action (diff key_hash.output key_hash.output2)) (deps key_hash.output key_hash.output2)) -(alias (name runtest) (action (diff lambda.output lambda.output2)) (deps lambda.output lambda.output2)) -(alias (name runtest) (action (diff lambda2.output lambda2.output2)) (deps lambda2.output lambda2.output2)) -(alias (name runtest) (action (diff let_multiple.output let_multiple.output2)) (deps let_multiple.output let_multiple.output2)) -(alias (name runtest) (action (diff letin.output letin.output2)) (deps letin.output letin.output2)) -(alias (name runtest) (action (diff list.output list.output2)) (deps list.output list.output2)) -(alias (name runtest) (action (diff loop.output loop.output2)) (deps loop.output loop.output2)) -(alias (name runtest) (action (diff map.output map.output2)) (deps map.output map.output2)) -(alias (name runtest) (action (diff match_bis.output match_bis.output2)) (deps match_bis.output match_bis.output2)) -(alias (name runtest) (action (diff match.output match.output2)) (deps match.output match.output2)) -(alias (name runtest) (action (diff michelson_pair_tree.output michelson_pair_tree.output2)) (deps michelson_pair_tree.output michelson_pair_tree.output2)) -(alias (name runtest) (action (diff multiple-parameters.output multiple-parameters.output2)) (deps multiple-parameters.output multiple-parameters.output2)) -(alias (name runtest) (action (diff multisig.output multisig.output2)) (deps multisig.output multisig.output2)) -(alias (name runtest) (action (diff no_semicolon.output no_semicolon.output2)) (deps no_semicolon.output no_semicolon.output2)) -(alias (name runtest) (action (diff pledge.output pledge.output2)) (deps pledge.output pledge.output2)) -(alias (name runtest) (action (diff record.output record.output2)) (deps record.output record.output2)) -(alias (name runtest) (action (diff recursion.output recursion.output2)) (deps recursion.output recursion.output2)) -(alias (name runtest) (action (diff self_address.output self_address.output2)) (deps self_address.output self_address.output2)) -(alias (name runtest) (action (diff set_arithmetic.output set_arithmetic.output2)) (deps set_arithmetic.output set_arithmetic.output2)) -(alias (name runtest) (action (diff set_delegate.output set_delegate.output2)) (deps set_delegate.output set_delegate.output2)) -(alias (name runtest) (action (diff single_record_item.output single_record_item.output2)) (deps single_record_item.output single_record_item.output2)) -(alias (name runtest) (action (diff string_arithmetic.output string_arithmetic.output2)) (deps string_arithmetic.output string_arithmetic.output2)) -(alias (name runtest) (action (diff super-counter.output super-counter.output2)) (deps super-counter.output super-counter.output2)) -(alias (name runtest) (action (diff tuple_list.output tuple_list.output2)) (deps tuple_list.output tuple_list.output2)) -(alias (name runtest) (action (diff tuple_param_destruct.output tuple_param_destruct.output2)) (deps tuple_param_destruct.output tuple_param_destruct.output2)) -(alias (name runtest) (action (diff tuple_type.output tuple_type.output2)) (deps tuple_type.output tuple_type.output2)) -(alias (name runtest) (action (diff tuple.output tuple.output2)) (deps tuple.output tuple.output2)) -(alias (name runtest) (action (diff tuples_no_annotation.output tuples_no_annotation.output2)) (deps tuples_no_annotation.output tuples_no_annotation.output2)) -(alias (name runtest) (action (diff tuples_sequences_functions.output tuples_sequences_functions.output2)) (deps tuples_sequences_functions.output tuples_sequences_functions.output2)) -(alias (name runtest) (action (diff variant.output variant.output2)) (deps variant.output variant.output2)) -(alias (name runtest) (action (diff website2.output website2.output2)) (deps website2.output website2.output2)) +;; reasonligo +(alias (name runtest) (action (diff address.religo_output address.religo_output2)) (deps address.religo_output address.religo_output2)) +(alias (name runtest) (action (diff amount.religo_output amount.religo_output2)) (deps amount.religo_output amount.religo_output2)) +(alias (name runtest) (action (diff arithmetic.religo_output arithmetic.religo_output2)) (deps arithmetic.religo_output arithmetic.religo_output2)) +(alias (name runtest) (action (diff bad_address_format.religo_output bad_address_format.religo_output2)) (deps bad_address_format.religo_output bad_address_format.religo_output2)) +(alias (name runtest) (action (diff balance_constant.religo_output balance_constant.religo_output2)) (deps balance_constant.religo_output balance_constant.religo_output2)) +(alias (name runtest) (action (diff bitwise_arithmetic.religo_output bitwise_arithmetic.religo_output2)) (deps bitwise_arithmetic.religo_output bitwise_arithmetic.religo_output2)) +(alias (name runtest) (action (diff boolean_operators.religo_output boolean_operators.religo_output2)) (deps boolean_operators.religo_output boolean_operators.religo_output2)) +(alias (name runtest) (action (diff bytes_arithmetic.religo_output bytes_arithmetic.religo_output2)) (deps bytes_arithmetic.religo_output bytes_arithmetic.religo_output2)) +(alias (name runtest) (action (diff bytes_unpack.religo_output bytes_unpack.religo_output2)) (deps bytes_unpack.religo_output bytes_unpack.religo_output2)) +(alias (name runtest) (action (diff check_signature.religo_output check_signature.religo_output2)) (deps check_signature.religo_output check_signature.religo_output2)) +(alias (name runtest) (action (diff closure.religo_output closure.religo_output2)) (deps closure.religo_output closure.religo_output2)) +(alias (name runtest) (action (diff condition-shadowing.religo_output condition-shadowing.religo_output2)) (deps condition-shadowing.religo_output condition-shadowing.religo_output2)) +(alias (name runtest) (action (diff condition.religo_output condition.religo_output2)) (deps condition.religo_output condition.religo_output2)) +(alias (name runtest) (action (diff counter.religo_output counter.religo_output2)) (deps counter.religo_output counter.religo_output2)) +(alias (name runtest) (action (diff crypto.religo_output crypto.religo_output2)) (deps crypto.religo_output crypto.religo_output2)) +(alias (name runtest) (action (diff empty_case.religo_output empty_case.religo_output2)) (deps empty_case.religo_output empty_case.religo_output2)) +(alias (name runtest) (action (diff eq_bool.religo_output eq_bool.religo_output2)) (deps eq_bool.religo_output eq_bool.religo_output2)) +(alias (name runtest) (action (diff failwith.religo_output failwith.religo_output2)) (deps failwith.religo_output failwith.religo_output2)) +(alias (name runtest) (action (diff function-shared.religo_output function-shared.religo_output2)) (deps function-shared.religo_output function-shared.religo_output2)) +(alias (name runtest) (action (diff high-order.religo_output high-order.religo_output2)) (deps high-order.religo_output high-order.religo_output2)) +(alias (name runtest) (action (diff implicit_account.religo_output implicit_account.religo_output2)) (deps implicit_account.religo_output implicit_account.religo_output2)) +(alias (name runtest) (action (diff included.religo_output included.religo_output2)) (deps included.religo_output included.religo_output2)) +(alias (name runtest) (action (diff includer.religo_output includer.religo_output2)) (deps includer.religo_output includer.religo_output2)) +(alias (name runtest) (action (diff key_hash.religo_output key_hash.religo_output2)) (deps key_hash.religo_output key_hash.religo_output2)) +(alias (name runtest) (action (diff lambda.religo_output lambda.religo_output2)) (deps lambda.religo_output lambda.religo_output2)) +(alias (name runtest) (action (diff lambda2.religo_output lambda2.religo_output2)) (deps lambda2.religo_output lambda2.religo_output2)) +(alias (name runtest) (action (diff let_multiple.religo_output let_multiple.religo_output2)) (deps let_multiple.religo_output let_multiple.religo_output2)) +(alias (name runtest) (action (diff letin.religo_output letin.religo_output2)) (deps letin.religo_output letin.religo_output2)) +(alias (name runtest) (action (diff list.religo_output list.religo_output2)) (deps list.religo_output list.religo_output2)) +(alias (name runtest) (action (diff loop.religo_output loop.religo_output2)) (deps loop.religo_output loop.religo_output2)) +(alias (name runtest) (action (diff map.religo_output map.religo_output2)) (deps map.religo_output map.religo_output2)) +(alias (name runtest) (action (diff match_bis.religo_output match_bis.religo_output2)) (deps match_bis.religo_output match_bis.religo_output2)) +(alias (name runtest) (action (diff match.religo_output match.religo_output2)) (deps match.religo_output match.religo_output2)) +(alias (name runtest) (action (diff michelson_pair_tree.religo_output michelson_pair_tree.religo_output2)) (deps michelson_pair_tree.religo_output michelson_pair_tree.religo_output2)) +(alias (name runtest) (action (diff multiple-parameters.religo_output multiple-parameters.religo_output2)) (deps multiple-parameters.religo_output multiple-parameters.religo_output2)) +(alias (name runtest) (action (diff multisig.religo_output multisig.religo_output2)) (deps multisig.religo_output multisig.religo_output2)) +(alias (name runtest) (action (diff no_semicolon.religo_output no_semicolon.religo_output2)) (deps no_semicolon.religo_output no_semicolon.religo_output2)) +(alias (name runtest) (action (diff pledge.religo_output pledge.religo_output2)) (deps pledge.religo_output pledge.religo_output2)) +(alias (name runtest) (action (diff record.religo_output record.religo_output2)) (deps record.religo_output record.religo_output2)) +(alias (name runtest) (action (diff recursion.religo_output recursion.religo_output2)) (deps recursion.religo_output recursion.religo_output2)) +(alias (name runtest) (action (diff self_address.religo_output self_address.religo_output2)) (deps self_address.religo_output self_address.religo_output2)) +(alias (name runtest) (action (diff set_arithmetic.religo_output set_arithmetic.religo_output2)) (deps set_arithmetic.religo_output set_arithmetic.religo_output2)) +(alias (name runtest) (action (diff set_delegate.religo_output set_delegate.religo_output2)) (deps set_delegate.religo_output set_delegate.religo_output2)) +(alias (name runtest) (action (diff single_record_item.religo_output single_record_item.religo_output2)) (deps single_record_item.religo_output single_record_item.religo_output2)) +(alias (name runtest) (action (diff string_arithmetic.religo_output string_arithmetic.religo_output2)) (deps string_arithmetic.religo_output string_arithmetic.religo_output2)) +(alias (name runtest) (action (diff super-counter.religo_output super-counter.religo_output2)) (deps super-counter.religo_output super-counter.religo_output2)) +(alias (name runtest) (action (diff tuple_list.religo_output tuple_list.religo_output2)) (deps tuple_list.religo_output tuple_list.religo_output2)) +(alias (name runtest) (action (diff tuple_param_destruct.religo_output tuple_param_destruct.religo_output2)) (deps tuple_param_destruct.religo_output tuple_param_destruct.religo_output2)) +(alias (name runtest) (action (diff tuple_type.religo_output tuple_type.religo_output2)) (deps tuple_type.religo_output tuple_type.religo_output2)) +(alias (name runtest) (action (diff tuple.religo_output tuple.religo_output2)) (deps tuple.religo_output tuple.religo_output2)) +(alias (name runtest) (action (diff tuples_no_annotation.religo_output tuples_no_annotation.religo_output2)) (deps tuples_no_annotation.religo_output tuples_no_annotation.religo_output2)) +(alias (name runtest) (action (diff tuples_sequences_functions.religo_output tuples_sequences_functions.religo_output2)) (deps tuples_sequences_functions.religo_output tuples_sequences_functions.religo_output2)) +(alias (name runtest) (action (diff variant.religo_output variant.religo_output2)) (deps variant.religo_output variant.religo_output2)) +(alias (name runtest) (action (diff website2.religo_output website2.religo_output2)) (deps website2.religo_output website2.religo_output2)) -(rule (targets address.ast) (action (with-stdout-to address.ast (run ligo print-ast address.religo -s reasonligo))) (deps address.religo)) -(rule (targets amount.ast) (action (with-stdout-to amount.ast (run ligo print-ast amount.religo -s reasonligo))) (deps amount.religo)) -(rule (targets arithmetic.ast) (action (with-stdout-to arithmetic.ast (run ligo print-ast arithmetic.religo -s reasonligo))) (deps arithmetic.religo)) -(rule (targets balance_constant.ast) (action (with-stdout-to balance_constant.ast (run ligo print-ast balance_constant.religo -s reasonligo))) (deps balance_constant.religo)) -(rule (targets bitwise_arithmetic.ast) (action (with-stdout-to bitwise_arithmetic.ast (run ligo print-ast bitwise_arithmetic.religo -s reasonligo))) (deps bitwise_arithmetic.religo)) -(rule (targets boolean_operators.ast) (action (with-stdout-to boolean_operators.ast (run ligo print-ast boolean_operators.religo -s reasonligo))) (deps boolean_operators.religo)) -(rule (targets bytes_arithmetic.ast) (action (with-stdout-to bytes_arithmetic.ast (run ligo print-ast bytes_arithmetic.religo -s reasonligo))) (deps bytes_arithmetic.religo)) -(rule (targets bytes_unpack.ast) (action (with-stdout-to bytes_unpack.ast (run ligo print-ast bytes_unpack.religo -s reasonligo))) (deps bytes_unpack.religo)) -(rule (targets check_signature.ast) (action (with-stdout-to check_signature.ast (run ligo print-ast check_signature.religo -s reasonligo))) (deps check_signature.religo)) -(rule (targets closure.ast) (action (with-stdout-to closure.ast (run ligo print-ast closure.religo -s reasonligo))) (deps closure.religo)) -(rule (targets condition-shadowing.ast) (action (with-stdout-to condition-shadowing.ast (run ligo print-ast condition-shadowing.religo -s reasonligo))) (deps condition-shadowing.religo)) -(rule (targets condition.ast) (action (with-stdout-to condition.ast (run ligo print-ast condition.religo -s reasonligo))) (deps condition.religo)) -(rule (targets counter.ast) (action (with-stdout-to counter.ast (run ligo print-ast counter.religo -s reasonligo))) (deps counter.religo)) -(rule (targets crypto.ast) (action (with-stdout-to crypto.ast (run ligo print-ast crypto.religo -s reasonligo))) (deps crypto.religo)) -(rule (targets empty_case.ast) (action (with-stdout-to empty_case.ast (run ligo print-ast empty_case.religo -s reasonligo))) (deps empty_case.religo)) -(rule (targets eq_bool.ast) (action (with-stdout-to eq_bool.ast (run ligo print-ast eq_bool.religo -s reasonligo))) (deps eq_bool.religo)) -(rule (targets function-shared.ast) (action (with-stdout-to function-shared.ast (run ligo print-ast function-shared.religo -s reasonligo))) (deps function-shared.religo)) -(rule (targets high-order.ast) (action (with-stdout-to high-order.ast (run ligo print-ast high-order.religo -s reasonligo))) (deps high-order.religo)) -(rule (targets implicit_account.ast) (action (with-stdout-to implicit_account.ast (run ligo print-ast implicit_account.religo -s reasonligo))) (deps implicit_account.religo)) -(rule (targets included.ast) (action (with-stdout-to included.ast (run ligo print-ast included.religo -s reasonligo))) (deps included.religo)) -(rule (targets includer.ast) (action (with-stdout-to includer.ast (run ligo print-ast includer.religo -s reasonligo))) (deps includer.religo)) -(rule (targets key_hash.ast) (action (with-stdout-to key_hash.ast (run ligo print-ast key_hash.religo -s reasonligo))) (deps key_hash.religo)) -(rule (targets lambda.ast) (action (with-stdout-to lambda.ast (run ligo print-ast lambda.religo -s reasonligo))) (deps lambda.religo)) -(rule (targets lambda2.ast) (action (with-stdout-to lambda2.ast (run ligo print-ast lambda2.religo -s reasonligo))) (deps lambda2.religo)) -(rule (targets let_multiple.ast) (action (with-stdout-to let_multiple.ast (run ligo print-ast let_multiple.religo -s reasonligo))) (deps let_multiple.religo)) -(rule (targets letin.ast) (action (with-stdout-to letin.ast (run ligo print-ast letin.religo -s reasonligo))) (deps letin.religo)) -(rule (targets list.ast) (action (with-stdout-to list.ast (run ligo print-ast list.religo -s reasonligo))) (deps list.religo)) -(rule (targets loop.ast) (action (with-stdout-to loop.ast (run ligo print-ast loop.religo -s reasonligo))) (deps loop.religo)) -(rule (targets map.ast) (action (with-stdout-to map.ast (run ligo print-ast map.religo -s reasonligo))) (deps map.religo)) -(rule (targets match_bis.ast) (action (with-stdout-to match_bis.ast (run ligo print-ast match_bis.religo -s reasonligo))) (deps match_bis.religo)) -(rule (targets match.ast) (action (with-stdout-to match.ast (run ligo print-ast match.religo -s reasonligo))) (deps match.religo)) -(rule (targets michelson_pair_tree.ast) (action (with-stdout-to michelson_pair_tree.ast (run ligo print-ast michelson_pair_tree.religo -s reasonligo))) (deps michelson_pair_tree.religo)) -(rule (targets multiple-parameters.ast) (action (with-stdout-to multiple-parameters.ast (run ligo print-ast multiple-parameters.religo -s reasonligo))) (deps multiple-parameters.religo)) -(rule (targets multisig.ast) (action (with-stdout-to multisig.ast (run ligo print-ast multisig.religo -s reasonligo))) (deps multisig.religo)) -(rule (targets no_semicolon.ast) (action (with-stdout-to no_semicolon.ast (run ligo print-ast no_semicolon.religo -s reasonligo))) (deps no_semicolon.religo)) -(rule (targets pledge.ast) (action (with-stdout-to pledge.ast (run ligo print-ast pledge.religo -s reasonligo))) (deps pledge.religo)) -(rule (targets record.ast) (action (with-stdout-to record.ast (run ligo print-ast record.religo -s reasonligo))) (deps record.religo)) -(rule (targets recursion.ast) (action (with-stdout-to recursion.ast (run ligo print-ast recursion.religo -s reasonligo))) (deps recursion.religo)) -(rule (targets self_address.ast) (action (with-stdout-to self_address.ast (run ligo print-ast self_address.religo -s reasonligo))) (deps self_address.religo)) -(rule (targets set_arithmetic.ast) (action (with-stdout-to set_arithmetic.ast (run ligo print-ast set_arithmetic.religo -s reasonligo))) (deps set_arithmetic.religo)) -(rule (targets set_delegate.ast) (action (with-stdout-to set_delegate.ast (run ligo print-ast set_delegate.religo -s reasonligo))) (deps set_delegate.religo)) -(rule (targets single_record_item.ast) (action (with-stdout-to single_record_item.ast (run ligo print-ast single_record_item.religo -s reasonligo))) (deps single_record_item.religo)) -(rule (targets string_arithmetic.ast) (action (with-stdout-to string_arithmetic.ast (run ligo print-ast string_arithmetic.religo -s reasonligo))) (deps string_arithmetic.religo)) -(rule (targets super-counter.ast) (action (with-stdout-to super-counter.ast (run ligo print-ast super-counter.religo -s reasonligo))) (deps super-counter.religo)) -(rule (targets tuple_list.ast) (action (with-stdout-to tuple_list.ast (run ligo print-ast tuple_list.religo -s reasonligo))) (deps tuple_list.religo)) -(rule (targets tuple_param_destruct.ast) (action (with-stdout-to tuple_param_destruct.ast (run ligo print-ast tuple_param_destruct.religo -s reasonligo))) (deps tuple_param_destruct.religo)) -(rule (targets tuple_type.ast) (action (with-stdout-to tuple_type.ast (run ligo print-ast tuple_type.religo -s reasonligo))) (deps tuple_type.religo)) -(rule (targets tuple.ast) (action (with-stdout-to tuple.ast (run ligo print-ast tuple.religo -s reasonligo))) (deps tuple.religo)) -(rule (targets tuples_no_annotation.ast) (action (with-stdout-to tuples_no_annotation.ast (run ligo print-ast tuples_no_annotation.religo -s reasonligo))) (deps tuples_no_annotation.religo)) -(rule (targets tuples_sequences_functions.ast) (action (with-stdout-to tuples_sequences_functions.ast (run ligo print-ast tuples_sequences_functions.religo -s reasonligo))) (deps tuples_sequences_functions.religo)) -(rule (targets variant.ast) (action (with-stdout-to variant.ast (run ligo print-ast variant.religo -s reasonligo))) (deps variant.religo)) -(rule (targets website2.ast) (action (with-stdout-to website2.ast (run ligo print-ast website2.religo -s reasonligo))) (deps website2.religo)) +(alias (name runtest) (action (diff assert.mligo_output assert.mligo_output2)) (deps assert.mligo_output assert.mligo_output2)) +(alias (name runtest) (action (diff address.mligo_output address.mligo_output2)) (deps address.mligo_output address.mligo_output2)) +(alias (name runtest) (action (diff amount_lambda.mligo_output amount_lambda.mligo_output2)) (deps amount_lambda.mligo_output amount_lambda.mligo_output2)) +(alias (name runtest) (action (diff amount.mligo_output amount.mligo_output2)) (deps amount.mligo_output amount.mligo_output2)) +(alias (name runtest) (action (diff arithmetic.mligo_output arithmetic.mligo_output2)) (deps arithmetic.mligo_output arithmetic.mligo_output2)) +(alias (name runtest) (action (diff attributes.mligo_output attributes.mligo_output2)) (deps attributes.mligo_output attributes.mligo_output2)) +(alias (name runtest) (action (diff balance_constant.mligo_output balance_constant.mligo_output2)) (deps balance_constant.mligo_output balance_constant.mligo_output2)) +(alias (name runtest) (action (diff basic.mligo_output basic.mligo_output2)) (deps basic.mligo_output basic.mligo_output2)) +(alias (name runtest) (action (diff big_map.mligo_output big_map.mligo_output2)) (deps big_map.mligo_output big_map.mligo_output2)) +(alias (name runtest) (action (diff bitwise_arithmetic.mligo_output bitwise_arithmetic.mligo_output2)) (deps bitwise_arithmetic.mligo_output bitwise_arithmetic.mligo_output2)) +(alias (name runtest) (action (diff boolean_operators.mligo_output boolean_operators.mligo_output2)) (deps boolean_operators.mligo_output boolean_operators.mligo_output2)) +(alias (name runtest) (action (diff bytes_arithmetic.mligo_output bytes_arithmetic.mligo_output2)) (deps bytes_arithmetic.mligo_output bytes_arithmetic.mligo_output2)) +(alias (name runtest) (action (diff bytes_unpack.mligo_output bytes_unpack.mligo_output2)) (deps bytes_unpack.mligo_output bytes_unpack.mligo_output2)) +(alias (name runtest) (action (diff check_signature.mligo_output check_signature.mligo_output2)) (deps check_signature.mligo_output check_signature.mligo_output2)) +(alias (name runtest) (action (diff closure.mligo_output closure.mligo_output2)) (deps closure.mligo_output closure.mligo_output2)) +(alias (name runtest) (action (diff comparable.mligo_output comparable.mligo_output2)) (deps comparable.mligo_output comparable.mligo_output2)) +(alias (name runtest) (action (diff condition-annot.mligo_output condition-annot.mligo_output2)) (deps condition-annot.mligo_output condition-annot.mligo_output2)) +(alias (name runtest) (action (diff condition-shadowing.mligo_output condition-shadowing.mligo_output2)) (deps condition-shadowing.mligo_output condition-shadowing.mligo_output2)) +(alias (name runtest) (action (diff condition.mligo_output condition.mligo_output2)) (deps condition.mligo_output condition.mligo_output2)) +(alias (name runtest) (action (diff counter.mligo_output counter.mligo_output2)) (deps counter.mligo_output counter.mligo_output2)) +(alias (name runtest) (action (diff create_contract.mligo_output create_contract.mligo_output2)) (deps create_contract.mligo_output create_contract.mligo_output2)) +(alias (name runtest) (action (diff crypto.mligo_output crypto.mligo_output2)) (deps crypto.mligo_output crypto.mligo_output2)) +(alias (name runtest) (action (diff curry.mligo_output curry.mligo_output2)) (deps curry.mligo_output curry.mligo_output2)) +(alias (name runtest) (action (diff double_michelson_or.mligo_output double_michelson_or.mligo_output2)) (deps double_michelson_or.mligo_output double_michelson_or.mligo_output2)) +(alias (name runtest) (action (diff empty_case.mligo_output empty_case.mligo_output2)) (deps empty_case.mligo_output empty_case.mligo_output2)) +(alias (name runtest) (action (diff eq_bool.mligo_output eq_bool.mligo_output2)) (deps eq_bool.mligo_output eq_bool.mligo_output2)) +(alias (name runtest) (action (diff FA1.2.mligo_output FA1.2.mligo_output2)) (deps FA1.2.mligo_output FA1.2.mligo_output2)) +(alias (name runtest) (action (diff failwith.mligo_output failwith.mligo_output2)) (deps failwith.mligo_output failwith.mligo_output2)) +(alias (name runtest) (action (diff fibo.mligo_output fibo.mligo_output2)) (deps fibo.mligo_output fibo.mligo_output2)) +(alias (name runtest) (action (diff fibo2.mligo_output fibo2.mligo_output2)) (deps fibo2.mligo_output fibo2.mligo_output2)) +(alias (name runtest) (action (diff fibo3.mligo_output fibo3.mligo_output2)) (deps fibo3.mligo_output fibo3.mligo_output2)) +(alias (name runtest) (action (diff fibo4.mligo_output fibo4.mligo_output2)) (deps fibo4.mligo_output fibo4.mligo_output2)) +(alias (name runtest) (action (diff function-shared.mligo_output function-shared.mligo_output2)) (deps function-shared.mligo_output function-shared.mligo_output2)) +(alias (name runtest) (action (diff guess_string.mligo_output guess_string.mligo_output2)) (deps guess_string.mligo_output guess_string.mligo_output2)) + +(rule (targets address.religo_ast) (action (with-stdout-to address.religo_ast (run ligo print-ast address.religo -s reasonligo))) (deps address.religo)) +(rule (targets amount.religo_ast) (action (with-stdout-to amount.religo_ast (run ligo print-ast amount.religo -s reasonligo))) (deps amount.religo)) +(rule (targets arithmetic.religo_ast) (action (with-stdout-to arithmetic.religo_ast (run ligo print-ast arithmetic.religo -s reasonligo))) (deps arithmetic.religo)) +(rule (targets balance_constant.religo_ast) (action (with-stdout-to balance_constant.religo_ast (run ligo print-ast balance_constant.religo -s reasonligo))) (deps balance_constant.religo)) +(rule (targets bitwise_arithmetic.religo_ast) (action (with-stdout-to bitwise_arithmetic.religo_ast (run ligo print-ast bitwise_arithmetic.religo -s reasonligo))) (deps bitwise_arithmetic.religo)) +(rule (targets boolean_operators.religo_ast) (action (with-stdout-to boolean_operators.religo_ast (run ligo print-ast boolean_operators.religo -s reasonligo))) (deps boolean_operators.religo)) +(rule (targets bytes_arithmetic.religo_ast) (action (with-stdout-to bytes_arithmetic.religo_ast (run ligo print-ast bytes_arithmetic.religo -s reasonligo))) (deps bytes_arithmetic.religo)) +(rule (targets bytes_unpack.religo_ast) (action (with-stdout-to bytes_unpack.religo_ast (run ligo print-ast bytes_unpack.religo -s reasonligo))) (deps bytes_unpack.religo)) +(rule (targets check_signature.religo_ast) (action (with-stdout-to check_signature.religo_ast (run ligo print-ast check_signature.religo -s reasonligo))) (deps check_signature.religo)) +(rule (targets closure.religo_ast) (action (with-stdout-to closure.religo_ast (run ligo print-ast closure.religo -s reasonligo))) (deps closure.religo)) +(rule (targets condition-shadowing.religo_ast) (action (with-stdout-to condition-shadowing.religo_ast (run ligo print-ast condition-shadowing.religo -s reasonligo))) (deps condition-shadowing.religo)) +(rule (targets condition.religo_ast) (action (with-stdout-to condition.religo_ast (run ligo print-ast condition.religo -s reasonligo))) (deps condition.religo)) +(rule (targets counter.religo_ast) (action (with-stdout-to counter.religo_ast (run ligo print-ast counter.religo -s reasonligo))) (deps counter.religo)) +(rule (targets crypto.religo_ast) (action (with-stdout-to crypto.religo_ast (run ligo print-ast crypto.religo -s reasonligo))) (deps crypto.religo)) +(rule (targets empty_case.religo_ast) (action (with-stdout-to empty_case.religo_ast (run ligo print-ast empty_case.religo -s reasonligo))) (deps empty_case.religo)) +(rule (targets eq_bool.religo_ast) (action (with-stdout-to eq_bool.religo_ast (run ligo print-ast eq_bool.religo -s reasonligo))) (deps eq_bool.religo)) +(rule (targets function-shared.religo_ast) (action (with-stdout-to function-shared.religo_ast (run ligo print-ast function-shared.religo -s reasonligo))) (deps function-shared.religo)) +(rule (targets high-order.religo_ast) (action (with-stdout-to high-order.religo_ast (run ligo print-ast high-order.religo -s reasonligo))) (deps high-order.religo)) +(rule (targets implicit_account.religo_ast) (action (with-stdout-to implicit_account.religo_ast (run ligo print-ast implicit_account.religo -s reasonligo))) (deps implicit_account.religo)) +(rule (targets included.religo_ast) (action (with-stdout-to included.religo_ast (run ligo print-ast included.religo -s reasonligo))) (deps included.religo)) +(rule (targets includer.religo_ast) (action (with-stdout-to includer.religo_ast (run ligo print-ast includer.religo -s reasonligo))) (deps includer.religo)) +(rule (targets key_hash.religo_ast) (action (with-stdout-to key_hash.religo_ast (run ligo print-ast key_hash.religo -s reasonligo))) (deps key_hash.religo)) +(rule (targets lambda.religo_ast) (action (with-stdout-to lambda.religo_ast (run ligo print-ast lambda.religo -s reasonligo))) (deps lambda.religo)) +(rule (targets lambda2.religo_ast) (action (with-stdout-to lambda2.religo_ast (run ligo print-ast lambda2.religo -s reasonligo))) (deps lambda2.religo)) +(rule (targets let_multiple.religo_ast) (action (with-stdout-to let_multiple.religo_ast (run ligo print-ast let_multiple.religo -s reasonligo))) (deps let_multiple.religo)) +(rule (targets letin.religo_ast) (action (with-stdout-to letin.religo_ast (run ligo print-ast letin.religo -s reasonligo))) (deps letin.religo)) +(rule (targets list.religo_ast) (action (with-stdout-to list.religo_ast (run ligo print-ast list.religo -s reasonligo))) (deps list.religo)) +(rule (targets loop.religo_ast) (action (with-stdout-to loop.religo_ast (run ligo print-ast loop.religo -s reasonligo))) (deps loop.religo)) +(rule (targets map.religo_ast) (action (with-stdout-to map.religo_ast (run ligo print-ast map.religo -s reasonligo))) (deps map.religo)) +(rule (targets match_bis.religo_ast) (action (with-stdout-to match_bis.religo_ast (run ligo print-ast match_bis.religo -s reasonligo))) (deps match_bis.religo)) +(rule (targets match.religo_ast) (action (with-stdout-to match.religo_ast (run ligo print-ast match.religo -s reasonligo))) (deps match.religo)) +(rule (targets michelson_pair_tree.religo_ast) (action (with-stdout-to michelson_pair_tree.religo_ast (run ligo print-ast michelson_pair_tree.religo -s reasonligo))) (deps michelson_pair_tree.religo)) +(rule (targets multiple-parameters.religo_ast) (action (with-stdout-to multiple-parameters.religo_ast (run ligo print-ast multiple-parameters.religo -s reasonligo))) (deps multiple-parameters.religo)) +(rule (targets multisig.religo_ast) (action (with-stdout-to multisig.religo_ast (run ligo print-ast multisig.religo -s reasonligo))) (deps multisig.religo)) +(rule (targets no_semicolon.religo_ast) (action (with-stdout-to no_semicolon.religo_ast (run ligo print-ast no_semicolon.religo -s reasonligo))) (deps no_semicolon.religo)) +(rule (targets pledge.religo_ast) (action (with-stdout-to pledge.religo_ast (run ligo print-ast pledge.religo -s reasonligo))) (deps pledge.religo)) +(rule (targets record.religo_ast) (action (with-stdout-to record.religo_ast (run ligo print-ast record.religo -s reasonligo))) (deps record.religo)) +(rule (targets recursion.religo_ast) (action (with-stdout-to recursion.religo_ast (run ligo print-ast recursion.religo -s reasonligo))) (deps recursion.religo)) +(rule (targets self_address.religo_ast) (action (with-stdout-to self_address.religo_ast (run ligo print-ast self_address.religo -s reasonligo))) (deps self_address.religo)) +(rule (targets set_arithmetic.religo_ast) (action (with-stdout-to set_arithmetic.religo_ast (run ligo print-ast set_arithmetic.religo -s reasonligo))) (deps set_arithmetic.religo)) +(rule (targets set_delegate.religo_ast) (action (with-stdout-to set_delegate.religo_ast (run ligo print-ast set_delegate.religo -s reasonligo))) (deps set_delegate.religo)) +(rule (targets single_record_item.religo_ast) (action (with-stdout-to single_record_item.religo_ast (run ligo print-ast single_record_item.religo -s reasonligo))) (deps single_record_item.religo)) +(rule (targets string_arithmetic.religo_ast) (action (with-stdout-to string_arithmetic.religo_ast (run ligo print-ast string_arithmetic.religo -s reasonligo))) (deps string_arithmetic.religo)) +(rule (targets super-counter.religo_ast) (action (with-stdout-to super-counter.religo_ast (run ligo print-ast super-counter.religo -s reasonligo))) (deps super-counter.religo)) +(rule (targets tuple_list.religo_ast) (action (with-stdout-to tuple_list.religo_ast (run ligo print-ast tuple_list.religo -s reasonligo))) (deps tuple_list.religo)) +(rule (targets tuple_param_destruct.religo_ast) (action (with-stdout-to tuple_param_destruct.religo_ast (run ligo print-ast tuple_param_destruct.religo -s reasonligo))) (deps tuple_param_destruct.religo)) +(rule (targets tuple_type.religo_ast) (action (with-stdout-to tuple_type.religo_ast (run ligo print-ast tuple_type.religo -s reasonligo))) (deps tuple_type.religo)) +(rule (targets tuple.religo_ast) (action (with-stdout-to tuple.religo_ast (run ligo print-ast tuple.religo -s reasonligo))) (deps tuple.religo)) +(rule (targets tuples_no_annotation.religo_ast) (action (with-stdout-to tuples_no_annotation.religo_ast (run ligo print-ast tuples_no_annotation.religo -s reasonligo))) (deps tuples_no_annotation.religo)) +(rule (targets tuples_sequences_functions.religo_ast) (action (with-stdout-to tuples_sequences_functions.religo_ast (run ligo print-ast tuples_sequences_functions.religo -s reasonligo))) (deps tuples_sequences_functions.religo)) +(rule (targets variant.religo_ast) (action (with-stdout-to variant.religo_ast (run ligo print-ast variant.religo -s reasonligo))) (deps variant.religo)) +(rule (targets website2.religo_ast) (action (with-stdout-to website2.religo_ast (run ligo print-ast website2.religo -s reasonligo))) (deps website2.religo)) + +(rule (targets assert.mligo_ast) (action (with-stdout-to assert.mligo_ast (run ligo print-ast assert.mligo -s cameligo))) (deps assert.mligo)) +(rule (targets address.mligo_ast) (action (with-stdout-to address.mligo_ast (run ligo print-ast address.mligo -s cameligo))) (deps address.mligo)) +(rule (targets amount_lambda.mligo_ast) (action (with-stdout-to amount_lambda.mligo_ast (run ligo print-ast amount_lambda.mligo -s cameligo))) (deps amount_lambda.mligo)) +(rule (targets amount.mligo_ast) (action (with-stdout-to amount.mligo_ast (run ligo print-ast amount.mligo -s cameligo))) (deps amount.mligo)) +(rule (targets arithmetic.mligo_ast) (action (with-stdout-to arithmetic.mligo_ast (run ligo print-ast arithmetic.mligo -s cameligo))) (deps arithmetic.mligo)) +(rule (targets attributes.mligo_ast) (action (with-stdout-to attributes.mligo_ast (run ligo print-ast attributes.mligo -s cameligo))) (deps attributes.mligo)) +(rule (targets balance_constant.mligo_ast) (action (with-stdout-to balance_constant.mligo_ast (run ligo print-ast balance_constant.mligo -s cameligo))) (deps balance_constant.mligo)) +(rule (targets basic.mligo_ast) (action (with-stdout-to basic.mligo_ast (run ligo print-ast basic.mligo -s cameligo))) (deps basic.mligo)) +(rule (targets big_map.mligo_ast) (action (with-stdout-to big_map.mligo_ast (run ligo print-ast big_map.mligo -s cameligo))) (deps big_map.mligo)) +(rule (targets bitwise_arithmetic.mligo_ast) (action (with-stdout-to bitwise_arithmetic.mligo_ast (run ligo print-ast bitwise_arithmetic.mligo -s cameligo))) (deps bitwise_arithmetic.mligo)) +(rule (targets boolean_operators.mligo_ast) (action (with-stdout-to boolean_operators.mligo_ast (run ligo print-ast boolean_operators.mligo -s cameligo))) (deps boolean_operators.mligo)) +(rule (targets bytes_arithmetic.mligo_ast) (action (with-stdout-to bytes_arithmetic.mligo_ast (run ligo print-ast bytes_arithmetic.mligo -s cameligo))) (deps bytes_arithmetic.mligo)) +(rule (targets bytes_unpack.mligo_ast) (action (with-stdout-to bytes_unpack.mligo_ast (run ligo print-ast bytes_unpack.mligo -s cameligo))) (deps bytes_unpack.mligo)) +(rule (targets check_signature.mligo_ast) (action (with-stdout-to check_signature.mligo_ast (run ligo print-ast check_signature.mligo -s cameligo))) (deps check_signature.mligo)) +(rule (targets closure.mligo_ast) (action (with-stdout-to closure.mligo_ast (run ligo print-ast closure.mligo -s cameligo))) (deps closure.mligo)) +(rule (targets comparable.mligo_ast) (action (with-stdout-to comparable.mligo_ast (run ligo print-ast comparable.mligo -s cameligo))) (deps comparable.mligo)) +(rule (targets condition-annot.mligo_ast) (action (with-stdout-to condition-annot.mligo_ast (run ligo print-ast condition-annot.mligo -s cameligo))) (deps condition-annot.mligo)) +(rule (targets condition-shadowing.mligo_ast) (action (with-stdout-to condition-shadowing.mligo_ast (run ligo print-ast condition-shadowing.mligo -s cameligo))) (deps condition-shadowing.mligo)) +(rule (targets condition.mligo_ast) (action (with-stdout-to condition.mligo_ast (run ligo print-ast condition.mligo -s cameligo))) (deps condition.mligo)) +(rule (targets counter.mligo_ast) (action (with-stdout-to counter.mligo_ast (run ligo print-ast counter.mligo -s cameligo))) (deps counter.mligo)) +(rule (targets create_contract.mligo_ast) (action (with-stdout-to create_contract.mligo_ast (run ligo print-ast create_contract.mligo -s cameligo))) (deps create_contract.mligo)) +(rule (targets crypto.mligo_ast) (action (with-stdout-to crypto.mligo_ast (run ligo print-ast crypto.mligo -s cameligo))) (deps crypto.mligo)) +(rule (targets curry.mligo_ast) (action (with-stdout-to curry.mligo_ast (run ligo print-ast curry.mligo -s cameligo))) (deps curry.mligo)) +(rule (targets double_michelson_or.mligo_ast) (action (with-stdout-to double_michelson_or.mligo_ast (run ligo print-ast double_michelson_or.mligo -s cameligo))) (deps double_michelson_or.mligo)) +(rule (targets empty_case.mligo_ast) (action (with-stdout-to empty_case.mligo_ast (run ligo print-ast empty_case.mligo -s cameligo))) (deps empty_case.mligo)) +(rule (targets eq_bool.mligo_ast) (action (with-stdout-to eq_bool.mligo_ast (run ligo print-ast eq_bool.mligo -s cameligo))) (deps eq_bool.mligo)) +(rule (targets FA1.2.mligo_ast) (action (with-stdout-to FA1.2.mligo_ast (run ligo print-ast FA1.2.mligo -s cameligo))) (deps FA1.2.mligo)) +(rule (targets failwith.mligo_ast) (action (with-stdout-to failwith.mligo_ast (run ligo print-ast failwith.mligo -s cameligo))) (deps failwith.mligo)) +(rule (targets fibo.mligo_ast) (action (with-stdout-to fibo.mligo_ast (run ligo print-ast fibo.mligo -s cameligo))) (deps fibo.mligo)) +(rule (targets fibo2.mligo_ast) (action (with-stdout-to fibo2.mligo_ast (run ligo print-ast fibo2.mligo -s cameligo))) (deps fibo2.mligo)) +(rule (targets fibo3.mligo_ast) (action (with-stdout-to fibo3.mligo_ast (run ligo print-ast fibo3.mligo -s cameligo))) (deps fibo3.mligo)) +(rule (targets fibo4.mligo_ast) (action (with-stdout-to fibo4.mligo_ast (run ligo print-ast fibo4.mligo -s cameligo))) (deps fibo4.mligo)) +(rule (targets function-shared.mligo_ast) (action (with-stdout-to function-shared.mligo_ast (run ligo print-ast function-shared.mligo -s cameligo))) (deps function-shared.mligo)) +(rule (targets guess_string.mligo_ast) (action (with-stdout-to guess_string.mligo_ast (run ligo print-ast guess_string.mligo -s cameligo))) (deps guess_string.mligo)) -(rule (targets address.ast_pretty) (action (with-stdout-to address.ast_pretty (run ligo print-ast address.output -s reasonligo))) (deps address.output)) -(rule (targets amount.ast_pretty) (action (with-stdout-to amount.ast_pretty (run ligo print-ast amount.output -s reasonligo))) (deps amount.output)) -(rule (targets arithmetic.ast_pretty) (action (with-stdout-to arithmetic.ast_pretty (run ligo print-ast arithmetic.output -s reasonligo))) (deps arithmetic.output)) -(rule (targets balance_constant.ast_pretty) (action (with-stdout-to balance_constant.ast_pretty (run ligo print-ast balance_constant.output -s reasonligo))) (deps balance_constant.output)) -(rule (targets bitwise_arithmetic.ast_pretty) (action (with-stdout-to bitwise_arithmetic.ast_pretty (run ligo print-ast bitwise_arithmetic.output -s reasonligo))) (deps bitwise_arithmetic.output)) -(rule (targets boolean_operators.ast_pretty) (action (with-stdout-to boolean_operators.ast_pretty (run ligo print-ast boolean_operators.output -s reasonligo))) (deps boolean_operators.output)) -(rule (targets bytes_arithmetic.ast_pretty) (action (with-stdout-to bytes_arithmetic.ast_pretty (run ligo print-ast bytes_arithmetic.output -s reasonligo))) (deps bytes_arithmetic.output)) -(rule (targets bytes_unpack.ast_pretty) (action (with-stdout-to bytes_unpack.ast_pretty (run ligo print-ast bytes_unpack.output -s reasonligo))) (deps bytes_unpack.output)) -(rule (targets check_signature.ast_pretty) (action (with-stdout-to check_signature.ast_pretty (run ligo print-ast check_signature.output -s reasonligo))) (deps check_signature.output)) -(rule (targets closure.ast_pretty) (action (with-stdout-to closure.ast_pretty (run ligo print-ast closure.output -s reasonligo))) (deps closure.output)) -(rule (targets condition-shadowing.ast_pretty) (action (with-stdout-to condition-shadowing.ast_pretty (run ligo print-ast condition-shadowing.output -s reasonligo))) (deps condition-shadowing.output)) -(rule (targets condition.ast_pretty) (action (with-stdout-to condition.ast_pretty (run ligo print-ast condition.output -s reasonligo))) (deps condition.output)) -(rule (targets counter.ast_pretty) (action (with-stdout-to counter.ast_pretty (run ligo print-ast counter.output -s reasonligo))) (deps counter.output)) -(rule (targets crypto.ast_pretty) (action (with-stdout-to crypto.ast_pretty (run ligo print-ast crypto.output -s reasonligo))) (deps crypto.output)) -(rule (targets empty_case.ast_pretty) (action (with-stdout-to empty_case.ast_pretty (run ligo print-ast empty_case.output -s reasonligo))) (deps empty_case.output)) -(rule (targets eq_bool.ast_pretty) (action (with-stdout-to eq_bool.ast_pretty (run ligo print-ast eq_bool.output -s reasonligo))) (deps eq_bool.output)) -(rule (targets function-shared.ast_pretty) (action (with-stdout-to function-shared.ast_pretty (run ligo print-ast function-shared.output -s reasonligo))) (deps function-shared.output)) -(rule (targets high-order.ast_pretty) (action (with-stdout-to high-order.ast_pretty (run ligo print-ast high-order.output -s reasonligo))) (deps high-order.output)) -(rule (targets implicit_account.ast_pretty) (action (with-stdout-to implicit_account.ast_pretty (run ligo print-ast implicit_account.output -s reasonligo))) (deps implicit_account.output)) -(rule (targets included.ast_pretty) (action (with-stdout-to included.ast_pretty (run ligo print-ast included.output -s reasonligo))) (deps included.output)) -(rule (targets includer.ast_pretty) (action (with-stdout-to includer.ast_pretty (run ligo print-ast includer.output -s reasonligo))) (deps includer.output)) -(rule (targets key_hash.ast_pretty) (action (with-stdout-to key_hash.ast_pretty (run ligo print-ast key_hash.output -s reasonligo))) (deps key_hash.output)) -(rule (targets lambda.ast_pretty) (action (with-stdout-to lambda.ast_pretty (run ligo print-ast lambda.output -s reasonligo))) (deps lambda.output)) -(rule (targets lambda2.ast_pretty) (action (with-stdout-to lambda2.ast_pretty (run ligo print-ast lambda2.output -s reasonligo))) (deps lambda2.output)) -(rule (targets let_multiple.ast_pretty) (action (with-stdout-to let_multiple.ast_pretty (run ligo print-ast let_multiple.output -s reasonligo))) (deps let_multiple.output)) -(rule (targets letin.ast_pretty) (action (with-stdout-to letin.ast_pretty (run ligo print-ast letin.output -s reasonligo))) (deps letin.output)) -(rule (targets list.ast_pretty) (action (with-stdout-to list.ast_pretty (run ligo print-ast list.output -s reasonligo))) (deps list.output)) -(rule (targets loop.ast_pretty) (action (with-stdout-to loop.ast_pretty (run ligo print-ast loop.output -s reasonligo))) (deps loop.output)) -(rule (targets map.ast_pretty) (action (with-stdout-to map.ast_pretty (run ligo print-ast map.output -s reasonligo))) (deps map.output)) -(rule (targets match_bis.ast_pretty) (action (with-stdout-to match_bis.ast_pretty (run ligo print-ast match_bis.output -s reasonligo))) (deps match_bis.output)) -(rule (targets match.ast_pretty) (action (with-stdout-to match.ast_pretty (run ligo print-ast match.output -s reasonligo))) (deps match.output)) -(rule (targets michelson_pair_tree.ast_pretty) (action (with-stdout-to michelson_pair_tree.ast_pretty (run ligo print-ast michelson_pair_tree.output -s reasonligo))) (deps michelson_pair_tree.output)) -(rule (targets multiple-parameters.ast_pretty) (action (with-stdout-to multiple-parameters.ast_pretty (run ligo print-ast multiple-parameters.output -s reasonligo))) (deps multiple-parameters.output)) -(rule (targets multisig.ast_pretty) (action (with-stdout-to multisig.ast_pretty (run ligo print-ast multisig.output -s reasonligo))) (deps multisig.output)) -(rule (targets no_semicolon.ast_pretty) (action (with-stdout-to no_semicolon.ast_pretty (run ligo print-ast no_semicolon.output -s reasonligo))) (deps no_semicolon.output)) -(rule (targets pledge.ast_pretty) (action (with-stdout-to pledge.ast_pretty (run ligo print-ast pledge.output -s reasonligo))) (deps pledge.output)) -(rule (targets record.ast_pretty) (action (with-stdout-to record.ast_pretty (run ligo print-ast record.output -s reasonligo))) (deps record.output)) -(rule (targets recursion.ast_pretty) (action (with-stdout-to recursion.ast_pretty (run ligo print-ast recursion.output -s reasonligo))) (deps recursion.output)) -(rule (targets self_address.ast_pretty) (action (with-stdout-to self_address.ast_pretty (run ligo print-ast self_address.output -s reasonligo))) (deps self_address.output)) -(rule (targets set_arithmetic.ast_pretty) (action (with-stdout-to set_arithmetic.ast_pretty (run ligo print-ast set_arithmetic.output -s reasonligo))) (deps set_arithmetic.output)) -(rule (targets set_delegate.ast_pretty) (action (with-stdout-to set_delegate.ast_pretty (run ligo print-ast set_delegate.output -s reasonligo))) (deps set_delegate.output)) -(rule (targets single_record_item.ast_pretty) (action (with-stdout-to single_record_item.ast_pretty (run ligo print-ast single_record_item.output -s reasonligo))) (deps single_record_item.output)) -(rule (targets string_arithmetic.ast_pretty) (action (with-stdout-to string_arithmetic.ast_pretty (run ligo print-ast string_arithmetic.output -s reasonligo))) (deps string_arithmetic.output)) -(rule (targets super-counter.ast_pretty) (action (with-stdout-to super-counter.ast_pretty (run ligo print-ast super-counter.output -s reasonligo))) (deps super-counter.output)) -(rule (targets tuple_list.ast_pretty) (action (with-stdout-to tuple_list.ast_pretty (run ligo print-ast tuple_list.output -s reasonligo))) (deps tuple_list.output)) -(rule (targets tuple_param_destruct.ast_pretty) (action (with-stdout-to tuple_param_destruct.ast_pretty (run ligo print-ast tuple_param_destruct.output -s reasonligo))) (deps tuple_param_destruct.output)) -(rule (targets tuple_type.ast_pretty) (action (with-stdout-to tuple_type.ast_pretty (run ligo print-ast tuple_type.output -s reasonligo))) (deps tuple_type.output)) -(rule (targets tuple.ast_pretty) (action (with-stdout-to tuple.ast_pretty (run ligo print-ast tuple.output -s reasonligo))) (deps tuple.output)) -(rule (targets tuples_no_annotation.ast_pretty) (action (with-stdout-to tuples_no_annotation.ast_pretty (run ligo print-ast tuples_no_annotation.output -s reasonligo))) (deps tuples_no_annotation.output)) -(rule (targets tuples_sequences_functions.ast_pretty) (action (with-stdout-to tuples_sequences_functions.ast_pretty (run ligo print-ast tuples_sequences_functions.output -s reasonligo))) (deps tuples_sequences_functions.output)) -(rule (targets variant.ast_pretty) (action (with-stdout-to variant.ast_pretty (run ligo print-ast variant.output -s reasonligo))) (deps variant.output)) -(rule (targets website2.ast_pretty) (action (with-stdout-to website2.ast_pretty (run ligo print-ast website2.output -s reasonligo))) (deps website2.output)) +(rule (targets address.religo_ast_pretty) (action (with-stdout-to address.religo_ast_pretty (run ligo print-ast address.religo_output -s reasonligo))) (deps address.religo_output)) +(rule (targets amount.religo_ast_pretty) (action (with-stdout-to amount.religo_ast_pretty (run ligo print-ast amount.religo_output -s reasonligo))) (deps amount.religo_output)) +(rule (targets arithmetic.religo_ast_pretty) (action (with-stdout-to arithmetic.religo_ast_pretty (run ligo print-ast arithmetic.religo_output -s reasonligo))) (deps arithmetic.religo_output)) +(rule (targets balance_constant.religo_ast_pretty) (action (with-stdout-to balance_constant.religo_ast_pretty (run ligo print-ast balance_constant.religo_output -s reasonligo))) (deps balance_constant.religo_output)) +(rule (targets bitwise_arithmetic.religo_ast_pretty) (action (with-stdout-to bitwise_arithmetic.religo_ast_pretty (run ligo print-ast bitwise_arithmetic.religo_output -s reasonligo))) (deps bitwise_arithmetic.religo_output)) +(rule (targets boolean_operators.religo_ast_pretty) (action (with-stdout-to boolean_operators.religo_ast_pretty (run ligo print-ast boolean_operators.religo_output -s reasonligo))) (deps boolean_operators.religo_output)) +(rule (targets bytes_arithmetic.religo_ast_pretty) (action (with-stdout-to bytes_arithmetic.religo_ast_pretty (run ligo print-ast bytes_arithmetic.religo_output -s reasonligo))) (deps bytes_arithmetic.religo_output)) +(rule (targets bytes_unpack.religo_ast_pretty) (action (with-stdout-to bytes_unpack.religo_ast_pretty (run ligo print-ast bytes_unpack.religo_output -s reasonligo))) (deps bytes_unpack.religo_output)) +(rule (targets check_signature.religo_ast_pretty) (action (with-stdout-to check_signature.religo_ast_pretty (run ligo print-ast check_signature.religo_output -s reasonligo))) (deps check_signature.religo_output)) +(rule (targets closure.religo_ast_pretty) (action (with-stdout-to closure.religo_ast_pretty (run ligo print-ast closure.religo_output -s reasonligo))) (deps closure.religo_output)) +(rule (targets condition-shadowing.religo_ast_pretty) (action (with-stdout-to condition-shadowing.religo_ast_pretty (run ligo print-ast condition-shadowing.religo_output -s reasonligo))) (deps condition-shadowing.religo_output)) +(rule (targets condition.religo_ast_pretty) (action (with-stdout-to condition.religo_ast_pretty (run ligo print-ast condition.religo_output -s reasonligo))) (deps condition.religo_output)) +(rule (targets counter.religo_ast_pretty) (action (with-stdout-to counter.religo_ast_pretty (run ligo print-ast counter.religo_output -s reasonligo))) (deps counter.religo_output)) +(rule (targets crypto.religo_ast_pretty) (action (with-stdout-to crypto.religo_ast_pretty (run ligo print-ast crypto.religo_output -s reasonligo))) (deps crypto.religo_output)) +(rule (targets empty_case.religo_ast_pretty) (action (with-stdout-to empty_case.religo_ast_pretty (run ligo print-ast empty_case.religo_output -s reasonligo))) (deps empty_case.religo_output)) +(rule (targets eq_bool.religo_ast_pretty) (action (with-stdout-to eq_bool.religo_ast_pretty (run ligo print-ast eq_bool.religo_output -s reasonligo))) (deps eq_bool.religo_output)) +(rule (targets function-shared.religo_ast_pretty) (action (with-stdout-to function-shared.religo_ast_pretty (run ligo print-ast function-shared.religo_output -s reasonligo))) (deps function-shared.religo_output)) +(rule (targets high-order.religo_ast_pretty) (action (with-stdout-to high-order.religo_ast_pretty (run ligo print-ast high-order.religo_output -s reasonligo))) (deps high-order.religo_output)) +(rule (targets implicit_account.religo_ast_pretty) (action (with-stdout-to implicit_account.religo_ast_pretty (run ligo print-ast implicit_account.religo_output -s reasonligo))) (deps implicit_account.religo_output)) +(rule (targets included.religo_ast_pretty) (action (with-stdout-to included.religo_ast_pretty (run ligo print-ast included.religo_output -s reasonligo))) (deps included.religo_output)) +(rule (targets includer.religo_ast_pretty) (action (with-stdout-to includer.religo_ast_pretty (run ligo print-ast includer.religo_output -s reasonligo))) (deps includer.religo_output)) +(rule (targets key_hash.religo_ast_pretty) (action (with-stdout-to key_hash.religo_ast_pretty (run ligo print-ast key_hash.religo_output -s reasonligo))) (deps key_hash.religo_output)) +(rule (targets lambda.religo_ast_pretty) (action (with-stdout-to lambda.religo_ast_pretty (run ligo print-ast lambda.religo_output -s reasonligo))) (deps lambda.religo_output)) +(rule (targets lambda2.religo_ast_pretty) (action (with-stdout-to lambda2.religo_ast_pretty (run ligo print-ast lambda2.religo_output -s reasonligo))) (deps lambda2.religo_output)) +(rule (targets let_multiple.religo_ast_pretty) (action (with-stdout-to let_multiple.religo_ast_pretty (run ligo print-ast let_multiple.religo_output -s reasonligo))) (deps let_multiple.religo_output)) +(rule (targets letin.religo_ast_pretty) (action (with-stdout-to letin.religo_ast_pretty (run ligo print-ast letin.religo_output -s reasonligo))) (deps letin.religo_output)) +(rule (targets list.religo_ast_pretty) (action (with-stdout-to list.religo_ast_pretty (run ligo print-ast list.religo_output -s reasonligo))) (deps list.religo_output)) +(rule (targets loop.religo_ast_pretty) (action (with-stdout-to loop.religo_ast_pretty (run ligo print-ast loop.religo_output -s reasonligo))) (deps loop.religo_output)) +(rule (targets map.religo_ast_pretty) (action (with-stdout-to map.religo_ast_pretty (run ligo print-ast map.religo_output -s reasonligo))) (deps map.religo_output)) +(rule (targets match_bis.religo_ast_pretty) (action (with-stdout-to match_bis.religo_ast_pretty (run ligo print-ast match_bis.religo_output -s reasonligo))) (deps match_bis.religo_output)) +(rule (targets match.religo_ast_pretty) (action (with-stdout-to match.religo_ast_pretty (run ligo print-ast match.religo_output -s reasonligo))) (deps match.religo_output)) +(rule (targets michelson_pair_tree.religo_ast_pretty) (action (with-stdout-to michelson_pair_tree.religo_ast_pretty (run ligo print-ast michelson_pair_tree.religo_output -s reasonligo))) (deps michelson_pair_tree.religo_output)) +(rule (targets multiple-parameters.religo_ast_pretty) (action (with-stdout-to multiple-parameters.religo_ast_pretty (run ligo print-ast multiple-parameters.religo_output -s reasonligo))) (deps multiple-parameters.religo_output)) +(rule (targets multisig.religo_ast_pretty) (action (with-stdout-to multisig.religo_ast_pretty (run ligo print-ast multisig.religo_output -s reasonligo))) (deps multisig.religo_output)) +(rule (targets no_semicolon.religo_ast_pretty) (action (with-stdout-to no_semicolon.religo_ast_pretty (run ligo print-ast no_semicolon.religo_output -s reasonligo))) (deps no_semicolon.religo_output)) +(rule (targets pledge.religo_ast_pretty) (action (with-stdout-to pledge.religo_ast_pretty (run ligo print-ast pledge.religo_output -s reasonligo))) (deps pledge.religo_output)) +(rule (targets record.religo_ast_pretty) (action (with-stdout-to record.religo_ast_pretty (run ligo print-ast record.religo_output -s reasonligo))) (deps record.religo_output)) +(rule (targets recursion.religo_ast_pretty) (action (with-stdout-to recursion.religo_ast_pretty (run ligo print-ast recursion.religo_output -s reasonligo))) (deps recursion.religo_output)) +(rule (targets self_address.religo_ast_pretty) (action (with-stdout-to self_address.religo_ast_pretty (run ligo print-ast self_address.religo_output -s reasonligo))) (deps self_address.religo_output)) +(rule (targets set_arithmetic.religo_ast_pretty) (action (with-stdout-to set_arithmetic.religo_ast_pretty (run ligo print-ast set_arithmetic.religo_output -s reasonligo))) (deps set_arithmetic.religo_output)) +(rule (targets set_delegate.religo_ast_pretty) (action (with-stdout-to set_delegate.religo_ast_pretty (run ligo print-ast set_delegate.religo_output -s reasonligo))) (deps set_delegate.religo_output)) +(rule (targets single_record_item.religo_ast_pretty) (action (with-stdout-to single_record_item.religo_ast_pretty (run ligo print-ast single_record_item.religo_output -s reasonligo))) (deps single_record_item.religo_output)) +(rule (targets string_arithmetic.religo_ast_pretty) (action (with-stdout-to string_arithmetic.religo_ast_pretty (run ligo print-ast string_arithmetic.religo_output -s reasonligo))) (deps string_arithmetic.religo_output)) +(rule (targets super-counter.religo_ast_pretty) (action (with-stdout-to super-counter.religo_ast_pretty (run ligo print-ast super-counter.religo_output -s reasonligo))) (deps super-counter.religo_output)) +(rule (targets tuple_list.religo_ast_pretty) (action (with-stdout-to tuple_list.religo_ast_pretty (run ligo print-ast tuple_list.religo_output -s reasonligo))) (deps tuple_list.religo_output)) +(rule (targets tuple_param_destruct.religo_ast_pretty) (action (with-stdout-to tuple_param_destruct.religo_ast_pretty (run ligo print-ast tuple_param_destruct.religo_output -s reasonligo))) (deps tuple_param_destruct.religo_output)) +(rule (targets tuple_type.religo_ast_pretty) (action (with-stdout-to tuple_type.religo_ast_pretty (run ligo print-ast tuple_type.religo_output -s reasonligo))) (deps tuple_type.religo_output)) +(rule (targets tuple.religo_ast_pretty) (action (with-stdout-to tuple.religo_ast_pretty (run ligo print-ast tuple.religo_output -s reasonligo))) (deps tuple.religo_output)) +(rule (targets tuples_no_annotation.religo_ast_pretty) (action (with-stdout-to tuples_no_annotation.religo_ast_pretty (run ligo print-ast tuples_no_annotation.religo_output -s reasonligo))) (deps tuples_no_annotation.religo_output)) +(rule (targets tuples_sequences_functions.religo_ast_pretty) (action (with-stdout-to tuples_sequences_functions.religo_ast_pretty (run ligo print-ast tuples_sequences_functions.religo_output -s reasonligo))) (deps tuples_sequences_functions.religo_output)) +(rule (targets variant.religo_ast_pretty) (action (with-stdout-to variant.religo_ast_pretty (run ligo print-ast variant.religo_output -s reasonligo))) (deps variant.religo_output)) +(rule (targets website2.religo_ast_pretty) (action (with-stdout-to website2.religo_ast_pretty (run ligo print-ast website2.religo_output -s reasonligo))) (deps website2.religo_output)) -(alias (name runtest) (action (diff address.ast address.ast_pretty)) (deps address.ast address.ast_pretty)) -(alias (name runtest) (action (diff amount.ast amount.ast_pretty)) (deps amount.ast amount.ast_pretty)) -(alias (name runtest) (action (diff arithmetic.ast arithmetic.ast_pretty)) (deps arithmetic.ast arithmetic.ast_pretty)) -(alias (name runtest) (action (diff balance_constant.ast balance_constant.ast_pretty)) (deps balance_constant.ast balance_constant.ast_pretty)) -(alias (name runtest) (action (diff bitwise_arithmetic.ast bitwise_arithmetic.ast_pretty)) (deps bitwise_arithmetic.ast bitwise_arithmetic.ast_pretty)) -(alias (name runtest) (action (diff boolean_operators.ast boolean_operators.ast_pretty)) (deps boolean_operators.ast boolean_operators.ast_pretty)) -(alias (name runtest) (action (diff bytes_arithmetic.ast bytes_arithmetic.ast_pretty)) (deps bytes_arithmetic.ast bytes_arithmetic.ast_pretty)) -(alias (name runtest) (action (diff bytes_unpack.ast bytes_unpack.ast_pretty)) (deps bytes_unpack.ast bytes_unpack.ast_pretty)) -(alias (name runtest) (action (diff check_signature.ast check_signature.ast_pretty)) (deps check_signature.ast check_signature.ast_pretty)) -(alias (name runtest) (action (diff closure.ast closure.ast_pretty)) (deps closure.ast closure.ast_pretty)) -(alias (name runtest) (action (diff condition-shadowing.ast condition-shadowing.ast_pretty)) (deps condition-shadowing.ast condition-shadowing.ast_pretty)) -(alias (name runtest) (action (diff condition.ast condition.ast_pretty)) (deps condition.ast condition.ast_pretty)) -(alias (name runtest) (action (diff counter.ast counter.ast_pretty)) (deps counter.ast counter.ast_pretty)) -(alias (name runtest) (action (diff crypto.ast crypto.ast_pretty)) (deps crypto.ast crypto.ast_pretty)) -(alias (name runtest) (action (diff empty_case.ast empty_case.ast_pretty)) (deps empty_case.ast empty_case.ast_pretty)) -(alias (name runtest) (action (diff eq_bool.ast eq_bool.ast_pretty)) (deps eq_bool.ast eq_bool.ast_pretty)) -(alias (name runtest) (action (diff function-shared.ast function-shared.ast_pretty)) (deps function-shared.ast function-shared.ast_pretty)) -(alias (name runtest) (action (diff high-order.ast high-order.ast_pretty)) (deps high-order.ast high-order.ast_pretty)) -(alias (name runtest) (action (diff implicit_account.ast implicit_account.ast_pretty)) (deps implicit_account.ast implicit_account.ast_pretty)) -(alias (name runtest) (action (diff included.ast included.ast_pretty)) (deps included.ast included.ast_pretty)) -(alias (name runtest) (action (diff includer.ast includer.ast_pretty)) (deps includer.ast includer.ast_pretty)) -(alias (name runtest) (action (diff key_hash.ast key_hash.ast_pretty)) (deps key_hash.ast key_hash.ast_pretty)) -(alias (name runtest) (action (diff lambda.ast lambda.ast_pretty)) (deps lambda.ast lambda.ast_pretty)) -(alias (name runtest) (action (diff lambda2.ast lambda2.ast_pretty)) (deps lambda2.ast lambda2.ast_pretty)) -(alias (name runtest) (action (diff let_multiple.ast let_multiple.ast_pretty)) (deps let_multiple.ast let_multiple.ast_pretty)) -(alias (name runtest) (action (diff letin.ast letin.ast_pretty)) (deps letin.ast letin.ast_pretty)) -(alias (name runtest) (action (diff list.ast list.ast_pretty)) (deps list.ast list.ast_pretty)) -(alias (name runtest) (action (diff loop.ast loop.ast_pretty)) (deps loop.ast loop.ast_pretty)) -(alias (name runtest) (action (diff map.ast map.ast_pretty)) (deps map.ast map.ast_pretty)) -(alias (name runtest) (action (diff match_bis.ast match_bis.ast_pretty)) (deps match_bis.ast match_bis.ast_pretty)) -(alias (name runtest) (action (diff match.ast match.ast_pretty)) (deps match.ast match.ast_pretty)) -(alias (name runtest) (action (diff michelson_pair_tree.ast michelson_pair_tree.ast_pretty)) (deps michelson_pair_tree.ast michelson_pair_tree.ast_pretty)) -(alias (name runtest) (action (diff multiple-parameters.ast multiple-parameters.ast_pretty)) (deps multiple-parameters.ast multiple-parameters.ast_pretty)) -(alias (name runtest) (action (diff multisig.ast multisig.ast_pretty)) (deps multisig.ast multisig.ast_pretty)) -(alias (name runtest) (action (diff no_semicolon.ast no_semicolon.ast_pretty)) (deps no_semicolon.ast no_semicolon.ast_pretty)) -(alias (name runtest) (action (diff pledge.ast pledge.ast_pretty)) (deps pledge.ast pledge.ast_pretty)) -(alias (name runtest) (action (diff record.ast record.ast_pretty)) (deps record.ast record.ast_pretty)) -(alias (name runtest) (action (diff recursion.ast recursion.ast_pretty)) (deps recursion.ast recursion.ast_pretty)) -(alias (name runtest) (action (diff self_address.ast self_address.ast_pretty)) (deps self_address.ast self_address.ast_pretty)) -(alias (name runtest) (action (diff set_arithmetic.ast set_arithmetic.ast_pretty)) (deps set_arithmetic.ast set_arithmetic.ast_pretty)) -(alias (name runtest) (action (diff set_delegate.ast set_delegate.ast_pretty)) (deps set_delegate.ast set_delegate.ast_pretty)) -(alias (name runtest) (action (diff single_record_item.ast single_record_item.ast_pretty)) (deps single_record_item.ast single_record_item.ast_pretty)) -(alias (name runtest) (action (diff string_arithmetic.ast string_arithmetic.ast_pretty)) (deps string_arithmetic.ast string_arithmetic.ast_pretty)) -(alias (name runtest) (action (diff super-counter.ast super-counter.ast_pretty)) (deps super-counter.ast super-counter.ast_pretty)) -(alias (name runtest) (action (diff tuple_list.ast tuple_list.ast_pretty)) (deps tuple_list.ast tuple_list.ast_pretty)) -(alias (name runtest) (action (diff tuple_param_destruct.ast tuple_param_destruct.ast_pretty)) (deps tuple_param_destruct.ast tuple_param_destruct.ast_pretty)) -(alias (name runtest) (action (diff tuple_type.ast tuple_type.ast_pretty)) (deps tuple_type.ast tuple_type.ast_pretty)) -(alias (name runtest) (action (diff tuple.ast tuple.ast_pretty)) (deps tuple.ast tuple.ast_pretty)) -(alias (name runtest) (action (diff tuples_no_annotation.ast tuples_no_annotation.ast_pretty)) (deps tuples_no_annotation.ast tuples_no_annotation.ast_pretty)) -(alias (name runtest) (action (diff tuples_sequences_functions.ast tuples_sequences_functions.ast_pretty)) (deps tuples_sequences_functions.ast tuples_sequences_functions.ast_pretty)) -(alias (name runtest) (action (diff variant.ast variant.ast_pretty)) (deps variant.ast variant.ast_pretty)) -(alias (name runtest) (action (diff website2.ast website2.ast_pretty)) (deps website2.ast website2.ast_pretty)) \ No newline at end of file +(rule (targets assert.mligo_ast_pretty) (action (with-stdout-to assert.mligo_ast_pretty (run ligo print-ast assert.mligo_output -s cameligo))) (deps assert.mligo_output)) +(rule (targets address.mligo_ast_pretty) (action (with-stdout-to address.mligo_ast_pretty (run ligo print-ast address.mligo_output -s cameligo))) (deps address.mligo_output)) +(rule (targets amount_lambda.mligo_ast_pretty) (action (with-stdout-to amount_lambda.mligo_ast_pretty (run ligo print-ast amount_lambda.mligo_output -s cameligo))) (deps amount_lambda.mligo_output)) +(rule (targets amount.mligo_ast_pretty) (action (with-stdout-to amount.mligo_ast_pretty (run ligo print-ast amount.mligo_output -s cameligo))) (deps amount.mligo_output)) +(rule (targets arithmetic.mligo_ast_pretty) (action (with-stdout-to arithmetic.mligo_ast_pretty (run ligo print-ast arithmetic.mligo_output -s cameligo))) (deps arithmetic.mligo_output)) +(rule (targets attributes.mligo_ast_pretty) (action (with-stdout-to attributes.mligo_ast_pretty (run ligo print-ast attributes.mligo_output -s cameligo))) (deps attributes.mligo_output)) +(rule (targets balance_constant.mligo_ast_pretty) (action (with-stdout-to balance_constant.mligo_ast_pretty (run ligo print-ast balance_constant.mligo_output -s cameligo))) (deps balance_constant.mligo_output)) +(rule (targets basic.mligo_ast_pretty) (action (with-stdout-to basic.mligo_ast_pretty (run ligo print-ast basic.mligo_output -s cameligo))) (deps basic.mligo_output)) +(rule (targets big_map.mligo_ast_pretty) (action (with-stdout-to big_map.mligo_ast_pretty (run ligo print-ast big_map.mligo_output -s cameligo))) (deps big_map.mligo_output)) +(rule (targets bitwise_arithmetic.mligo_ast_pretty) (action (with-stdout-to bitwise_arithmetic.mligo_ast_pretty (run ligo print-ast bitwise_arithmetic.mligo_output -s cameligo))) (deps bitwise_arithmetic.mligo_output)) +(rule (targets boolean_operators.mligo_ast_pretty) (action (with-stdout-to boolean_operators.mligo_ast_pretty (run ligo print-ast boolean_operators.mligo_output -s cameligo))) (deps boolean_operators.mligo_output)) +(rule (targets bytes_arithmetic.mligo_ast_pretty) (action (with-stdout-to bytes_arithmetic.mligo_ast_pretty (run ligo print-ast bytes_arithmetic.mligo_output -s cameligo))) (deps bytes_arithmetic.mligo_output)) +(rule (targets bytes_unpack.mligo_ast_pretty) (action (with-stdout-to bytes_unpack.mligo_ast_pretty (run ligo print-ast bytes_unpack.mligo_output -s cameligo))) (deps bytes_unpack.mligo_output)) +(rule (targets check_signature.mligo_ast_pretty) (action (with-stdout-to check_signature.mligo_ast_pretty (run ligo print-ast check_signature.mligo_output -s cameligo))) (deps check_signature.mligo_output)) +(rule (targets closure.mligo_ast_pretty) (action (with-stdout-to closure.mligo_ast_pretty (run ligo print-ast closure.mligo_output -s cameligo))) (deps closure.mligo_output)) +(rule (targets comparable.mligo_ast_pretty) (action (with-stdout-to comparable.mligo_ast_pretty (run ligo print-ast comparable.mligo_output -s cameligo))) (deps comparable.mligo_output)) +(rule (targets condition-annot.mligo_ast_pretty) (action (with-stdout-to condition-annot.mligo_ast_pretty (run ligo print-ast condition-annot.mligo_output -s cameligo))) (deps condition-annot.mligo_output)) +(rule (targets condition-shadowing.mligo_ast_pretty) (action (with-stdout-to condition-shadowing.mligo_ast_pretty (run ligo print-ast condition-shadowing.mligo_output -s cameligo))) (deps condition-shadowing.mligo_output)) +(rule (targets condition.mligo_ast_pretty) (action (with-stdout-to condition.mligo_ast_pretty (run ligo print-ast condition.mligo_output -s cameligo))) (deps condition.mligo_output)) +(rule (targets counter.mligo_ast_pretty) (action (with-stdout-to counter.mligo_ast_pretty (run ligo print-ast counter.mligo_output -s cameligo))) (deps counter.mligo_output)) +(rule (targets create_contract.mligo_ast_pretty) (action (with-stdout-to create_contract.mligo_ast_pretty (run ligo print-ast create_contract.mligo_output -s cameligo))) (deps create_contract.mligo_output)) +(rule (targets crypto.mligo_ast_pretty) (action (with-stdout-to crypto.mligo_ast_pretty (run ligo print-ast crypto.mligo_output -s cameligo))) (deps crypto.mligo_output)) +(rule (targets curry.mligo_ast_pretty) (action (with-stdout-to curry.mligo_ast_pretty (run ligo print-ast curry.mligo_output -s cameligo))) (deps curry.mligo_output)) +(rule (targets double_michelson_or.mligo_ast_pretty) (action (with-stdout-to double_michelson_or.mligo_ast_pretty (run ligo print-ast double_michelson_or.mligo_output -s cameligo))) (deps double_michelson_or.mligo_output)) +(rule (targets empty_case.mligo_ast_pretty) (action (with-stdout-to empty_case.mligo_ast_pretty (run ligo print-ast empty_case.mligo_output -s cameligo))) (deps empty_case.mligo_output)) +(rule (targets eq_bool.mligo_ast_pretty) (action (with-stdout-to eq_bool.mligo_ast_pretty (run ligo print-ast eq_bool.mligo_output -s cameligo))) (deps eq_bool.mligo_output)) +(rule (targets FA1.2.mligo_ast_pretty) (action (with-stdout-to FA1.2.mligo_ast_pretty (run ligo print-ast FA1.2.mligo_output -s cameligo))) (deps FA1.2.mligo_output)) +(rule (targets failwith.mligo_ast_pretty) (action (with-stdout-to failwith.mligo_ast_pretty (run ligo print-ast failwith.mligo_output -s cameligo))) (deps failwith.mligo_output)) +(rule (targets fibo.mligo_ast_pretty) (action (with-stdout-to fibo.mligo_ast_pretty (run ligo print-ast fibo.mligo_output -s cameligo))) (deps fibo.mligo_output)) +(rule (targets fibo2.mligo_ast_pretty) (action (with-stdout-to fibo2.mligo_ast_pretty (run ligo print-ast fibo2.mligo_output -s cameligo))) (deps fibo2.mligo_output)) +(rule (targets fibo3.mligo_ast_pretty) (action (with-stdout-to fibo3.mligo_ast_pretty (run ligo print-ast fibo3.mligo_output -s cameligo))) (deps fibo3.mligo_output)) +(rule (targets fibo4.mligo_ast_pretty) (action (with-stdout-to fibo4.mligo_ast_pretty (run ligo print-ast fibo4.mligo_output -s cameligo))) (deps fibo4.mligo_output)) +(rule (targets function-shared.mligo_ast_pretty) (action (with-stdout-to function-shared.mligo_ast_pretty (run ligo print-ast function-shared.mligo_output -s cameligo))) (deps function-shared.mligo_output)) +(rule (targets guess_string.mligo_ast_pretty) (action (with-stdout-to guess_string.mligo_ast_pretty (run ligo print-ast guess_string.mligo_output -s cameligo))) (deps guess_string.mligo_output)) + +(alias (name runtest) (action (diff address.religo_ast address.religo_ast_pretty)) (deps address.religo_ast address.religo_ast_pretty)) +(alias (name runtest) (action (diff amount.religo_ast amount.religo_ast_pretty)) (deps amount.religo_ast amount.religo_ast_pretty)) +(alias (name runtest) (action (diff arithmetic.religo_ast arithmetic.religo_ast_pretty)) (deps arithmetic.religo_ast arithmetic.religo_ast_pretty)) +(alias (name runtest) (action (diff balance_constant.religo_ast balance_constant.religo_ast_pretty)) (deps balance_constant.religo_ast balance_constant.religo_ast_pretty)) +(alias (name runtest) (action (diff bitwise_arithmetic.religo_ast bitwise_arithmetic.religo_ast_pretty)) (deps bitwise_arithmetic.religo_ast bitwise_arithmetic.religo_ast_pretty)) +(alias (name runtest) (action (diff boolean_operators.religo_ast boolean_operators.religo_ast_pretty)) (deps boolean_operators.religo_ast boolean_operators.religo_ast_pretty)) +(alias (name runtest) (action (diff bytes_arithmetic.religo_ast bytes_arithmetic.religo_ast_pretty)) (deps bytes_arithmetic.religo_ast bytes_arithmetic.religo_ast_pretty)) +(alias (name runtest) (action (diff bytes_unpack.religo_ast bytes_unpack.religo_ast_pretty)) (deps bytes_unpack.religo_ast bytes_unpack.religo_ast_pretty)) +(alias (name runtest) (action (diff check_signature.religo_ast check_signature.religo_ast_pretty)) (deps check_signature.religo_ast check_signature.religo_ast_pretty)) +(alias (name runtest) (action (diff closure.religo_ast closure.religo_ast_pretty)) (deps closure.religo_ast closure.religo_ast_pretty)) +(alias (name runtest) (action (diff condition-shadowing.religo_ast condition-shadowing.religo_ast_pretty)) (deps condition-shadowing.religo_ast condition-shadowing.religo_ast_pretty)) +(alias (name runtest) (action (diff condition.religo_ast condition.religo_ast_pretty)) (deps condition.religo_ast condition.religo_ast_pretty)) +(alias (name runtest) (action (diff counter.religo_ast counter.religo_ast_pretty)) (deps counter.religo_ast counter.religo_ast_pretty)) +(alias (name runtest) (action (diff crypto.religo_ast crypto.religo_ast_pretty)) (deps crypto.religo_ast crypto.religo_ast_pretty)) +(alias (name runtest) (action (diff empty_case.religo_ast empty_case.religo_ast_pretty)) (deps empty_case.religo_ast empty_case.religo_ast_pretty)) +(alias (name runtest) (action (diff eq_bool.religo_ast eq_bool.religo_ast_pretty)) (deps eq_bool.religo_ast eq_bool.religo_ast_pretty)) +(alias (name runtest) (action (diff function-shared.religo_ast function-shared.religo_ast_pretty)) (deps function-shared.religo_ast function-shared.religo_ast_pretty)) +(alias (name runtest) (action (diff high-order.religo_ast high-order.religo_ast_pretty)) (deps high-order.religo_ast high-order.religo_ast_pretty)) +(alias (name runtest) (action (diff implicit_account.religo_ast implicit_account.religo_ast_pretty)) (deps implicit_account.religo_ast implicit_account.religo_ast_pretty)) +(alias (name runtest) (action (diff included.religo_ast included.religo_ast_pretty)) (deps included.religo_ast included.religo_ast_pretty)) +(alias (name runtest) (action (diff includer.religo_ast includer.religo_ast_pretty)) (deps includer.religo_ast includer.religo_ast_pretty)) +(alias (name runtest) (action (diff key_hash.religo_ast key_hash.religo_ast_pretty)) (deps key_hash.religo_ast key_hash.religo_ast_pretty)) +(alias (name runtest) (action (diff lambda.religo_ast lambda.religo_ast_pretty)) (deps lambda.religo_ast lambda.religo_ast_pretty)) +(alias (name runtest) (action (diff lambda2.religo_ast lambda2.religo_ast_pretty)) (deps lambda2.religo_ast lambda2.religo_ast_pretty)) +(alias (name runtest) (action (diff let_multiple.religo_ast let_multiple.religo_ast_pretty)) (deps let_multiple.religo_ast let_multiple.religo_ast_pretty)) +(alias (name runtest) (action (diff letin.religo_ast letin.religo_ast_pretty)) (deps letin.religo_ast letin.religo_ast_pretty)) +(alias (name runtest) (action (diff list.religo_ast list.religo_ast_pretty)) (deps list.religo_ast list.religo_ast_pretty)) +(alias (name runtest) (action (diff loop.religo_ast loop.religo_ast_pretty)) (deps loop.religo_ast loop.religo_ast_pretty)) +(alias (name runtest) (action (diff map.religo_ast map.religo_ast_pretty)) (deps map.religo_ast map.religo_ast_pretty)) +(alias (name runtest) (action (diff match_bis.religo_ast match_bis.religo_ast_pretty)) (deps match_bis.religo_ast match_bis.religo_ast_pretty)) +(alias (name runtest) (action (diff match.religo_ast match.religo_ast_pretty)) (deps match.religo_ast match.religo_ast_pretty)) +(alias (name runtest) (action (diff michelson_pair_tree.religo_ast michelson_pair_tree.religo_ast_pretty)) (deps michelson_pair_tree.religo_ast michelson_pair_tree.religo_ast_pretty)) +(alias (name runtest) (action (diff multiple-parameters.religo_ast multiple-parameters.religo_ast_pretty)) (deps multiple-parameters.religo_ast multiple-parameters.religo_ast_pretty)) +(alias (name runtest) (action (diff multisig.religo_ast multisig.religo_ast_pretty)) (deps multisig.religo_ast multisig.religo_ast_pretty)) +(alias (name runtest) (action (diff no_semicolon.religo_ast no_semicolon.religo_ast_pretty)) (deps no_semicolon.religo_ast no_semicolon.religo_ast_pretty)) +(alias (name runtest) (action (diff pledge.religo_ast pledge.religo_ast_pretty)) (deps pledge.religo_ast pledge.religo_ast_pretty)) +(alias (name runtest) (action (diff record.religo_ast record.religo_ast_pretty)) (deps record.religo_ast record.religo_ast_pretty)) +(alias (name runtest) (action (diff recursion.religo_ast recursion.religo_ast_pretty)) (deps recursion.religo_ast recursion.religo_ast_pretty)) +(alias (name runtest) (action (diff self_address.religo_ast self_address.religo_ast_pretty)) (deps self_address.religo_ast self_address.religo_ast_pretty)) +(alias (name runtest) (action (diff set_arithmetic.religo_ast set_arithmetic.religo_ast_pretty)) (deps set_arithmetic.religo_ast set_arithmetic.religo_ast_pretty)) +(alias (name runtest) (action (diff set_delegate.religo_ast set_delegate.religo_ast_pretty)) (deps set_delegate.religo_ast set_delegate.religo_ast_pretty)) +(alias (name runtest) (action (diff single_record_item.religo_ast single_record_item.religo_ast_pretty)) (deps single_record_item.religo_ast single_record_item.religo_ast_pretty)) +(alias (name runtest) (action (diff string_arithmetic.religo_ast string_arithmetic.religo_ast_pretty)) (deps string_arithmetic.religo_ast string_arithmetic.religo_ast_pretty)) +(alias (name runtest) (action (diff super-counter.religo_ast super-counter.religo_ast_pretty)) (deps super-counter.religo_ast super-counter.religo_ast_pretty)) +(alias (name runtest) (action (diff tuple_list.religo_ast tuple_list.religo_ast_pretty)) (deps tuple_list.religo_ast tuple_list.religo_ast_pretty)) +(alias (name runtest) (action (diff tuple_param_destruct.religo_ast tuple_param_destruct.religo_ast_pretty)) (deps tuple_param_destruct.religo_ast tuple_param_destruct.religo_ast_pretty)) +(alias (name runtest) (action (diff tuple_type.religo_ast tuple_type.religo_ast_pretty)) (deps tuple_type.religo_ast tuple_type.religo_ast_pretty)) +(alias (name runtest) (action (diff tuple.religo_ast tuple.religo_ast_pretty)) (deps tuple.religo_ast tuple.religo_ast_pretty)) +(alias (name runtest) (action (diff tuples_no_annotation.religo_ast tuples_no_annotation.religo_ast_pretty)) (deps tuples_no_annotation.religo_ast tuples_no_annotation.religo_ast_pretty)) +(alias (name runtest) (action (diff tuples_sequences_functions.religo_ast tuples_sequences_functions.religo_ast_pretty)) (deps tuples_sequences_functions.religo_ast tuples_sequences_functions.religo_ast_pretty)) +(alias (name runtest) (action (diff variant.religo_ast variant.religo_ast_pretty)) (deps variant.religo_ast variant.religo_ast_pretty)) +(alias (name runtest) (action (diff website2.religo_ast website2.religo_ast_pretty)) (deps website2.religo_ast website2.religo_ast_pretty)) + +(alias (name runtest) (action (diff assert.mligo_ast assert.mligo_ast_pretty)) (deps assert.mligo_ast assert.mligo_ast_pretty)) +(alias (name runtest) (action (diff address.mligo_ast address.mligo_ast_pretty)) (deps address.mligo_ast address.mligo_ast_pretty)) +(alias (name runtest) (action (diff amount_lambda.mligo_ast amount_lambda.mligo_ast_pretty)) (deps amount_lambda.mligo_ast amount_lambda.mligo_ast_pretty)) +(alias (name runtest) (action (diff amount.mligo_ast amount.mligo_ast_pretty)) (deps amount.mligo_ast amount.mligo_ast_pretty)) +(alias (name runtest) (action (diff arithmetic.mligo_ast arithmetic.mligo_ast_pretty)) (deps arithmetic.mligo_ast arithmetic.mligo_ast_pretty)) +(alias (name runtest) (action (diff attributes.mligo_ast attributes.mligo_ast_pretty)) (deps attributes.mligo_ast attributes.mligo_ast_pretty)) +(alias (name runtest) (action (diff balance_constant.mligo_ast balance_constant.mligo_ast_pretty)) (deps balance_constant.mligo_ast balance_constant.mligo_ast_pretty)) +(alias (name runtest) (action (diff basic.mligo_ast basic.mligo_ast_pretty)) (deps basic.mligo_ast basic.mligo_ast_pretty)) +(alias (name runtest) (action (diff big_map.mligo_ast big_map.mligo_ast_pretty)) (deps big_map.mligo_ast big_map.mligo_ast_pretty)) +(alias (name runtest) (action (diff bitwise_arithmetic.mligo_ast bitwise_arithmetic.mligo_ast_pretty)) (deps bitwise_arithmetic.mligo_ast bitwise_arithmetic.mligo_ast_pretty)) +(alias (name runtest) (action (diff boolean_operators.mligo_ast boolean_operators.mligo_ast_pretty)) (deps boolean_operators.mligo_ast boolean_operators.mligo_ast_pretty)) +(alias (name runtest) (action (diff bytes_arithmetic.mligo_ast bytes_arithmetic.mligo_ast_pretty)) (deps bytes_arithmetic.mligo_ast bytes_arithmetic.mligo_ast_pretty)) +(alias (name runtest) (action (diff bytes_unpack.mligo_ast bytes_unpack.mligo_ast_pretty)) (deps bytes_unpack.mligo_ast bytes_unpack.mligo_ast_pretty)) +(alias (name runtest) (action (diff check_signature.mligo_ast check_signature.mligo_ast_pretty)) (deps check_signature.mligo_ast check_signature.mligo_ast_pretty)) +(alias (name runtest) (action (diff closure.mligo_ast closure.mligo_ast_pretty)) (deps closure.mligo_ast closure.mligo_ast_pretty)) +(alias (name runtest) (action (diff comparable.mligo_ast comparable.mligo_ast_pretty)) (deps comparable.mligo_ast comparable.mligo_ast_pretty)) +(alias (name runtest) (action (diff condition-annot.mligo_ast condition-annot.mligo_ast_pretty)) (deps condition-annot.mligo_ast condition-annot.mligo_ast_pretty)) +(alias (name runtest) (action (diff condition-shadowing.mligo_ast condition-shadowing.mligo_ast_pretty)) (deps condition-shadowing.mligo_ast condition-shadowing.mligo_ast_pretty)) +(alias (name runtest) (action (diff condition.mligo_ast condition.mligo_ast_pretty)) (deps condition.mligo_ast condition.mligo_ast_pretty)) +(alias (name runtest) (action (diff counter.mligo_ast counter.mligo_ast_pretty)) (deps counter.mligo_ast counter.mligo_ast_pretty)) +(alias (name runtest) (action (diff create_contract.mligo_ast create_contract.mligo_ast_pretty)) (deps create_contract.mligo_ast create_contract.mligo_ast_pretty)) +(alias (name runtest) (action (diff crypto.mligo_ast crypto.mligo_ast_pretty)) (deps crypto.mligo_ast crypto.mligo_ast_pretty)) +(alias (name runtest) (action (diff curry.mligo_ast curry.mligo_ast_pretty)) (deps curry.mligo_ast curry.mligo_ast_pretty)) +(alias (name runtest) (action (diff double_michelson_or.mligo_ast double_michelson_or.mligo_ast_pretty)) (deps double_michelson_or.mligo_ast double_michelson_or.mligo_ast_pretty)) +(alias (name runtest) (action (diff empty_case.mligo_ast empty_case.mligo_ast_pretty)) (deps empty_case.mligo_ast empty_case.mligo_ast_pretty)) +(alias (name runtest) (action (diff eq_bool.mligo_ast eq_bool.mligo_ast_pretty)) (deps eq_bool.mligo_ast eq_bool.mligo_ast_pretty)) +(alias (name runtest) (action (diff FA1.2.mligo_ast FA1.2.mligo_ast_pretty)) (deps FA1.2.mligo_ast FA1.2.mligo_ast_pretty)) +(alias (name runtest) (action (diff failwith.mligo_ast failwith.mligo_ast_pretty)) (deps failwith.mligo_ast failwith.mligo_ast_pretty)) +(alias (name runtest) (action (diff fibo.mligo_ast fibo.mligo_ast_pretty)) (deps fibo.mligo_ast fibo.mligo_ast_pretty)) +(alias (name runtest) (action (diff fibo2.mligo_ast fibo2.mligo_ast_pretty)) (deps fibo2.mligo_ast fibo2.mligo_ast_pretty)) +(alias (name runtest) (action (diff fibo3.mligo_ast fibo3.mligo_ast_pretty)) (deps fibo3.mligo_ast fibo3.mligo_ast_pretty)) +(alias (name runtest) (action (diff fibo4.mligo_ast fibo4.mligo_ast_pretty)) (deps fibo4.mligo_ast fibo4.mligo_ast_pretty)) +(alias (name runtest) (action (diff function-shared.mligo_ast function-shared.mligo_ast_pretty)) (deps function-shared.mligo_ast function-shared.mligo_ast_pretty)) +(alias (name runtest) (action (diff guess_string.mligo_ast guess_string.mligo_ast_pretty)) (deps guess_string.mligo_ast guess_string.mligo_ast_pretty)) \ No newline at end of file diff --git a/src/test/contracts/expected/FA1.2.mligo b/src/test/contracts/expected/FA1.2.mligo new file mode 100644 index 000000000..6bfd26c97 --- /dev/null +++ b/src/test/contracts/expected/FA1.2.mligo @@ -0,0 +1,136 @@ +type tokens = (address, nat) big_map + +type allowances = (address * address, nat) big_map + +type storage = + {tokens : tokens; + allowances : allowances; + total_amount : nat} + +type transfer = + {address_from : address; + address_to : address; + value : nat} + +type approve = {spender : address; value : nat} + +type getAllowance = + {owner : address; + spender : address; + callback : nat contract} + +type getBalance = {owner : address; callback : nat contract} + +type getTotalSupply = {callback : nat contract} + +type action = + Transfer of transfer + | Approve of approve + | GetAllowance of getAllowance + | GetBalance of getBalance + | GetTotalSupply of getTotalSupply + +let transfer (p, s : transfer * storage) +: operation list * storage = + let new_allowances = + if Tezos.sender = p.address_from + then s.allowances + else + let authorized_value = + match Big_map.find_opt + (Tezos.sender, p.address_from) + s.allowances + with + Some value -> value + | None -> 0n + in if (authorized_value < p.value) + then (failwith "Not Enough Allowance" : allowances) + else + Big_map.update + (Tezos.sender, p.address_from) + (Some (abs (authorized_value - p.value))) + s.allowances + in let sender_balance = + match Big_map.find_opt p.address_from s.tokens with + Some value -> value + | None -> 0n + in if (sender_balance < p.value) + then + (failwith "Not Enough Balance" + : operation list * storage) + else + let new_tokens = + Big_map.update + p.address_from + (Some (abs (sender_balance - p.value))) + s.tokens + in let receiver_balance = + match Big_map.find_opt p.address_to s.tokens + with + Some value -> value + | None -> 0n + in let new_tokens = + Big_map.update + p.address_to + (Some (receiver_balance + p.value)) + new_tokens + in ([] : operation list), + {s with + tokens = new_tokens; + allowances = new_allowances} + +let approve (p, s : approve * storage) +: operation list * storage = + let previous_value = + match Big_map.find_opt + (p.spender, Tezos.sender) + s.allowances + with + Some value -> value + | None -> 0n + in if previous_value > 0n && p.value > 0n + then + (failwith "Unsafe Allowance Change" + : operation list * storage) + else + let new_allowances = + Big_map.update + (p.spender, Tezos.sender) + (Some (p.value)) + s.allowances + in ([] : operation list), + {s with + allowances = new_allowances} + +let getAllowance (p, s : getAllowance * storage) +: operation list * storage = + let value = + match Big_map.find_opt (p.owner, p.spender) s.allowances + with + Some value -> value + | None -> 0n + in let op = Tezos.transaction value 0mutez p.callback + in ([op], s) + +let getBalance (p, s : getBalance * storage) +: operation list * storage = + let value = + match Big_map.find_opt p.owner s.tokens with + Some value -> value + | None -> 0n + in let op = Tezos.transaction value 0mutez p.callback + in ([op], s) + +let getTotalSupply (p, s : getTotalSupply * storage) +: operation list * storage = + let total = s.total_amount + in let op = Tezos.transaction total 0mutez p.callback + in ([op], s) + +let main (a, s : action * storage) = + match a with + Transfer p -> transfer (p, s) + | Approve p -> approve (p, s) + | GetAllowance p -> getAllowance (p, s) + | GetBalance p -> getBalance (p, s) + | GetTotalSupply p -> getTotalSupply (p, s) diff --git a/src/test/contracts/expected/address.mligo b/src/test/contracts/expected/address.mligo new file mode 100644 index 000000000..e4d873bbe --- /dev/null +++ b/src/test/contracts/expected/address.mligo @@ -0,0 +1,3 @@ +let main (p : key_hash) = + let c : unit contract = Tezos.implicit_account p + in Tezos.address c diff --git a/src/test/contracts/expected/amount.mligo b/src/test/contracts/expected/amount.mligo new file mode 100644 index 000000000..f274aad7a --- /dev/null +++ b/src/test/contracts/expected/amount.mligo @@ -0,0 +1,2 @@ +let check_ (p : unit) : int = + if Tezos.amount = 100000000mutez then 42 else 0 diff --git a/src/test/contracts/expected/amount_lambda.mligo b/src/test/contracts/expected/amount_lambda.mligo new file mode 100644 index 000000000..a9d51b22d --- /dev/null +++ b/src/test/contracts/expected/amount_lambda.mligo @@ -0,0 +1,10 @@ +let f1 (x : unit) : unit -> tez = + let amt : tez = Current.amount + in fun (x : unit) -> amt + +let f2 (x : unit) : unit -> tez = + fun (x : unit) -> Current.amount + +let main (b, s : bool * (unit -> tez)) +: operation list * (unit -> tez) = + (([] : operation list), (if b then f1 () else f2 ())) diff --git a/src/test/contracts/expected/arithmetic.mligo b/src/test/contracts/expected/arithmetic.mligo new file mode 100644 index 000000000..2f6020397 --- /dev/null +++ b/src/test/contracts/expected/arithmetic.mligo @@ -0,0 +1,17 @@ +let mod_op (n : int) : nat = n mod 42 + +let plus_op (n : int) : int = n + 42 + +let minus_op (n : int) : int = n - 42 + +let times_op (n : int) : int = n * 42 + +let div_op (n : int) : int = n / 2 + +let neg_op (n : int) : int = -n + +let foo (n : int) : int = n + 10 + +let neg_op_2 (b : int) : int = -(foo b) + +let ediv_op (n : int) : (int * nat) option = ediv n 2 diff --git a/src/test/contracts/expected/assert.mligo b/src/test/contracts/expected/assert.mligo new file mode 100644 index 000000000..41785c58d --- /dev/null +++ b/src/test/contracts/expected/assert.mligo @@ -0,0 +1,3 @@ +let main (p, s : bool * unit) = + let u : unit = assert p + in ([] : operation list), s diff --git a/src/test/contracts/expected/attributes.mligo b/src/test/contracts/expected/attributes.mligo new file mode 100644 index 000000000..0623ef077 --- /dev/null +++ b/src/test/contracts/expected/attributes.mligo @@ -0,0 +1,14 @@ +let x = 1 [@@inline] + +let foo (a : int) : int = + (let test = 2 + a [@@inline] + in test) [@@inline] + +let y = 1 [@@inline][@@other] + +let bar (b : int) : int = + let test = fun (z : int) -> 2 + b + z + [@@inline] + [@@foo] + [@@bar] + in test b diff --git a/src/test/contracts/expected/balance_constant.mligo b/src/test/contracts/expected/balance_constant.mligo new file mode 100644 index 000000000..e46d05670 --- /dev/null +++ b/src/test/contracts/expected/balance_constant.mligo @@ -0,0 +1,8 @@ +type parameter = unit + +type storage = tez + +type return = operation list * storage + +let main (p, s : parameter * storage) : return = + ([] : operation list), Tezos.balance diff --git a/src/test/contracts/expected/basic.mligo b/src/test/contracts/expected/basic.mligo new file mode 100644 index 000000000..34be829e0 --- /dev/null +++ b/src/test/contracts/expected/basic.mligo @@ -0,0 +1,3 @@ +type toto = int + +let foo : toto = 42 + 127 diff --git a/src/test/contracts/expected/big_map.mligo b/src/test/contracts/expected/big_map.mligo new file mode 100644 index 000000000..36eafe0fd --- /dev/null +++ b/src/test/contracts/expected/big_map.mligo @@ -0,0 +1,22 @@ +type foo = (int, int) big_map + +let set_ (n, m : int * foo) : foo = + Big_map.update 23 (Some n) m + +let add (n, m : int * foo) : foo = Big_map.add 23 n m + +let rm (m : foo) : foo = Big_map.remove 42 m + +let gf (m : foo) : int = Big_map.find 23 m + +let get (m : foo) : int option = Big_map.find_opt 42 m + +let empty_map : foo = Big_map.empty + +let map1 : foo = Big_map.literal [(23, 0); (42, 0)] + +let map1 : foo = Big_map.literal [(23, 0); (42, 0)] + +let mutimaps (m : foo) (n : foo) : foo = + let bar : foo = Big_map.update 42 (Some 0) m + in Big_map.update 42 (get bar) n diff --git a/src/test/contracts/expected/bitwise_arithmetic.mligo b/src/test/contracts/expected/bitwise_arithmetic.mligo new file mode 100644 index 000000000..2100e15e9 --- /dev/null +++ b/src/test/contracts/expected/bitwise_arithmetic.mligo @@ -0,0 +1,9 @@ +let or_op (n : nat) : nat = Bitwise.or n 4n + +let and_op (n : nat) : nat = Bitwise.and n 7n + +let xor_op (n : nat) : nat = Bitwise.xor n 7n + +let lsl_op (n : nat) : nat = Bitwise.shift_left n 7n + +let lsr_op (n : nat) : nat = Bitwise.shift_right n 7n diff --git a/src/test/contracts/expected/boolean_operators.mligo b/src/test/contracts/expected/boolean_operators.mligo new file mode 100644 index 000000000..be77b3592 --- /dev/null +++ b/src/test/contracts/expected/boolean_operators.mligo @@ -0,0 +1,9 @@ +let or_true (b : bool) : bool = b || true + +let or_false (b : bool) : bool = b || false + +let and_true (b : bool) : bool = b && true + +let and_false (b : bool) : bool = b && false + +let not_bool (b : bool) : bool = not b diff --git a/src/test/contracts/expected/bytes_arithmetic.mligo b/src/test/contracts/expected/bytes_arithmetic.mligo new file mode 100644 index 000000000..2d26e0d22 --- /dev/null +++ b/src/test/contracts/expected/bytes_arithmetic.mligo @@ -0,0 +1,5 @@ +let concat_op (s : bytes) : bytes = Bytes.concat s 0x7070 + +let slice_op (s : bytes) : bytes = Bytes.sub 1n 2n s + +let hasherman (s : bytes) : bytes = Crypto.sha256 s diff --git a/src/test/contracts/expected/bytes_unpack.mligo b/src/test/contracts/expected/bytes_unpack.mligo new file mode 100644 index 000000000..74bceb409 --- /dev/null +++ b/src/test/contracts/expected/bytes_unpack.mligo @@ -0,0 +1,11 @@ +let id_string (p : string) : string option = + let packed : bytes = Bytes.pack p + in (Bytes.unpack packed : string option) + +let id_int (p : int) : int option = + let packed : bytes = Bytes.pack p + in (Bytes.unpack packed : int option) + +let id_address (p : address) : address option = + let packed : bytes = Bytes.pack p + in (Bytes.unpack packed : address option) diff --git a/src/test/contracts/expected/check_signature.mligo b/src/test/contracts/expected/check_signature.mligo new file mode 100644 index 000000000..bef4276d4 --- /dev/null +++ b/src/test/contracts/expected/check_signature.mligo @@ -0,0 +1,11 @@ +let check_signature +(pk, signed, msg : key * signature * bytes) : bool = + Crypto.check pk signed msg + +let example : bool = + Crypto.check + ("edpktz4xg6csJnJ5vcmMb2H37sWXyBDcoAp3XrBvjRaTSQ1zmZTeRQ" + : key) + ("edsigtnzKd51CDomKVMFBoU8SzFZgNqRkYUaQH4DLUg8Lsimz98DFB82uiHAkdvx29DDqHxPf1noQ8noWpKMZoxTCsfprrbs4Xo" + : signature) + 0x05010000000568656c6c6f diff --git a/src/test/contracts/expected/closure.mligo b/src/test/contracts/expected/closure.mligo new file mode 100644 index 000000000..a0505ca8f --- /dev/null +++ b/src/test/contracts/expected/closure.mligo @@ -0,0 +1,5 @@ +let test (k : int) : int = + let j : int = k + 5 + in let close : int -> int = fun (i : int) -> i + j + in let j : int = 20 + in close 20 diff --git a/src/test/contracts/expected/comparable.mligo b/src/test/contracts/expected/comparable.mligo new file mode 100644 index 000000000..c5e4c00fd --- /dev/null +++ b/src/test/contracts/expected/comparable.mligo @@ -0,0 +1,28 @@ +let int_ (a : int) = a < a + +let nat_ (a : nat) = a < a + +let bool_ (a : bool) = a < a + +let mutez_ (a : tez) = a < a + +let string_ (a : string) = a < a + +let bytes_ (a : bytes) = a < a + +let address_ (a : address) = a < a + +let timestamp_ (a : timestamp) = a < a + +let key_hash_ (a : key_hash) = a < a + +type comp_pair = int * int + +let comp_pair (a : comp_pair) = a < a + +type inner_record = (int, "one", nat, "two") michelson_pair + +type comb_record = + (int, "three", inner_record, "four") michelson_pair + +let comb_record (a : comb_record) = a < a diff --git a/src/test/contracts/expected/condition-annot.mligo b/src/test/contracts/expected/condition-annot.mligo new file mode 100644 index 000000000..1eb1bf0f9 --- /dev/null +++ b/src/test/contracts/expected/condition-annot.mligo @@ -0,0 +1,4 @@ +type integer = int + +let main (i : int) = + if (i = 2 : bool) then (42 : int) else (0 : integer) diff --git a/src/test/contracts/expected/condition-shadowing.mligo b/src/test/contracts/expected/condition-shadowing.mligo new file mode 100644 index 000000000..b704abaef --- /dev/null +++ b/src/test/contracts/expected/condition-shadowing.mligo @@ -0,0 +1,9 @@ +let main (i : int) = + let result = 0 + in if i = 2 + then + let result = 42 + in result + else + let result = 0 + in result diff --git a/src/test/contracts/expected/condition.mligo b/src/test/contracts/expected/condition.mligo new file mode 100644 index 000000000..d14c7444c --- /dev/null +++ b/src/test/contracts/expected/condition.mligo @@ -0,0 +1 @@ +let main (i : int) = if i = 2 then 42 else 0 diff --git a/src/test/contracts/expected/counter.mligo b/src/test/contracts/expected/counter.mligo new file mode 100644 index 000000000..cf0ff35bb --- /dev/null +++ b/src/test/contracts/expected/counter.mligo @@ -0,0 +1,4 @@ +type storage = int + +let main (p, s : int * storage) = + ([] : operation list), p + s diff --git a/src/test/contracts/expected/create_contract.mligo b/src/test/contracts/expected/create_contract.mligo new file mode 100644 index 000000000..ea091b05c --- /dev/null +++ b/src/test/contracts/expected/create_contract.mligo @@ -0,0 +1,11 @@ +type return = operation list * string + +let main (action, store : string * string) : return = + let toto : operation * address = + Tezos.create_contract + (fun (p, s : nat * string) -> + (([] : operation list), "one")) + (None : key_hash option) + 300000000mutez + "un" + in ([toto.0], store) diff --git a/src/test/contracts/expected/crypto.mligo b/src/test/contracts/expected/crypto.mligo new file mode 100644 index 000000000..3dc8db6a1 --- /dev/null +++ b/src/test/contracts/expected/crypto.mligo @@ -0,0 +1,3 @@ +let hasherman512 (s : bytes) : bytes = Crypto.sha512 s + +let hasherman_blake (s : bytes) : bytes = Crypto.blake2b s diff --git a/src/test/contracts/expected/curry.mligo b/src/test/contracts/expected/curry.mligo new file mode 100644 index 000000000..ffcaafe15 --- /dev/null +++ b/src/test/contracts/expected/curry.mligo @@ -0,0 +1,9 @@ +let conv_test (j : int) (k : int) = j + k + +let main (i : int) : int = conv_test i 10 + +let partial (a : int) (b : int) : int = a + b + +let mk_partial (j : int) : int -> int = partial j + +let partial_apply (i : int) : int = mk_partial 10 i diff --git a/src/test/contracts/expected/double_michelson_or.mligo b/src/test/contracts/expected/double_michelson_or.mligo new file mode 100644 index 000000000..756e5acba --- /dev/null +++ b/src/test/contracts/expected/double_michelson_or.mligo @@ -0,0 +1,10 @@ +type storage = (int, "foo", string, "bar") michelson_or + +type foobar = (int, "baz", int, "fooo") michelson_or + +type return = operation list * storage + +let main (action, store : unit * storage) : return = + let foo = (M_right ("one") : storage) + in let bar = (M_right 1 : foobar) + in (([] : operation list), (foo : storage)) diff --git a/src/test/contracts/expected/empty_case.mligo b/src/test/contracts/expected/empty_case.mligo new file mode 100644 index 000000000..7b85070fc --- /dev/null +++ b/src/test/contracts/expected/empty_case.mligo @@ -0,0 +1,6 @@ +type foo = Bar of int | Baz + +let main (f : foo) : int = + match f with + Bar i -> i + | Baz -> -1 diff --git a/src/test/contracts/expected/eq_bool.mligo b/src/test/contracts/expected/eq_bool.mligo new file mode 100644 index 000000000..576d4f5c7 --- /dev/null +++ b/src/test/contracts/expected/eq_bool.mligo @@ -0,0 +1 @@ +let main (a, b : bool * bool) = if a = b then 999 else 1 diff --git a/src/test/contracts/expected/failwith.mligo b/src/test/contracts/expected/failwith.mligo new file mode 100644 index 000000000..fee3f0102 --- /dev/null +++ b/src/test/contracts/expected/failwith.mligo @@ -0,0 +1,6 @@ +type storage = unit + +let main (p, store : unit * storage) +: operation list * storage = + (failwith "This contract always fails" + : operation list * storage) diff --git a/src/test/contracts/expected/fibo.mligo b/src/test/contracts/expected/fibo.mligo new file mode 100644 index 000000000..221fe266a --- /dev/null +++ b/src/test/contracts/expected/fibo.mligo @@ -0,0 +1,13 @@ +type storage = unit + +let main (p, store : unit * storage) +: operation list * storage = + let n = + (fun (f : int * int -> int) + (x : int) + (y : int) -> + f (y, x)) + (fun (x : int) (y : int) -> x + y) + 0 + 1 + in ([] : operation list), store diff --git a/src/test/contracts/expected/fibo2.mligo b/src/test/contracts/expected/fibo2.mligo new file mode 100644 index 000000000..bfa744d14 --- /dev/null +++ b/src/test/contracts/expected/fibo2.mligo @@ -0,0 +1,10 @@ +type storage = unit + +let main (p, store : unit * storage) +: operation list * storage = + let n = + (fun (f : int -> int) (z : int) (y : int) -> f y) + (fun (x : int) -> x) + 0 + 1 + in ([] : operation list), store diff --git a/src/test/contracts/expected/fibo3.mligo b/src/test/contracts/expected/fibo3.mligo new file mode 100644 index 000000000..3f9cc0e83 --- /dev/null +++ b/src/test/contracts/expected/fibo3.mligo @@ -0,0 +1,12 @@ +type storage = unit + +let main (p, s : unit * storage) : operation list * storage = + let n = + (fun (f : int -> int -> int) + (x : int) + (y : int) -> + f y (x + y)) + (fun (x : int) (y : int) -> x + y) + 0 + 1 + in ([] : operation list), store diff --git a/src/test/contracts/expected/fibo4.mligo b/src/test/contracts/expected/fibo4.mligo new file mode 100644 index 000000000..9806eabee --- /dev/null +++ b/src/test/contracts/expected/fibo4.mligo @@ -0,0 +1,6 @@ +type storage = unit + +let main (p, s : unit * storage) = + (fun (f : int -> int) (x : int) -> f x) + (fun (x : int) -> x) + 1 diff --git a/src/test/contracts/expected/function-shared.mligo b/src/test/contracts/expected/function-shared.mligo new file mode 100644 index 000000000..fbdd17da5 --- /dev/null +++ b/src/test/contracts/expected/function-shared.mligo @@ -0,0 +1,5 @@ +let foo (i : int) : int = i + 20 + +let bar (i : int) : int = i + 50 + +let foobar (i : int) : int = foo i + bar i diff --git a/src/test/contracts/expected/guess_string.mligo b/src/test/contracts/expected/guess_string.mligo new file mode 100644 index 000000000..642fdb343 --- /dev/null +++ b/src/test/contracts/expected/guess_string.mligo @@ -0,0 +1,17 @@ +type storage = {challenge : string} + +type param = {new_challenge : string; attempt : string} + +type return = operation list * storage + +let attempt (p, store : param * storage) : return = + let contract : unit contract = + match (Tezos.get_contract_opt Tezos.sender + : unit contract option) + with + Some contract -> contract + | None -> (failwith "No contract" : unit contract) + in let transfer : operation = + Tezos.transaction (unit, contract, 10000000mutez) + in let store : storage = {challenge = p.new_challenge} + in ([] : operation list), store From 49d2c870aebfd8110e29517123bdf7482b9ffd05 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 13:02:23 +0200 Subject: [PATCH 39/67] Change names. --- src/test/contracts/dune | 176 +++++++++--------- .../{FA1.2.mligo => FA1.2.mligo.expected} | 0 .../{address.mligo => address.mligo.expected} | 0 ...address.religo => address.religo.expected} | 0 .../{amount.mligo => amount.mligo.expected} | 0 .../{amount.religo => amount.religo.expected} | 0 ...bda.mligo => amount_lambda.mligo.expected} | 0 ...hmetic.mligo => arithmetic.mligo.expected} | 0 ...etic.religo => arithmetic.religo.expected} | 0 .../{assert.mligo => assert.mligo.expected} | 0 ...ibutes.mligo => attributes.mligo.expected} | 0 ...igo => bad_address_format.religo.expected} | 0 ....mligo => balance_constant.mligo.expected} | 0 ...eligo => balance_constant.religo.expected} | 0 .../{basic.mligo => basic.mligo.expected} | 0 .../{big_map.mligo => big_map.mligo.expected} | 0 ...ligo => bitwise_arithmetic.mligo.expected} | 0 ...igo => bitwise_arithmetic.religo.expected} | 0 ...mligo => boolean_operators.mligo.expected} | 0 ...ligo => boolean_operators.religo.expected} | 0 ....mligo => bytes_arithmetic.mligo.expected} | 0 ...eligo => bytes_arithmetic.religo.expected} | 0 ...pack.mligo => bytes_unpack.mligo.expected} | 0 ...ck.religo => bytes_unpack.religo.expected} | 0 ...e.mligo => check_signature.mligo.expected} | 0 ...religo => check_signature.religo.expected} | 0 .../{closure.mligo => closure.mligo.expected} | 0 ...closure.religo => closure.religo.expected} | 0 ...arable.mligo => comparable.mligo.expected} | 0 ...t.mligo => condition-annot.mligo.expected} | 0 ...igo => condition-shadowing.mligo.expected} | 0 ...go => condition-shadowing.religo.expected} | 0 ...ndition.mligo => condition.mligo.expected} | 0 ...ition.religo => condition.religo.expected} | 0 .../{counter.mligo => counter.mligo.expected} | 0 ...counter.religo => counter.religo.expected} | 0 ...t.mligo => create_contract.mligo.expected} | 0 .../{crypto.mligo => crypto.mligo.expected} | 0 .../{crypto.religo => crypto.religo.expected} | 0 .../{curry.mligo => curry.mligo.expected} | 0 ...igo => double_michelson_or.mligo.expected} | 0 ...y_case.mligo => empty_case.mligo.expected} | 0 ...case.religo => empty_case.religo.expected} | 0 .../{eq_bool.mligo => eq_bool.mligo.expected} | 0 ...eq_bool.religo => eq_bool.religo.expected} | 0 ...failwith.mligo => failwith.mligo.expected} | 0 ...ilwith.religo => failwith.religo.expected} | 0 .../{fibo.mligo => fibo.mligo.expected} | 0 .../{fibo2.mligo => fibo2.mligo.expected} | 0 .../{fibo3.mligo => fibo3.mligo.expected} | 0 .../{fibo4.mligo => fibo4.mligo.expected} | 0 ...d.mligo => function-shared.mligo.expected} | 0 ...religo => function-shared.religo.expected} | 0 ...ring.mligo => guess_string.mligo.expected} | 0 ...rder.religo => high-order.religo.expected} | 0 ...eligo => implicit_account.religo.expected} | 0 ...cluded.religo => included.religo.expected} | 0 ...cluder.religo => includer.religo.expected} | 0 ...y_hash.religo => key_hash.religo.expected} | 0 .../{lambda.religo => lambda.religo.expected} | 0 ...lambda2.religo => lambda2.religo.expected} | 0 ...le.religo => let_multiple.religo.expected} | 0 .../{letin.religo => letin.religo.expected} | 0 .../{list.religo => list.religo.expected} | 0 .../{loop.religo => loop.religo.expected} | 0 .../{map.religo => map.religo.expected} | 0 .../{match.religo => match.religo.expected} | 0 ...h_bis.religo => match_bis.religo.expected} | 0 ...go => michelson_pair_tree.religo.expected} | 0 ...go => multiple-parameters.religo.expected} | 0 ...ltisig.religo => multisig.religo.expected} | 0 ...on.religo => no_semicolon.religo.expected} | 0 .../{pledge.religo => pledge.religo.expected} | 0 .../{record.religo => record.religo.expected} | 0 ...rsion.religo => recursion.religo.expected} | 0 ...ss.religo => self_address.religo.expected} | 0 ....religo => set_arithmetic.religo.expected} | 0 ...te.religo => set_delegate.religo.expected} | 0 ...igo => single_record_item.religo.expected} | 0 ...ligo => string_arithmetic.religo.expected} | 0 ...r.religo => super-counter.religo.expected} | 0 .../{tuple.religo => tuple.religo.expected} | 0 ...list.religo => tuple_list.religo.expected} | 0 ...o => tuple_param_destruct.religo.expected} | 0 ...type.religo => tuple_type.religo.expected} | 0 ...o => tuples_no_annotation.religo.expected} | 0 ...uples_sequences_functions.religo.expected} | 0 ...variant.religo => variant.religo.expected} | 0 ...bsite2.religo => website2.religo.expected} | 0 89 files changed, 88 insertions(+), 88 deletions(-) rename src/test/contracts/expected/{FA1.2.mligo => FA1.2.mligo.expected} (100%) rename src/test/contracts/expected/{address.mligo => address.mligo.expected} (100%) rename src/test/contracts/expected/{address.religo => address.religo.expected} (100%) rename src/test/contracts/expected/{amount.mligo => amount.mligo.expected} (100%) rename src/test/contracts/expected/{amount.religo => amount.religo.expected} (100%) rename src/test/contracts/expected/{amount_lambda.mligo => amount_lambda.mligo.expected} (100%) rename src/test/contracts/expected/{arithmetic.mligo => arithmetic.mligo.expected} (100%) rename src/test/contracts/expected/{arithmetic.religo => arithmetic.religo.expected} (100%) rename src/test/contracts/expected/{assert.mligo => assert.mligo.expected} (100%) rename src/test/contracts/expected/{attributes.mligo => attributes.mligo.expected} (100%) rename src/test/contracts/expected/{bad_address_format.religo => bad_address_format.religo.expected} (100%) rename src/test/contracts/expected/{balance_constant.mligo => balance_constant.mligo.expected} (100%) rename src/test/contracts/expected/{balance_constant.religo => balance_constant.religo.expected} (100%) rename src/test/contracts/expected/{basic.mligo => basic.mligo.expected} (100%) rename src/test/contracts/expected/{big_map.mligo => big_map.mligo.expected} (100%) rename src/test/contracts/expected/{bitwise_arithmetic.mligo => bitwise_arithmetic.mligo.expected} (100%) rename src/test/contracts/expected/{bitwise_arithmetic.religo => bitwise_arithmetic.religo.expected} (100%) rename src/test/contracts/expected/{boolean_operators.mligo => boolean_operators.mligo.expected} (100%) rename src/test/contracts/expected/{boolean_operators.religo => boolean_operators.religo.expected} (100%) rename src/test/contracts/expected/{bytes_arithmetic.mligo => bytes_arithmetic.mligo.expected} (100%) rename src/test/contracts/expected/{bytes_arithmetic.religo => bytes_arithmetic.religo.expected} (100%) rename src/test/contracts/expected/{bytes_unpack.mligo => bytes_unpack.mligo.expected} (100%) rename src/test/contracts/expected/{bytes_unpack.religo => bytes_unpack.religo.expected} (100%) rename src/test/contracts/expected/{check_signature.mligo => check_signature.mligo.expected} (100%) rename src/test/contracts/expected/{check_signature.religo => check_signature.religo.expected} (100%) rename src/test/contracts/expected/{closure.mligo => closure.mligo.expected} (100%) rename src/test/contracts/expected/{closure.religo => closure.religo.expected} (100%) rename src/test/contracts/expected/{comparable.mligo => comparable.mligo.expected} (100%) rename src/test/contracts/expected/{condition-annot.mligo => condition-annot.mligo.expected} (100%) rename src/test/contracts/expected/{condition-shadowing.mligo => condition-shadowing.mligo.expected} (100%) rename src/test/contracts/expected/{condition-shadowing.religo => condition-shadowing.religo.expected} (100%) rename src/test/contracts/expected/{condition.mligo => condition.mligo.expected} (100%) rename src/test/contracts/expected/{condition.religo => condition.religo.expected} (100%) rename src/test/contracts/expected/{counter.mligo => counter.mligo.expected} (100%) rename src/test/contracts/expected/{counter.religo => counter.religo.expected} (100%) rename src/test/contracts/expected/{create_contract.mligo => create_contract.mligo.expected} (100%) rename src/test/contracts/expected/{crypto.mligo => crypto.mligo.expected} (100%) rename src/test/contracts/expected/{crypto.religo => crypto.religo.expected} (100%) rename src/test/contracts/expected/{curry.mligo => curry.mligo.expected} (100%) rename src/test/contracts/expected/{double_michelson_or.mligo => double_michelson_or.mligo.expected} (100%) rename src/test/contracts/expected/{empty_case.mligo => empty_case.mligo.expected} (100%) rename src/test/contracts/expected/{empty_case.religo => empty_case.religo.expected} (100%) rename src/test/contracts/expected/{eq_bool.mligo => eq_bool.mligo.expected} (100%) rename src/test/contracts/expected/{eq_bool.religo => eq_bool.religo.expected} (100%) rename src/test/contracts/expected/{failwith.mligo => failwith.mligo.expected} (100%) rename src/test/contracts/expected/{failwith.religo => failwith.religo.expected} (100%) rename src/test/contracts/expected/{fibo.mligo => fibo.mligo.expected} (100%) rename src/test/contracts/expected/{fibo2.mligo => fibo2.mligo.expected} (100%) rename src/test/contracts/expected/{fibo3.mligo => fibo3.mligo.expected} (100%) rename src/test/contracts/expected/{fibo4.mligo => fibo4.mligo.expected} (100%) rename src/test/contracts/expected/{function-shared.mligo => function-shared.mligo.expected} (100%) rename src/test/contracts/expected/{function-shared.religo => function-shared.religo.expected} (100%) rename src/test/contracts/expected/{guess_string.mligo => guess_string.mligo.expected} (100%) rename src/test/contracts/expected/{high-order.religo => high-order.religo.expected} (100%) rename src/test/contracts/expected/{implicit_account.religo => implicit_account.religo.expected} (100%) rename src/test/contracts/expected/{included.religo => included.religo.expected} (100%) rename src/test/contracts/expected/{includer.religo => includer.religo.expected} (100%) rename src/test/contracts/expected/{key_hash.religo => key_hash.religo.expected} (100%) rename src/test/contracts/expected/{lambda.religo => lambda.religo.expected} (100%) rename src/test/contracts/expected/{lambda2.religo => lambda2.religo.expected} (100%) rename src/test/contracts/expected/{let_multiple.religo => let_multiple.religo.expected} (100%) rename src/test/contracts/expected/{letin.religo => letin.religo.expected} (100%) rename src/test/contracts/expected/{list.religo => list.religo.expected} (100%) rename src/test/contracts/expected/{loop.religo => loop.religo.expected} (100%) rename src/test/contracts/expected/{map.religo => map.religo.expected} (100%) rename src/test/contracts/expected/{match.religo => match.religo.expected} (100%) rename src/test/contracts/expected/{match_bis.religo => match_bis.religo.expected} (100%) rename src/test/contracts/expected/{michelson_pair_tree.religo => michelson_pair_tree.religo.expected} (100%) rename src/test/contracts/expected/{multiple-parameters.religo => multiple-parameters.religo.expected} (100%) rename src/test/contracts/expected/{multisig.religo => multisig.religo.expected} (100%) rename src/test/contracts/expected/{no_semicolon.religo => no_semicolon.religo.expected} (100%) rename src/test/contracts/expected/{pledge.religo => pledge.religo.expected} (100%) rename src/test/contracts/expected/{record.religo => record.religo.expected} (100%) rename src/test/contracts/expected/{recursion.religo => recursion.religo.expected} (100%) rename src/test/contracts/expected/{self_address.religo => self_address.religo.expected} (100%) rename src/test/contracts/expected/{set_arithmetic.religo => set_arithmetic.religo.expected} (100%) rename src/test/contracts/expected/{set_delegate.religo => set_delegate.religo.expected} (100%) rename src/test/contracts/expected/{single_record_item.religo => single_record_item.religo.expected} (100%) rename src/test/contracts/expected/{string_arithmetic.religo => string_arithmetic.religo.expected} (100%) rename src/test/contracts/expected/{super-counter.religo => super-counter.religo.expected} (100%) rename src/test/contracts/expected/{tuple.religo => tuple.religo.expected} (100%) rename src/test/contracts/expected/{tuple_list.religo => tuple_list.religo.expected} (100%) rename src/test/contracts/expected/{tuple_param_destruct.religo => tuple_param_destruct.religo.expected} (100%) rename src/test/contracts/expected/{tuple_type.religo => tuple_type.religo.expected} (100%) rename src/test/contracts/expected/{tuples_no_annotation.religo => tuples_no_annotation.religo.expected} (100%) rename src/test/contracts/expected/{tuples_sequences_functions.religo => tuples_sequences_functions.religo.expected} (100%) rename src/test/contracts/expected/{variant.religo => variant.religo.expected} (100%) rename src/test/contracts/expected/{website2.religo => website2.religo.expected} (100%) diff --git a/src/test/contracts/dune b/src/test/contracts/dune index 55c1ace75..4f28c22d4 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -94,96 +94,96 @@ ;; compare the output with the expected result ;; reasonligo -(alias (name runtest) (action (diff expected/address.religo address.religo_output))) -(alias (name runtest) (action (diff expected/amount.religo amount.religo_output))) -(alias (name runtest) (action (diff expected/arithmetic.religo arithmetic.religo_output))) -(alias (name runtest) (action (diff expected/bad_address_format.religo bad_address_format.religo_output))) -(alias (name runtest) (action (diff expected/balance_constant.religo balance_constant.religo_output))) -(alias (name runtest) (action (diff expected/bitwise_arithmetic.religo bitwise_arithmetic.religo_output))) -(alias (name runtest) (action (diff expected/boolean_operators.religo boolean_operators.religo_output))) -(alias (name runtest) (action (diff expected/bytes_arithmetic.religo bytes_arithmetic.religo_output))) -(alias (name runtest) (action (diff expected/bytes_unpack.religo bytes_unpack.religo_output))) -(alias (name runtest) (action (diff expected/check_signature.religo check_signature.religo_output))) -(alias (name runtest) (action (diff expected/closure.religo closure.religo_output))) -(alias (name runtest) (action (diff expected/condition-shadowing.religo condition-shadowing.religo_output))) -(alias (name runtest) (action (diff expected/condition.religo condition.religo_output))) -(alias (name runtest) (action (diff expected/counter.religo counter.religo_output))) -(alias (name runtest) (action (diff expected/crypto.religo crypto.religo_output))) -(alias (name runtest) (action (diff expected/empty_case.religo empty_case.religo_output))) -(alias (name runtest) (action (diff expected/eq_bool.religo eq_bool.religo_output))) -(alias (name runtest) (action (diff expected/failwith.religo failwith.religo_output))) -(alias (name runtest) (action (diff expected/function-shared.religo function-shared.religo_output))) -(alias (name runtest) (action (diff expected/high-order.religo high-order.religo_output))) -(alias (name runtest) (action (diff expected/implicit_account.religo implicit_account.religo_output))) -(alias (name runtest) (action (diff expected/included.religo included.religo_output))) -(alias (name runtest) (action (diff expected/includer.religo includer.religo_output))) -(alias (name runtest) (action (diff expected/key_hash.religo key_hash.religo_output))) -(alias (name runtest) (action (diff expected/lambda.religo lambda.religo_output))) -(alias (name runtest) (action (diff expected/lambda2.religo lambda2.religo_output))) -(alias (name runtest) (action (diff expected/let_multiple.religo let_multiple.religo_output))) -(alias (name runtest) (action (diff expected/letin.religo letin.religo_output))) -(alias (name runtest) (action (diff expected/list.religo list.religo_output))) -(alias (name runtest) (action (diff expected/loop.religo loop.religo_output))) -(alias (name runtest) (action (diff expected/map.religo map.religo_output))) -(alias (name runtest) (action (diff expected/match_bis.religo match_bis.religo_output))) -(alias (name runtest) (action (diff expected/match.religo match.religo_output))) -(alias (name runtest) (action (diff expected/michelson_pair_tree.religo michelson_pair_tree.religo_output))) -(alias (name runtest) (action (diff expected/multiple-parameters.religo multiple-parameters.religo_output))) -(alias (name runtest) (action (diff expected/multisig.religo multisig.religo_output))) -(alias (name runtest) (action (diff expected/no_semicolon.religo no_semicolon.religo_output))) -(alias (name runtest) (action (diff expected/pledge.religo pledge.religo_output))) -(alias (name runtest) (action (diff expected/record.religo record.religo_output))) -(alias (name runtest) (action (diff expected/recursion.religo recursion.religo_output))) -(alias (name runtest) (action (diff expected/self_address.religo self_address.religo_output))) -(alias (name runtest) (action (diff expected/set_arithmetic.religo set_arithmetic.religo_output))) -(alias (name runtest) (action (diff expected/set_delegate.religo set_delegate.religo_output))) -(alias (name runtest) (action (diff expected/single_record_item.religo single_record_item.religo_output))) -(alias (name runtest) (action (diff expected/string_arithmetic.religo string_arithmetic.religo_output))) -(alias (name runtest) (action (diff expected/super-counter.religo super-counter.religo_output))) -(alias (name runtest) (action (diff expected/tuple_list.religo tuple_list.religo_output))) -(alias (name runtest) (action (diff expected/tuple_param_destruct.religo tuple_param_destruct.religo_output))) -(alias (name runtest) (action (diff expected/tuple_type.religo tuple_type.religo_output))) -(alias (name runtest) (action (diff expected/tuple.religo tuple.religo_output))) -(alias (name runtest) (action (diff expected/tuples_no_annotation.religo tuples_no_annotation.religo_output))) -(alias (name runtest) (action (diff expected/tuples_sequences_functions.religo tuples_sequences_functions.religo_output))) -(alias (name runtest) (action (diff expected/variant.religo variant.religo_output))) -(alias (name runtest) (action (diff expected/website2.religo website2.religo_output))) +(alias (name runtest) (action (diff expected/address.religo.expected address.religo_output))) +(alias (name runtest) (action (diff expected/amount.religo.expected amount.religo_output))) +(alias (name runtest) (action (diff expected/arithmetic.religo.expected arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/bad_address_format.religo.expected bad_address_format.religo_output))) +(alias (name runtest) (action (diff expected/balance_constant.religo.expected balance_constant.religo_output))) +(alias (name runtest) (action (diff expected/bitwise_arithmetic.religo.expected bitwise_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/boolean_operators.religo.expected boolean_operators.religo_output))) +(alias (name runtest) (action (diff expected/bytes_arithmetic.religo.expected bytes_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/bytes_unpack.religo.expected bytes_unpack.religo_output))) +(alias (name runtest) (action (diff expected/check_signature.religo.expected check_signature.religo_output))) +(alias (name runtest) (action (diff expected/closure.religo.expected closure.religo_output))) +(alias (name runtest) (action (diff expected/condition-shadowing.religo.expected condition-shadowing.religo_output))) +(alias (name runtest) (action (diff expected/condition.religo.expected condition.religo_output))) +(alias (name runtest) (action (diff expected/counter.religo.expected counter.religo_output))) +(alias (name runtest) (action (diff expected/crypto.religo.expected crypto.religo_output))) +(alias (name runtest) (action (diff expected/empty_case.religo.expected empty_case.religo_output))) +(alias (name runtest) (action (diff expected/eq_bool.religo.expected eq_bool.religo_output))) +(alias (name runtest) (action (diff expected/failwith.religo.expected failwith.religo_output))) +(alias (name runtest) (action (diff expected/function-shared.religo.expected function-shared.religo_output))) +(alias (name runtest) (action (diff expected/high-order.religo.expected high-order.religo_output))) +(alias (name runtest) (action (diff expected/implicit_account.religo.expected implicit_account.religo_output))) +(alias (name runtest) (action (diff expected/included.religo.expected included.religo_output))) +(alias (name runtest) (action (diff expected/includer.religo.expected includer.religo_output))) +(alias (name runtest) (action (diff expected/key_hash.religo.expected key_hash.religo_output))) +(alias (name runtest) (action (diff expected/lambda.religo.expected lambda.religo_output))) +(alias (name runtest) (action (diff expected/lambda2.religo.expected lambda2.religo_output))) +(alias (name runtest) (action (diff expected/let_multiple.religo.expected let_multiple.religo_output))) +(alias (name runtest) (action (diff expected/letin.religo.expected letin.religo_output))) +(alias (name runtest) (action (diff expected/list.religo.expected list.religo_output))) +(alias (name runtest) (action (diff expected/loop.religo.expected loop.religo_output))) +(alias (name runtest) (action (diff expected/map.religo.expected map.religo_output))) +(alias (name runtest) (action (diff expected/match_bis.religo.expected match_bis.religo_output))) +(alias (name runtest) (action (diff expected/match.religo.expected match.religo_output))) +(alias (name runtest) (action (diff expected/michelson_pair_tree.religo.expected michelson_pair_tree.religo_output))) +(alias (name runtest) (action (diff expected/multiple-parameters.religo.expected multiple-parameters.religo_output))) +(alias (name runtest) (action (diff expected/multisig.religo.expected multisig.religo_output))) +(alias (name runtest) (action (diff expected/no_semicolon.religo.expected no_semicolon.religo_output))) +(alias (name runtest) (action (diff expected/pledge.religo.expected pledge.religo_output))) +(alias (name runtest) (action (diff expected/record.religo.expected record.religo_output))) +(alias (name runtest) (action (diff expected/recursion.religo.expected recursion.religo_output))) +(alias (name runtest) (action (diff expected/self_address.religo.expected self_address.religo_output))) +(alias (name runtest) (action (diff expected/set_arithmetic.religo.expected set_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/set_delegate.religo.expected set_delegate.religo_output))) +(alias (name runtest) (action (diff expected/single_record_item.religo.expected single_record_item.religo_output))) +(alias (name runtest) (action (diff expected/string_arithmetic.religo.expected string_arithmetic.religo_output))) +(alias (name runtest) (action (diff expected/super-counter.religo.expected super-counter.religo_output))) +(alias (name runtest) (action (diff expected/tuple_list.religo.expected tuple_list.religo_output))) +(alias (name runtest) (action (diff expected/tuple_param_destruct.religo.expected tuple_param_destruct.religo_output))) +(alias (name runtest) (action (diff expected/tuple_type.religo.expected tuple_type.religo_output))) +(alias (name runtest) (action (diff expected/tuple.religo.expected tuple.religo_output))) +(alias (name runtest) (action (diff expected/tuples_no_annotation.religo.expected tuples_no_annotation.religo_output))) +(alias (name runtest) (action (diff expected/tuples_sequences_functions.religo.expected tuples_sequences_functions.religo_output))) +(alias (name runtest) (action (diff expected/variant.religo.expected variant.religo_output))) +(alias (name runtest) (action (diff expected/website2.religo.expected website2.religo_output))) ;; cameligo -(alias (name runtest) (action (diff expected/assert.mligo assert.mligo_output))) -(alias (name runtest) (action (diff expected/address.mligo address.mligo_output))) -(alias (name runtest) (action (diff expected/amount_lambda.mligo amount_lambda.mligo_output))) -(alias (name runtest) (action (diff expected/amount.mligo amount.mligo_output))) -(alias (name runtest) (action (diff expected/arithmetic.mligo arithmetic.mligo_output))) -(alias (name runtest) (action (diff expected/attributes.mligo attributes.mligo_output))) -(alias (name runtest) (action (diff expected/balance_constant.mligo balance_constant.mligo_output))) -(alias (name runtest) (action (diff expected/basic.mligo basic.mligo_output))) -(alias (name runtest) (action (diff expected/big_map.mligo big_map.mligo_output))) -(alias (name runtest) (action (diff expected/bitwise_arithmetic.mligo bitwise_arithmetic.mligo_output))) -(alias (name runtest) (action (diff expected/boolean_operators.mligo boolean_operators.mligo_output))) -(alias (name runtest) (action (diff expected/bytes_arithmetic.mligo bytes_arithmetic.mligo_output))) -(alias (name runtest) (action (diff expected/bytes_unpack.mligo bytes_unpack.mligo_output))) -(alias (name runtest) (action (diff expected/check_signature.mligo check_signature.mligo_output))) -(alias (name runtest) (action (diff expected/closure.mligo closure.mligo_output))) -(alias (name runtest) (action (diff expected/comparable.mligo comparable.mligo_output))) -(alias (name runtest) (action (diff expected/condition-annot.mligo condition-annot.mligo_output))) -(alias (name runtest) (action (diff expected/condition-shadowing.mligo condition-shadowing.mligo_output))) -(alias (name runtest) (action (diff expected/condition.mligo condition.mligo_output))) -(alias (name runtest) (action (diff expected/counter.mligo counter.mligo_output))) -(alias (name runtest) (action (diff expected/create_contract.mligo create_contract.mligo_output))) -(alias (name runtest) (action (diff expected/crypto.mligo crypto.mligo_output))) -(alias (name runtest) (action (diff expected/curry.mligo curry.mligo_output))) -(alias (name runtest) (action (diff expected/double_michelson_or.mligo double_michelson_or.mligo_output))) -(alias (name runtest) (action (diff expected/empty_case.mligo empty_case.mligo_output))) -(alias (name runtest) (action (diff expected/eq_bool.mligo eq_bool.mligo_output))) -(alias (name runtest) (action (diff expected/FA1.2.mligo FA1.2.mligo_output))) -(alias (name runtest) (action (diff expected/failwith.mligo failwith.mligo_output))) -(alias (name runtest) (action (diff expected/fibo.mligo fibo.mligo_output))) -(alias (name runtest) (action (diff expected/fibo2.mligo fibo2.mligo_output))) -(alias (name runtest) (action (diff expected/fibo3.mligo fibo3.mligo_output))) -(alias (name runtest) (action (diff expected/fibo4.mligo fibo4.mligo_output))) -(alias (name runtest) (action (diff expected/function-shared.mligo function-shared.mligo_output))) -(alias (name runtest) (action (diff expected/guess_string.mligo guess_string.mligo_output))) +(alias (name runtest) (action (diff expected/assert.mligo.expected assert.mligo_output))) +(alias (name runtest) (action (diff expected/address.mligo.expected address.mligo_output))) +(alias (name runtest) (action (diff expected/amount_lambda.mligo.expected amount_lambda.mligo_output))) +(alias (name runtest) (action (diff expected/amount.mligo.expected amount.mligo_output))) +(alias (name runtest) (action (diff expected/arithmetic.mligo.expected arithmetic.mligo_output))) +(alias (name runtest) (action (diff expected/attributes.mligo.expected attributes.mligo_output))) +(alias (name runtest) (action (diff expected/balance_constant.mligo.expected balance_constant.mligo_output))) +(alias (name runtest) (action (diff expected/basic.mligo.expected basic.mligo_output))) +(alias (name runtest) (action (diff expected/big_map.mligo.expected big_map.mligo_output))) +(alias (name runtest) (action (diff expected/bitwise_arithmetic.mligo.expected bitwise_arithmetic.mligo_output))) +(alias (name runtest) (action (diff expected/boolean_operators.mligo.expected boolean_operators.mligo_output))) +(alias (name runtest) (action (diff expected/bytes_arithmetic.mligo.expected bytes_arithmetic.mligo_output))) +(alias (name runtest) (action (diff expected/bytes_unpack.mligo.expected bytes_unpack.mligo_output))) +(alias (name runtest) (action (diff expected/check_signature.mligo.expected check_signature.mligo_output))) +(alias (name runtest) (action (diff expected/closure.mligo.expected closure.mligo_output))) +(alias (name runtest) (action (diff expected/comparable.mligo.expected comparable.mligo_output))) +(alias (name runtest) (action (diff expected/condition-annot.mligo.expected condition-annot.mligo_output))) +(alias (name runtest) (action (diff expected/condition-shadowing.mligo.expected condition-shadowing.mligo_output))) +(alias (name runtest) (action (diff expected/condition.mligo.expected condition.mligo_output))) +(alias (name runtest) (action (diff expected/counter.mligo.expected counter.mligo_output))) +(alias (name runtest) (action (diff expected/create_contract.mligo.expected create_contract.mligo_output))) +(alias (name runtest) (action (diff expected/crypto.mligo.expected crypto.mligo_output))) +(alias (name runtest) (action (diff expected/curry.mligo.expected curry.mligo_output))) +(alias (name runtest) (action (diff expected/double_michelson_or.mligo.expected double_michelson_or.mligo_output))) +(alias (name runtest) (action (diff expected/empty_case.mligo.expected empty_case.mligo_output))) +(alias (name runtest) (action (diff expected/eq_bool.mligo.expected eq_bool.mligo_output))) +(alias (name runtest) (action (diff expected/FA1.2.mligo.expected FA1.2.mligo_output))) +(alias (name runtest) (action (diff expected/failwith.mligo.expected failwith.mligo_output))) +(alias (name runtest) (action (diff expected/fibo.mligo.expected fibo.mligo_output))) +(alias (name runtest) (action (diff expected/fibo2.mligo.expected fibo2.mligo_output))) +(alias (name runtest) (action (diff expected/fibo3.mligo.expected fibo3.mligo_output))) +(alias (name runtest) (action (diff expected/fibo4.mligo.expected fibo4.mligo_output))) +(alias (name runtest) (action (diff expected/function-shared.mligo.expected function-shared.mligo_output))) +(alias (name runtest) (action (diff expected/guess_string.mligo.expected guess_string.mligo_output))) ;; try to parse the generated contracts ;; reasonligo diff --git a/src/test/contracts/expected/FA1.2.mligo b/src/test/contracts/expected/FA1.2.mligo.expected similarity index 100% rename from src/test/contracts/expected/FA1.2.mligo rename to src/test/contracts/expected/FA1.2.mligo.expected diff --git a/src/test/contracts/expected/address.mligo b/src/test/contracts/expected/address.mligo.expected similarity index 100% rename from src/test/contracts/expected/address.mligo rename to src/test/contracts/expected/address.mligo.expected diff --git a/src/test/contracts/expected/address.religo b/src/test/contracts/expected/address.religo.expected similarity index 100% rename from src/test/contracts/expected/address.religo rename to src/test/contracts/expected/address.religo.expected diff --git a/src/test/contracts/expected/amount.mligo b/src/test/contracts/expected/amount.mligo.expected similarity index 100% rename from src/test/contracts/expected/amount.mligo rename to src/test/contracts/expected/amount.mligo.expected diff --git a/src/test/contracts/expected/amount.religo b/src/test/contracts/expected/amount.religo.expected similarity index 100% rename from src/test/contracts/expected/amount.religo rename to src/test/contracts/expected/amount.religo.expected diff --git a/src/test/contracts/expected/amount_lambda.mligo b/src/test/contracts/expected/amount_lambda.mligo.expected similarity index 100% rename from src/test/contracts/expected/amount_lambda.mligo rename to src/test/contracts/expected/amount_lambda.mligo.expected diff --git a/src/test/contracts/expected/arithmetic.mligo b/src/test/contracts/expected/arithmetic.mligo.expected similarity index 100% rename from src/test/contracts/expected/arithmetic.mligo rename to src/test/contracts/expected/arithmetic.mligo.expected diff --git a/src/test/contracts/expected/arithmetic.religo b/src/test/contracts/expected/arithmetic.religo.expected similarity index 100% rename from src/test/contracts/expected/arithmetic.religo rename to src/test/contracts/expected/arithmetic.religo.expected diff --git a/src/test/contracts/expected/assert.mligo b/src/test/contracts/expected/assert.mligo.expected similarity index 100% rename from src/test/contracts/expected/assert.mligo rename to src/test/contracts/expected/assert.mligo.expected diff --git a/src/test/contracts/expected/attributes.mligo b/src/test/contracts/expected/attributes.mligo.expected similarity index 100% rename from src/test/contracts/expected/attributes.mligo rename to src/test/contracts/expected/attributes.mligo.expected diff --git a/src/test/contracts/expected/bad_address_format.religo b/src/test/contracts/expected/bad_address_format.religo.expected similarity index 100% rename from src/test/contracts/expected/bad_address_format.religo rename to src/test/contracts/expected/bad_address_format.religo.expected diff --git a/src/test/contracts/expected/balance_constant.mligo b/src/test/contracts/expected/balance_constant.mligo.expected similarity index 100% rename from src/test/contracts/expected/balance_constant.mligo rename to src/test/contracts/expected/balance_constant.mligo.expected diff --git a/src/test/contracts/expected/balance_constant.religo b/src/test/contracts/expected/balance_constant.religo.expected similarity index 100% rename from src/test/contracts/expected/balance_constant.religo rename to src/test/contracts/expected/balance_constant.religo.expected diff --git a/src/test/contracts/expected/basic.mligo b/src/test/contracts/expected/basic.mligo.expected similarity index 100% rename from src/test/contracts/expected/basic.mligo rename to src/test/contracts/expected/basic.mligo.expected diff --git a/src/test/contracts/expected/big_map.mligo b/src/test/contracts/expected/big_map.mligo.expected similarity index 100% rename from src/test/contracts/expected/big_map.mligo rename to src/test/contracts/expected/big_map.mligo.expected diff --git a/src/test/contracts/expected/bitwise_arithmetic.mligo b/src/test/contracts/expected/bitwise_arithmetic.mligo.expected similarity index 100% rename from src/test/contracts/expected/bitwise_arithmetic.mligo rename to src/test/contracts/expected/bitwise_arithmetic.mligo.expected diff --git a/src/test/contracts/expected/bitwise_arithmetic.religo b/src/test/contracts/expected/bitwise_arithmetic.religo.expected similarity index 100% rename from src/test/contracts/expected/bitwise_arithmetic.religo rename to src/test/contracts/expected/bitwise_arithmetic.religo.expected diff --git a/src/test/contracts/expected/boolean_operators.mligo b/src/test/contracts/expected/boolean_operators.mligo.expected similarity index 100% rename from src/test/contracts/expected/boolean_operators.mligo rename to src/test/contracts/expected/boolean_operators.mligo.expected diff --git a/src/test/contracts/expected/boolean_operators.religo b/src/test/contracts/expected/boolean_operators.religo.expected similarity index 100% rename from src/test/contracts/expected/boolean_operators.religo rename to src/test/contracts/expected/boolean_operators.religo.expected diff --git a/src/test/contracts/expected/bytes_arithmetic.mligo b/src/test/contracts/expected/bytes_arithmetic.mligo.expected similarity index 100% rename from src/test/contracts/expected/bytes_arithmetic.mligo rename to src/test/contracts/expected/bytes_arithmetic.mligo.expected diff --git a/src/test/contracts/expected/bytes_arithmetic.religo b/src/test/contracts/expected/bytes_arithmetic.religo.expected similarity index 100% rename from src/test/contracts/expected/bytes_arithmetic.religo rename to src/test/contracts/expected/bytes_arithmetic.religo.expected diff --git a/src/test/contracts/expected/bytes_unpack.mligo b/src/test/contracts/expected/bytes_unpack.mligo.expected similarity index 100% rename from src/test/contracts/expected/bytes_unpack.mligo rename to src/test/contracts/expected/bytes_unpack.mligo.expected diff --git a/src/test/contracts/expected/bytes_unpack.religo b/src/test/contracts/expected/bytes_unpack.religo.expected similarity index 100% rename from src/test/contracts/expected/bytes_unpack.religo rename to src/test/contracts/expected/bytes_unpack.religo.expected diff --git a/src/test/contracts/expected/check_signature.mligo b/src/test/contracts/expected/check_signature.mligo.expected similarity index 100% rename from src/test/contracts/expected/check_signature.mligo rename to src/test/contracts/expected/check_signature.mligo.expected diff --git a/src/test/contracts/expected/check_signature.religo b/src/test/contracts/expected/check_signature.religo.expected similarity index 100% rename from src/test/contracts/expected/check_signature.religo rename to src/test/contracts/expected/check_signature.religo.expected diff --git a/src/test/contracts/expected/closure.mligo b/src/test/contracts/expected/closure.mligo.expected similarity index 100% rename from src/test/contracts/expected/closure.mligo rename to src/test/contracts/expected/closure.mligo.expected diff --git a/src/test/contracts/expected/closure.religo b/src/test/contracts/expected/closure.religo.expected similarity index 100% rename from src/test/contracts/expected/closure.religo rename to src/test/contracts/expected/closure.religo.expected diff --git a/src/test/contracts/expected/comparable.mligo b/src/test/contracts/expected/comparable.mligo.expected similarity index 100% rename from src/test/contracts/expected/comparable.mligo rename to src/test/contracts/expected/comparable.mligo.expected diff --git a/src/test/contracts/expected/condition-annot.mligo b/src/test/contracts/expected/condition-annot.mligo.expected similarity index 100% rename from src/test/contracts/expected/condition-annot.mligo rename to src/test/contracts/expected/condition-annot.mligo.expected diff --git a/src/test/contracts/expected/condition-shadowing.mligo b/src/test/contracts/expected/condition-shadowing.mligo.expected similarity index 100% rename from src/test/contracts/expected/condition-shadowing.mligo rename to src/test/contracts/expected/condition-shadowing.mligo.expected diff --git a/src/test/contracts/expected/condition-shadowing.religo b/src/test/contracts/expected/condition-shadowing.religo.expected similarity index 100% rename from src/test/contracts/expected/condition-shadowing.religo rename to src/test/contracts/expected/condition-shadowing.religo.expected diff --git a/src/test/contracts/expected/condition.mligo b/src/test/contracts/expected/condition.mligo.expected similarity index 100% rename from src/test/contracts/expected/condition.mligo rename to src/test/contracts/expected/condition.mligo.expected diff --git a/src/test/contracts/expected/condition.religo b/src/test/contracts/expected/condition.religo.expected similarity index 100% rename from src/test/contracts/expected/condition.religo rename to src/test/contracts/expected/condition.religo.expected diff --git a/src/test/contracts/expected/counter.mligo b/src/test/contracts/expected/counter.mligo.expected similarity index 100% rename from src/test/contracts/expected/counter.mligo rename to src/test/contracts/expected/counter.mligo.expected diff --git a/src/test/contracts/expected/counter.religo b/src/test/contracts/expected/counter.religo.expected similarity index 100% rename from src/test/contracts/expected/counter.religo rename to src/test/contracts/expected/counter.religo.expected diff --git a/src/test/contracts/expected/create_contract.mligo b/src/test/contracts/expected/create_contract.mligo.expected similarity index 100% rename from src/test/contracts/expected/create_contract.mligo rename to src/test/contracts/expected/create_contract.mligo.expected diff --git a/src/test/contracts/expected/crypto.mligo b/src/test/contracts/expected/crypto.mligo.expected similarity index 100% rename from src/test/contracts/expected/crypto.mligo rename to src/test/contracts/expected/crypto.mligo.expected diff --git a/src/test/contracts/expected/crypto.religo b/src/test/contracts/expected/crypto.religo.expected similarity index 100% rename from src/test/contracts/expected/crypto.religo rename to src/test/contracts/expected/crypto.religo.expected diff --git a/src/test/contracts/expected/curry.mligo b/src/test/contracts/expected/curry.mligo.expected similarity index 100% rename from src/test/contracts/expected/curry.mligo rename to src/test/contracts/expected/curry.mligo.expected diff --git a/src/test/contracts/expected/double_michelson_or.mligo b/src/test/contracts/expected/double_michelson_or.mligo.expected similarity index 100% rename from src/test/contracts/expected/double_michelson_or.mligo rename to src/test/contracts/expected/double_michelson_or.mligo.expected diff --git a/src/test/contracts/expected/empty_case.mligo b/src/test/contracts/expected/empty_case.mligo.expected similarity index 100% rename from src/test/contracts/expected/empty_case.mligo rename to src/test/contracts/expected/empty_case.mligo.expected diff --git a/src/test/contracts/expected/empty_case.religo b/src/test/contracts/expected/empty_case.religo.expected similarity index 100% rename from src/test/contracts/expected/empty_case.religo rename to src/test/contracts/expected/empty_case.religo.expected diff --git a/src/test/contracts/expected/eq_bool.mligo b/src/test/contracts/expected/eq_bool.mligo.expected similarity index 100% rename from src/test/contracts/expected/eq_bool.mligo rename to src/test/contracts/expected/eq_bool.mligo.expected diff --git a/src/test/contracts/expected/eq_bool.religo b/src/test/contracts/expected/eq_bool.religo.expected similarity index 100% rename from src/test/contracts/expected/eq_bool.religo rename to src/test/contracts/expected/eq_bool.religo.expected diff --git a/src/test/contracts/expected/failwith.mligo b/src/test/contracts/expected/failwith.mligo.expected similarity index 100% rename from src/test/contracts/expected/failwith.mligo rename to src/test/contracts/expected/failwith.mligo.expected diff --git a/src/test/contracts/expected/failwith.religo b/src/test/contracts/expected/failwith.religo.expected similarity index 100% rename from src/test/contracts/expected/failwith.religo rename to src/test/contracts/expected/failwith.religo.expected diff --git a/src/test/contracts/expected/fibo.mligo b/src/test/contracts/expected/fibo.mligo.expected similarity index 100% rename from src/test/contracts/expected/fibo.mligo rename to src/test/contracts/expected/fibo.mligo.expected diff --git a/src/test/contracts/expected/fibo2.mligo b/src/test/contracts/expected/fibo2.mligo.expected similarity index 100% rename from src/test/contracts/expected/fibo2.mligo rename to src/test/contracts/expected/fibo2.mligo.expected diff --git a/src/test/contracts/expected/fibo3.mligo b/src/test/contracts/expected/fibo3.mligo.expected similarity index 100% rename from src/test/contracts/expected/fibo3.mligo rename to src/test/contracts/expected/fibo3.mligo.expected diff --git a/src/test/contracts/expected/fibo4.mligo b/src/test/contracts/expected/fibo4.mligo.expected similarity index 100% rename from src/test/contracts/expected/fibo4.mligo rename to src/test/contracts/expected/fibo4.mligo.expected diff --git a/src/test/contracts/expected/function-shared.mligo b/src/test/contracts/expected/function-shared.mligo.expected similarity index 100% rename from src/test/contracts/expected/function-shared.mligo rename to src/test/contracts/expected/function-shared.mligo.expected diff --git a/src/test/contracts/expected/function-shared.religo b/src/test/contracts/expected/function-shared.religo.expected similarity index 100% rename from src/test/contracts/expected/function-shared.religo rename to src/test/contracts/expected/function-shared.religo.expected diff --git a/src/test/contracts/expected/guess_string.mligo b/src/test/contracts/expected/guess_string.mligo.expected similarity index 100% rename from src/test/contracts/expected/guess_string.mligo rename to src/test/contracts/expected/guess_string.mligo.expected diff --git a/src/test/contracts/expected/high-order.religo b/src/test/contracts/expected/high-order.religo.expected similarity index 100% rename from src/test/contracts/expected/high-order.religo rename to src/test/contracts/expected/high-order.religo.expected diff --git a/src/test/contracts/expected/implicit_account.religo b/src/test/contracts/expected/implicit_account.religo.expected similarity index 100% rename from src/test/contracts/expected/implicit_account.religo rename to src/test/contracts/expected/implicit_account.religo.expected diff --git a/src/test/contracts/expected/included.religo b/src/test/contracts/expected/included.religo.expected similarity index 100% rename from src/test/contracts/expected/included.religo rename to src/test/contracts/expected/included.religo.expected diff --git a/src/test/contracts/expected/includer.religo b/src/test/contracts/expected/includer.religo.expected similarity index 100% rename from src/test/contracts/expected/includer.religo rename to src/test/contracts/expected/includer.religo.expected diff --git a/src/test/contracts/expected/key_hash.religo b/src/test/contracts/expected/key_hash.religo.expected similarity index 100% rename from src/test/contracts/expected/key_hash.religo rename to src/test/contracts/expected/key_hash.religo.expected diff --git a/src/test/contracts/expected/lambda.religo b/src/test/contracts/expected/lambda.religo.expected similarity index 100% rename from src/test/contracts/expected/lambda.religo rename to src/test/contracts/expected/lambda.religo.expected diff --git a/src/test/contracts/expected/lambda2.religo b/src/test/contracts/expected/lambda2.religo.expected similarity index 100% rename from src/test/contracts/expected/lambda2.religo rename to src/test/contracts/expected/lambda2.religo.expected diff --git a/src/test/contracts/expected/let_multiple.religo b/src/test/contracts/expected/let_multiple.religo.expected similarity index 100% rename from src/test/contracts/expected/let_multiple.religo rename to src/test/contracts/expected/let_multiple.religo.expected diff --git a/src/test/contracts/expected/letin.religo b/src/test/contracts/expected/letin.religo.expected similarity index 100% rename from src/test/contracts/expected/letin.religo rename to src/test/contracts/expected/letin.religo.expected diff --git a/src/test/contracts/expected/list.religo b/src/test/contracts/expected/list.religo.expected similarity index 100% rename from src/test/contracts/expected/list.religo rename to src/test/contracts/expected/list.religo.expected diff --git a/src/test/contracts/expected/loop.religo b/src/test/contracts/expected/loop.religo.expected similarity index 100% rename from src/test/contracts/expected/loop.religo rename to src/test/contracts/expected/loop.religo.expected diff --git a/src/test/contracts/expected/map.religo b/src/test/contracts/expected/map.religo.expected similarity index 100% rename from src/test/contracts/expected/map.religo rename to src/test/contracts/expected/map.religo.expected diff --git a/src/test/contracts/expected/match.religo b/src/test/contracts/expected/match.religo.expected similarity index 100% rename from src/test/contracts/expected/match.religo rename to src/test/contracts/expected/match.religo.expected diff --git a/src/test/contracts/expected/match_bis.religo b/src/test/contracts/expected/match_bis.religo.expected similarity index 100% rename from src/test/contracts/expected/match_bis.religo rename to src/test/contracts/expected/match_bis.religo.expected diff --git a/src/test/contracts/expected/michelson_pair_tree.religo b/src/test/contracts/expected/michelson_pair_tree.religo.expected similarity index 100% rename from src/test/contracts/expected/michelson_pair_tree.religo rename to src/test/contracts/expected/michelson_pair_tree.religo.expected diff --git a/src/test/contracts/expected/multiple-parameters.religo b/src/test/contracts/expected/multiple-parameters.religo.expected similarity index 100% rename from src/test/contracts/expected/multiple-parameters.religo rename to src/test/contracts/expected/multiple-parameters.religo.expected diff --git a/src/test/contracts/expected/multisig.religo b/src/test/contracts/expected/multisig.religo.expected similarity index 100% rename from src/test/contracts/expected/multisig.religo rename to src/test/contracts/expected/multisig.religo.expected diff --git a/src/test/contracts/expected/no_semicolon.religo b/src/test/contracts/expected/no_semicolon.religo.expected similarity index 100% rename from src/test/contracts/expected/no_semicolon.religo rename to src/test/contracts/expected/no_semicolon.religo.expected diff --git a/src/test/contracts/expected/pledge.religo b/src/test/contracts/expected/pledge.religo.expected similarity index 100% rename from src/test/contracts/expected/pledge.religo rename to src/test/contracts/expected/pledge.religo.expected diff --git a/src/test/contracts/expected/record.religo b/src/test/contracts/expected/record.religo.expected similarity index 100% rename from src/test/contracts/expected/record.religo rename to src/test/contracts/expected/record.religo.expected diff --git a/src/test/contracts/expected/recursion.religo b/src/test/contracts/expected/recursion.religo.expected similarity index 100% rename from src/test/contracts/expected/recursion.religo rename to src/test/contracts/expected/recursion.religo.expected diff --git a/src/test/contracts/expected/self_address.religo b/src/test/contracts/expected/self_address.religo.expected similarity index 100% rename from src/test/contracts/expected/self_address.religo rename to src/test/contracts/expected/self_address.religo.expected diff --git a/src/test/contracts/expected/set_arithmetic.religo b/src/test/contracts/expected/set_arithmetic.religo.expected similarity index 100% rename from src/test/contracts/expected/set_arithmetic.religo rename to src/test/contracts/expected/set_arithmetic.religo.expected diff --git a/src/test/contracts/expected/set_delegate.religo b/src/test/contracts/expected/set_delegate.religo.expected similarity index 100% rename from src/test/contracts/expected/set_delegate.religo rename to src/test/contracts/expected/set_delegate.religo.expected diff --git a/src/test/contracts/expected/single_record_item.religo b/src/test/contracts/expected/single_record_item.religo.expected similarity index 100% rename from src/test/contracts/expected/single_record_item.religo rename to src/test/contracts/expected/single_record_item.religo.expected diff --git a/src/test/contracts/expected/string_arithmetic.religo b/src/test/contracts/expected/string_arithmetic.religo.expected similarity index 100% rename from src/test/contracts/expected/string_arithmetic.religo rename to src/test/contracts/expected/string_arithmetic.religo.expected diff --git a/src/test/contracts/expected/super-counter.religo b/src/test/contracts/expected/super-counter.religo.expected similarity index 100% rename from src/test/contracts/expected/super-counter.religo rename to src/test/contracts/expected/super-counter.religo.expected diff --git a/src/test/contracts/expected/tuple.religo b/src/test/contracts/expected/tuple.religo.expected similarity index 100% rename from src/test/contracts/expected/tuple.religo rename to src/test/contracts/expected/tuple.religo.expected diff --git a/src/test/contracts/expected/tuple_list.religo b/src/test/contracts/expected/tuple_list.religo.expected similarity index 100% rename from src/test/contracts/expected/tuple_list.religo rename to src/test/contracts/expected/tuple_list.religo.expected diff --git a/src/test/contracts/expected/tuple_param_destruct.religo b/src/test/contracts/expected/tuple_param_destruct.religo.expected similarity index 100% rename from src/test/contracts/expected/tuple_param_destruct.religo rename to src/test/contracts/expected/tuple_param_destruct.religo.expected diff --git a/src/test/contracts/expected/tuple_type.religo b/src/test/contracts/expected/tuple_type.religo.expected similarity index 100% rename from src/test/contracts/expected/tuple_type.religo rename to src/test/contracts/expected/tuple_type.religo.expected diff --git a/src/test/contracts/expected/tuples_no_annotation.religo b/src/test/contracts/expected/tuples_no_annotation.religo.expected similarity index 100% rename from src/test/contracts/expected/tuples_no_annotation.religo rename to src/test/contracts/expected/tuples_no_annotation.religo.expected diff --git a/src/test/contracts/expected/tuples_sequences_functions.religo b/src/test/contracts/expected/tuples_sequences_functions.religo.expected similarity index 100% rename from src/test/contracts/expected/tuples_sequences_functions.religo rename to src/test/contracts/expected/tuples_sequences_functions.religo.expected diff --git a/src/test/contracts/expected/variant.religo b/src/test/contracts/expected/variant.religo.expected similarity index 100% rename from src/test/contracts/expected/variant.religo rename to src/test/contracts/expected/variant.religo.expected diff --git a/src/test/contracts/expected/website2.religo b/src/test/contracts/expected/website2.religo.expected similarity index 100% rename from src/test/contracts/expected/website2.religo rename to src/test/contracts/expected/website2.religo.expected From db0fdf4abd7e23b94606a952697fe38e39bbd6a1 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 13:56:14 +0200 Subject: [PATCH 40/67] Improve ReasonLIGO output. --- src/passes/01-parser/reasonligo/Pretty.ml | 13 ++- .../expected/address.religo.expected | 9 +- .../contracts/expected/amount.religo.expected | 3 +- .../expected/bytes_unpack.religo.expected | 27 ++--- .../expected/check_signature.religo.expected | 9 +- .../expected/closure.religo.expected | 13 +-- .../condition-shadowing.religo.expected | 24 ++-- .../expected/condition.religo.expected | 3 +- .../expected/eq_bool.religo.expected | 3 +- .../expected/high-order.religo.expected | 62 +++++----- .../expected/key_hash.religo.expected | 12 +- .../contracts/expected/letin.religo.expected | 49 ++++---- .../contracts/expected/list.religo.expected | 35 +++--- .../contracts/expected/loop.religo.expected | 49 ++++---- .../contracts/expected/map.religo.expected | 42 +++---- .../contracts/expected/match.religo.expected | 18 ++- .../expected/match_bis.religo.expected | 17 ++- .../michelson_pair_tree.religo.expected | 9 +- .../expected/multisig.religo.expected | 108 ++++++++---------- .../expected/no_semicolon.religo.expected | 23 ++-- .../contracts/expected/pledge.religo.expected | 42 +++---- .../expected/recursion.religo.expected | 6 +- .../expected/set_delegate.religo.expected | 9 +- .../expected/super-counter.religo.expected | 17 ++- .../expected/tuple_type.religo.expected | 28 ++--- .../tuples_no_annotation.religo.expected | 7 +- .../expected/website2.religo.expected | 17 ++- 27 files changed, 297 insertions(+), 357 deletions(-) diff --git a/src/passes/01-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml index ccf15310f..3c3f31915 100644 --- a/src/passes/01-parser/reasonligo/Pretty.ml +++ b/src/passes/01-parser/reasonligo/Pretty.ml @@ -174,13 +174,13 @@ and pp_clause {value; _} = and pp_cond_expr {value; _} = let {test; ifso; kwd_else; ifnot; _} = value in let if_then = - string "if" ^^ string "(" ^^ pp_expr test ^^ string ")" ^^ string " {" ^^ hardline + string "if" ^^ string "(" ^^ pp_expr test ^^ string ")" ^^ string " {" ^^ break 0 ^^ group (nest 2 (break 2 ^^ pp_expr ifso)) ^^ hardline ^^ string "}" in if kwd_else#is_ghost then if_then else if_then - ^^ string " else" ^^ string " {" ^^ hardline ^^ group (nest 2 (break 2 ^^ pp_expr ifnot)) ^^ hardline ^^ string "}" + ^^ string " else" ^^ string " {" ^^ break 0 ^^ group (nest 2 (break 2 ^^ pp_expr ifnot)) ^^ hardline ^^ string "}" and pp_annot_expr {value; _} = let expr, _, type_expr = value.inside in @@ -201,7 +201,7 @@ and pp_bool_expr = function and pp_bin_op op {value; _} = let {arg1; arg2; _} = value and length = String.length op + 1 in - pp_expr arg1 ^/^ string (op ^ " ") ^^ nest length (pp_expr arg2) + pp_expr arg1 ^^ string " " ^^ string (op ^ " ") ^^ nest length (pp_expr arg2) and pp_un_op op {value; _} = string (op ^ " ") ^^ pp_expr value.arg @@ -372,8 +372,11 @@ and pp_fun {value; _} = None -> empty | Some (_,e) -> group (break 0 ^^ string ":" ^^ nest 2 (break 1 ^^ pp_type_expr e)) - in prefix 2 0 (string "(" ^^ binders ^^ string ")" ^^ annot - ^^ string " => ") (pp_expr body) + in + match body with + | ESeq _ -> string "(" ^^ binders ^^ string ")" ^^ annot ^^ string " => " ^^ pp_expr body + | _ -> (prefix 2 0 (string "(" ^^ binders ^^ string ")" ^^ annot + ^^ string " => ") (pp_expr body)) and pp_seq {value; _} = let {compound; elements; _} = value in diff --git a/src/test/contracts/expected/address.religo.expected b/src/test/contracts/expected/address.religo.expected index 4979af040..1f4535bb1 100644 --- a/src/test/contracts/expected/address.religo.expected +++ b/src/test/contracts/expected/address.religo.expected @@ -1,6 +1,5 @@ let main = - (p: key_hash): address => - { - let c: contract(unit) = Tezos.implicit_account(p); - Tezos.address(c) - }; + (p: key_hash): address => { + let c: contract(unit) = Tezos.implicit_account(p); + Tezos.address(c) + }; diff --git a/src/test/contracts/expected/amount.religo.expected b/src/test/contracts/expected/amount.religo.expected index 447dac88b..78b7804a2 100644 --- a/src/test/contracts/expected/amount.religo.expected +++ b/src/test/contracts/expected/amount.religo.expected @@ -1,7 +1,6 @@ let check_ = (p: unit): int => - if(Tezos.amount - == 100000000mutez) { + if(Tezos.amount == 100000000mutez) { 42 } else { 0 diff --git a/src/test/contracts/expected/bytes_unpack.religo.expected b/src/test/contracts/expected/bytes_unpack.religo.expected index ab91a5324..662e82c3c 100644 --- a/src/test/contracts/expected/bytes_unpack.religo.expected +++ b/src/test/contracts/expected/bytes_unpack.religo.expected @@ -1,20 +1,17 @@ let id_string = - (p: string): option(string) => - { - let packed: bytes = Bytes.pack(p); - ((Bytes.unpack(packed)) : option(string)) - }; + (p: string): option(string) => { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(string)) + }; let id_int = - (p: int): option(int) => - { - let packed: bytes = Bytes.pack(p); - ((Bytes.unpack(packed)) : option(int)) - }; + (p: int): option(int) => { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(int)) + }; let id_address = - (p: address): option(address) => - { - let packed: bytes = Bytes.pack(p); - ((Bytes.unpack(packed)) : option(address)) - }; + (p: address): option(address) => { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(address)) + }; diff --git a/src/test/contracts/expected/check_signature.religo.expected b/src/test/contracts/expected/check_signature.religo.expected index c19cd6a53..77e46efe2 100644 --- a/src/test/contracts/expected/check_signature.religo.expected +++ b/src/test/contracts/expected/check_signature.religo.expected @@ -1,6 +1,5 @@ let check_signature = - (param: (key, signature, bytes)): bool => - { - let (pk, signed, msg) = param; - Crypto.check(pk, signed, msg) - }; + (param: (key, signature, bytes)): bool => { + let (pk, signed, msg) = param; + Crypto.check(pk, signed, msg) + }; diff --git a/src/test/contracts/expected/closure.religo.expected b/src/test/contracts/expected/closure.religo.expected index 1f9bc3ff9..52cbf30ee 100644 --- a/src/test/contracts/expected/closure.religo.expected +++ b/src/test/contracts/expected/closure.religo.expected @@ -1,8 +1,7 @@ let test = - (k: int): int => - { - let j: int = k + 5; - let close: (int => int) = (i: int) => i + j; - let j: int = 20; - close(20) - }; + (k: int): int => { + let j: int = k + 5; + let close: (int => int) = (i: int) => i + j; + let j: int = 20; + close(20) + }; diff --git a/src/test/contracts/expected/condition-shadowing.religo.expected b/src/test/contracts/expected/condition-shadowing.religo.expected index a31570a05..5c43e89a7 100644 --- a/src/test/contracts/expected/condition-shadowing.religo.expected +++ b/src/test/contracts/expected/condition-shadowing.religo.expected @@ -1,15 +1,13 @@ let main = - (i: int) => - { + (i: int) => { + let result = 0; + if(i == 2) { + + let result = 42; + result + } else { + let result = 0; - if(i - == 2) { - - let result = 42; - result - } else { - - let result = 0; - result - } - }; + result + } + }; diff --git a/src/test/contracts/expected/condition.religo.expected b/src/test/contracts/expected/condition.religo.expected index 5fdc354e3..f29a3be89 100644 --- a/src/test/contracts/expected/condition.religo.expected +++ b/src/test/contracts/expected/condition.religo.expected @@ -1,7 +1,6 @@ let main = (i: int) => - if(i - == 2) { + if(i == 2) { 42 } else { 0 diff --git a/src/test/contracts/expected/eq_bool.religo.expected b/src/test/contracts/expected/eq_bool.religo.expected index ec3bb0d3a..ae49645a1 100644 --- a/src/test/contracts/expected/eq_bool.religo.expected +++ b/src/test/contracts/expected/eq_bool.religo.expected @@ -1,7 +1,6 @@ let main = ((a, b): (bool, bool)) => - if(a - == b) { + if(a == b) { 999 } else { 1 diff --git a/src/test/contracts/expected/high-order.religo.expected b/src/test/contracts/expected/high-order.religo.expected index eb3de997d..52b5008f9 100644 --- a/src/test/contracts/expected/high-order.religo.expected +++ b/src/test/contracts/expected/high-order.religo.expected @@ -1,34 +1,30 @@ let foobar = - (i: int): int => - { - let foo: int => int = (i: int) => i; - let bar: ((int => int) => int) = - (f: (int => int)) => f(i); - bar(foo) - }; + (i: int): int => { + let foo: int => int = (i: int) => i; + let bar: ((int => int) => int) = + (f: (int => int)) => f(i); + bar(foo) + }; let higher2 = - (i: int, f: (int => int)): int => - { - let ii: int = f(i); - ii - }; + (i: int, f: (int => int)): int => { + let ii: int = f(i); + ii + }; let foobar2 = - (i: int): int => - { - let foo2: int => int = (i: int) => i; - higher2(i, foo2) - }; + (i: int): int => { + let foo2: int => int = (i: int) => i; + higher2(i, foo2) + }; let a: int = 0; let foobar3 = - (i: int): int => - { - let foo2: int => int = (i: int) => a + i; - higher2(i, foo2) - }; + (i: int): int => { + let foo2: int => int = (i: int) => a + i; + higher2(i, foo2) + }; let f = (i: int): int => i; @@ -37,17 +33,15 @@ let g = (i: int): int => f(i); let foobar4 = (i: int): int => g(g(i)); let higher3 = - (i: int, f: (int => int), g: (int => int)): int => - { - let ii: int = f(g(i)); - ii - }; + (i: int, f: (int => int), g: (int => int)): int => { + let ii: int = f(g(i)); + ii + }; let foobar5 = - (i: int): int => - { - let a: int = 0; - let foo: int => int = (i: int) => a + i; - let goo: int => int = (i: int) => foo(i); - higher3(i, foo, goo) - }; + (i: int): int => { + let a: int = 0; + let foo: int => int = (i: int) => a + i; + let goo: int => int = (i: int) => foo(i); + higher3(i, foo, goo) + }; diff --git a/src/test/contracts/expected/key_hash.religo.expected b/src/test/contracts/expected/key_hash.religo.expected index bac557809..38bb28e1c 100644 --- a/src/test/contracts/expected/key_hash.religo.expected +++ b/src/test/contracts/expected/key_hash.religo.expected @@ -1,8 +1,6 @@ let check_hash_key = - (kh1_k2: (key_hash, key)): (bool, key_hash) => - { - let (kh1, k2) = kh1_k2; - let kh2: key_hash = Crypto.hash_key(k2); - ((kh1 - == kh2), kh2) - }; + (kh1_k2: (key_hash, key)): (bool, key_hash) => { + let (kh1, k2) = kh1_k2; + let kh2: key_hash = Crypto.hash_key(k2); + ((kh1 == kh2), kh2) + }; diff --git a/src/test/contracts/expected/letin.religo.expected b/src/test/contracts/expected/letin.religo.expected index 1a5b07bc9..df249df49 100644 --- a/src/test/contracts/expected/letin.religo.expected +++ b/src/test/contracts/expected/letin.religo.expected @@ -1,15 +1,14 @@ type storage = (int, int); let main = - (n: (int, storage)): (list(operation), storage) => - { - let x: (int, int) = - { - let x: int = 7; - (x + n[0], n[1][0] + n[1][1]) - }; - ([] : list(operation), x) - }; + (n: (int, storage)): (list(operation), storage) => { + let x: (int, int) = + { + let x: int = 7; + (x + n[0], n[1][0] + n[1][1]) + }; + ([] : list(operation), x) + }; let f0 = (a: string) => true; @@ -18,22 +17,20 @@ let f1 = (a: string) => true; let f2 = (a: string) => true; let letin_nesting = - (_: unit) => - { - let s = "test"; - let p0 = f0(s); - assert(p0); - let p1 = f1(s); - assert(p1); - let p2 = f2(s); - assert(p2); - s - }; + (_: unit) => { + let s = "test"; + let p0 = f0(s); + assert(p0); + let p1 = f1(s); + assert(p1); + let p2 = f2(s); + assert(p2); + s + }; let letin_nesting2 = - (x: int) => - { - let y = 2; - let z = 3; - x + y + z - }; + (x: int) => { + let y = 2; + let z = 3; + x + y + z + }; diff --git a/src/test/contracts/expected/list.religo.expected b/src/test/contracts/expected/list.religo.expected index 4971c3c0b..18f6653d3 100644 --- a/src/test/contracts/expected/list.religo.expected +++ b/src/test/contracts/expected/list.religo.expected @@ -11,32 +11,29 @@ let y: list(int) = [3, 4, 5]; let z: list(int) = [2, ...y]; let main = - ((action, s): (parameter, storage)): return => - { - let storage = - switch(action) { - | [] => s - | [hd, ...tl] => (s[0] + hd, tl) - }; - ([] : list(operation), storage) - }; + ((action, s): (parameter, storage)): return => { + let storage = + switch(action) { + | [] => s + | [hd, ...tl] => (s[0] + hd, tl) + }; + ([] : list(operation), storage) + }; let size_ = (s: list(int)): nat => List.length(s); let fold_op = - (s: list(int)): int => - { - let aggregate = (t: (int, int)) => t[0] + t[1]; - List.fold(aggregate, s, 10) - }; + (s: list(int)): int => { + let aggregate = (t: (int, int)) => t[0] + t[1]; + List.fold(aggregate, s, 10) + }; let map_op = (s: list(int)): list(int) => List.map((cur: int) => cur + 1, s); let iter_op = - (s: list(int)): unit => - { - let do_nothing = (useless: int) => unit; - List.iter(do_nothing, s) - }; + (s: list(int)): unit => { + let do_nothing = (useless: int) => unit; + List.iter(do_nothing, s) + }; diff --git a/src/test/contracts/expected/loop.religo.expected b/src/test/contracts/expected/loop.religo.expected index 710c09880..1bafc75ea 100644 --- a/src/test/contracts/expected/loop.religo.expected +++ b/src/test/contracts/expected/loop.religo.expected @@ -1,7 +1,6 @@ let rec aux_simple = (i: int): int => - if(i - < 100) { + if(i < 100) { aux_simple(i + 1) } else { i @@ -12,29 +11,26 @@ let counter_simple = (n: int): int => aux_simple(n); type sum_aggregator = {counter: int, sum: int }; let counter = - (n: int): int => - { - let initial: sum_aggregator = {counter: 0, sum: 0 }; - let rec aggregate = - (prev: sum_aggregator): int => - if(prev.counter - <= n) { + (n: int): int => { + let initial: sum_aggregator = {counter: 0, sum: 0 }; + let rec aggregate = + (prev: sum_aggregator): int => + if(prev.counter <= n) { + - - aggregate({ - counter: prev.counter + 1, - sum: prev.counter + prev.sum - }) - } else { - prev.sum - }; - aggregate(initial) - }; + aggregate({ + counter: prev.counter + 1, + sum: prev.counter + prev.sum + }) + } else { + prev.sum + }; + aggregate(initial) + }; let rec aux_nest = (prev: sum_aggregator): sum_aggregator => - if(prev.counter - < 100) { + if(prev.counter < 100) { let sum: int = prev.sum + aux_simple(prev.counter); aux_nest({counter: prev.counter + 1, sum: sum }) @@ -43,9 +39,8 @@ let rec aux_nest = }; let counter_nest = - (n: int): int => - { - let initial: sum_aggregator = {counter: 0, sum: 0 }; - let out: sum_aggregator = aux_nest(initial); - out.sum - }; + (n: int): int => { + let initial: sum_aggregator = {counter: 0, sum: 0 }; + let out: sum_aggregator = aux_nest(initial); + out.sum + }; diff --git a/src/test/contracts/expected/map.religo.expected b/src/test/contracts/expected/map.religo.expected index bb4443927..918dd70c1 100644 --- a/src/test/contracts/expected/map.religo.expected +++ b/src/test/contracts/expected/map.religo.expected @@ -40,32 +40,28 @@ let get_ = (m: foobar): option(int) => Map.find_opt(42, m); let mem = (km: (int, foobar)): bool => Map.mem(km[0], km[1]); let iter_op = - (m: foobar): unit => - { - let assert_eq = (i: int, j: int) => assert(i == j); - Map.iter(assert_eq, m) - }; + (m: foobar): unit => { + let assert_eq = (i: int, j: int) => assert(i == j); + Map.iter(assert_eq, m) + }; let map_op = - (m: foobar): foobar => - { - let increment = (z: int, j: int) => j + 1; - Map.map(increment, m) - }; + (m: foobar): foobar => { + let increment = (z: int, j: int) => j + 1; + Map.map(increment, m) + }; let fold_op = - (m: foobar): foobar => - { - let aggregate = - (i: int, j: (int, int)) => i + j[0] + j[1]; - Map.fold(aggregate, m, 10) - }; + (m: foobar): foobar => { + let aggregate = + (i: int, j: (int, int)) => i + j[0] + j[1]; + Map.fold(aggregate, m, 10) + }; let deep_op = - (m: foobar): foobar => - { - let coco = (0, m); - let coco = (0, Map.remove(42, coco[1])); - let coco = (0, Map.update(32, Some (16), coco[1])); - coco[1] - }; + (m: foobar): foobar => { + let coco = (0, m); + let coco = (0, Map.remove(42, coco[1])); + let coco = (0, Map.update(32, Some (16), coco[1])); + coco[1] + }; diff --git a/src/test/contracts/expected/match.religo.expected b/src/test/contracts/expected/match.religo.expected index 63a45c86f..e3672aa30 100644 --- a/src/test/contracts/expected/match.religo.expected +++ b/src/test/contracts/expected/match.religo.expected @@ -5,13 +5,11 @@ type parameter = Add(int) | Sub(int); type return = (list(operation), storage); let main = - ((action, store): (parameter, storage)) => - { - let store = - store - + (switch(action) { - | Add(n) => n - | Sub(n) => -n - }); - (([] : list(operation)), store) - }; + ((action, store): (parameter, storage)) => { + let store = + store + (switch(action) { + | Add(n) => n + | Sub(n) => -n + }); + (([] : list(operation)), store) + }; diff --git a/src/test/contracts/expected/match_bis.religo.expected b/src/test/contracts/expected/match_bis.religo.expected index e9b4f21f7..da5710d68 100644 --- a/src/test/contracts/expected/match_bis.religo.expected +++ b/src/test/contracts/expected/match_bis.religo.expected @@ -7,12 +7,11 @@ let add = ((a: int), (b: int)) => a + b; let sub = ((a: int), (b: int)) => a - b; let main = - ((action, store): (parameter, storage)) => - { - let store = - switch(action) { - | Increment(n) => add(store, n) - | Decrement(n) => sub(store, n) - }; - (([] : list(operation)), store) - }; + ((action, store): (parameter, storage)) => { + let store = + switch(action) { + | Increment(n) => add(store, n) + | Decrement(n) => sub(store, n) + }; + (([] : list(operation)), store) + }; diff --git a/src/test/contracts/expected/michelson_pair_tree.religo.expected b/src/test/contracts/expected/michelson_pair_tree.religo.expected index 20e64dd2f..74a3c9595 100644 --- a/src/test/contracts/expected/michelson_pair_tree.religo.expected +++ b/src/test/contracts/expected/michelson_pair_tree.religo.expected @@ -6,8 +6,7 @@ type storage = michelson_pair type return = (list(operation), storage); let main = - ((action, store): (unit, storage)): return => - { - let foo = (3, (1, 2n)); - (([] : list(operation)), (foo : storage)) - }; + ((action, store): (unit, storage)): return => { + let foo = (3, (1, 2n)); + (([] : list(operation)), (foo : storage)) + }; diff --git a/src/test/contracts/expected/multisig.religo.expected b/src/test/contracts/expected/multisig.religo.expected index e53b47ad9..6be99ec43 100644 --- a/src/test/contracts/expected/multisig.religo.expected +++ b/src/test/contracts/expected/multisig.religo.expected @@ -30,65 +30,57 @@ type return = (list(operation), storage); type parameter = CheckMessage(check_message_pt); let check_message = - ((param, s): (check_message_pt, storage)): return => - { - let message: message = param.message; - let s = - if(param.counter - != s.counter) { - (failwith("Counters does not match") : storage) - } else { - - let packed_payload: bytes = - - Bytes.pack((message, param.counter, s.id, - chain_id)); - let valid: nat = 0n; - let keys: authorized_keys = s.auth; - let aux = - ((vk, pkh_sig): - ((nat, authorized_keys), (key_hash, signature))) - : - (nat, authorized_keys) => - { - let (valid, keys) = vk; - switch(keys) { - | [] => vk - | [key, ...keys] => - if(pkh_sig[0] - == Crypto.hash_key(key)) { - - let valid = - if( - Crypto.check(key, - pkh_sig[1], - packed_payload)) { - valid + 1n - } else { - - (failwith("Invalid signature") - : nat) - }; - (valid, keys) - } else { - (valid, keys) - } - } - }; - let (valid, keys) = - List.fold(aux, param.signatures, (valid, keys)); - if(valid - < s.threshold) { + ((param, s): (check_message_pt, storage)): return => { + let message: message = param.message; + let s = + if(param.counter != s.counter) { + (failwith("Counters does not match") : storage) + } else { + + let packed_payload: bytes = - ( - failwith("Not enough signatures passed the check") - : storage) - } else { - {...s, counter: s.counter + 1n} - } - }; - (message(unit), s) - }; + Bytes.pack((message, param.counter, s.id, chain_id)); + let valid: nat = 0n; + let keys: authorized_keys = s.auth; + let aux = + ((vk, pkh_sig): + ((nat, authorized_keys), (key_hash, signature))) + : + (nat, authorized_keys) => { + let (valid, keys) = vk; + switch(keys) { + | [] => vk + | [key, ...keys] => + if(pkh_sig[0] == Crypto.hash_key(key)) { + + let valid = + if( + Crypto.check(key, + pkh_sig[1], + packed_payload)) { + valid + 1n + } else { + (failwith("Invalid signature") : nat) + }; + (valid, keys) + } else { + (valid, keys) + } + } + }; + let (valid, keys) = + List.fold(aux, param.signatures, (valid, keys)); + if(valid < s.threshold) { + + ( + failwith("Not enough signatures passed the check") + : storage) + } else { + {...s, counter: s.counter + 1n} + } + }; + (message(unit), s) + }; let main = ((action, store): (parameter, storage)): return => diff --git a/src/test/contracts/expected/no_semicolon.religo.expected b/src/test/contracts/expected/no_semicolon.religo.expected index 82db545df..352b36e54 100644 --- a/src/test/contracts/expected/no_semicolon.religo.expected +++ b/src/test/contracts/expected/no_semicolon.religo.expected @@ -1,18 +1,15 @@ type f = int; let a = - (b: f) => - { - if(b - == 2) { - 3 - } else { - 4 - } - }; + (b: f) => { + if(b == 2) { + 3 + } else { + 4 + } + }; let c = - (c: f) => - { - 3 - }; + (c: f) => { + 3 + }; diff --git a/src/test/contracts/expected/pledge.religo.expected b/src/test/contracts/expected/pledge.religo.expected index 0bac36b18..eaf62761c 100644 --- a/src/test/contracts/expected/pledge.religo.expected +++ b/src/test/contracts/expected/pledge.religo.expected @@ -5,32 +5,28 @@ type parameter = | Distribute((unit => list(operation))); let donate = - ((p, s): (unit, storage)): (list(operation), storage) => - { - (([] : list(operation)), s) - }; + ((p, s): (unit, storage)): (list(operation), storage) => { + (([] : list(operation)), s) + }; let distribute = ((p, s): ((unit => list(operation)), storage)) : - (list(operation), storage) => - { - if(Tezos.sender - == s) { - (p(()), s) - } else { - - ( - failwith("You're not the oracle for this distribution.") - : (list(operation), storage)) - } - }; + (list(operation), storage) => { + if(Tezos.sender == s) { + (p(()), s) + } else { + + ( + failwith("You're not the oracle for this distribution.") + : (list(operation), storage)) + } + }; let main = - ((p, s): (parameter, storage)): (list(operation), storage) => - { - switch(p) { - | Donate => donate(((), s)) - | Distribute msg => distribute((msg, s)) - } - }; + ((p, s): (parameter, storage)): (list(operation), storage) => { + switch(p) { + | Donate => donate(((), s)) + | Distribute msg => distribute((msg, s)) + } + }; diff --git a/src/test/contracts/expected/recursion.religo.expected b/src/test/contracts/expected/recursion.religo.expected index 5551c9a6c..bad33a7ba 100644 --- a/src/test/contracts/expected/recursion.religo.expected +++ b/src/test/contracts/expected/recursion.religo.expected @@ -1,7 +1,6 @@ let rec sum = ((n, acc): (int, int)): int => - if(n - < 1) { + if(n < 1) { acc } else { sum((n - 1, acc + n)) @@ -9,8 +8,7 @@ let rec sum = let rec fibo = ((n, n_1, n_0): (int, int, int)): int => - if(n - < 2) { + if(n < 2) { n_1 } else { fibo((n - 1, n_1 + n_0, n_1)) diff --git a/src/test/contracts/expected/set_delegate.religo.expected b/src/test/contracts/expected/set_delegate.religo.expected index 278464cf6..00c9439c1 100644 --- a/src/test/contracts/expected/set_delegate.religo.expected +++ b/src/test/contracts/expected/set_delegate.religo.expected @@ -1,6 +1,5 @@ let main = - (p: key_hash): list(operation) => - { - let unused: operation = (Tezos.set_delegate(Some (p))); - ([] : list(operation)) - }; + (p: key_hash): list(operation) => { + let unused: operation = (Tezos.set_delegate(Some (p))); + ([] : list(operation)) + }; diff --git a/src/test/contracts/expected/super-counter.religo.expected b/src/test/contracts/expected/super-counter.religo.expected index a7445c5cb..234d2dcf6 100644 --- a/src/test/contracts/expected/super-counter.religo.expected +++ b/src/test/contracts/expected/super-counter.religo.expected @@ -5,12 +5,11 @@ type storage = int; type return = (list(operation), storage); let main = - ((action, store): (parameter, storage)): return => - { - let store = - switch(action) { - | Increment(n) => store + n - | Decrement(n) => store - n - }; - ([] : list(operation), store) - }; + ((action, store): (parameter, storage)): return => { + let store = + switch(action) { + | Increment(n) => store + n + | Decrement(n) => store - n + }; + ([] : list(operation), store) + }; diff --git a/src/test/contracts/expected/tuple_type.religo.expected b/src/test/contracts/expected/tuple_type.religo.expected index 8b608cd6c..05fff0a65 100644 --- a/src/test/contracts/expected/tuple_type.religo.expected +++ b/src/test/contracts/expected/tuple_type.religo.expected @@ -1,10 +1,9 @@ type fun_type = (int, int) => int; let arguments = - (b: int, c: int) => - { - b + c - }; + (b: int, c: int) => { + b + c + }; let arguments_type_def = (b: fun_type) => b(5, 3); @@ -14,20 +13,18 @@ let arguments_test = type tuple_type = ((int, int)) => int; let tuple = - ((a, b): (int, int)) => - { - a + b - }; + ((a, b): (int, int)) => { + a + b + }; let tuple_type_def = (b: tuple_type) => b((5, 3)); let tuple_test = (_: int) => tuple_type_def(tuple); let arguments_inline = - (b: int, c: int) => - { - b + c - }; + (b: int, c: int) => { + b + c + }; let arguments_type_def_inline = (b: (int, int) => int) => b(5, 3); @@ -36,10 +33,9 @@ let arguments_test_inline = (_: int) => arguments_type_def_inline(arguments_inline); let tuple_inline = - ((a, b): (int, int)) => - { - a + b - }; + ((a, b): (int, int)) => { + a + b + }; let tuple_type_def_inline = (b: ((int, int)) => int) => b((5, 3)); diff --git a/src/test/contracts/expected/tuples_no_annotation.religo.expected b/src/test/contracts/expected/tuples_no_annotation.religo.expected index 7cd18c185..1e49fee5d 100644 --- a/src/test/contracts/expected/tuples_no_annotation.religo.expected +++ b/src/test/contracts/expected/tuples_no_annotation.religo.expected @@ -3,7 +3,6 @@ type storage = (int, string, nat, bool); type parameter = int; let main = - ((p, storage): (parameter, storage)) => - { - ([] : list(operation), (2, "2", 2n, false)) - }; + ((p, storage): (parameter, storage)) => { + ([] : list(operation), (2, "2", 2n, false)) + }; diff --git a/src/test/contracts/expected/website2.religo.expected b/src/test/contracts/expected/website2.religo.expected index 44eedaf67..1915b5f31 100644 --- a/src/test/contracts/expected/website2.religo.expected +++ b/src/test/contracts/expected/website2.religo.expected @@ -7,12 +7,11 @@ let add = ((a, b): (int, int)): int => a + b; let sub = ((a, b): (int, int)): int => a - b; let main = - ((p, storage): (parameter, storage)) => - { - let storage = - switch(p) { - | Increment(n) => add((storage, n)) - | Decrement(n) => sub((storage, n)) - }; - ([] : list(operation), storage) - }; + ((p, storage): (parameter, storage)) => { + let storage = + switch(p) { + | Increment(n) => add((storage, n)) + | Decrement(n) => sub((storage, n)) + }; + ([] : list(operation), storage) + }; From 63086db0f1e39bf4b747de4f074694cab2cf46af Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 16:01:18 +0200 Subject: [PATCH 41/67] More ReasonLIGO pretty printer improvements. --- src/passes/01-parser/reasonligo/Pretty.ml | 7 +++- .../contracts/expected/letin.religo.expected | 9 ++-- .../contracts/expected/loop.religo.expected | 10 ++++- ...tuples_sequences_functions.religo.expected | 42 +++++++++---------- 4 files changed, 36 insertions(+), 32 deletions(-) diff --git a/src/passes/01-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml index 3c3f31915..84b8d7495 100644 --- a/src/passes/01-parser/reasonligo/Pretty.ml +++ b/src/passes/01-parser/reasonligo/Pretty.ml @@ -46,8 +46,11 @@ and pp_let_binding let_ (binding : let_binding) = | Some (_,e) -> patterns ^^ group (break 0 ^^ string ": " ^^ pp_type_expr e ^^ string " = ") in - let rhs = pp_expr let_rhs - in prefix 2 0 lhs rhs + let rhs = pp_expr let_rhs in + match let_rhs with + | ESeq _ + | ERecord _ -> lhs ^^ rhs + | _ -> prefix 2 0 lhs rhs and pp_pattern = function PConstr p -> pp_pconstr p diff --git a/src/test/contracts/expected/letin.religo.expected b/src/test/contracts/expected/letin.religo.expected index df249df49..0bb052da1 100644 --- a/src/test/contracts/expected/letin.religo.expected +++ b/src/test/contracts/expected/letin.religo.expected @@ -2,11 +2,10 @@ type storage = (int, int); let main = (n: (int, storage)): (list(operation), storage) => { - let x: (int, int) = - { - let x: int = 7; - (x + n[0], n[1][0] + n[1][1]) - }; + let x: (int, int) = { + let x: int = 7; + (x + n[0], n[1][0] + n[1][1]) + }; ([] : list(operation), x) }; diff --git a/src/test/contracts/expected/loop.religo.expected b/src/test/contracts/expected/loop.religo.expected index 1bafc75ea..aac2af16c 100644 --- a/src/test/contracts/expected/loop.religo.expected +++ b/src/test/contracts/expected/loop.religo.expected @@ -12,7 +12,10 @@ type sum_aggregator = {counter: int, sum: int }; let counter = (n: int): int => { - let initial: sum_aggregator = {counter: 0, sum: 0 }; + let initial: sum_aggregator = { + counter: 0, + sum: 0 + }; let rec aggregate = (prev: sum_aggregator): int => if(prev.counter <= n) { @@ -40,7 +43,10 @@ let rec aux_nest = let counter_nest = (n: int): int => { - let initial: sum_aggregator = {counter: 0, sum: 0 }; + let initial: sum_aggregator = { + counter: 0, + sum: 0 + }; let out: sum_aggregator = aux_nest(initial); out.sum }; diff --git a/src/test/contracts/expected/tuples_sequences_functions.religo.expected b/src/test/contracts/expected/tuples_sequences_functions.religo.expected index 12c911779..ee569df68 100644 --- a/src/test/contracts/expected/tuples_sequences_functions.religo.expected +++ b/src/test/contracts/expected/tuples_sequences_functions.religo.expected @@ -18,11 +18,10 @@ let i = (a: int, b: int) => a + b; let j = (a: int, b: int) => a - b; -let m = - { - let z = 3; - z - }; +let m = { + let z = 3; + z +}; let n = (a: int): int => a + 1; @@ -32,28 +31,25 @@ let n = (a: int, b: int): int => a + 1; let o = (a: int, b: int): int => a + 1; -let p = +let p = { { - { - 3 - } - }; + 3 + } +}; -let q = - { - f: 3, - g: 6, - h: {i: "bla", j: 1 + 2, k: {l: 1, z: 2 } } - }; +let q = { + f: 3, + g: 6, + h: {i: "bla", j: 1 + 2, k: {l: 1, z: 2 } } +}; -let s = +let s = { + let a = 2; { - let a = 2; - { - z: a, - a: a - } - }; + z: a, + a: a + } +}; let t = (((((((2))))))); From cb39217c8c5b7a286d3cfe192ccde4dbf7387a4b Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Fri, 5 Jun 2020 16:20:31 +0200 Subject: [PATCH 42/67] Improve ReasonLIGO pretty printer output. --- src/passes/01-parser/reasonligo/Pretty.ml | 5 +- .../expected/address.religo.expected | 9 +- .../contracts/expected/amount.religo.expected | 13 ++- .../bad_address_format.religo.expected | 5 +- .../expected/balance_constant.religo.expected | 5 +- .../expected/bytes_unpack.religo.expected | 27 +++-- .../expected/check_signature.religo.expected | 9 +- .../expected/closure.religo.expected | 13 ++- .../condition-shadowing.religo.expected | 23 +++-- .../expected/condition.religo.expected | 13 ++- .../expected/counter.religo.expected | 6 +- .../expected/empty_case.religo.expected | 11 +-- .../expected/eq_bool.religo.expected | 13 ++- .../expected/failwith.religo.expected | 9 +- .../expected/high-order.religo.expected | 62 ++++++------ .../expected/implicit_account.religo.expected | 5 +- .../expected/key_hash.religo.expected | 12 +-- .../contracts/expected/lambda.religo.expected | 5 +- .../expected/lambda2.religo.expected | 5 +- .../contracts/expected/letin.religo.expected | 45 ++++----- .../contracts/expected/list.religo.expected | 40 ++++---- .../contracts/expected/loop.religo.expected | 77 +++++++-------- .../contracts/expected/map.religo.expected | 60 +++++------- .../contracts/expected/match.religo.expected | 17 ++-- .../expected/match_bis.religo.expected | 17 ++-- .../michelson_pair_tree.religo.expected | 9 +- .../multiple-parameters.religo.expected | 10 +- .../expected/multisig.religo.expected | 98 +++++++++---------- .../expected/no_semicolon.religo.expected | 22 ++--- .../contracts/expected/pledge.religo.expected | 46 +++++---- .../contracts/expected/record.religo.expected | 5 +- .../expected/recursion.religo.expected | 26 +++-- .../expected/set_arithmetic.religo.expected | 18 ++-- .../expected/set_delegate.religo.expected | 9 +- .../expected/super-counter.religo.expected | 17 ++-- .../tuple_param_destruct.religo.expected | 4 +- .../expected/tuple_type.religo.expected | 48 +++++---- .../tuples_no_annotation.religo.expected | 7 +- .../expected/website2.religo.expected | 17 ++-- 39 files changed, 387 insertions(+), 455 deletions(-) diff --git a/src/passes/01-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml index 84b8d7495..e925388e1 100644 --- a/src/passes/01-parser/reasonligo/Pretty.ml +++ b/src/passes/01-parser/reasonligo/Pretty.ml @@ -48,6 +48,7 @@ and pp_let_binding let_ (binding : let_binding) = in let rhs = pp_expr let_rhs in match let_rhs with + | EFun _ | ESeq _ | ERecord _ -> lhs ^^ rhs | _ -> prefix 2 0 lhs rhs @@ -130,7 +131,7 @@ and pp_field_pattern {value; _} = and pp_ptyped {value; _} = let {pattern; type_expr; _} = value in - group (pp_pattern pattern ^^ string ":" ^/^ pp_type_expr type_expr) + group (pp_pattern pattern ^^ string ": " ^^ pp_type_expr type_expr) and pp_type_decl decl = let {name; type_expr; _} = decl.value in @@ -374,7 +375,7 @@ and pp_fun {value; _} = match lhs_type with None -> empty | Some (_,e) -> - group (break 0 ^^ string ":" ^^ nest 2 (break 1 ^^ pp_type_expr e)) + group (break 0 ^^ string ": " ^^ nest 2 (pp_type_expr e)) in match body with | ESeq _ -> string "(" ^^ binders ^^ string ")" ^^ annot ^^ string " => " ^^ pp_expr body diff --git a/src/test/contracts/expected/address.religo.expected b/src/test/contracts/expected/address.religo.expected index 1f4535bb1..02a35089e 100644 --- a/src/test/contracts/expected/address.religo.expected +++ b/src/test/contracts/expected/address.religo.expected @@ -1,5 +1,4 @@ -let main = - (p: key_hash): address => { - let c: contract(unit) = Tezos.implicit_account(p); - Tezos.address(c) - }; +let main = (p: key_hash): address => { + let c: contract(unit) = Tezos.implicit_account(p); + Tezos.address(c) +}; diff --git a/src/test/contracts/expected/amount.religo.expected b/src/test/contracts/expected/amount.religo.expected index 78b7804a2..7f4dac3d6 100644 --- a/src/test/contracts/expected/amount.religo.expected +++ b/src/test/contracts/expected/amount.religo.expected @@ -1,7 +1,6 @@ -let check_ = - (p: unit): int => - if(Tezos.amount == 100000000mutez) { - 42 - } else { - 0 - }; +let check_ = (p: unit): int => + if(Tezos.amount == 100000000mutez) { + 42 + } else { + 0 + }; diff --git a/src/test/contracts/expected/bad_address_format.religo.expected b/src/test/contracts/expected/bad_address_format.religo.expected index ee7f13c0d..daa5b29ed 100644 --- a/src/test/contracts/expected/bad_address_format.religo.expected +++ b/src/test/contracts/expected/bad_address_format.religo.expected @@ -1,3 +1,2 @@ -let main = - (parameter: int, storage: address) => - ([] : list(operation), "KT1badaddr" : address); +let main = (parameter: int, storage: address) => + ([] : list(operation), "KT1badaddr" : address); diff --git a/src/test/contracts/expected/balance_constant.religo.expected b/src/test/contracts/expected/balance_constant.religo.expected index 6ae8a6f74..3fb310a5e 100644 --- a/src/test/contracts/expected/balance_constant.religo.expected +++ b/src/test/contracts/expected/balance_constant.religo.expected @@ -1,7 +1,6 @@ type storage = tez; -let main2 = - (p: unit, s: storage) => - ([] : list(operation), Tezos.balance); +let main2 = (p: unit, s: storage) => + ([] : list(operation), Tezos.balance); let main = (x: (unit, storage)) => main2(x[0], x[1]); diff --git a/src/test/contracts/expected/bytes_unpack.religo.expected b/src/test/contracts/expected/bytes_unpack.religo.expected index 662e82c3c..8e2b20a69 100644 --- a/src/test/contracts/expected/bytes_unpack.religo.expected +++ b/src/test/contracts/expected/bytes_unpack.religo.expected @@ -1,17 +1,14 @@ -let id_string = - (p: string): option(string) => { - let packed: bytes = Bytes.pack(p); - ((Bytes.unpack(packed)) : option(string)) - }; +let id_string = (p: string): option(string) => { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(string)) +}; -let id_int = - (p: int): option(int) => { - let packed: bytes = Bytes.pack(p); - ((Bytes.unpack(packed)) : option(int)) - }; +let id_int = (p: int): option(int) => { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(int)) +}; -let id_address = - (p: address): option(address) => { - let packed: bytes = Bytes.pack(p); - ((Bytes.unpack(packed)) : option(address)) - }; +let id_address = (p: address): option(address) => { + let packed: bytes = Bytes.pack(p); + ((Bytes.unpack(packed)) : option(address)) +}; diff --git a/src/test/contracts/expected/check_signature.religo.expected b/src/test/contracts/expected/check_signature.religo.expected index 77e46efe2..f50f2e554 100644 --- a/src/test/contracts/expected/check_signature.religo.expected +++ b/src/test/contracts/expected/check_signature.religo.expected @@ -1,5 +1,4 @@ -let check_signature = - (param: (key, signature, bytes)): bool => { - let (pk, signed, msg) = param; - Crypto.check(pk, signed, msg) - }; +let check_signature = (param: (key, signature, bytes)): bool => { + let (pk, signed, msg) = param; + Crypto.check(pk, signed, msg) +}; diff --git a/src/test/contracts/expected/closure.religo.expected b/src/test/contracts/expected/closure.religo.expected index 52cbf30ee..ed6b69611 100644 --- a/src/test/contracts/expected/closure.religo.expected +++ b/src/test/contracts/expected/closure.religo.expected @@ -1,7 +1,6 @@ -let test = - (k: int): int => { - let j: int = k + 5; - let close: (int => int) = (i: int) => i + j; - let j: int = 20; - close(20) - }; +let test = (k: int): int => { + let j: int = k + 5; + let close: (int => int) = (i: int) => i + j; + let j: int = 20; + close(20) +}; diff --git a/src/test/contracts/expected/condition-shadowing.religo.expected b/src/test/contracts/expected/condition-shadowing.religo.expected index 5c43e89a7..d77219f4b 100644 --- a/src/test/contracts/expected/condition-shadowing.religo.expected +++ b/src/test/contracts/expected/condition-shadowing.religo.expected @@ -1,13 +1,12 @@ -let main = - (i: int) => { +let main = (i: int) => { + let result = 0; + if(i == 2) { + + let result = 42; + result + } else { + let result = 0; - if(i == 2) { - - let result = 42; - result - } else { - - let result = 0; - result - } - }; + result + } +}; diff --git a/src/test/contracts/expected/condition.religo.expected b/src/test/contracts/expected/condition.religo.expected index f29a3be89..8049192f8 100644 --- a/src/test/contracts/expected/condition.religo.expected +++ b/src/test/contracts/expected/condition.religo.expected @@ -1,7 +1,6 @@ -let main = - (i: int) => - if(i == 2) { - 42 - } else { - 0 - }; +let main = (i: int) => + if(i == 2) { + 42 + } else { + 0 + }; diff --git a/src/test/contracts/expected/counter.religo.expected b/src/test/contracts/expected/counter.religo.expected index 14af3847f..5376359a4 100644 --- a/src/test/contracts/expected/counter.religo.expected +++ b/src/test/contracts/expected/counter.religo.expected @@ -1,5 +1,5 @@ type storage = int; -let main = - ((p, s): (int, storage)): (list(operation), storage) => - ([] : list(operation), p + s); +let main = ((p, s): (int, storage)) +: (list(operation), storage) => + ([] : list(operation), p + s); diff --git a/src/test/contracts/expected/empty_case.religo.expected b/src/test/contracts/expected/empty_case.religo.expected index 6705b108c..1051909b0 100644 --- a/src/test/contracts/expected/empty_case.religo.expected +++ b/src/test/contracts/expected/empty_case.religo.expected @@ -1,8 +1,7 @@ type foo = Bar(int) | Baz; -let main = - (f: foo): int => - switch(f) { - | Bar(i) => i - | Baz => (-1) - }; +let main = (f: foo): int => + switch(f) { + | Bar(i) => i + | Baz => (-1) + }; diff --git a/src/test/contracts/expected/eq_bool.religo.expected b/src/test/contracts/expected/eq_bool.religo.expected index ae49645a1..73671f764 100644 --- a/src/test/contracts/expected/eq_bool.religo.expected +++ b/src/test/contracts/expected/eq_bool.religo.expected @@ -1,7 +1,6 @@ -let main = - ((a, b): (bool, bool)) => - if(a == b) { - 999 - } else { - 1 - }; +let main = ((a, b): (bool, bool)) => + if(a == b) { + 999 + } else { + 1 + }; diff --git a/src/test/contracts/expected/failwith.religo.expected b/src/test/contracts/expected/failwith.religo.expected index 5e9680040..8f29675a1 100644 --- a/src/test/contracts/expected/failwith.religo.expected +++ b/src/test/contracts/expected/failwith.religo.expected @@ -1,7 +1,6 @@ type storage = unit; -let main = - (p: unit, storage) => - if(true) { - failwith("This contract always fails") - }; +let main = (p: unit, storage) => + if(true) { + failwith("This contract always fails") + }; diff --git a/src/test/contracts/expected/high-order.religo.expected b/src/test/contracts/expected/high-order.religo.expected index 52b5008f9..55cc25b1f 100644 --- a/src/test/contracts/expected/high-order.religo.expected +++ b/src/test/contracts/expected/high-order.religo.expected @@ -1,30 +1,25 @@ -let foobar = - (i: int): int => { - let foo: int => int = (i: int) => i; - let bar: ((int => int) => int) = - (f: (int => int)) => f(i); - bar(foo) - }; +let foobar = (i: int): int => { + let foo: int => int = (i: int) => i; + let bar: ((int => int) => int) = (f: (int => int)) => f(i); + bar(foo) +}; -let higher2 = - (i: int, f: (int => int)): int => { - let ii: int = f(i); - ii - }; +let higher2 = (i: int, f: (int => int)): int => { + let ii: int = f(i); + ii +}; -let foobar2 = - (i: int): int => { - let foo2: int => int = (i: int) => i; - higher2(i, foo2) - }; +let foobar2 = (i: int): int => { + let foo2: int => int = (i: int) => i; + higher2(i, foo2) +}; let a: int = 0; -let foobar3 = - (i: int): int => { - let foo2: int => int = (i: int) => a + i; - higher2(i, foo2) - }; +let foobar3 = (i: int): int => { + let foo2: int => int = (i: int) => a + i; + higher2(i, foo2) +}; let f = (i: int): int => i; @@ -32,16 +27,15 @@ let g = (i: int): int => f(i); let foobar4 = (i: int): int => g(g(i)); -let higher3 = - (i: int, f: (int => int), g: (int => int)): int => { - let ii: int = f(g(i)); - ii - }; +let higher3 = (i: int, f: (int => int), g: (int => int)) +: int => { + let ii: int = f(g(i)); + ii +}; -let foobar5 = - (i: int): int => { - let a: int = 0; - let foo: int => int = (i: int) => a + i; - let goo: int => int = (i: int) => foo(i); - higher3(i, foo, goo) - }; +let foobar5 = (i: int): int => { + let a: int = 0; + let foo: int => int = (i: int) => a + i; + let goo: int => int = (i: int) => foo(i); + higher3(i, foo, goo) +}; diff --git a/src/test/contracts/expected/implicit_account.religo.expected b/src/test/contracts/expected/implicit_account.religo.expected index 8bfc216f8..0a679da2c 100644 --- a/src/test/contracts/expected/implicit_account.religo.expected +++ b/src/test/contracts/expected/implicit_account.religo.expected @@ -1,3 +1,2 @@ -let main = - (kh: key_hash): contract(unit) => - Tezos.implicit_account(kh); +let main = (kh: key_hash): contract(unit) => + Tezos.implicit_account(kh); diff --git a/src/test/contracts/expected/key_hash.religo.expected b/src/test/contracts/expected/key_hash.religo.expected index 38bb28e1c..a334e7140 100644 --- a/src/test/contracts/expected/key_hash.religo.expected +++ b/src/test/contracts/expected/key_hash.religo.expected @@ -1,6 +1,6 @@ -let check_hash_key = - (kh1_k2: (key_hash, key)): (bool, key_hash) => { - let (kh1, k2) = kh1_k2; - let kh2: key_hash = Crypto.hash_key(k2); - ((kh1 == kh2), kh2) - }; +let check_hash_key = (kh1_k2: (key_hash, key)) +: (bool, key_hash) => { + let (kh1, k2) = kh1_k2; + let kh2: key_hash = Crypto.hash_key(k2); + ((kh1 == kh2), kh2) +}; diff --git a/src/test/contracts/expected/lambda.religo.expected b/src/test/contracts/expected/lambda.religo.expected index 2de46c15d..46728296f 100644 --- a/src/test/contracts/expected/lambda.religo.expected +++ b/src/test/contracts/expected/lambda.religo.expected @@ -1,5 +1,4 @@ type storage = unit; -let main = - ((p, s): (unit, storage)): unit => - (((useless: unit)) => ())(()); +let main = ((p, s): (unit, storage)): unit => + (((useless: unit)) => ())(()); diff --git a/src/test/contracts/expected/lambda2.religo.expected b/src/test/contracts/expected/lambda2.religo.expected index e434e61c9..988de4d37 100644 --- a/src/test/contracts/expected/lambda2.religo.expected +++ b/src/test/contracts/expected/lambda2.religo.expected @@ -1,5 +1,4 @@ type storage = unit; -let main = - ((a, s): (unit, storage)): unit => - ((f: (unit => unit)) => f(()))((useless: unit) => unit); +let main = ((a, s): (unit, storage)): unit => + ((f: (unit => unit)) => f(()))((useless: unit) => unit); diff --git a/src/test/contracts/expected/letin.religo.expected b/src/test/contracts/expected/letin.religo.expected index 0bb052da1..7668015e1 100644 --- a/src/test/contracts/expected/letin.religo.expected +++ b/src/test/contracts/expected/letin.religo.expected @@ -1,13 +1,12 @@ type storage = (int, int); -let main = - (n: (int, storage)): (list(operation), storage) => { - let x: (int, int) = { - let x: int = 7; - (x + n[0], n[1][0] + n[1][1]) - }; - ([] : list(operation), x) +let main = (n: (int, storage)): (list(operation), storage) => { + let x: (int, int) = { + let x: int = 7; + (x + n[0], n[1][0] + n[1][1]) }; + ([] : list(operation), x) +}; let f0 = (a: string) => true; @@ -15,21 +14,19 @@ let f1 = (a: string) => true; let f2 = (a: string) => true; -let letin_nesting = - (_: unit) => { - let s = "test"; - let p0 = f0(s); - assert(p0); - let p1 = f1(s); - assert(p1); - let p2 = f2(s); - assert(p2); - s - }; +let letin_nesting = (_: unit) => { + let s = "test"; + let p0 = f0(s); + assert(p0); + let p1 = f1(s); + assert(p1); + let p2 = f2(s); + assert(p2); + s +}; -let letin_nesting2 = - (x: int) => { - let y = 2; - let z = 3; - x + y + z - }; +let letin_nesting2 = (x: int) => { + let y = 2; + let z = 3; + x + y + z +}; diff --git a/src/test/contracts/expected/list.religo.expected b/src/test/contracts/expected/list.religo.expected index 18f6653d3..e2c2c6867 100644 --- a/src/test/contracts/expected/list.religo.expected +++ b/src/test/contracts/expected/list.religo.expected @@ -10,30 +10,26 @@ let y: list(int) = [3, 4, 5]; let z: list(int) = [2, ...y]; -let main = - ((action, s): (parameter, storage)): return => { - let storage = - switch(action) { - | [] => s - | [hd, ...tl] => (s[0] + hd, tl) - }; - ([] : list(operation), storage) - }; +let main = ((action, s): (parameter, storage)): return => { + let storage = + switch(action) { + | [] => s + | [hd, ...tl] => (s[0] + hd, tl) + }; + ([] : list(operation), storage) +}; let size_ = (s: list(int)): nat => List.length(s); -let fold_op = - (s: list(int)): int => { - let aggregate = (t: (int, int)) => t[0] + t[1]; - List.fold(aggregate, s, 10) - }; +let fold_op = (s: list(int)): int => { + let aggregate = (t: (int, int)) => t[0] + t[1]; + List.fold(aggregate, s, 10) +}; -let map_op = - (s: list(int)): list(int) => - List.map((cur: int) => cur + 1, s); +let map_op = (s: list(int)): list(int) => + List.map((cur: int) => cur + 1, s); -let iter_op = - (s: list(int)): unit => { - let do_nothing = (useless: int) => unit; - List.iter(do_nothing, s) - }; +let iter_op = (s: list(int)): unit => { + let do_nothing = (useless: int) => unit; + List.iter(do_nothing, s) +}; diff --git a/src/test/contracts/expected/loop.religo.expected b/src/test/contracts/expected/loop.religo.expected index aac2af16c..130c2cd06 100644 --- a/src/test/contracts/expected/loop.religo.expected +++ b/src/test/contracts/expected/loop.religo.expected @@ -1,52 +1,47 @@ -let rec aux_simple = - (i: int): int => - if(i < 100) { - aux_simple(i + 1) - } else { - i - }; +let rec aux_simple = (i: int): int => + if(i < 100) { + aux_simple(i + 1) + } else { + i + }; let counter_simple = (n: int): int => aux_simple(n); type sum_aggregator = {counter: int, sum: int }; -let counter = - (n: int): int => { - let initial: sum_aggregator = { - counter: 0, - sum: 0 - }; - let rec aggregate = - (prev: sum_aggregator): int => - if(prev.counter <= n) { - - - aggregate({ - counter: prev.counter + 1, - sum: prev.counter + prev.sum - }) - } else { - prev.sum - }; - aggregate(initial) +let counter = (n: int): int => { + let initial: sum_aggregator = { + counter: 0, + sum: 0 }; - -let rec aux_nest = - (prev: sum_aggregator): sum_aggregator => - if(prev.counter < 100) { + let rec aggregate = (prev: sum_aggregator): int => + if(prev.counter <= n) { - let sum: int = prev.sum + aux_simple(prev.counter); - aux_nest({counter: prev.counter + 1, sum: sum }) + + aggregate({ + counter: prev.counter + 1, + sum: prev.counter + prev.sum + }) } else { - ({counter: prev.counter, sum: prev.sum }) + prev.sum }; + aggregate(initial) +}; -let counter_nest = - (n: int): int => { - let initial: sum_aggregator = { - counter: 0, - sum: 0 - }; - let out: sum_aggregator = aux_nest(initial); - out.sum +let rec aux_nest = (prev: sum_aggregator): sum_aggregator => + if(prev.counter < 100) { + + let sum: int = prev.sum + aux_simple(prev.counter); + aux_nest({counter: prev.counter + 1, sum: sum }) + } else { + ({counter: prev.counter, sum: prev.sum }) }; + +let counter_nest = (n: int): int => { + let initial: sum_aggregator = { + counter: 0, + sum: 0 + }; + let out: sum_aggregator = aux_nest(initial); + out.sum +}; diff --git a/src/test/contracts/expected/map.religo.expected b/src/test/contracts/expected/map.religo.expected index 918dd70c1..0106bca64 100644 --- a/src/test/contracts/expected/map.religo.expected +++ b/src/test/contracts/expected/map.religo.expected @@ -12,24 +12,21 @@ let map1: foobar = let map2: foobar = Map.literal([(23, 0), (42, 0)]); -let set_ = - (n: int, m: foobar): foobar => Map.update(23, Some (n), m); +let set_ = (n: int, m: foobar): foobar => + Map.update(23, Some (n), m); let add = (n: int, m: foobar): foobar => Map.add(23, n, m); let rm = (m: foobar): foobar => Map.remove(42, m); -let patch_ = - (m: foobar): foobar => - Map.literal([(0, 5), (1, 6), (2, 7)]); +let patch_ = (m: foobar): foobar => + Map.literal([(0, 5), (1, 6), (2, 7)]); -let patch_empty = - (m: foobar): foobar => - Map.literal([(0, 0), (1, 1), (2, 2)]); +let patch_empty = (m: foobar): foobar => + Map.literal([(0, 0), (1, 1), (2, 2)]); -let patch_deep = - (m: (foobar, nat)): (foobar, nat) => - (Map.literal([(0, 0), (1, 9), (2, 2)]), 10n); +let patch_deep = (m: (foobar, nat)): (foobar, nat) => + (Map.literal([(0, 0), (1, 9), (2, 2)]), 10n); let size_ = (m: foobar): nat => Map.size(m); @@ -39,29 +36,24 @@ let get_ = (m: foobar): option(int) => Map.find_opt(42, m); let mem = (km: (int, foobar)): bool => Map.mem(km[0], km[1]); -let iter_op = - (m: foobar): unit => { - let assert_eq = (i: int, j: int) => assert(i == j); - Map.iter(assert_eq, m) - }; +let iter_op = (m: foobar): unit => { + let assert_eq = (i: int, j: int) => assert(i == j); + Map.iter(assert_eq, m) +}; -let map_op = - (m: foobar): foobar => { - let increment = (z: int, j: int) => j + 1; - Map.map(increment, m) - }; +let map_op = (m: foobar): foobar => { + let increment = (z: int, j: int) => j + 1; + Map.map(increment, m) +}; -let fold_op = - (m: foobar): foobar => { - let aggregate = - (i: int, j: (int, int)) => i + j[0] + j[1]; - Map.fold(aggregate, m, 10) - }; +let fold_op = (m: foobar): foobar => { + let aggregate = (i: int, j: (int, int)) => i + j[0] + j[1]; + Map.fold(aggregate, m, 10) +}; -let deep_op = - (m: foobar): foobar => { - let coco = (0, m); - let coco = (0, Map.remove(42, coco[1])); - let coco = (0, Map.update(32, Some (16), coco[1])); - coco[1] - }; +let deep_op = (m: foobar): foobar => { + let coco = (0, m); + let coco = (0, Map.remove(42, coco[1])); + let coco = (0, Map.update(32, Some (16), coco[1])); + coco[1] +}; diff --git a/src/test/contracts/expected/match.religo.expected b/src/test/contracts/expected/match.religo.expected index e3672aa30..be17f120e 100644 --- a/src/test/contracts/expected/match.religo.expected +++ b/src/test/contracts/expected/match.religo.expected @@ -4,12 +4,11 @@ type parameter = Add(int) | Sub(int); type return = (list(operation), storage); -let main = - ((action, store): (parameter, storage)) => { - let store = - store + (switch(action) { - | Add(n) => n - | Sub(n) => -n - }); - (([] : list(operation)), store) - }; +let main = ((action, store): (parameter, storage)) => { + let store = + store + (switch(action) { + | Add(n) => n + | Sub(n) => -n + }); + (([] : list(operation)), store) +}; diff --git a/src/test/contracts/expected/match_bis.religo.expected b/src/test/contracts/expected/match_bis.religo.expected index da5710d68..7df5fd566 100644 --- a/src/test/contracts/expected/match_bis.religo.expected +++ b/src/test/contracts/expected/match_bis.religo.expected @@ -6,12 +6,11 @@ let add = ((a: int), (b: int)) => a + b; let sub = ((a: int), (b: int)) => a - b; -let main = - ((action, store): (parameter, storage)) => { - let store = - switch(action) { - | Increment(n) => add(store, n) - | Decrement(n) => sub(store, n) - }; - (([] : list(operation)), store) - }; +let main = ((action, store): (parameter, storage)) => { + let store = + switch(action) { + | Increment(n) => add(store, n) + | Decrement(n) => sub(store, n) + }; + (([] : list(operation)), store) +}; diff --git a/src/test/contracts/expected/michelson_pair_tree.religo.expected b/src/test/contracts/expected/michelson_pair_tree.religo.expected index 74a3c9595..206fe57e1 100644 --- a/src/test/contracts/expected/michelson_pair_tree.religo.expected +++ b/src/test/contracts/expected/michelson_pair_tree.religo.expected @@ -5,8 +5,7 @@ type storage = michelson_pair type return = (list(operation), storage); -let main = - ((action, store): (unit, storage)): return => { - let foo = (3, (1, 2n)); - (([] : list(operation)), (foo : storage)) - }; +let main = ((action, store): (unit, storage)): return => { + let foo = (3, (1, 2n)); + (([] : list(operation)), (foo : storage)) +}; diff --git a/src/test/contracts/expected/multiple-parameters.religo.expected b/src/test/contracts/expected/multiple-parameters.religo.expected index 7c5a6d198..aae363564 100644 --- a/src/test/contracts/expected/multiple-parameters.religo.expected +++ b/src/test/contracts/expected/multiple-parameters.religo.expected @@ -1,6 +1,6 @@ -let abcde_curried = - (a: int, b: int, c: int, d: int, e: int): int => c + e + 3; +let abcde_curried = (a: int, b: int, c: int, d: int, e: int) +: int => + c + e + 3; -let abcde = - (x: (int, int, int, int, int)): int => - abcde_curried(x[0], x[1], x[2], x[3], x[4]); +let abcde = (x: (int, int, int, int, int)): int => + abcde_curried(x[0], x[1], x[2], x[3], x[4]); diff --git a/src/test/contracts/expected/multisig.religo.expected b/src/test/contracts/expected/multisig.religo.expected index 6be99ec43..ddb7b981c 100644 --- a/src/test/contracts/expected/multisig.religo.expected +++ b/src/test/contracts/expected/multisig.religo.expected @@ -29,61 +29,53 @@ type return = (list(operation), storage); type parameter = CheckMessage(check_message_pt); -let check_message = - ((param, s): (check_message_pt, storage)): return => { - let message: message = param.message; - let s = - if(param.counter != s.counter) { - (failwith("Counters does not match") : storage) - } else { - - let packed_payload: bytes = - - Bytes.pack((message, param.counter, s.id, chain_id)); - let valid: nat = 0n; - let keys: authorized_keys = s.auth; - let aux = - ((vk, pkh_sig): - ((nat, authorized_keys), (key_hash, signature))) - : - (nat, authorized_keys) => { - let (valid, keys) = vk; - switch(keys) { - | [] => vk - | [key, ...keys] => - if(pkh_sig[0] == Crypto.hash_key(key)) { - - let valid = - if( - Crypto.check(key, - pkh_sig[1], - packed_payload)) { - valid + 1n - } else { - (failwith("Invalid signature") : nat) - }; - (valid, keys) +let check_message = ((param, s): (check_message_pt, storage)) +: return => { + let message: message = param.message; + let s = + if(param.counter != s.counter) { + (failwith("Counters does not match") : storage) + } else { + + let packed_payload: bytes = + Bytes.pack((message, param.counter, s.id, chain_id)); + let valid: nat = 0n; + let keys: authorized_keys = s.auth; + let aux = ((vk, pkh_sig): ((nat, authorized_keys), + (key_hash, signature))): (nat, authorized_keys) => { + let (valid, keys) = vk; + switch(keys) { + | [] => vk + | [key, ...keys] => + if(pkh_sig[0] == Crypto.hash_key(key)) { + + let valid = + if( + Crypto.check(key, pkh_sig[1], packed_payload)) { + valid + 1n } else { - (valid, keys) - } + (failwith("Invalid signature") : nat) + }; + (valid, keys) + } else { + (valid, keys) } - }; - let (valid, keys) = - List.fold(aux, param.signatures, (valid, keys)); - if(valid < s.threshold) { - - ( - failwith("Not enough signatures passed the check") - : storage) - } else { - {...s, counter: s.counter + 1n} } }; - (message(unit), s) - }; - -let main = - ((action, store): (parameter, storage)): return => - switch(action) { - | CheckMessage(p) => check_message((p, store)) + let (valid, keys) = + List.fold(aux, param.signatures, (valid, keys)); + if(valid < s.threshold) { + + (failwith("Not enough signatures passed the check") + : storage) + } else { + {...s, counter: s.counter + 1n} + } }; + (message(unit), s) +}; + +let main = ((action, store): (parameter, storage)): return => + switch(action) { + | CheckMessage(p) => check_message((p, store)) + }; diff --git a/src/test/contracts/expected/no_semicolon.religo.expected b/src/test/contracts/expected/no_semicolon.religo.expected index 352b36e54..ea3b13c2c 100644 --- a/src/test/contracts/expected/no_semicolon.religo.expected +++ b/src/test/contracts/expected/no_semicolon.religo.expected @@ -1,15 +1,13 @@ type f = int; -let a = - (b: f) => { - if(b == 2) { - 3 - } else { - 4 - } - }; - -let c = - (c: f) => { +let a = (b: f) => { + if(b == 2) { 3 - }; + } else { + 4 + } +}; + +let c = (c: f) => { + 3 +}; diff --git a/src/test/contracts/expected/pledge.religo.expected b/src/test/contracts/expected/pledge.religo.expected index eaf62761c..9c8044a9c 100644 --- a/src/test/contracts/expected/pledge.religo.expected +++ b/src/test/contracts/expected/pledge.religo.expected @@ -4,29 +4,27 @@ type parameter = Donate(unit) | Distribute((unit => list(operation))); -let donate = - ((p, s): (unit, storage)): (list(operation), storage) => { - (([] : list(operation)), s) - }; +let donate = ((p, s): (unit, storage)) +: (list(operation), storage) => { + (([] : list(operation)), s) +}; -let distribute = - ((p, s): ((unit => list(operation)), storage)) - : - (list(operation), storage) => { - if(Tezos.sender == s) { - (p(()), s) - } else { - - ( - failwith("You're not the oracle for this distribution.") - : (list(operation), storage)) - } - }; +let distribute = ((p, s): ((unit => list(operation)), + storage)): (list(operation), storage) => { + if(Tezos.sender == s) { + (p(()), s) + } else { + + ( + failwith("You're not the oracle for this distribution.") + : (list(operation), storage)) + } +}; -let main = - ((p, s): (parameter, storage)): (list(operation), storage) => { - switch(p) { - | Donate => donate(((), s)) - | Distribute msg => distribute((msg, s)) - } - }; +let main = ((p, s): (parameter, storage)) +: (list(operation), storage) => { + switch(p) { + | Donate => donate(((), s)) + | Distribute msg => distribute((msg, s)) + } +}; diff --git a/src/test/contracts/expected/record.religo.expected b/src/test/contracts/expected/record.religo.expected index c41cc77f9..f923c8fd0 100644 --- a/src/test/contracts/expected/record.religo.expected +++ b/src/test/contracts/expected/record.religo.expected @@ -24,5 +24,6 @@ let br: big_record = {a: 23, b: 23, c: 23, d: 23, e: 23 }; type double_record = {inner: abc }; -let modify_inner = - (r: double_record): double_record => {...r, inner.b: 2048}; +let modify_inner = (r: double_record): double_record => + {...r, + inner.b: 2048}; diff --git a/src/test/contracts/expected/recursion.religo.expected b/src/test/contracts/expected/recursion.religo.expected index bad33a7ba..70cf03318 100644 --- a/src/test/contracts/expected/recursion.religo.expected +++ b/src/test/contracts/expected/recursion.religo.expected @@ -1,15 +1,13 @@ -let rec sum = - ((n, acc): (int, int)): int => - if(n < 1) { - acc - } else { - sum((n - 1, acc + n)) - }; +let rec sum = ((n, acc): (int, int)): int => + if(n < 1) { + acc + } else { + sum((n - 1, acc + n)) + }; -let rec fibo = - ((n, n_1, n_0): (int, int, int)): int => - if(n < 2) { - n_1 - } else { - fibo((n - 1, n_1 + n_0, n_1)) - }; +let rec fibo = ((n, n_1, n_0): (int, int, int)): int => + if(n < 2) { + n_1 + } else { + fibo((n - 1, n_1 + n_0, n_1)) + }; diff --git a/src/test/contracts/expected/set_arithmetic.religo.expected b/src/test/contracts/expected/set_arithmetic.religo.expected index 7c9edfd3b..23094e255 100644 --- a/src/test/contracts/expected/set_arithmetic.religo.expected +++ b/src/test/contracts/expected/set_arithmetic.religo.expected @@ -1,16 +1,14 @@ -let literal_op = - (p: unit): set(string) => - Set.literal(["foo", "bar", "foobar"]); +let literal_op = (p: unit): set(string) => + Set.literal(["foo", "bar", "foobar"]); -let add_op = - (s: set(string)): set(string) => Set.add("foobar", s); +let add_op = (s: set(string)): set(string) => + Set.add("foobar", s); -let remove_op = - (s: set(string)): set(string) => Set.remove("foobar", s); +let remove_op = (s: set(string)): set(string) => + Set.remove("foobar", s); -let remove_deep = - (s: (set(string), nat)): set(string) => - Set.remove("foobar", s[0]); +let remove_deep = (s: (set(string), nat)): set(string) => + Set.remove("foobar", s[0]); let mem_op = (s: set(string)): bool => Set.mem("foobar", s); diff --git a/src/test/contracts/expected/set_delegate.religo.expected b/src/test/contracts/expected/set_delegate.religo.expected index 00c9439c1..cd18f5538 100644 --- a/src/test/contracts/expected/set_delegate.religo.expected +++ b/src/test/contracts/expected/set_delegate.religo.expected @@ -1,5 +1,4 @@ -let main = - (p: key_hash): list(operation) => { - let unused: operation = (Tezos.set_delegate(Some (p))); - ([] : list(operation)) - }; +let main = (p: key_hash): list(operation) => { + let unused: operation = (Tezos.set_delegate(Some (p))); + ([] : list(operation)) +}; diff --git a/src/test/contracts/expected/super-counter.religo.expected b/src/test/contracts/expected/super-counter.religo.expected index 234d2dcf6..675f49db8 100644 --- a/src/test/contracts/expected/super-counter.religo.expected +++ b/src/test/contracts/expected/super-counter.religo.expected @@ -4,12 +4,11 @@ type storage = int; type return = (list(operation), storage); -let main = - ((action, store): (parameter, storage)): return => { - let store = - switch(action) { - | Increment(n) => store + n - | Decrement(n) => store - n - }; - ([] : list(operation), store) - }; +let main = ((action, store): (parameter, storage)): return => { + let store = + switch(action) { + | Increment(n) => store + n + | Decrement(n) => store - n + }; + ([] : list(operation), store) +}; diff --git a/src/test/contracts/expected/tuple_param_destruct.religo.expected b/src/test/contracts/expected/tuple_param_destruct.religo.expected index c5d0d7deb..15245a084 100644 --- a/src/test/contracts/expected/tuple_param_destruct.religo.expected +++ b/src/test/contracts/expected/tuple_param_destruct.religo.expected @@ -1,4 +1,4 @@ let sum = ((result, i): (int, int)): int => result - i; -let parentheses = - (((((result, i)))): (((int, int)))): int => result - i; +let parentheses = (((((result, i)))): (((int, int)))): int => + result - i; diff --git a/src/test/contracts/expected/tuple_type.religo.expected b/src/test/contracts/expected/tuple_type.religo.expected index 05fff0a65..8bc008c3b 100644 --- a/src/test/contracts/expected/tuple_type.religo.expected +++ b/src/test/contracts/expected/tuple_type.religo.expected @@ -1,44 +1,40 @@ type fun_type = (int, int) => int; -let arguments = - (b: int, c: int) => { - b + c - }; +let arguments = (b: int, c: int) => { + b + c +}; let arguments_type_def = (b: fun_type) => b(5, 3); -let arguments_test = - (_: int) => arguments_type_def(arguments); +let arguments_test = (_: int) => + arguments_type_def(arguments); type tuple_type = ((int, int)) => int; -let tuple = - ((a, b): (int, int)) => { - a + b - }; +let tuple = ((a, b): (int, int)) => { + a + b +}; let tuple_type_def = (b: tuple_type) => b((5, 3)); let tuple_test = (_: int) => tuple_type_def(tuple); -let arguments_inline = - (b: int, c: int) => { - b + c - }; +let arguments_inline = (b: int, c: int) => { + b + c +}; -let arguments_type_def_inline = - (b: (int, int) => int) => b(5, 3); +let arguments_type_def_inline = (b: (int, int) => int) => + b(5, 3); -let arguments_test_inline = - (_: int) => arguments_type_def_inline(arguments_inline); +let arguments_test_inline = (_: int) => + arguments_type_def_inline(arguments_inline); -let tuple_inline = - ((a, b): (int, int)) => { - a + b - }; +let tuple_inline = ((a, b): (int, int)) => { + a + b +}; -let tuple_type_def_inline = - (b: ((int, int)) => int) => b((5, 3)); +let tuple_type_def_inline = (b: ((int, int)) => int) => + b((5, 3)); -let tuple_test_inline = - (_: int) => tuple_type_def_inline(tuple_inline); +let tuple_test_inline = (_: int) => + tuple_type_def_inline(tuple_inline); diff --git a/src/test/contracts/expected/tuples_no_annotation.religo.expected b/src/test/contracts/expected/tuples_no_annotation.religo.expected index 1e49fee5d..38bc4f153 100644 --- a/src/test/contracts/expected/tuples_no_annotation.religo.expected +++ b/src/test/contracts/expected/tuples_no_annotation.religo.expected @@ -2,7 +2,6 @@ type storage = (int, string, nat, bool); type parameter = int; -let main = - ((p, storage): (parameter, storage)) => { - ([] : list(operation), (2, "2", 2n, false)) - }; +let main = ((p, storage): (parameter, storage)) => { + ([] : list(operation), (2, "2", 2n, false)) +}; diff --git a/src/test/contracts/expected/website2.religo.expected b/src/test/contracts/expected/website2.religo.expected index 1915b5f31..75257eea0 100644 --- a/src/test/contracts/expected/website2.religo.expected +++ b/src/test/contracts/expected/website2.religo.expected @@ -6,12 +6,11 @@ let add = ((a, b): (int, int)): int => a + b; let sub = ((a, b): (int, int)): int => a - b; -let main = - ((p, storage): (parameter, storage)) => { - let storage = - switch(p) { - | Increment(n) => add((storage, n)) - | Decrement(n) => sub((storage, n)) - }; - ([] : list(operation), storage) - }; +let main = ((p, storage): (parameter, storage)) => { + let storage = + switch(p) { + | Increment(n) => add((storage, n)) + | Decrement(n) => sub((storage, n)) + }; + ([] : list(operation), storage) +}; From be9478bec1d08eda15ed07277826b210b3ed01f5 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Fri, 5 Jun 2020 17:45:11 +0200 Subject: [PATCH 43/67] Refactor updates and accessors --- src/passes/01-parser/cameligo/AST.ml | 2 +- src/passes/01-parser/cameligo/Parser.mly | 4 +- src/passes/01-parser/cameligo/ParserLog.ml | 4 +- .../cameligo/error.messages.checked-in | 2315 ++++++++------- src/passes/01-parser/pascaligo/AST.ml | 2 +- src/passes/01-parser/pascaligo/Parser.mly | 4 +- src/passes/01-parser/pascaligo/ParserLog.ml | 4 +- .../pascaligo/error.messages.checked-in | 2479 ++++++++--------- src/passes/01-parser/reasonligo/Parser.mly | 27 +- .../reasonligo/error.messages.checked-in | 24 +- .../02-concrete_to_imperative/cameligo.ml | 42 +- .../02-concrete_to_imperative/pascaligo.ml | 72 +- src/passes/03-self_ast_imperative/helpers.ml | 110 +- .../imperative_to_sugar.ml | 195 +- src/passes/05-self_ast_sugar/helpers.ml | 110 +- src/passes/06-sugar_to_core/sugar_to_core.ml | 59 +- src/stages/1-ast_imperative/PP.ml | 18 +- src/stages/1-ast_imperative/combinators.ml | 14 +- src/stages/1-ast_imperative/combinators.mli | 9 +- src/stages/1-ast_imperative/types.ml | 16 +- src/stages/2-ast_sugar/PP.ml | 20 +- src/stages/2-ast_sugar/combinators.ml | 13 +- src/stages/2-ast_sugar/combinators.mli | 9 +- src/stages/2-ast_sugar/types.ml | 19 +- 24 files changed, 2756 insertions(+), 2815 deletions(-) diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index 5ade8c346..b258f3416 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -344,7 +344,7 @@ and update = { } and field_path_assign = { - field_path : (field_name, dot) nsepseq; + field_path : (selection, dot) nsepseq; assignment : equal; field_expr : expr } diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index 24b747f93..ad8de1545 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -650,8 +650,8 @@ update_record: in {region; value} } field_path_assignment : - nsepseq(field_name,".") "=" expr { - let start = nsepseq_to_region (fun x -> x.region) $1 in + nsepseq(selection,".") "=" expr { + let start = nsepseq_to_region selection_to_region $1 in let region = cover start (expr_to_region $3) in let value = {field_path = $1; assignment = $2; diff --git a/src/passes/01-parser/cameligo/ParserLog.ml b/src/passes/01-parser/cameligo/ParserLog.ml index a3b159dae..cfed19b49 100644 --- a/src/passes/01-parser/cameligo/ParserLog.ml +++ b/src/passes/01-parser/cameligo/ParserLog.ml @@ -527,7 +527,7 @@ and print_field_assign state {value; _} = and print_field_path_assign state {value; _} = let {field_path; assignment; field_expr} = value in - print_nsepseq state "." print_var field_path; + print_nsepseq state "." print_selection field_path; print_token state assignment "="; print_expr state field_expr @@ -965,7 +965,7 @@ and pp_field_assign state {value; _} = and pp_field_path_assign state {value; _} = pp_node state ""; let path = Utils.nsepseq_to_list value.field_path in - List.iter (pp_ident (state#pad 2 0)) path; + List.iter (pp_selection (state#pad 2 0)) path; pp_expr (state#pad 2 1) value.field_expr and pp_constr_expr state = function diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index 58869eaf3..f50349c12 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -1,8 +1,8 @@ interactive_expr: Begin Fun WILD ARROW Bytes SEMI With ## -## Ends in an error in state: 483. +## Ends in an error in state: 485. ## -## sequence -> Begin option(series) . End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## sequence -> Begin option(series) . End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Begin option(series) @@ -12,7 +12,7 @@ interactive_expr: Begin Fun WILD ARROW Bytes SEMI With interactive_expr: Begin Fun WILD ARROW With ## -## Ends in an error in state: 465. +## Ends in an error in state: 467. ## ## fun_expr(seq_expr) -> Fun nseq(irrefutable) ARROW . seq_expr [ SEMI End ] ## @@ -24,7 +24,7 @@ interactive_expr: Begin Fun WILD ARROW With interactive_expr: Begin Fun With ## -## Ends in an error in state: 463. +## Ends in an error in state: 465. ## ## fun_expr(seq_expr) -> Fun . nseq(irrefutable) ARROW seq_expr [ SEMI End ] ## @@ -34,9 +34,9 @@ interactive_expr: Begin Fun With -interactive_expr: Begin If True Then Fun WILD ARROW With +interactive_expr: Begin If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 452. +## Ends in an error in state: 454. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## @@ -46,9 +46,9 @@ interactive_expr: Begin If True Then Fun WILD ARROW With -interactive_expr: Begin If True Then Fun With +interactive_expr: Begin If Verbatim Then Fun With ## -## Ends in an error in state: 450. +## Ends in an error in state: 452. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## @@ -58,9 +58,9 @@ interactive_expr: Begin If True Then Fun With -interactive_expr: Begin If True Then If True Then True COMMA Bytes With +interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim COMMA Bytes With ## -## Ends in an error in state: 455. +## Ends in an error in state: 457. ## ## if_then_else(closed_if) -> If expr Then closed_if . Else closed_if [ Else ] ## @@ -71,28 +71,28 @@ interactive_expr: Begin If True Then If True Then True COMMA Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 453, spurious reduction of production base_expr(closed_if) -> tuple_expr -## In state 353, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 352, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr +## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: Begin If True Then If True Then True Else With +interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 456. +## Ends in an error in state: 458. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## @@ -102,9 +102,9 @@ interactive_expr: Begin If True Then If True Then True Else With -interactive_expr: Begin If True Then If True Then With +interactive_expr: Begin If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 449. +## Ends in an error in state: 451. ## ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] ## @@ -114,9 +114,9 @@ interactive_expr: Begin If True Then If True Then With -interactive_expr: Begin If True Then If True With +interactive_expr: Begin If Verbatim Then If Verbatim With ## -## Ends in an error in state: 448. +## Ends in an error in state: 450. ## ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] ## @@ -127,25 +127,25 @@ interactive_expr: Begin If True Then If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin If True Then If With +interactive_expr: Begin If Verbatim Then If With ## -## Ends in an error in state: 447. +## Ends in an error in state: 449. ## ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] ## @@ -155,9 +155,9 @@ interactive_expr: Begin If True Then If With -interactive_expr: Begin If True Then Let Rec WILD EQ Bytes Attr Type +interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 445. +## Ends in an error in state: 447. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## @@ -168,15 +168,15 @@ interactive_expr: Begin If True Then Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Begin If True Then Let Rec WILD EQ Bytes In With +interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 446. +## Ends in an error in state: 448. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## @@ -186,9 +186,9 @@ interactive_expr: Begin If True Then Let Rec WILD EQ Bytes In With -interactive_expr: Begin If True Then Let Rec WILD EQ Bytes With +interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 444. +## Ends in an error in state: 446. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## @@ -199,26 +199,26 @@ interactive_expr: Begin If True Then Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Begin If True Then Let Rec With +interactive_expr: Begin If Verbatim Then Let Rec With ## -## Ends in an error in state: 443. +## Ends in an error in state: 445. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] ## @@ -228,9 +228,9 @@ interactive_expr: Begin If True Then Let Rec With -interactive_expr: Begin If True Then Let WILD EQ Bytes Attr Type +interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 458. +## Ends in an error in state: 460. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## @@ -241,15 +241,15 @@ interactive_expr: Begin If True Then Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Begin If True Then Let WILD EQ Bytes In With +interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 459. +## Ends in an error in state: 461. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## @@ -259,9 +259,9 @@ interactive_expr: Begin If True Then Let WILD EQ Bytes In With -interactive_expr: Begin If True Then Let WILD EQ Bytes With +interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 457. +## Ends in an error in state: 459. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## @@ -272,26 +272,26 @@ interactive_expr: Begin If True Then Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Begin If True Then Let With +interactive_expr: Begin If Verbatim Then Let With ## -## Ends in an error in state: 442. +## Ends in an error in state: 444. ## ## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ] @@ -302,9 +302,9 @@ interactive_expr: Begin If True Then Let With -interactive_expr: Begin If True Then Match True Type +interactive_expr: Begin If Verbatim Then Match Verbatim Type ## -## Ends in an error in state: 264. +## Ends in an error in state: 266. ## ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -315,25 +315,25 @@ interactive_expr: Begin If True Then Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin If True Then Match True With VBAR Begin +interactive_expr: Begin If Verbatim Then Match Verbatim With VBAR Begin ## -## Ends in an error in state: 266. +## Ends in an error in state: 268. ## ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] ## @@ -343,9 +343,9 @@ interactive_expr: Begin If True Then Match True With VBAR Begin -interactive_expr: Begin If True Then Match True With WILD ARROW Bytes With +interactive_expr: Begin If Verbatim Then Match Verbatim With WILD ARROW Bytes With ## -## Ends in an error in state: 404. +## Ends in an error in state: 406. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(base_if_then_else) -> cases(base_cond) . VBAR case_clause(base_if_then_else) [ Else ] @@ -357,27 +357,27 @@ interactive_expr: Begin If True Then Match True With WILD ARROW Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 390, spurious reduction of production base_expr(base_cond) -> disj_expr_level -## In state 354, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 355, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 401, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 409, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 392, spurious reduction of production base_expr(base_cond) -> disj_expr_level +## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## -interactive_expr: Begin If True Then Match True With With +interactive_expr: Begin If Verbatim Then Match Verbatim With With ## -## Ends in an error in state: 265. +## Ends in an error in state: 267. ## ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -387,9 +387,9 @@ interactive_expr: Begin If True Then Match True With With -interactive_expr: Begin If True Then Match With +interactive_expr: Begin If Verbatim Then Match With ## -## Ends in an error in state: 263. +## Ends in an error in state: 265. ## ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] ## @@ -399,9 +399,9 @@ interactive_expr: Begin If True Then Match With -interactive_expr: Begin If True Then True COMMA Bytes With +interactive_expr: Begin If Verbatim Then Verbatim COMMA Bytes With ## -## Ends in an error in state: 460. +## Ends in an error in state: 462. ## ## if_then_else(seq_expr) -> If expr Then closed_if . Else seq_expr [ SEMI End ] ## @@ -412,28 +412,28 @@ interactive_expr: Begin If True Then True COMMA Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 453, spurious reduction of production base_expr(closed_if) -> tuple_expr -## In state 353, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 352, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr +## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: Begin If True Then True Else With +interactive_expr: Begin If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 461. +## Ends in an error in state: 463. ## ## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ] ## @@ -443,9 +443,9 @@ interactive_expr: Begin If True Then True Else With -interactive_expr: Begin If True Then True With +interactive_expr: Begin If Verbatim Then Verbatim With ## -## Ends in an error in state: 454. +## Ends in an error in state: 456. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ Or Else COMMA BOOL_OR ] @@ -459,22 +459,22 @@ interactive_expr: Begin If True Then True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Begin If True Then With +interactive_expr: Begin If Verbatim Then With ## -## Ends in an error in state: 441. +## Ends in an error in state: 443. ## ## if_then_else(seq_expr) -> If expr Then . closed_if Else seq_expr [ SEMI End ] ## @@ -484,9 +484,9 @@ interactive_expr: Begin If True Then With -interactive_expr: Begin If True With +interactive_expr: Begin If Verbatim With ## -## Ends in an error in state: 440. +## Ends in an error in state: 442. ## ## if_then_else(seq_expr) -> If expr . Then closed_if Else seq_expr [ SEMI End ] ## @@ -497,25 +497,25 @@ interactive_expr: Begin If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Begin If With ## -## Ends in an error in state: 439. +## Ends in an error in state: 441. ## ## if_then_else(seq_expr) -> If . expr Then closed_if Else seq_expr [ SEMI End ] ## @@ -527,7 +527,7 @@ interactive_expr: Begin If With interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 437. +## Ends in an error in state: 439. ## ## last_expr -> Let Rec let_binding seq(Attr) . In series [ End ] ## @@ -538,15 +538,15 @@ interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 438. +## Ends in an error in state: 440. ## ## last_expr -> Let Rec let_binding seq(Attr) In . series [ End ] ## @@ -558,7 +558,7 @@ interactive_expr: Begin Let Rec WILD EQ Bytes In With interactive_expr: Begin Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 436. +## Ends in an error in state: 438. ## ## last_expr -> Let Rec let_binding . seq(Attr) In series [ End ] ## @@ -569,26 +569,26 @@ interactive_expr: Begin Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin Let Rec With ## -## Ends in an error in state: 435. +## Ends in an error in state: 437. ## ## last_expr -> Let Rec . let_binding seq(Attr) In series [ End ] ## @@ -600,7 +600,7 @@ interactive_expr: Begin Let Rec With interactive_expr: Begin Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 479. +## Ends in an error in state: 481. ## ## last_expr -> Let let_binding seq(Attr) . In series [ End ] ## @@ -611,15 +611,15 @@ interactive_expr: Begin Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Begin Let WILD EQ Bytes In With ## -## Ends in an error in state: 480. +## Ends in an error in state: 482. ## ## last_expr -> Let let_binding seq(Attr) In . series [ End ] ## @@ -631,7 +631,7 @@ interactive_expr: Begin Let WILD EQ Bytes In With interactive_expr: Begin Let WILD EQ Bytes With ## -## Ends in an error in state: 478. +## Ends in an error in state: 480. ## ## last_expr -> Let let_binding . seq(Attr) In series [ End ] ## @@ -642,26 +642,26 @@ interactive_expr: Begin Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Begin Let With ## -## Ends in an error in state: 434. +## Ends in an error in state: 436. ## ## last_expr -> Let . let_binding seq(Attr) In series [ End ] ## last_expr -> Let . Rec let_binding seq(Attr) In series [ End ] @@ -672,9 +672,9 @@ interactive_expr: Begin Let With -interactive_expr: Begin Match True Type +interactive_expr: Begin Match Verbatim Type ## -## Ends in an error in state: 240. +## Ends in an error in state: 242. ## ## match_expr(seq_expr) -> Match expr . With option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -685,25 +685,25 @@ interactive_expr: Begin Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin Match True With VBAR Begin +interactive_expr: Begin Match Verbatim With VBAR Begin ## -## Ends in an error in state: 243. +## Ends in an error in state: 245. ## ## match_expr(seq_expr) -> Match expr With option(VBAR) . cases(seq_expr) [ SEMI End ] ## @@ -713,9 +713,9 @@ interactive_expr: Begin Match True With VBAR Begin -interactive_expr: Begin Match True With WILD ARROW Bytes VBAR With +interactive_expr: Begin Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 431. +## Ends in an error in state: 433. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ VBAR ] ## cases(seq_expr) -> cases(base_cond) VBAR . case_clause(seq_expr) [ SEMI End ] @@ -726,9 +726,9 @@ interactive_expr: Begin Match True With WILD ARROW Bytes VBAR With -interactive_expr: Begin Match True With WILD ARROW If True Then True Else With +interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 424. +## Ends in an error in state: 426. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ VBAR ] ## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ] @@ -739,9 +739,9 @@ interactive_expr: Begin Match True With WILD ARROW If True Then True Else With -interactive_expr: Begin Match True With WILD ARROW If True Then With +interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 422. +## Ends in an error in state: 424. ## ## if_then(base_cond) -> If expr Then . base_cond [ VBAR ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ VBAR ] @@ -753,9 +753,9 @@ interactive_expr: Begin Match True With WILD ARROW If True Then With -interactive_expr: Begin Match True With WILD ARROW If True With +interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 421. +## Ends in an error in state: 423. ## ## if_then(base_cond) -> If expr . Then base_cond [ VBAR ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ VBAR ] @@ -768,25 +768,25 @@ interactive_expr: Begin Match True With WILD ARROW If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Begin Match True With WILD ARROW If With +interactive_expr: Begin Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 420. +## Ends in an error in state: 422. ## ## if_then(base_cond) -> If . expr Then base_cond [ VBAR ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ VBAR ] @@ -798,9 +798,9 @@ interactive_expr: Begin Match True With WILD ARROW If With -interactive_expr: Begin Match True With WILD ARROW True COMMA Bytes With +interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim COMMA Bytes With ## -## Ends in an error in state: 430. +## Ends in an error in state: 432. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ] ## cases(seq_expr) -> cases(base_cond) . VBAR case_clause(seq_expr) [ SEMI End ] @@ -812,30 +812,30 @@ interactive_expr: Begin Match True With WILD ARROW True COMMA Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 415, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 354, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 355, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 401, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 409, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## -interactive_expr: Begin Match True With WILD ARROW True With +interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim With ## -## Ends in an error in state: 427. +## Ends in an error in state: 429. ## ## base_expr(base_cond) -> disj_expr_level . [ VBAR ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI Or End COMMA BOOL_OR ] @@ -850,22 +850,22 @@ interactive_expr: Begin Match True With WILD ARROW True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Begin Match True With WILD ARROW With +interactive_expr: Begin Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 254. +## Ends in an error in state: 256. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ VBAR ] ## case_clause(seq_expr) -> pattern ARROW . seq_expr [ SEMI End ] @@ -876,9 +876,9 @@ interactive_expr: Begin Match True With WILD ARROW With -interactive_expr: Begin Match True With WILD CONS Bytes SEMI +interactive_expr: Begin Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 253. +## Ends in an error in state: 255. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ VBAR ] ## case_clause(seq_expr) -> pattern . ARROW seq_expr [ SEMI End ] @@ -890,15 +890,15 @@ interactive_expr: Begin Match True With WILD CONS Bytes SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern -## In state 247, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 97, spurious reduction of production tail -> sub_pattern +## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## -interactive_expr: Begin Match True With With +interactive_expr: Begin Match Verbatim With With ## -## Ends in an error in state: 241. +## Ends in an error in state: 243. ## ## match_expr(seq_expr) -> Match expr With . option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -910,7 +910,7 @@ interactive_expr: Begin Match True With With interactive_expr: Begin Match With ## -## Ends in an error in state: 203. +## Ends in an error in state: 205. ## ## match_expr(seq_expr) -> Match . expr With option(VBAR) cases(seq_expr) [ SEMI End ] ## @@ -920,9 +920,9 @@ interactive_expr: Begin Match With -interactive_expr: Begin True SEMI With +interactive_expr: Begin Verbatim SEMI With ## -## Ends in an error in state: 469. +## Ends in an error in state: 471. ## ## option(SEMI) -> SEMI . [ End ] ## series -> seq_expr SEMI . series [ End ] @@ -933,9 +933,9 @@ interactive_expr: Begin True SEMI With -interactive_expr: Begin True With +interactive_expr: Begin Verbatim With ## -## Ends in an error in state: 462. +## Ends in an error in state: 464. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI Or End BOOL_OR ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ SEMI Or End BOOL_OR ] @@ -948,24 +948,24 @@ interactive_expr: Begin True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Begin With ## -## Ends in an error in state: 202. +## Ends in an error in state: 204. ## -## sequence -> Begin . option(series) End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## sequence -> Begin . option(series) End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Begin @@ -975,7 +975,7 @@ interactive_expr: Begin With interactive_expr: C_None WILD ## -## Ends in an error in state: 219. +## Ends in an error in state: 221. ## ## add_expr_level -> mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -990,7 +990,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some With ## -## Ends in an error in state: 204. +## Ends in an error in state: 206. ## ## constr_expr -> C_Some . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -1002,9 +1002,9 @@ interactive_expr: C_Some With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 197. +## Ends in an error in state: 199. ## -## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident DOT @@ -1014,10 +1014,10 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 196. +## Ends in an error in state: 198. ## -## module_fun -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_fun -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident @@ -1027,10 +1027,10 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT With ## -## Ends in an error in state: 194. +## Ends in an error in state: 196. ## -## module_field -> Constr DOT . module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_field -> Constr DOT . module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -1040,12 +1040,12 @@ interactive_expr: Constr DOT With interactive_expr: Constr WILD ## -## Ends in an error in state: 193. +## Ends in an error in state: 195. ## ## constr_expr -> Constr . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## constr_expr -> Constr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] -## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr @@ -1055,7 +1055,7 @@ interactive_expr: Constr WILD interactive_expr: Fun WILD ARROW With ## -## Ends in an error in state: 191. +## Ends in an error in state: 193. ## ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1067,7 +1067,7 @@ interactive_expr: Fun WILD ARROW With interactive_expr: Fun WILD RPAR ## -## Ends in an error in state: 357. +## Ends in an error in state: 359. ## ## nseq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -1078,14 +1078,14 @@ interactive_expr: Fun WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun WILD WILD RPAR ## -## Ends in an error in state: 359. +## Ends in an error in state: 361. ## ## seq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ] ## @@ -1096,14 +1096,14 @@ interactive_expr: Fun WILD WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## interactive_expr: Fun With ## -## Ends in an error in state: 189. +## Ends in an error in state: 191. ## ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1115,9 +1115,9 @@ interactive_expr: Fun With interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 186. +## Ends in an error in state: 188. ## -## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## selection DOT @@ -1127,10 +1127,10 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int WILD ## -## Ends in an error in state: 185. +## Ends in an error in state: 187. ## -## nsepseq(selection,DOT) -> selection . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## nsepseq(selection,DOT) -> selection . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## selection @@ -1140,9 +1140,9 @@ interactive_expr: Ident DOT Int WILD interactive_expr: Ident DOT With ## -## Ends in an error in state: 182. +## Ends in an error in state: 184. ## -## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Ident DOT @@ -1152,10 +1152,10 @@ interactive_expr: Ident DOT With interactive_expr: Ident WILD ## -## Ends in an error in state: 181. +## Ends in an error in state: 183. ## -## core_expr -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## core_expr -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Ident @@ -1163,9 +1163,9 @@ interactive_expr: Ident WILD -interactive_expr: If True Then Fun WILD ARROW With +interactive_expr: If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 504. +## Ends in an error in state: 506. ## ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] ## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1176,9 +1176,9 @@ interactive_expr: If True Then Fun WILD ARROW With -interactive_expr: If True Then Fun With +interactive_expr: If Verbatim Then Fun With ## -## Ends in an error in state: 502. +## Ends in an error in state: 504. ## ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] ## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1189,9 +1189,9 @@ interactive_expr: If True Then Fun With -interactive_expr: If True Then If True Then True Else With +interactive_expr: If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 509. +## Ends in an error in state: 511. ## ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1202,9 +1202,9 @@ interactive_expr: If True Then If True Then True Else With -interactive_expr: If True Then If True Then With +interactive_expr: If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 501. +## Ends in an error in state: 503. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ] @@ -1216,9 +1216,9 @@ interactive_expr: If True Then If True Then With -interactive_expr: If True Then If True With +interactive_expr: If Verbatim Then If Verbatim With ## -## Ends in an error in state: 500. +## Ends in an error in state: 502. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ] @@ -1231,25 +1231,25 @@ interactive_expr: If True Then If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If True Then If With +interactive_expr: If Verbatim Then If With ## -## Ends in an error in state: 499. +## Ends in an error in state: 501. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ] @@ -1261,9 +1261,9 @@ interactive_expr: If True Then If With -interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 497. +## Ends in an error in state: 499. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1275,15 +1275,15 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Let Rec WILD EQ Bytes In With +interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 498. +## Ends in an error in state: 500. ## ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1294,9 +1294,9 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes In With -interactive_expr: If True Then Let Rec WILD EQ Bytes With +interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 496. +## Ends in an error in state: 498. ## ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1308,26 +1308,26 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Let Rec With +interactive_expr: If Verbatim Then Let Rec With ## -## Ends in an error in state: 495. +## Ends in an error in state: 497. ## ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1338,9 +1338,9 @@ interactive_expr: If True Then Let Rec With -interactive_expr: If True Then Let WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 513. +## Ends in an error in state: 515. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1352,15 +1352,15 @@ interactive_expr: If True Then Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Let WILD EQ Bytes In With +interactive_expr: If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 514. +## Ends in an error in state: 516. ## ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1371,9 +1371,9 @@ interactive_expr: If True Then Let WILD EQ Bytes In With -interactive_expr: If True Then Let WILD EQ Bytes With +interactive_expr: If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 512. +## Ends in an error in state: 514. ## ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1385,26 +1385,26 @@ interactive_expr: If True Then Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Let With +interactive_expr: If Verbatim Then Let With ## -## Ends in an error in state: 494. +## Ends in an error in state: 496. ## ## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ] ## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ] @@ -1417,9 +1417,9 @@ interactive_expr: If True Then Let With -interactive_expr: If True Then Match True Type +interactive_expr: If Verbatim Then Match Verbatim Type ## -## Ends in an error in state: 490. +## Ends in an error in state: 492. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ] @@ -1431,25 +1431,25 @@ interactive_expr: If True Then Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If True Then Match True With VBAR Begin +interactive_expr: If Verbatim Then Match Verbatim With VBAR Begin ## -## Ends in an error in state: 492. +## Ends in an error in state: 494. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ] @@ -1460,9 +1460,9 @@ interactive_expr: If True Then Match True With VBAR Begin -interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 405. +## Ends in an error in state: 407. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## cases(base_if_then_else) -> cases(base_cond) VBAR . case_clause(base_if_then_else) [ Else ] @@ -1473,9 +1473,9 @@ interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With -interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 385. +## Ends in an error in state: 387. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun nseq(irrefutable) ARROW . base_if_then_else [ Else ] @@ -1486,9 +1486,9 @@ interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With -interactive_expr: If True Then Match True With WILD ARROW Fun With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun With ## -## Ends in an error in state: 383. +## Ends in an error in state: 385. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(base_if_then_else) -> Fun . nseq(irrefutable) ARROW base_if_then_else [ Else ] @@ -1499,9 +1499,9 @@ interactive_expr: If True Then Match True With WILD ARROW Fun With -interactive_expr: If True Then Match True With WILD ARROW If True Then True Else With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 382. +## Ends in an error in state: 384. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_if_then_else) -> If expr Then closed_if Else . base_if_then_else [ Else ] @@ -1512,9 +1512,9 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then True Else -interactive_expr: If True Then Match True With WILD ARROW If True Then With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 276. +## Ends in an error in state: 278. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1526,9 +1526,9 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then With -interactive_expr: If True Then Match True With WILD ARROW If True With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 275. +## Ends in an error in state: 277. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1541,25 +1541,25 @@ interactive_expr: If True Then Match True With WILD ARROW If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If True Then Match True With WILD ARROW If With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 274. +## Ends in an error in state: 276. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1571,9 +1571,9 @@ interactive_expr: If True Then Match True With WILD ARROW If With -interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 272. +## Ends in an error in state: 274. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -1585,15 +1585,15 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes In With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 273. +## Ends in an error in state: 275. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -1604,9 +1604,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes -interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 271. +## Ends in an error in state: 273. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -1618,26 +1618,26 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Match True With WILD ARROW Let Rec With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec With ## -## Ends in an error in state: 270. +## Ends in an error in state: 272. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let Rec . let_binding seq(Attr) In base_if_then_else [ Else ] @@ -1648,9 +1648,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec With -interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr Type +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 397. +## Ends in an error in state: 399. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) . In base_if_then_else [ Else ] @@ -1662,15 +1662,15 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 398. +## Ends in an error in state: 400. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding seq(Attr) In . base_if_then_else [ Else ] @@ -1681,9 +1681,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In W -interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 396. +## Ends in an error in state: 398. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_if_then_else) -> Let let_binding . seq(Attr) In base_if_then_else [ Else ] @@ -1695,26 +1695,26 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: If True Then Match True With WILD ARROW Let With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let With ## -## Ends in an error in state: 269. +## Ends in an error in state: 271. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1727,9 +1727,9 @@ interactive_expr: If True Then Match True With WILD ARROW Let With -interactive_expr: If True Then Match True With WILD ARROW True End +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Verbatim End ## -## Ends in an error in state: 390. +## Ends in an error in state: 392. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## base_expr(base_if_then_else) -> disj_expr_level . [ Else ] @@ -1744,22 +1744,22 @@ interactive_expr: If True Then Match True With WILD ARROW True End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: If True Then Match True With WILD ARROW With +interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 268. +## Ends in an error in state: 270. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern ARROW . base_if_then_else [ Else ] @@ -1770,9 +1770,9 @@ interactive_expr: If True Then Match True With WILD ARROW With -interactive_expr: If True Then Match True With WILD CONS Bytes SEMI +interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 267. +## Ends in an error in state: 269. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## case_clause(base_if_then_else) -> pattern . ARROW base_if_then_else [ Else ] @@ -1784,15 +1784,15 @@ interactive_expr: If True Then Match True With WILD CONS Bytes SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern -## In state 247, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 97, spurious reduction of production tail -> sub_pattern +## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## -interactive_expr: If True Then Match True With With +interactive_expr: If Verbatim Then Match Verbatim With With ## -## Ends in an error in state: 491. +## Ends in an error in state: 493. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ] @@ -1803,9 +1803,9 @@ interactive_expr: If True Then Match True With With -interactive_expr: If True Then Match With +interactive_expr: If Verbatim Then Match With ## -## Ends in an error in state: 489. +## Ends in an error in state: 491. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ] @@ -1816,9 +1816,9 @@ interactive_expr: If True Then Match With -interactive_expr: If True Then True COMMA Bytes VBAR +interactive_expr: If Verbatim Then Verbatim COMMA Bytes VBAR ## -## Ends in an error in state: 505. +## Ends in an error in state: 507. ## ## base_expr(closed_if) -> tuple_expr . [ Else ] ## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1830,25 +1830,25 @@ interactive_expr: If True Then True COMMA Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) ## -interactive_expr: If True Then True Else With +interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 517. +## Ends in an error in state: 519. ## ## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -1858,9 +1858,9 @@ interactive_expr: If True Then True Else With -interactive_expr: If True Then True VBAR +interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 506. +## Ends in an error in state: 508. ## ## base_expr(closed_if) -> disj_expr_level . [ Else ] ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1875,22 +1875,22 @@ interactive_expr: If True Then True VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: If True Then With +interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 488. +## Ends in an error in state: 490. ## ## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1901,9 +1901,9 @@ interactive_expr: If True Then With -interactive_expr: If True With +interactive_expr: If Verbatim With ## -## Ends in an error in state: 487. +## Ends in an error in state: 489. ## ## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1915,25 +1915,25 @@ interactive_expr: If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If With ## -## Ends in an error in state: 180. +## Ends in an error in state: 182. ## ## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -1946,7 +1946,7 @@ interactive_expr: If With interactive_expr: LBRACE Constr DOT Ident With ## -## Ends in an error in state: 521. +## Ends in an error in state: 523. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With ] ## @@ -1958,7 +1958,7 @@ interactive_expr: LBRACE Constr DOT Ident With interactive_expr: LBRACE Constr DOT With ## -## Ends in an error in state: 520. +## Ends in an error in state: 522. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -1970,7 +1970,7 @@ interactive_expr: LBRACE Constr DOT With interactive_expr: LBRACE Constr With ## -## Ends in an error in state: 519. +## Ends in an error in state: 521. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With ] ## @@ -1980,11 +1980,11 @@ interactive_expr: LBRACE Constr With -interactive_expr: LBRACE Ident DOT Ident VBAR +interactive_expr: LBRACE Ident DOT Ident Verbatim ## -## Ends in an error in state: 525. +## Ends in an error in state: 527. ## -## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE path @@ -1993,16 +1993,16 @@ interactive_expr: LBRACE Ident DOT Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 185, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 188, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 524, spurious reduction of production path -> projection +## In state 187, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 190, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 526, spurious reduction of production path -> projection ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 552. +## Ends in an error in state: 551. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2015,7 +2015,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 551. +## Ends in an error in state: 550. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2028,26 +2028,26 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 518, spurious reduction of production field_assignment -> Ident EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 520, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 548. +## Ends in an error in state: 547. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -2059,7 +2059,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 547. +## Ends in an error in state: 546. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2072,7 +2072,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 546. +## Ends in an error in state: 545. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2085,26 +2085,26 @@ interactive_expr: LBRACE Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 518, spurious reduction of production field_assignment -> Ident EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 520, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: LBRACE Ident EQ With ## -## Ends in an error in state: 178. +## Ends in an error in state: 180. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACE ] ## @@ -2116,7 +2116,7 @@ interactive_expr: LBRACE Ident EQ With interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 177. +## Ends in an error in state: 179. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## path -> Ident . [ With ] @@ -2128,21 +2128,9 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE Ident With Ident DOT With +interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes SEMI With ## -## Ends in an error in state: 528. -## -## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] -## -## The known suffix of the stack is as follows: -## Ident DOT -## - - - -interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -## -## Ends in an error in state: 542. +## Ends in an error in state: 541. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -2153,9 +2141,9 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With +interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes With ## -## Ends in an error in state: 541. +## Ends in an error in state: 540. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2168,26 +2156,26 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 536, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 534, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With +interactive_expr: LBRACE Ident With Int EQ Bytes SEMI With ## -## Ends in an error in state: 538. +## Ends in an error in state: 537. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -2198,9 +2186,9 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Ident EQ Bytes With +interactive_expr: LBRACE Ident With Int EQ Bytes With ## -## Ends in an error in state: 537. +## Ends in an error in state: 536. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2213,53 +2201,58 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 536, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 534, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: LBRACE Ident With Ident EQ With +interactive_expr: LBRACE Ident With Int EQ With ## -## Ends in an error in state: 535. +## Ends in an error in state: 533. ## -## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ] +## field_path_assignment -> nsepseq(selection,DOT) EQ . expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## nsepseq(field_name,DOT) EQ +## nsepseq(selection,DOT) EQ ## -interactive_expr: LBRACE Ident With Ident With +interactive_expr: LBRACE Ident With Int With ## -## Ends in an error in state: 527. +## Ends in an error in state: 532. ## -## nsepseq(field_name,DOT) -> Ident . [ EQ ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] +## field_path_assignment -> nsepseq(selection,DOT) . EQ expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## Ident +## nsepseq(selection,DOT) +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 187, spurious reduction of production nsepseq(selection,DOT) -> selection ## interactive_expr: LBRACE Ident With With ## -## Ends in an error in state: 526. +## Ends in an error in state: 528. ## -## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE path With @@ -2269,10 +2262,10 @@ interactive_expr: LBRACE Ident With With interactive_expr: LBRACE With ## -## Ends in an error in state: 176. +## Ends in an error in state: 178. ## -## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE @@ -2280,9 +2273,9 @@ interactive_expr: LBRACE With -interactive_expr: LBRACKET True SEMI True SEMI With +interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 567. +## Ends in an error in state: 566. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2293,9 +2286,9 @@ interactive_expr: LBRACKET True SEMI True SEMI With -interactive_expr: LBRACKET True SEMI True With +interactive_expr: LBRACKET Verbatim SEMI Verbatim With ## -## Ends in an error in state: 566. +## Ends in an error in state: 565. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2308,25 +2301,25 @@ interactive_expr: LBRACKET True SEMI True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: LBRACKET True SEMI With +interactive_expr: LBRACKET Verbatim SEMI With ## -## Ends in an error in state: 563. +## Ends in an error in state: 562. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2337,9 +2330,9 @@ interactive_expr: LBRACKET True SEMI With -interactive_expr: LBRACKET True With +interactive_expr: LBRACKET Verbatim With ## -## Ends in an error in state: 562. +## Ends in an error in state: 561. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2352,27 +2345,27 @@ interactive_expr: LBRACKET True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET With ## -## Ends in an error in state: 168. +## Ends in an error in state: 170. ## -## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LBRACKET @@ -2380,11 +2373,11 @@ interactive_expr: LBRACKET With -interactive_expr: LPAR True COLON String VBAR +interactive_expr: LPAR Verbatim COLON String VBAR ## -## Ends in an error in state: 580. +## Ends in an error in state: 579. ## -## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR expr COLON type_expr @@ -2400,11 +2393,11 @@ interactive_expr: LPAR True COLON String VBAR -interactive_expr: LPAR True COLON With +interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 579. +## Ends in an error in state: 578. ## -## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR expr COLON @@ -2412,12 +2405,12 @@ interactive_expr: LPAR True COLON With -interactive_expr: LPAR True With +interactive_expr: LPAR Verbatim With ## -## Ends in an error in state: 577. +## Ends in an error in state: 576. ## -## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## par(expr) -> LPAR expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR expr @@ -2426,29 +2419,29 @@ interactive_expr: LPAR True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LPAR With ## -## Ends in an error in state: 165. +## Ends in an error in state: 167. ## -## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## par(expr) -> LPAR . expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## unit -> LPAR . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(expr) -> LPAR . expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## unit -> LPAR . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -2458,7 +2451,7 @@ interactive_expr: LPAR With interactive_expr: Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 174. +## Ends in an error in state: 176. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2469,15 +2462,15 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 175. +## Ends in an error in state: 177. ## ## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2489,7 +2482,7 @@ interactive_expr: Let Rec WILD EQ Bytes In With interactive_expr: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 171. +## Ends in an error in state: 173. ## ## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2500,26 +2493,26 @@ interactive_expr: Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let Rec With ## -## Ends in an error in state: 170. +## Ends in an error in state: 172. ## ## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2531,7 +2524,7 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 555. +## Ends in an error in state: 554. ## ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2542,15 +2535,15 @@ interactive_expr: Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 556. +## Ends in an error in state: 555. ## ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2562,7 +2555,7 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 554. +## Ends in an error in state: 553. ## ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2573,26 +2566,26 @@ interactive_expr: Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## interactive_expr: Let With ## -## Ends in an error in state: 169. +## Ends in an error in state: 171. ## ## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2605,7 +2598,7 @@ interactive_expr: Let With interactive_expr: MINUS With ## -## Ends in an error in state: 167. +## Ends in an error in state: 169. ## ## unary_expr_level -> MINUS . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -2615,9 +2608,9 @@ interactive_expr: MINUS With -interactive_expr: Match True Type +interactive_expr: Match Verbatim Type ## -## Ends in an error in state: 570. +## Ends in an error in state: 569. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2628,25 +2621,25 @@ interactive_expr: Match True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Match True With LPAR Bytes RPAR With +interactive_expr: Match Verbatim With LPAR Bytes RPAR With ## -## Ends in an error in state: 245. +## Ends in an error in state: 247. ## ## pattern -> sub_pattern . CONS tail [ ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -2657,9 +2650,9 @@ interactive_expr: Match True With LPAR Bytes RPAR With -interactive_expr: Match True With VBAR Begin +interactive_expr: Match Verbatim With VBAR Begin ## -## Ends in an error in state: 572. +## Ends in an error in state: 571. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2669,9 +2662,9 @@ interactive_expr: Match True With VBAR Begin -interactive_expr: Match True With WILD ARROW Bytes VBAR With +interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 576. +## Ends in an error in state: 575. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2681,9 +2674,9 @@ interactive_expr: Match True With WILD ARROW Bytes VBAR With -interactive_expr: Match True With WILD ARROW Fun WILD ARROW With +interactive_expr: Match Verbatim With WILD ARROW Fun WILD ARROW With ## -## Ends in an error in state: 414. +## Ends in an error in state: 416. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2693,9 +2686,9 @@ interactive_expr: Match True With WILD ARROW Fun WILD ARROW With -interactive_expr: Match True With WILD ARROW Fun With +interactive_expr: Match Verbatim With WILD ARROW Fun With ## -## Ends in an error in state: 412. +## Ends in an error in state: 414. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2705,9 +2698,9 @@ interactive_expr: Match True With WILD ARROW Fun With -interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun WILD ARROW With ## -## Ends in an error in state: 287. +## Ends in an error in state: 289. ## ## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ] @@ -2718,9 +2711,9 @@ interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With -interactive_expr: Match True With WILD ARROW If True Then Fun With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun With ## -## Ends in an error in state: 285. +## Ends in an error in state: 287. ## ## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ] @@ -2731,9 +2724,9 @@ interactive_expr: Match True With WILD ARROW If True Then Fun With -interactive_expr: Match True With WILD ARROW If True Then If True Then True Else With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 362. +## Ends in an error in state: 364. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ] @@ -2744,9 +2737,9 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then True Else -interactive_expr: Match True With WILD ARROW If True Then If True Then With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then With ## -## Ends in an error in state: 284. +## Ends in an error in state: 286. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2758,9 +2751,9 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then With -interactive_expr: Match True With WILD ARROW If True Then If True With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim With ## -## Ends in an error in state: 283. +## Ends in an error in state: 285. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2773,25 +2766,25 @@ interactive_expr: Match True With WILD ARROW If True Then If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Match True With WILD ARROW If True Then If With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If With ## -## Ends in an error in state: 282. +## Ends in an error in state: 284. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2803,9 +2796,9 @@ interactive_expr: Match True With WILD ARROW If True Then If With -interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 280. +## Ends in an error in state: 282. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ] @@ -2817,15 +2810,15 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 281. +## Ends in an error in state: 283. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ] @@ -2836,9 +2829,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes -interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 279. +## Ends in an error in state: 281. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ] @@ -2850,26 +2843,26 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW If True Then Let Rec With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec With ## -## Ends in an error in state: 278. +## Ends in an error in state: 280. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ] @@ -2880,9 +2873,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec With -interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 377. +## Ends in an error in state: 379. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ] @@ -2894,15 +2887,15 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes In With ## -## Ends in an error in state: 378. +## Ends in an error in state: 380. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ] @@ -2913,9 +2906,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In W -interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes With ## -## Ends in an error in state: 376. +## Ends in an error in state: 378. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ] @@ -2927,26 +2920,26 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW If True Then Let With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let With ## -## Ends in an error in state: 277. +## Ends in an error in state: 279. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -2959,9 +2952,9 @@ interactive_expr: Match True With WILD ARROW If True Then Let With -interactive_expr: Match True With WILD ARROW If True Then True Else With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 411. +## Ends in an error in state: 413. ## ## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2971,9 +2964,9 @@ interactive_expr: Match True With WILD ARROW If True Then True Else With -interactive_expr: Match True With WILD ARROW If True Then True End +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim End ## -## Ends in an error in state: 297. +## Ends in an error in state: 299. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## base_expr(closed_if) -> disj_expr_level . [ Else ] @@ -2988,22 +2981,22 @@ interactive_expr: Match True With WILD ARROW If True Then True End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Match True With WILD ARROW If True Then With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then With ## -## Ends in an error in state: 262. +## Ends in an error in state: 264. ## ## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3014,9 +3007,9 @@ interactive_expr: Match True With WILD ARROW If True Then With -interactive_expr: Match True With WILD ARROW If True With +interactive_expr: Match Verbatim With WILD ARROW If Verbatim With ## -## Ends in an error in state: 261. +## Ends in an error in state: 263. ## ## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3028,25 +3021,25 @@ interactive_expr: Match True With WILD ARROW If True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Match True With WILD ARROW If With +interactive_expr: Match Verbatim With WILD ARROW If With ## -## Ends in an error in state: 260. +## Ends in an error in state: 262. ## ## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3057,9 +3050,9 @@ interactive_expr: Match True With WILD ARROW If With -interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## -## Ends in an error in state: 258. +## Ends in an error in state: 260. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3070,15 +3063,15 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With ## -## Ends in an error in state: 259. +## Ends in an error in state: 261. ## ## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3088,9 +3081,9 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With -interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 257. +## Ends in an error in state: 259. ## ## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3101,26 +3094,26 @@ interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW Let Rec With +interactive_expr: Match Verbatim With WILD ARROW Let Rec With ## -## Ends in an error in state: 256. +## Ends in an error in state: 258. ## ## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3130,9 +3123,9 @@ interactive_expr: Match True With WILD ARROW Let Rec With -interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type +interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 418. +## Ends in an error in state: 420. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3143,15 +3136,15 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 172, spurious reduction of production seq(Attr) -> -## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr) +## In state 174, spurious reduction of production seq(Attr) -> +## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr) ## -interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With +interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes In With ## -## Ends in an error in state: 419. +## Ends in an error in state: 421. ## ## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3161,9 +3154,9 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With -interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With +interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes With ## -## Ends in an error in state: 417. +## Ends in an error in state: 419. ## ## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3174,26 +3167,26 @@ interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## -interactive_expr: Match True With WILD ARROW Let With +interactive_expr: Match Verbatim With WILD ARROW Let With ## -## Ends in an error in state: 255. +## Ends in an error in state: 257. ## ## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3204,9 +3197,9 @@ interactive_expr: Match True With WILD ARROW Let With -interactive_expr: Match True With WILD ARROW True COMMA Bytes Else +interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else ## -## Ends in an error in state: 575. +## Ends in an error in state: 574. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3218,30 +3211,30 @@ interactive_expr: Match True With WILD ARROW True COMMA Bytes Else ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 342, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level -## In state 341, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) -## In state 218, spurious reduction of production tuple_expr -> tuple(disj_expr_level) -## In state 415, spurious reduction of production base_expr(base_cond) -> tuple_expr -## In state 354, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 355, spurious reduction of production base_cond -> base_cond__open(base_cond) -## In state 401, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond -## In state 409, spurious reduction of production cases(base_cond) -> case_clause(base_cond) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level +## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA) +## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level) +## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr +## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond +## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond) ## -interactive_expr: Match True With WILD ARROW True End +interactive_expr: Match Verbatim With WILD ARROW Verbatim End ## -## Ends in an error in state: 416. +## Ends in an error in state: 418. ## ## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] @@ -3255,22 +3248,22 @@ interactive_expr: Match True With WILD ARROW True End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Match True With WILD ARROW With +interactive_expr: Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 574. +## Ends in an error in state: 573. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3280,9 +3273,9 @@ interactive_expr: Match True With WILD ARROW With -interactive_expr: Match True With WILD COMMA WILD COMMA With +interactive_expr: Match Verbatim With WILD COMMA WILD COMMA With ## -## Ends in an error in state: 250. +## Ends in an error in state: 252. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -3292,9 +3285,9 @@ interactive_expr: Match True With WILD COMMA WILD COMMA With -interactive_expr: Match True With WILD COMMA WILD With +interactive_expr: Match Verbatim With WILD COMMA WILD With ## -## Ends in an error in state: 249. +## Ends in an error in state: 251. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] @@ -3305,9 +3298,9 @@ interactive_expr: Match True With WILD COMMA WILD With -interactive_expr: Match True With WILD COMMA With +interactive_expr: Match Verbatim With WILD COMMA With ## -## Ends in an error in state: 248. +## Ends in an error in state: 250. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -3317,9 +3310,9 @@ interactive_expr: Match True With WILD COMMA With -interactive_expr: Match True With WILD CONS Bytes SEMI +interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 573. +## Ends in an error in state: 572. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3330,15 +3323,15 @@ interactive_expr: Match True With WILD CONS Bytes SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern -## In state 247, spurious reduction of production pattern -> sub_pattern CONS tail +## In state 97, spurious reduction of production tail -> sub_pattern +## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail ## -interactive_expr: Match True With WILD CONS With +interactive_expr: Match Verbatim With WILD CONS With ## -## Ends in an error in state: 246. +## Ends in an error in state: 248. ## ## pattern -> sub_pattern CONS . tail [ ARROW ] ## @@ -3348,9 +3341,9 @@ interactive_expr: Match True With WILD CONS With -interactive_expr: Match True With WILD With +interactive_expr: Match Verbatim With WILD With ## -## Ends in an error in state: 402. +## Ends in an error in state: 404. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ CONS COMMA ] @@ -3361,9 +3354,9 @@ interactive_expr: Match True With WILD With -interactive_expr: Match True With With +interactive_expr: Match Verbatim With With ## -## Ends in an error in state: 571. +## Ends in an error in state: 570. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3375,7 +3368,7 @@ interactive_expr: Match True With With interactive_expr: Match With ## -## Ends in an error in state: 166. +## Ends in an error in state: 168. ## ## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3387,7 +3380,7 @@ interactive_expr: Match With interactive_expr: Not With ## -## Ends in an error in state: 162. +## Ends in an error in state: 164. ## ## unary_expr_level -> Not . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3397,9 +3390,9 @@ interactive_expr: Not With -interactive_expr: True BOOL_AND With +interactive_expr: Verbatim BOOL_AND With ## -## Ends in an error in state: 317. +## Ends in an error in state: 319. ## ## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3409,9 +3402,9 @@ interactive_expr: True BOOL_AND With -interactive_expr: True BOOL_OR With +interactive_expr: Verbatim BOOL_OR With ## -## Ends in an error in state: 348. +## Ends in an error in state: 350. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] ## @@ -3421,9 +3414,9 @@ interactive_expr: True BOOL_OR With -interactive_expr: True CAT With +interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 300. +## Ends in an error in state: 302. ## ## bin_op(cons_expr_level,CAT,cat_expr_level) -> cons_expr_level CAT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3433,9 +3426,9 @@ interactive_expr: True CAT With -interactive_expr: True COMMA True COMMA With +interactive_expr: Verbatim COMMA Verbatim COMMA With ## -## Ends in an error in state: 343. +## Ends in an error in state: 345. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## @@ -3445,9 +3438,9 @@ interactive_expr: True COMMA True COMMA With -interactive_expr: True COMMA True End +interactive_expr: Verbatim COMMA Verbatim End ## -## Ends in an error in state: 342. +## Ends in an error in state: 344. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ] @@ -3461,22 +3454,22 @@ interactive_expr: True COMMA True End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: True COMMA With +interactive_expr: Verbatim COMMA With ## -## Ends in an error in state: 340. +## Ends in an error in state: 342. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ] ## @@ -3486,9 +3479,9 @@ interactive_expr: True COMMA With -interactive_expr: True CONS With +interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 314. +## Ends in an error in state: 316. ## ## bin_op(add_expr_level,CONS,cons_expr_level) -> add_expr_level CONS . cons_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3498,12 +3491,12 @@ interactive_expr: True CONS With -interactive_expr: True Constr With +interactive_expr: Verbatim Constr With ## -## Ends in an error in state: 200. +## Ends in an error in state: 202. ## -## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] -## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: ## Constr @@ -3511,9 +3504,9 @@ interactive_expr: True Constr With -interactive_expr: True EQ With +interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 329. +## Ends in an error in state: 331. ## ## bin_op(comp_expr_level,EQ,cat_expr_level) -> comp_expr_level EQ . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3523,9 +3516,9 @@ interactive_expr: True EQ With -interactive_expr: True GE With +interactive_expr: Verbatim GE With ## -## Ends in an error in state: 327. +## Ends in an error in state: 329. ## ## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3535,9 +3528,9 @@ interactive_expr: True GE With -interactive_expr: True GT With +interactive_expr: Verbatim GT With ## -## Ends in an error in state: 325. +## Ends in an error in state: 327. ## ## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3547,9 +3540,9 @@ interactive_expr: True GT With -interactive_expr: True LE With +interactive_expr: Verbatim LE With ## -## Ends in an error in state: 323. +## Ends in an error in state: 325. ## ## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3559,9 +3552,9 @@ interactive_expr: True LE With -interactive_expr: True LT With +interactive_expr: Verbatim LT With ## -## Ends in an error in state: 321. +## Ends in an error in state: 323. ## ## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3571,9 +3564,9 @@ interactive_expr: True LT With -interactive_expr: True MINUS C_None WILD +interactive_expr: Verbatim MINUS C_None WILD ## -## Ends in an error in state: 313. +## Ends in an error in state: 315. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -3586,9 +3579,9 @@ interactive_expr: True MINUS C_None WILD -interactive_expr: True MINUS With +interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 312. +## Ends in an error in state: 314. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3598,9 +3591,9 @@ interactive_expr: True MINUS With -interactive_expr: True Mod With +interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 233. +## Ends in an error in state: 235. ## ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3610,9 +3603,9 @@ interactive_expr: True Mod With -interactive_expr: True NE With +interactive_expr: Verbatim NE With ## -## Ends in an error in state: 319. +## Ends in an error in state: 321. ## ## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ] ## @@ -3622,9 +3615,9 @@ interactive_expr: True NE With -interactive_expr: True Or With +interactive_expr: Verbatim Or With ## -## Ends in an error in state: 298. +## Ends in an error in state: 300. ## ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ] ## @@ -3634,9 +3627,9 @@ interactive_expr: True Or With -interactive_expr: True PLUS C_None WILD +interactive_expr: Verbatim PLUS C_None WILD ## -## Ends in an error in state: 311. +## Ends in an error in state: 313. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -3649,9 +3642,9 @@ interactive_expr: True PLUS C_None WILD -interactive_expr: True PLUS With +interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 310. +## Ends in an error in state: 312. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3661,9 +3654,9 @@ interactive_expr: True PLUS With -interactive_expr: True SLASH With +interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 231. +## Ends in an error in state: 233. ## ## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3673,9 +3666,9 @@ interactive_expr: True SLASH With -interactive_expr: True TIMES With +interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 220. +## Ends in an error in state: 222. ## ## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## @@ -3685,33 +3678,9 @@ interactive_expr: True TIMES With -interactive_expr: True True True WILD +interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 226. -## -## seq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## core_expr -## - - - -interactive_expr: True True WILD -## -## Ends in an error in state: 224. -## -## nseq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] -## -## The known suffix of the stack is as follows: -## core_expr -## - - - -interactive_expr: True VBAR -## -## Ends in an error in state: 366. +## Ends in an error in state: 368. ## ## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ] @@ -3725,22 +3694,46 @@ interactive_expr: True VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: True WILD +interactive_expr: Verbatim Verbatim Verbatim WILD ## -## Ends in an error in state: 222. +## Ends in an error in state: 228. +## +## seq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] +## +## The known suffix of the stack is as follows: +## core_expr +## + + + +interactive_expr: Verbatim Verbatim WILD +## +## Ends in an error in state: 226. +## +## nseq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] +## +## The known suffix of the stack is as follows: +## core_expr +## + + + +interactive_expr: Verbatim WILD +## +## Ends in an error in state: 224. ## ## call_expr -> core_expr . nseq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] ## call_expr_level -> core_expr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ] @@ -3751,9 +3744,9 @@ interactive_expr: True WILD -interactive_expr: True With +interactive_expr: Verbatim With ## -## Ends in an error in state: 597. +## Ends in an error in state: 596. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -3764,25 +3757,25 @@ interactive_expr: True With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: With ## -## Ends in an error in state: 595. +## Ends in an error in state: 594. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -3794,7 +3787,7 @@ interactive_expr: With contract: Let Ident WILD COLON String VBAR ## -## Ends in an error in state: 158. +## Ends in an error in state: 159. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -3808,15 +3801,15 @@ contract: Let Ident WILD COLON String VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type -## In state 156, spurious reduction of production type_annotation -> COLON type_expr -## In state 157, spurious reduction of production option(type_annotation) -> type_annotation +## In state 157, spurious reduction of production type_annotation -> COLON type_expr +## In state 158, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let Ident WILD EQ With ## -## Ends in an error in state: 159. +## Ends in an error in state: 160. ## ## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -3828,7 +3821,7 @@ contract: Let Ident WILD EQ With contract: Let Ident WILD WILD With ## -## Ends in an error in state: 151. +## Ends in an error in state: 152. ## ## seq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -3840,7 +3833,7 @@ contract: Let Ident WILD WILD With contract: Let Ident WILD With ## -## Ends in an error in state: 150. +## Ends in an error in state: 151. ## ## nseq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ] ## @@ -3852,7 +3845,7 @@ contract: Let Ident WILD With contract: Let Ident With ## -## Ends in an error in state: 149. +## Ends in an error in state: 150. ## ## let_binding -> Ident . nseq(sub_irrefutable) option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## sub_irrefutable -> Ident . [ EQ COMMA COLON ] @@ -3865,7 +3858,7 @@ contract: Let Ident With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 127. +## Ends in an error in state: 128. ## ## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ] @@ -3878,7 +3871,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 126. +## Ends in an error in state: 127. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -3892,7 +3885,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With contract: Let LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 123. +## Ends in an error in state: 124. ## ## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ] @@ -3905,7 +3898,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI With contract: Let LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 122. +## Ends in an error in state: 123. ## ## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ] @@ -3955,7 +3948,7 @@ contract: Let LBRACE With contract: Let LPAR Constr C_Some With ## -## Ends in an error in state: 80. +## Ends in an error in state: 81. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -3967,7 +3960,7 @@ contract: Let LPAR Constr C_Some With contract: Let LPAR Constr Constr With ## -## Ends in an error in state: 79. +## Ends in an error in state: 80. ## ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -3980,7 +3973,7 @@ contract: Let LPAR Constr Constr With contract: Let LPAR Constr LBRACKET WILD RPAR ## -## Ends in an error in state: 92. +## Ends in an error in state: 93. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -3993,14 +3986,14 @@ contract: Let LPAR Constr LBRACKET WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR ## -## Ends in an error in state: 94. +## Ends in an error in state: 95. ## ## nsepseq(tail,SEMI) -> tail . [ RBRACKET ] ## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ] @@ -4013,14 +4006,14 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With ## -## Ends in an error in state: 95. +## Ends in an error in state: 96. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## seq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -4033,7 +4026,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With contract: Let LPAR Constr LBRACKET WILD SEMI With ## -## Ends in an error in state: 93. +## Ends in an error in state: 94. ## ## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ] @@ -4046,7 +4039,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI With contract: Let LPAR Constr LBRACKET With ## -## Ends in an error in state: 75. +## Ends in an error in state: 76. ## ## list__(tail) -> LBRACKET . option(sep_or_term_list(tail,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## @@ -4058,7 +4051,7 @@ contract: Let LPAR Constr LBRACKET With contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With ## -## Ends in an error in state: 112. +## Ends in an error in state: 113. ## ## nsepseq(tail,COMMA) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -4070,7 +4063,7 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI ## -## Ends in an error in state: 111. +## Ends in an error in state: 112. ## ## nsepseq(tail,COMMA) -> tail . [ RPAR ] ## nsepseq(tail,COMMA) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -4082,14 +4075,14 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD COMMA With ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## ## tuple(tail) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ] ## @@ -4101,7 +4094,7 @@ contract: Let LPAR Constr LPAR WILD COMMA With contract: Let LPAR Constr LPAR WILD CONS With ## -## Ends in an error in state: 97. +## Ends in an error in state: 98. ## ## tail -> sub_pattern CONS . tail [ SEMI RPAR RBRACKET COMMA ARROW ] ## @@ -4113,7 +4106,7 @@ contract: Let LPAR Constr LPAR WILD CONS With contract: Let LPAR Constr LPAR WILD SEMI ## -## Ends in an error in state: 108. +## Ends in an error in state: 109. ## ## par(tail) -> LPAR tail . RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## tuple(tail) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ] @@ -4125,14 +4118,14 @@ contract: Let LPAR Constr LPAR WILD SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 96, spurious reduction of production tail -> sub_pattern +## In state 97, spurious reduction of production tail -> sub_pattern ## contract: Let LPAR Constr LPAR WILD With ## -## Ends in an error in state: 96. +## Ends in an error in state: 97. ## ## tail -> sub_pattern . [ SEMI RPAR RBRACKET COMMA ARROW ] ## tail -> sub_pattern . CONS tail [ SEMI RPAR RBRACKET COMMA ARROW ] @@ -4145,7 +4138,7 @@ contract: Let LPAR Constr LPAR WILD With contract: Let LPAR Constr LPAR With ## -## Ends in an error in state: 74. +## Ends in an error in state: 75. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] ## par(tail) -> LPAR . tail RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ] @@ -4159,7 +4152,7 @@ contract: Let LPAR Constr LPAR With contract: Let LPAR Constr WILD With ## -## Ends in an error in state: 147. +## Ends in an error in state: 148. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ] ## @@ -4171,7 +4164,7 @@ contract: Let LPAR Constr WILD With contract: Let LPAR Constr With ## -## Ends in an error in state: 130. +## Ends in an error in state: 131. ## ## closed_irrefutable -> Constr . sub_pattern [ RPAR ] ## sub_irrefutable -> Constr . [ RPAR COMMA COLON ] @@ -4184,7 +4177,7 @@ contract: Let LPAR Constr With contract: Let LPAR WILD COLON With ## -## Ends in an error in state: 145. +## Ends in an error in state: 146. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -4196,7 +4189,7 @@ contract: Let LPAR WILD COLON With contract: Let LPAR WILD WILD ## -## Ends in an error in state: 144. +## Ends in an error in state: 145. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -4208,7 +4201,7 @@ contract: Let LPAR WILD WILD ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## @@ -4228,7 +4221,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 584. +## Ends in an error in state: 583. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4239,19 +4232,19 @@ contract: Let Rec WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## @@ -4270,7 +4263,7 @@ contract: Let Rec With contract: Let WILD COLON Ident VBAR ## -## Ends in an error in state: 373. +## Ends in an error in state: 375. ## ## let_binding -> irrefutable option(type_annotation) . EQ expr [ Type Let In EOF Attr ] ## @@ -4284,15 +4277,15 @@ contract: Let WILD COLON Ident VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type -## In state 156, spurious reduction of production type_annotation -> COLON type_expr -## In state 157, spurious reduction of production option(type_annotation) -> type_annotation +## In state 157, spurious reduction of production type_annotation -> COLON type_expr +## In state 158, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let WILD COLON With ## -## Ends in an error in state: 155. +## Ends in an error in state: 156. ## ## type_annotation -> COLON . type_expr [ EQ ] ## @@ -4304,7 +4297,7 @@ contract: Let WILD COLON With contract: Let WILD COMMA WILD COMMA With ## -## Ends in an error in state: 139. +## Ends in an error in state: 140. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -4316,7 +4309,7 @@ contract: Let WILD COMMA WILD COMMA With contract: Let WILD COMMA WILD With ## -## Ends in an error in state: 138. +## Ends in an error in state: 139. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] @@ -4329,7 +4322,7 @@ contract: Let WILD COMMA WILD With contract: Let WILD COMMA With ## -## Ends in an error in state: 136. +## Ends in an error in state: 137. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## @@ -4341,7 +4334,7 @@ contract: Let WILD COMMA With contract: Let WILD EQ Bytes Attr With ## -## Ends in an error in state: 172. +## Ends in an error in state: 174. ## ## seq(Attr) -> Attr . seq(Attr) [ Type Let In EOF ] ## @@ -4353,7 +4346,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 586. +## Ends in an error in state: 585. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4364,26 +4357,26 @@ contract: Let WILD EQ Bytes With ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 222, spurious reduction of production call_expr_level -> core_expr -## In state 229, spurious reduction of production unary_expr_level -> call_expr_level -## In state 216, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 219, spurious reduction of production add_expr_level -> mult_expr_level -## In state 309, spurious reduction of production cons_expr_level -> add_expr_level -## In state 299, spurious reduction of production cat_expr_level -> cons_expr_level -## In state 331, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 338, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 345, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 366, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 368, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 369, spurious reduction of production expr -> base_cond__open(expr) -## In state 375, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr +## In state 224, spurious reduction of production call_expr_level -> core_expr +## In state 231, spurious reduction of production unary_expr_level -> call_expr_level +## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 221, spurious reduction of production add_expr_level -> mult_expr_level +## In state 311, spurious reduction of production cons_expr_level -> add_expr_level +## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level +## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 371, spurious reduction of production expr -> base_cond__open(expr) +## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr ## contract: Let WILD EQ With ## -## Ends in an error in state: 374. +## Ends in an error in state: 376. ## ## let_binding -> irrefutable option(type_annotation) EQ . expr [ Type Let In EOF Attr ] ## @@ -4395,7 +4388,7 @@ contract: Let WILD EQ With contract: Let WILD WILD ## -## Ends in an error in state: 372. +## Ends in an error in state: 374. ## ## let_binding -> irrefutable . option(type_annotation) EQ expr [ Type Let In EOF Attr ] ## @@ -4406,14 +4399,14 @@ contract: Let WILD WILD ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 135, spurious reduction of production irrefutable -> sub_irrefutable +## In state 136, spurious reduction of production irrefutable -> sub_irrefutable ## contract: Let WILD With ## -## Ends in an error in state: 135. +## Ends in an error in state: 136. ## ## irrefutable -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ] @@ -4489,7 +4482,7 @@ contract: Type Ident EQ Constr With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 592. +## Ends in an error in state: 591. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4505,7 +4498,7 @@ contract: Type Ident EQ Ident VBAR ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type ## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 588, spurious reduction of production declaration -> type_decl +## In state 587, spurious reduction of production declaration -> type_decl ## diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index 076bbe0fd..0c9eb4c89 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -590,7 +590,7 @@ and update = { } and field_path_assign = { - field_path : (field_name, dot) nsepseq; + field_path : (selection, dot) nsepseq; equal : equal; field_expr : expr } diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 668fb29e6..a7359ac9e 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -987,8 +987,8 @@ field_assignment: in {region; value} } field_path_assignment: - nsepseq(field_name,".") "=" expr { - let start = nsepseq_to_region (fun x -> x.region) $1 + nsepseq(selection,".") "=" expr { + let start = nsepseq_to_region selection_to_region $1 and stop = expr_to_region $3 in let region = cover start stop and value = {field_path=$1; equal=$2; field_expr=$3} diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index ae6ca8511..ba3914de4 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -619,7 +619,7 @@ and print_field_assign state {value; _} = and print_field_path_assign state {value; _} = let {field_path; equal; field_expr} = value in - print_nsepseq state "field_path" print_var field_path; + print_nsepseq state "field_path" print_selection field_path; print_token state equal "="; print_expr state field_expr @@ -1353,7 +1353,7 @@ and pp_field_assign state {value; _} = and pp_field_path_assign state {value; _} = pp_node state ""; let path = Utils.nsepseq_to_list value.field_path in - List.iter (pp_ident (state#pad 2 0)) path; + List.iter (pp_selection (state#pad 2 0)) path; pp_expr (state#pad 2 1) value.field_expr and pp_map_patch state patch = diff --git a/src/passes/01-parser/pascaligo/error.messages.checked-in b/src/passes/01-parser/pascaligo/error.messages.checked-in index 45dbffc55..9cb0d4994 100644 --- a/src/passes/01-parser/pascaligo/error.messages.checked-in +++ b/src/passes/01-parser/pascaligo/error.messages.checked-in @@ -1,6 +1,6 @@ -interactive_expr: BigMap LBRACKET Unit ARROW Bytes End +interactive_expr: BigMap LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 151. +## Ends in an error in state: 153. ## ## injection(BigMap,binding) -> BigMap LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -11,26 +11,26 @@ interactive_expr: BigMap LBRACKET Unit ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap LBRACKET With ## -## Ends in an error in state: 144. +## Ends in an error in state: 146. ## ## injection(BigMap,binding) -> BigMap LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -41,9 +41,9 @@ interactive_expr: BigMap LBRACKET With -interactive_expr: BigMap Unit ARROW Bytes RBRACKET +interactive_expr: BigMap Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 257. +## Ends in an error in state: 256. ## ## injection(BigMap,binding) -> BigMap sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -54,26 +54,26 @@ interactive_expr: BigMap Unit ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap With ## -## Ends in an error in state: 143. +## Ends in an error in state: 145. ## ## injection(BigMap,binding) -> BigMap . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -88,7 +88,7 @@ interactive_expr: BigMap With interactive_expr: C_Some With ## -## Ends in an error in state: 139. +## Ends in an error in state: 141. ## ## core_expr -> C_Some . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -98,9 +98,9 @@ interactive_expr: C_Some With -interactive_expr: Case Unit Of C_Some LPAR WILD With +interactive_expr: Case Verbatim Of C_Some LPAR WILD With ## -## Ends in an error in state: 285. +## Ends in an error in state: 284. ## ## par(core_pattern) -> LPAR core_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -110,9 +110,9 @@ interactive_expr: Case Unit Of C_Some LPAR WILD With -interactive_expr: Case Unit Of C_Some LPAR With +interactive_expr: Case Verbatim Of C_Some LPAR With ## -## Ends in an error in state: 277. +## Ends in an error in state: 276. ## ## par(core_pattern) -> LPAR . core_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -122,9 +122,9 @@ interactive_expr: Case Unit Of C_Some LPAR With -interactive_expr: Case Unit Of C_Some With +interactive_expr: Case Verbatim Of C_Some With ## -## Ends in an error in state: 276. +## Ends in an error in state: 275. ## ## constr_pattern -> C_Some . par(core_pattern) [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -134,9 +134,9 @@ interactive_expr: Case Unit Of C_Some With -interactive_expr: Case Unit Of Constr LPAR WILD With +interactive_expr: Case Verbatim Of Constr LPAR WILD With ## -## Ends in an error in state: 291. +## Ends in an error in state: 290. ## ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . COMMA nsepseq(core_pattern,COMMA) [ RPAR ] @@ -147,9 +147,9 @@ interactive_expr: Case Unit Of Constr LPAR WILD With -interactive_expr: Case Unit Of Constr LPAR With +interactive_expr: Case Verbatim Of Constr LPAR With ## -## Ends in an error in state: 275. +## Ends in an error in state: 274. ## ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -159,9 +159,9 @@ interactive_expr: Case Unit Of Constr LPAR With -interactive_expr: Case Unit Of Constr With +interactive_expr: Case Verbatim Of Constr With ## -## Ends in an error in state: 274. +## Ends in an error in state: 273. ## ## constr_pattern -> Constr . tuple_pattern [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -172,9 +172,9 @@ interactive_expr: Case Unit Of Constr With -interactive_expr: Case Unit Of LBRACKET VBAR Block +interactive_expr: Case Verbatim Of LBRACKET VBAR Block ## -## Ends in an error in state: 262. +## Ends in an error in state: 261. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) . cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -184,9 +184,9 @@ interactive_expr: Case Unit Of LBRACKET VBAR Block -interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes End +interactive_expr: Case Verbatim Of LBRACKET WILD ARROW Bytes End ## -## Ends in an error in state: 326. +## Ends in an error in state: 325. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) cases(expr) . RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -197,26 +197,26 @@ interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 323, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 327, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 324, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## -interactive_expr: Case Unit Of LBRACKET With +interactive_expr: Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 261. +## Ends in an error in state: 260. ## ## case(expr) -> Case expr Of LBRACKET . option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -226,9 +226,9 @@ interactive_expr: Case Unit Of LBRACKET With -interactive_expr: Case Unit Of LPAR WILD COMMA With +interactive_expr: Case Verbatim Of LPAR WILD COMMA With ## -## Ends in an error in state: 292. +## Ends in an error in state: 291. ## ## nsepseq(core_pattern,COMMA) -> core_pattern COMMA . nsepseq(core_pattern,COMMA) [ RPAR ] ## @@ -238,9 +238,9 @@ interactive_expr: Case Unit Of LPAR WILD COMMA With -interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW +interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## -## Ends in an error in state: 304. +## Ends in an error in state: 303. ## ## par(cons_pattern) -> LPAR cons_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -251,15 +251,15 @@ interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern -## In state 297, spurious reduction of production cons_pattern -> core_pattern CONS pattern +## In state 297, spurious reduction of production pattern -> core_pattern +## In state 296, spurious reduction of production cons_pattern -> core_pattern CONS pattern ## -interactive_expr: Case Unit Of LPAR WILD CONS With +interactive_expr: Case Verbatim Of LPAR WILD CONS With ## -## Ends in an error in state: 296. +## Ends in an error in state: 295. ## ## cons_pattern -> core_pattern CONS . pattern [ RPAR ] ## @@ -269,9 +269,9 @@ interactive_expr: Case Unit Of LPAR WILD CONS With -interactive_expr: Case Unit Of LPAR WILD With +interactive_expr: Case Verbatim Of LPAR WILD With ## -## Ends in an error in state: 295. +## Ends in an error in state: 294. ## ## cons_pattern -> core_pattern . CONS pattern [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] @@ -283,9 +283,9 @@ interactive_expr: Case Unit Of LPAR WILD With -interactive_expr: Case Unit Of LPAR With +interactive_expr: Case Verbatim Of LPAR With ## -## Ends in an error in state: 270. +## Ends in an error in state: 269. ## ## par(cons_pattern) -> LPAR . cons_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -296,9 +296,9 @@ interactive_expr: Case Unit Of LPAR With -interactive_expr: Case Unit Of List LBRACKET WILD End +interactive_expr: Case Verbatim Of List LBRACKET WILD End ## -## Ends in an error in state: 308. +## Ends in an error in state: 307. ## ## injection(List,core_pattern) -> List LBRACKET sep_or_term_list(core_pattern,SEMI) . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -309,15 +309,15 @@ interactive_expr: Case Unit Of List LBRACKET WILD End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 311, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 310, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## -interactive_expr: Case Unit Of List LBRACKET With +interactive_expr: Case Verbatim Of List LBRACKET With ## -## Ends in an error in state: 306. +## Ends in an error in state: 305. ## ## injection(List,core_pattern) -> List LBRACKET . sep_or_term_list(core_pattern,SEMI) RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List LBRACKET . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -328,9 +328,9 @@ interactive_expr: Case Unit Of List LBRACKET With -interactive_expr: Case Unit Of List WILD RBRACKET +interactive_expr: Case Verbatim Of List WILD RBRACKET ## -## Ends in an error in state: 320. +## Ends in an error in state: 319. ## ## injection(List,core_pattern) -> List sep_or_term_list(core_pattern,SEMI) . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -341,15 +341,15 @@ interactive_expr: Case Unit Of List WILD RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 311, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 310, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## -interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With +interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With ## -## Ends in an error in state: 317. +## Ends in an error in state: 316. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -360,9 +360,9 @@ interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With -interactive_expr: Case Unit Of List WILD SEMI WILD With +interactive_expr: Case Verbatim Of List WILD SEMI WILD With ## -## Ends in an error in state: 316. +## Ends in an error in state: 315. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -374,9 +374,9 @@ interactive_expr: Case Unit Of List WILD SEMI WILD With -interactive_expr: Case Unit Of List WILD SEMI With +interactive_expr: Case Verbatim Of List WILD SEMI With ## -## Ends in an error in state: 313. +## Ends in an error in state: 312. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -387,9 +387,9 @@ interactive_expr: Case Unit Of List WILD SEMI With -interactive_expr: Case Unit Of List WILD With +interactive_expr: Case Verbatim Of List WILD With ## -## Ends in an error in state: 312. +## Ends in an error in state: 311. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -401,9 +401,9 @@ interactive_expr: Case Unit Of List WILD With -interactive_expr: Case Unit Of List With +interactive_expr: Case Verbatim Of List With ## -## Ends in an error in state: 269. +## Ends in an error in state: 268. ## ## injection(List,core_pattern) -> List . sep_or_term_list(core_pattern,SEMI) End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -416,9 +416,9 @@ interactive_expr: Case Unit Of List With -interactive_expr: Case Unit Of VBAR Block +interactive_expr: Case Verbatim Of VBAR Block ## -## Ends in an error in state: 331. +## Ends in an error in state: 330. ## ## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -428,9 +428,9 @@ interactive_expr: Case Unit Of VBAR Block -interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET +interactive_expr: Case Verbatim Of WILD ARROW Bytes RBRACKET ## -## Ends in an error in state: 332. +## Ends in an error in state: 331. ## ## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -441,26 +441,26 @@ interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 323, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 327, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 324, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## -interactive_expr: Case Unit Of WILD ARROW Bytes Type +interactive_expr: Case Verbatim Of WILD ARROW Bytes Type ## -## Ends in an error in state: 328. +## Ends in an error in state: 327. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . [ RBRACKET End ] ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . VBAR nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] @@ -472,24 +472,24 @@ interactive_expr: Case Unit Of WILD ARROW Bytes Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 323, spurious reduction of production case_clause(expr) -> pattern ARROW expr ## -interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With +interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 329. +## Ends in an error in state: 328. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) VBAR . nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] ## @@ -499,9 +499,9 @@ interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With -interactive_expr: Case Unit Of WILD ARROW With +interactive_expr: Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 323. +## Ends in an error in state: 322. ## ## case_clause(expr) -> pattern ARROW . expr [ VBAR RBRACKET End ] ## @@ -511,9 +511,9 @@ interactive_expr: Case Unit Of WILD ARROW With -interactive_expr: Case Unit Of WILD CONS WILD CONS With +interactive_expr: Case Verbatim Of WILD CONS WILD CONS With ## -## Ends in an error in state: 302. +## Ends in an error in state: 301. ## ## nsepseq(core_pattern,CONS) -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -523,9 +523,9 @@ interactive_expr: Case Unit Of WILD CONS WILD CONS With -interactive_expr: Case Unit Of WILD CONS WILD With +interactive_expr: Case Verbatim Of WILD CONS WILD With ## -## Ends in an error in state: 301. +## Ends in an error in state: 300. ## ## nsepseq(core_pattern,CONS) -> core_pattern . [ RPAR ARROW ] ## nsepseq(core_pattern,CONS) -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -536,9 +536,9 @@ interactive_expr: Case Unit Of WILD CONS WILD With -interactive_expr: Case Unit Of WILD CONS With +interactive_expr: Case Verbatim Of WILD CONS With ## -## Ends in an error in state: 299. +## Ends in an error in state: 298. ## ## pattern -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -548,9 +548,9 @@ interactive_expr: Case Unit Of WILD CONS With -interactive_expr: Case Unit Of WILD RPAR +interactive_expr: Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 322. +## Ends in an error in state: 321. ## ## case_clause(expr) -> pattern . ARROW expr [ VBAR RBRACKET End ] ## @@ -561,14 +561,14 @@ interactive_expr: Case Unit Of WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern +## In state 297, spurious reduction of production pattern -> core_pattern ## -interactive_expr: Case Unit Of WILD With +interactive_expr: Case Verbatim Of WILD With ## -## Ends in an error in state: 298. +## Ends in an error in state: 297. ## ## pattern -> core_pattern . [ RPAR ARROW ] ## pattern -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -579,9 +579,9 @@ interactive_expr: Case Unit Of WILD With -interactive_expr: Case Unit Of With +interactive_expr: Case Verbatim Of With ## -## Ends in an error in state: 260. +## Ends in an error in state: 259. ## ## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr Of . LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -592,9 +592,9 @@ interactive_expr: Case Unit Of With -interactive_expr: Case Unit VBAR +interactive_expr: Case Verbatim VBAR ## -## Ends in an error in state: 259. +## Ends in an error in state: 258. ## ## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr . Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -606,23 +606,23 @@ interactive_expr: Case Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Case With ## -## Ends in an error in state: 138. +## Ends in an error in state: 140. ## ## case(expr) -> Case . expr Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case . expr Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -635,7 +635,7 @@ interactive_expr: Case With interactive_expr: Constr DOT And With ## -## Ends in an error in state: 176. +## Ends in an error in state: 174. ## ## core_expr -> module_field . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> module_field . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -648,7 +648,7 @@ interactive_expr: Constr DOT And With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 127. +## Ends in an error in state: 129. ## ## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -660,7 +660,7 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident With ## -## Ends in an error in state: 126. +## Ends in an error in state: 128. ## ## module_fun -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -673,7 +673,7 @@ interactive_expr: Constr DOT Ident With interactive_expr: Constr DOT With ## -## Ends in an error in state: 122. +## Ends in an error in state: 124. ## ## module_field -> Constr DOT . module_fun [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -686,7 +686,7 @@ interactive_expr: Constr DOT With interactive_expr: Constr With ## -## Ends in an error in state: 121. +## Ends in an error in state: 123. ## ## core_expr -> Constr . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## core_expr -> Constr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -699,9 +699,9 @@ interactive_expr: Constr With -interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 119. +## Ends in an error in state: 121. ## ## fun_expr -> Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -711,9 +711,9 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With -interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 118. +## Ends in an error in state: 120. ## ## fun_expr -> Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -724,17 +724,16 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 117. +## Ends in an error in state: 119. ## ## fun_expr -> Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -746,7 +745,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With interactive_expr: Function LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 116. +## Ends in an error in state: 118. ## ## fun_expr -> Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -758,7 +757,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR With interactive_expr: Function LPAR Const Ident COLON With ## -## Ends in an error in state: 78. +## Ends in an error in state: 79. ## ## param_decl -> Const Ident COLON . param_type [ SEMI RPAR ] ## @@ -770,7 +769,7 @@ interactive_expr: Function LPAR Const Ident COLON With interactive_expr: Function LPAR Const Ident With ## -## Ends in an error in state: 77. +## Ends in an error in state: 78. ## ## param_decl -> Const Ident . COLON param_type [ SEMI RPAR ] ## @@ -782,7 +781,7 @@ interactive_expr: Function LPAR Const Ident With interactive_expr: Function LPAR Const With ## -## Ends in an error in state: 76. +## Ends in an error in state: 77. ## ## param_decl -> Const . Ident COLON param_type [ SEMI RPAR ] ## @@ -794,7 +793,7 @@ interactive_expr: Function LPAR Const With interactive_expr: Function LPAR Var Ident COLON Ident SEMI With ## -## Ends in an error in state: 81. +## Ends in an error in state: 82. ## ## nsepseq(param_decl,SEMI) -> param_decl SEMI . nsepseq(param_decl,SEMI) [ RPAR ] ## @@ -806,7 +805,7 @@ interactive_expr: Function LPAR Var Ident COLON Ident SEMI With interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## -## Ends in an error in state: 80. +## Ends in an error in state: 81. ## ## nsepseq(param_decl,SEMI) -> param_decl . [ RPAR ] ## nsepseq(param_decl,SEMI) -> param_decl . SEMI nsepseq(param_decl,SEMI) [ RPAR ] @@ -818,18 +817,18 @@ interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 75, spurious reduction of production param_type -> fun_type -## In state 74, spurious reduction of production param_decl -> Var Ident COLON param_type +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 76, spurious reduction of production param_type -> fun_type +## In state 75, spurious reduction of production param_decl -> Var Ident COLON param_type ## interactive_expr: Function LPAR Var Ident COLON With ## -## Ends in an error in state: 73. +## Ends in an error in state: 74. ## ## param_decl -> Var Ident COLON . param_type [ SEMI RPAR ] ## @@ -841,7 +840,7 @@ interactive_expr: Function LPAR Var Ident COLON With interactive_expr: Function LPAR Var Ident With ## -## Ends in an error in state: 72. +## Ends in an error in state: 73. ## ## param_decl -> Var Ident . COLON param_type [ SEMI RPAR ] ## @@ -853,7 +852,7 @@ interactive_expr: Function LPAR Var Ident With interactive_expr: Function LPAR Var With ## -## Ends in an error in state: 71. +## Ends in an error in state: 72. ## ## param_decl -> Var . Ident COLON param_type [ SEMI RPAR ] ## @@ -865,7 +864,7 @@ interactive_expr: Function LPAR Var With interactive_expr: Function LPAR With ## -## Ends in an error in state: 70. +## Ends in an error in state: 71. ## ## par(nsepseq(param_decl,SEMI)) -> LPAR . nsepseq(param_decl,SEMI) RPAR [ COLON ] ## @@ -877,7 +876,7 @@ interactive_expr: Function LPAR With interactive_expr: Function With ## -## Ends in an error in state: 115. +## Ends in an error in state: 117. ## ## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -889,7 +888,7 @@ interactive_expr: Function With interactive_expr: Ident DOT Ident ASS ## -## Ends in an error in state: 154. +## Ends in an error in state: 156. ## ## fun_call_or_par_or_projection -> projection . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## path -> projection . [ With LBRACKET ] @@ -901,15 +900,15 @@ interactive_expr: Ident DOT Ident ASS ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 130, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 132, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 341, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) ## interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 131. +## Ends in an error in state: 133. ## ## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -921,7 +920,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int While ## -## Ends in an error in state: 130. +## Ends in an error in state: 132. ## ## nsepseq(selection,DOT) -> selection . [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -934,7 +933,7 @@ interactive_expr: Ident DOT Int While interactive_expr: Ident DOT With ## -## Ends in an error in state: 341. +## Ends in an error in state: 340. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -944,9 +943,9 @@ interactive_expr: Ident DOT With -interactive_expr: Ident LBRACKET Unit VBAR +interactive_expr: Ident LBRACKET Verbatim VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 240. ## ## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -957,23 +956,23 @@ interactive_expr: Ident LBRACKET Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LBRACKET With ## -## Ends in an error in state: 240. +## Ends in an error in state: 239. ## ## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -983,9 +982,9 @@ interactive_expr: Ident LBRACKET With -interactive_expr: Ident LPAR Unit COMMA With +interactive_expr: Ident LPAR Verbatim COMMA With ## -## Ends in an error in state: 339. +## Ends in an error in state: 338. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -995,9 +994,9 @@ interactive_expr: Ident LPAR Unit COMMA With -interactive_expr: Ident LPAR Unit VBAR +interactive_expr: Ident LPAR Verbatim VBAR ## -## Ends in an error in state: 338. +## Ends in an error in state: 337. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1009,23 +1008,23 @@ interactive_expr: Ident LPAR Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LPAR With ## -## Ends in an error in state: 114. +## Ends in an error in state: 116. ## ## par(nsepseq(expr,COMMA)) -> LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1037,7 +1036,7 @@ interactive_expr: Ident LPAR With interactive_expr: Ident While ## -## Ends in an error in state: 113. +## Ends in an error in state: 115. ## ## core_expr -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> Ident . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1050,21 +1049,9 @@ interactive_expr: Ident While -interactive_expr: Ident With Record Ident DOT With +interactive_expr: Ident With Record Int EQ Bytes RBRACKET ## -## Ends in an error in state: 162. -## -## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] -## -## The known suffix of the stack is as follows: -## Ident DOT -## - - - -interactive_expr: Ident With Record Ident EQ Bytes RBRACKET -## -## Ends in an error in state: 237. +## Ends in an error in state: 236. ## ## ne_injection(Record,field_path_assignment) -> Record sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1075,26 +1062,26 @@ interactive_expr: Ident With Record Ident EQ Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 167, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 229, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 228, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## -interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With +interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes SEMI With ## -## Ends in an error in state: 235. +## Ends in an error in state: 234. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1105,9 +1092,9 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With -interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR +interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 233. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1120,24 +1107,24 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: Ident With Record Ident EQ Bytes SEMI With +interactive_expr: Ident With Record Int EQ Bytes SEMI With ## -## Ends in an error in state: 231. +## Ends in an error in state: 230. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1148,9 +1135,9 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI With -interactive_expr: Ident With Record Ident EQ Bytes VBAR +interactive_expr: Ident With Record Int EQ Bytes VBAR ## -## Ends in an error in state: 230. +## Ends in an error in state: 229. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1163,49 +1150,54 @@ interactive_expr: Ident With Record Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr ## -interactive_expr: Ident With Record Ident EQ With +interactive_expr: Ident With Record Int EQ With ## -## Ends in an error in state: 169. +## Ends in an error in state: 167. ## -## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACKET End ] +## field_path_assignment -> nsepseq(selection,DOT) EQ . expr [ SEMI RBRACKET End ] ## ## The known suffix of the stack is as follows: -## nsepseq(field_name,DOT) EQ +## nsepseq(selection,DOT) EQ ## -interactive_expr: Ident With Record Ident With +interactive_expr: Ident With Record Int With ## -## Ends in an error in state: 161. +## Ends in an error in state: 166. ## -## nsepseq(field_name,DOT) -> Ident . [ EQ ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] +## field_path_assignment -> nsepseq(selection,DOT) . EQ expr [ SEMI RBRACKET End ] ## ## The known suffix of the stack is as follows: -## Ident +## nsepseq(selection,DOT) +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 132, spurious reduction of production nsepseq(selection,DOT) -> selection ## -interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End +interactive_expr: Ident With Record LBRACKET Int EQ Bytes End ## -## Ends in an error in state: 164. +## Ends in an error in state: 163. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1216,26 +1208,26 @@ interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 167, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 229, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 228, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## interactive_expr: Ident With Record LBRACKET With ## -## Ends in an error in state: 160. +## Ends in an error in state: 162. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET . sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1247,7 +1239,7 @@ interactive_expr: Ident With Record LBRACKET With interactive_expr: Ident With Record With ## -## Ends in an error in state: 159. +## Ends in an error in state: 161. ## ## ne_injection(Record,field_path_assignment) -> Record . sep_or_term_list(field_path_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## ne_injection(Record,field_path_assignment) -> Record . LBRACKET sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1260,7 +1252,7 @@ interactive_expr: Ident With Record With interactive_expr: Ident With With ## -## Ends in an error in state: 158. +## Ends in an error in state: 160. ## ## update_record -> path With . ne_injection(Record,field_path_assignment) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1270,9 +1262,9 @@ interactive_expr: Ident With With -interactive_expr: If Unit Then Unit Else With +interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 348. +## Ends in an error in state: 347. ## ## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1282,9 +1274,9 @@ interactive_expr: If Unit Then Unit Else With -interactive_expr: If Unit Then Unit SEMI EQ +interactive_expr: If Verbatim Then Verbatim SEMI EQ ## -## Ends in an error in state: 347. +## Ends in an error in state: 346. ## ## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1294,9 +1286,9 @@ interactive_expr: If Unit Then Unit SEMI EQ -interactive_expr: If Unit Then Unit VBAR +interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 346. +## Ends in an error in state: 345. ## ## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1307,23 +1299,23 @@ interactive_expr: If Unit Then Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -interactive_expr: If Unit Then With +interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 345. +## Ends in an error in state: 344. ## ## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1333,9 +1325,9 @@ interactive_expr: If Unit Then With -interactive_expr: If Unit VBAR +interactive_expr: If Verbatim VBAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 343. ## ## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1346,23 +1338,23 @@ interactive_expr: If Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: If With ## -## Ends in an error in state: 112. +## Ends in an error in state: 114. ## ## cond_expr -> If . expr Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1374,7 +1366,7 @@ interactive_expr: If With interactive_expr: LPAR Bytes RPAR With ## -## Ends in an error in state: 171. +## Ends in an error in state: 169. ## ## fun_call_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1384,9 +1376,9 @@ interactive_expr: LPAR Bytes RPAR With -interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR +interactive_expr: LPAR If Verbatim Then Bytes Else Bytes VBAR ## -## Ends in an error in state: 352. +## Ends in an error in state: 351. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## tuple_comp -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1398,25 +1390,25 @@ interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 349, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr -## In state 228, spurious reduction of production expr -> cond_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 348, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr +## In state 226, spurious reduction of production expr -> cond_expr ## -interactive_expr: LPAR Unit COLON Ident VBAR +interactive_expr: LPAR Verbatim COLON String VBAR ## -## Ends in an error in state: 358. +## Ends in an error in state: 357. ## ## annot_expr -> LPAR disj_expr COLON type_expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1427,17 +1419,16 @@ interactive_expr: LPAR Unit COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## -interactive_expr: LPAR Unit COLON With +interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 357. +## Ends in an error in state: 356. ## ## annot_expr -> LPAR disj_expr COLON . type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1447,9 +1438,9 @@ interactive_expr: LPAR Unit COLON With -interactive_expr: LPAR Unit COMMA With +interactive_expr: LPAR Verbatim COMMA With ## -## Ends in an error in state: 354. +## Ends in an error in state: 353. ## ## tuple_comp -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -1459,9 +1450,9 @@ interactive_expr: LPAR Unit COMMA With -interactive_expr: LPAR Unit VBAR +interactive_expr: LPAR Verbatim VBAR ## -## Ends in an error in state: 356. +## Ends in an error in state: 355. ## ## annot_expr -> LPAR disj_expr . COLON type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## disj_expr -> disj_expr . Or conj_expr [ RPAR Or COMMA COLON ] @@ -1474,22 +1465,22 @@ interactive_expr: LPAR Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr ## interactive_expr: LPAR With ## -## Ends in an error in state: 110. +## Ends in an error in state: 112. ## ## annot_expr -> LPAR . disj_expr COLON type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## par(expr) -> LPAR . expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1501,9 +1492,9 @@ interactive_expr: LPAR With -interactive_expr: List LBRACKET Unit End +interactive_expr: List LBRACKET Verbatim End ## -## Ends in an error in state: 362. +## Ends in an error in state: 361. ## ## injection(List,expr) -> List LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1514,25 +1505,25 @@ interactive_expr: List LBRACKET Unit End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List LBRACKET With ## -## Ends in an error in state: 360. +## Ends in an error in state: 359. ## ## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1543,9 +1534,9 @@ interactive_expr: List LBRACKET With -interactive_expr: List Unit RBRACKET +interactive_expr: List Verbatim RBRACKET ## -## Ends in an error in state: 374. +## Ends in an error in state: 373. ## ## injection(List,expr) -> List sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1556,25 +1547,25 @@ interactive_expr: List Unit RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List With ## -## Ends in an error in state: 109. +## Ends in an error in state: 111. ## ## injection(List,expr) -> List . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1589,7 +1580,7 @@ interactive_expr: List With interactive_expr: MINUS With ## -## Ends in an error in state: 108. +## Ends in an error in state: 110. ## ## unary_expr -> MINUS . core_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1599,9 +1590,9 @@ interactive_expr: MINUS With -interactive_expr: Map LBRACKET Unit ARROW Bytes End +interactive_expr: Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 379. +## Ends in an error in state: 378. ## ## injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1612,26 +1603,26 @@ interactive_expr: Map LBRACKET Unit ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map LBRACKET With ## -## Ends in an error in state: 377. +## Ends in an error in state: 376. ## ## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1642,9 +1633,9 @@ interactive_expr: Map LBRACKET With -interactive_expr: Map Unit ARROW Bytes RBRACKET +interactive_expr: Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 382. +## Ends in an error in state: 381. ## ## injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1655,26 +1646,26 @@ interactive_expr: Map Unit ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With +interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 254. +## Ends in an error in state: 253. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1685,9 +1676,9 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With -interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR +interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 253. +## Ends in an error in state: 252. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1700,24 +1691,24 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr ## -interactive_expr: Map Unit ARROW Bytes SEMI With +interactive_expr: Map Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 250. +## Ends in an error in state: 249. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1728,9 +1719,9 @@ interactive_expr: Map Unit ARROW Bytes SEMI With -interactive_expr: Map Unit ARROW Bytes VBAR +interactive_expr: Map Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 249. +## Ends in an error in state: 248. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1743,24 +1734,24 @@ interactive_expr: Map Unit ARROW Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr ## -interactive_expr: Map Unit ARROW With +interactive_expr: Map Verbatim ARROW With ## -## Ends in an error in state: 247. +## Ends in an error in state: 246. ## ## binding -> expr ARROW . expr [ SEMI RBRACKET End ] ## @@ -1770,9 +1761,9 @@ interactive_expr: Map Unit ARROW With -interactive_expr: Map Unit VBAR +interactive_expr: Map Verbatim VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 245. ## ## binding -> expr . ARROW expr [ SEMI RBRACKET End ] ## @@ -1783,23 +1774,23 @@ interactive_expr: Map Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Map With ## -## Ends in an error in state: 107. +## Ends in an error in state: 109. ## ## injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1814,7 +1805,7 @@ interactive_expr: Map With interactive_expr: Not Bytes With ## -## Ends in an error in state: 173. +## Ends in an error in state: 171. ## ## add_expr -> mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1829,7 +1820,7 @@ interactive_expr: Not Bytes With interactive_expr: Not With ## -## Ends in an error in state: 103. +## Ends in an error in state: 105. ## ## unary_expr -> Not . core_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1841,7 +1832,7 @@ interactive_expr: Not With interactive_expr: Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 397. +## Ends in an error in state: 396. ## ## record_expr -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1852,26 +1843,26 @@ interactive_expr: Record Ident EQ Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 395. +## Ends in an error in state: 394. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1884,7 +1875,7 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## -## Ends in an error in state: 394. +## Ends in an error in state: 393. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1897,24 +1888,24 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 391. +## Ends in an error in state: 390. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1927,7 +1918,7 @@ interactive_expr: Record Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 390. +## Ends in an error in state: 389. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1940,24 +1931,24 @@ interactive_expr: Record Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ With ## -## Ends in an error in state: 102. +## Ends in an error in state: 104. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACKET End ] ## @@ -1969,7 +1960,7 @@ interactive_expr: Record Ident EQ With interactive_expr: Record Ident With ## -## Ends in an error in state: 101. +## Ends in an error in state: 103. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACKET End ] ## @@ -1981,7 +1972,7 @@ interactive_expr: Record Ident With interactive_expr: Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 386. +## Ends in an error in state: 385. ## ## record_expr -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1992,26 +1983,26 @@ interactive_expr: Record LBRACKET Ident EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record LBRACKET With ## -## Ends in an error in state: 100. +## Ends in an error in state: 102. ## ## record_expr -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2023,7 +2014,7 @@ interactive_expr: Record LBRACKET With interactive_expr: Record With ## -## Ends in an error in state: 99. +## Ends in an error in state: 101. ## ## record_expr -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## record_expr -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2034,9 +2025,9 @@ interactive_expr: Record With -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 98. +## Ends in an error in state: 100. ## ## fun_expr -> Recursive Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2046,9 +2037,9 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ide -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 97. +## Ends in an error in state: 99. ## ## fun_expr -> Recursive Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2059,17 +2050,16 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ide ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 96. +## Ends in an error in state: 98. ## ## fun_expr -> Recursive Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2081,7 +2071,7 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Wit interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 95. +## Ends in an error in state: 97. ## ## fun_expr -> Recursive Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2093,7 +2083,7 @@ interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR With interactive_expr: Recursive Function With ## -## Ends in an error in state: 94. +## Ends in an error in state: 96. ## ## fun_expr -> Recursive Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2105,7 +2095,7 @@ interactive_expr: Recursive Function With interactive_expr: Recursive With ## -## Ends in an error in state: 93. +## Ends in an error in state: 95. ## ## fun_expr -> Recursive . Function parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -2115,9 +2105,9 @@ interactive_expr: Recursive With -interactive_expr: Set LBRACKET Unit End +interactive_expr: Set LBRACKET Verbatim End ## -## Ends in an error in state: 402. +## Ends in an error in state: 401. ## ## injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2128,25 +2118,25 @@ interactive_expr: Set LBRACKET Unit End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set LBRACKET With ## -## Ends in an error in state: 400. +## Ends in an error in state: 399. ## ## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2157,9 +2147,9 @@ interactive_expr: Set LBRACKET With -interactive_expr: Set Unit RBRACKET +interactive_expr: Set Verbatim RBRACKET ## -## Ends in an error in state: 405. +## Ends in an error in state: 404. ## ## injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2170,25 +2160,25 @@ interactive_expr: Set Unit RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -interactive_expr: Set Unit SEMI Unit SEMI With +interactive_expr: Set Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 371. +## Ends in an error in state: 370. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2199,9 +2189,9 @@ interactive_expr: Set Unit SEMI Unit SEMI With -interactive_expr: Set Unit SEMI Unit VBAR +interactive_expr: Set Verbatim SEMI Verbatim VBAR ## -## Ends in an error in state: 370. +## Ends in an error in state: 369. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2214,23 +2204,23 @@ interactive_expr: Set Unit SEMI Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -interactive_expr: Set Unit SEMI With +interactive_expr: Set Verbatim SEMI With ## -## Ends in an error in state: 367. +## Ends in an error in state: 366. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2241,9 +2231,9 @@ interactive_expr: Set Unit SEMI With -interactive_expr: Set Unit VBAR +interactive_expr: Set Verbatim VBAR ## -## Ends in an error in state: 366. +## Ends in an error in state: 365. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2256,23 +2246,23 @@ interactive_expr: Set Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Set With ## -## Ends in an error in state: 92. +## Ends in an error in state: 94. ## ## injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2285,9 +2275,9 @@ interactive_expr: Set With -interactive_expr: Unit And With +interactive_expr: Verbatim And With ## -## Ends in an error in state: 225. +## Ends in an error in state: 223. ## ## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2297,9 +2287,9 @@ interactive_expr: Unit And With -interactive_expr: Unit CAT With +interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 201. +## Ends in an error in state: 199. ## ## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2309,9 +2299,9 @@ interactive_expr: Unit CAT With -interactive_expr: Unit COLON +interactive_expr: Verbatim COLON ## -## Ends in an error in state: 195. +## Ends in an error in state: 193. ## ## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## expr -> disj_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -2323,22 +2313,22 @@ interactive_expr: Unit COLON ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr ## -interactive_expr: Unit CONS With +interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 208. +## Ends in an error in state: 206. ## ## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2348,9 +2338,9 @@ interactive_expr: Unit CONS With -interactive_expr: Unit Contains With +interactive_expr: Verbatim Contains With ## -## Ends in an error in state: 198. +## Ends in an error in state: 196. ## ## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2360,9 +2350,9 @@ interactive_expr: Unit Contains With -interactive_expr: Unit EQ With +interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 221. +## Ends in an error in state: 219. ## ## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2372,9 +2362,9 @@ interactive_expr: Unit EQ With -interactive_expr: Unit GE With +interactive_expr: Verbatim GE With ## -## Ends in an error in state: 219. +## Ends in an error in state: 217. ## ## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2384,9 +2374,9 @@ interactive_expr: Unit GE With -interactive_expr: Unit GT With +interactive_expr: Verbatim GT With ## -## Ends in an error in state: 217. +## Ends in an error in state: 215. ## ## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2396,9 +2386,9 @@ interactive_expr: Unit GT With -interactive_expr: Unit LE With +interactive_expr: Verbatim LE With ## -## Ends in an error in state: 215. +## Ends in an error in state: 213. ## ## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2408,9 +2398,9 @@ interactive_expr: Unit LE With -interactive_expr: Unit LT With +interactive_expr: Verbatim LT With ## -## Ends in an error in state: 213. +## Ends in an error in state: 211. ## ## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2420,9 +2410,9 @@ interactive_expr: Unit LT With -interactive_expr: Unit MINUS Unit With +interactive_expr: Verbatim MINUS Verbatim With ## -## Ends in an error in state: 207. +## Ends in an error in state: 205. ## ## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2435,9 +2425,9 @@ interactive_expr: Unit MINUS Unit With -interactive_expr: Unit MINUS With +interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 206. +## Ends in an error in state: 204. ## ## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2447,9 +2437,9 @@ interactive_expr: Unit MINUS With -interactive_expr: Unit Mod With +interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 191. +## Ends in an error in state: 189. ## ## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2459,9 +2449,9 @@ interactive_expr: Unit Mod With -interactive_expr: Unit NE With +interactive_expr: Verbatim NE With ## -## Ends in an error in state: 211. +## Ends in an error in state: 209. ## ## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2471,9 +2461,9 @@ interactive_expr: Unit NE With -interactive_expr: Unit Or With +interactive_expr: Verbatim Or With ## -## Ends in an error in state: 196. +## Ends in an error in state: 194. ## ## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] ## @@ -2483,9 +2473,9 @@ interactive_expr: Unit Or With -interactive_expr: Unit PLUS Unit With +interactive_expr: Verbatim PLUS Verbatim With ## -## Ends in an error in state: 205. +## Ends in an error in state: 203. ## ## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2498,9 +2488,9 @@ interactive_expr: Unit PLUS Unit With -interactive_expr: Unit PLUS With +interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 204. +## Ends in an error in state: 202. ## ## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2510,9 +2500,9 @@ interactive_expr: Unit PLUS With -interactive_expr: Unit SLASH With +interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 189. +## Ends in an error in state: 187. ## ## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2522,9 +2512,9 @@ interactive_expr: Unit SLASH With -interactive_expr: Unit TIMES With +interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 174. +## Ends in an error in state: 172. ## ## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2534,9 +2524,9 @@ interactive_expr: Unit TIMES With -interactive_expr: Unit VBAR +interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 607. +## Ends in an error in state: 606. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2547,23 +2537,23 @@ interactive_expr: Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -interactive_expr: Unit With +interactive_expr: Verbatim With ## -## Ends in an error in state: 197. +## Ends in an error in state: 195. ## ## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## unary_expr -> core_expr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2576,7 +2566,7 @@ interactive_expr: Unit With interactive_expr: With ## -## Ends in an error in state: 605. +## Ends in an error in state: 604. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2588,7 +2578,7 @@ interactive_expr: With contract: Attributes LBRACKET String End ## -## Ends in an error in state: 551. +## Ends in an error in state: 550. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET sep_or_term_list(String,SEMI) . RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2599,15 +2589,15 @@ contract: Attributes LBRACKET String End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 543, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 554, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 542, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 553, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes LBRACKET With ## -## Ends in an error in state: 550. +## Ends in an error in state: 549. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET . sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2619,7 +2609,7 @@ contract: Attributes LBRACKET With contract: Attributes String End Attributes String End SEMI With ## -## Ends in an error in state: 600. +## Ends in an error in state: 599. ## ## seq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2631,7 +2621,7 @@ contract: Attributes String End Attributes String End SEMI With contract: Attributes String End SEMI With ## -## Ends in an error in state: 598. +## Ends in an error in state: 597. ## ## nseq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2643,7 +2633,7 @@ contract: Attributes String End SEMI With contract: Attributes String End With ## -## Ends in an error in state: 593. +## Ends in an error in state: 592. ## ## attr_decl -> open_attr_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2655,7 +2645,7 @@ contract: Attributes String End With contract: Attributes String RBRACKET ## -## Ends in an error in state: 555. +## Ends in an error in state: 554. ## ## ne_injection(Attributes,String) -> Attributes sep_or_term_list(String,SEMI) . End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2666,15 +2656,15 @@ contract: Attributes String RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 543, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 554, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 542, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 553, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes String SEMI String SEMI With ## -## Ends in an error in state: 546. +## Ends in an error in state: 545. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2687,7 +2677,7 @@ contract: Attributes String SEMI String SEMI With contract: Attributes String SEMI String With ## -## Ends in an error in state: 545. +## Ends in an error in state: 544. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2701,7 +2691,7 @@ contract: Attributes String SEMI String With contract: Attributes String SEMI With ## -## Ends in an error in state: 544. +## Ends in an error in state: 543. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2714,7 +2704,7 @@ contract: Attributes String SEMI With contract: Attributes String With ## -## Ends in an error in state: 543. +## Ends in an error in state: 542. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2728,7 +2718,7 @@ contract: Attributes String With contract: Attributes With ## -## Ends in an error in state: 542. +## Ends in an error in state: 541. ## ## ne_injection(Attributes,String) -> Attributes . sep_or_term_list(String,SEMI) End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ne_injection(Attributes,String) -> Attributes . LBRACKET sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -2741,7 +2731,7 @@ contract: Attributes With contract: Const Ident COLON Ident EQ Bytes VBAR ## -## Ends in an error in state: 591. +## Ends in an error in state: 590. ## ## const_decl -> open_const_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2752,25 +2742,25 @@ contract: Const Ident COLON Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 499, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr -## In state 500, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 498, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr +## In state 499, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) ## -contract: Const Ident COLON Ident EQ With +contract: Const Ident COLON String EQ With ## -## Ends in an error in state: 498. +## Ends in an error in state: 497. ## ## unqualified_decl(EQ) -> Ident COLON type_expr EQ . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2780,9 +2770,9 @@ contract: Const Ident COLON Ident EQ With -contract: Const Ident COLON Ident VBAR +contract: Const Ident COLON String VBAR ## -## Ends in an error in state: 497. +## Ends in an error in state: 496. ## ## unqualified_decl(EQ) -> Ident COLON type_expr . EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2793,17 +2783,16 @@ contract: Const Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Const Ident COLON With ## -## Ends in an error in state: 496. +## Ends in an error in state: 495. ## ## unqualified_decl(EQ) -> Ident COLON . type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2815,7 +2804,7 @@ contract: Const Ident COLON With contract: Const Ident With ## -## Ends in an error in state: 495. +## Ends in an error in state: 494. ## ## unqualified_decl(EQ) -> Ident . COLON type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2827,7 +2816,7 @@ contract: Const Ident With contract: Const With ## -## Ends in an error in state: 494. +## Ends in an error in state: 493. ## ## open_const_decl -> Const . unqualified_decl(EQ) [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2837,9 +2826,37 @@ contract: Const With -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET VBAR Block +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR ## -## Ends in an error in state: 505. +## Ends in an error in state: 588. +## +## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## open_fun_decl +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 466, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr +## + + + +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET VBAR Block +## +## Ends in an error in state: 504. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) . cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2849,9 +2866,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET WILD ARROW Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET WILD ARROW Skip End ## -## Ends in an error in state: 534. +## Ends in an error in state: 533. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) cases(if_clause) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2862,15 +2879,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 536, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 533, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 535, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 532, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 504. +## Ends in an error in state: 503. ## ## case(if_clause) -> Case expr Of LBRACKET . option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2880,9 +2897,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of VBAR Block +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of VBAR Block ## -## Ends in an error in state: 539. +## Ends in an error in state: 538. ## ## case(if_clause) -> Case expr Of option(VBAR) . cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2892,9 +2909,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip RBRACKET ## -## Ends in an error in state: 540. +## Ends in an error in state: 539. ## ## case(if_clause) -> Case expr Of option(VBAR) cases(if_clause) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2905,15 +2922,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 536, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 533, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 535, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 532, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip VBAR With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip VBAR With ## -## Ends in an error in state: 537. +## Ends in an error in state: 536. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) VBAR . nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] ## @@ -2923,9 +2940,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip With ## -## Ends in an error in state: 536. +## Ends in an error in state: 535. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . [ RBRACKET End ] ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . VBAR nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] @@ -2936,9 +2953,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 507. +## Ends in an error in state: 506. ## ## case_clause(if_clause) -> pattern ARROW . if_clause [ VBAR RBRACKET End ] ## @@ -2948,9 +2965,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD RPAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 506. +## Ends in an error in state: 505. ## ## case_clause(if_clause) -> pattern . ARROW if_clause [ VBAR RBRACKET End ] ## @@ -2961,14 +2978,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern +## In state 297, spurious reduction of production pattern -> core_pattern ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of With ## -## Ends in an error in state: 503. +## Ends in an error in state: 502. ## ## case(if_clause) -> Case expr Of . option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr Of . LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2979,9 +2996,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim VBAR ## -## Ends in an error in state: 502. +## Ends in an error in state: 501. ## ## case(if_clause) -> Case expr . Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr . Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2993,23 +3010,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case With ## -## Ends in an error in state: 501. +## Ends in an error in state: 500. ## ## case(if_clause) -> Case . expr Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case . expr Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3020,9 +3037,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Constr DOT And With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr DOT And With ## -## Ends in an error in state: 514. +## Ends in an error in state: 513. ## ## fun_call -> module_field . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3032,9 +3049,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Constr With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr With ## -## Ends in an error in state: 493. +## Ends in an error in state: 492. ## ## module_field -> Constr . DOT module_fun [ LPAR ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ LBRACKET ASS ] @@ -3045,9 +3062,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ARROW Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW Ident With ## -## Ends in an error in state: 477. +## Ends in an error in state: 476. ## ## for_loop -> For Ident option(arrow_clause) . In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3057,9 +3074,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ARROW With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW With ## -## Ends in an error in state: 475. +## Ends in an error in state: 474. ## ## arrow_clause -> ARROW . Ident [ In ] ## @@ -3069,9 +3086,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit Step Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step Verbatim VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 489. ## ## for_loop -> For var_assign To expr Step expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3082,23 +3099,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit Step With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step With ## -## Ends in an error in state: 489. +## Ends in an error in state: 488. ## ## for_loop -> For var_assign To expr Step . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3108,9 +3125,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim VBAR ## -## Ends in an error in state: 488. +## Ends in an error in state: 487. ## ## for_loop -> For var_assign To expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To expr . Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3122,23 +3139,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To With ## -## Ends in an error in state: 487. +## Ends in an error in state: 486. ## ## for_loop -> For var_assign To . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To . expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3149,9 +3166,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes VBAR ## -## Ends in an error in state: 486. +## Ends in an error in state: 485. ## ## for_loop -> For var_assign . To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign . To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3163,24 +3180,24 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 474, spurious reduction of production var_assign -> Ident ASS expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 473, spurious reduction of production var_assign -> Ident ASS expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS With ## -## Ends in an error in state: 473. +## Ends in an error in state: 472. ## ## var_assign -> Ident ASS . expr [ To ] ## @@ -3190,9 +3207,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set Verbatim VBAR ## -## Ends in an error in state: 483. +## Ends in an error in state: 482. ## ## for_loop -> For Ident option(arrow_clause) In collection expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3203,23 +3220,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set With ## -## Ends in an error in state: 482. +## Ends in an error in state: 481. ## ## for_loop -> For Ident option(arrow_clause) In collection . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3229,9 +3246,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In With ## -## Ends in an error in state: 478. +## Ends in an error in state: 477. ## ## for_loop -> For Ident option(arrow_clause) In . collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3241,9 +3258,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident With ## -## Ends in an error in state: 472. +## Ends in an error in state: 471. ## ## for_loop -> For Ident . option(arrow_clause) In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## var_assign -> Ident . ASS expr [ To ] @@ -3254,9 +3271,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For With ## -## Ends in an error in state: 471. +## Ends in an error in state: 470. ## ## for_loop -> For . var_assign To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For . var_assign To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3268,9 +3285,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident ASS With ## -## Ends in an error in state: 520. +## Ends in an error in state: 519. ## ## assignment -> lhs ASS . rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3280,9 +3297,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident DOT Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident DOT Ident With ## -## Ends in an error in state: 513. +## Ends in an error in state: 512. ## ## lhs -> path . [ ASS ] ## map_lookup -> path . brackets(expr) [ ASS ] @@ -3294,16 +3311,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 130, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 428, spurious reduction of production path -> projection +## In state 132, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 341, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 427, spurious reduction of production path -> projection ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident LBRACKET Bytes RBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident LBRACKET Bytes RBRACKET With ## -## Ends in an error in state: 519. +## Ends in an error in state: 518. ## ## assignment -> lhs . ASS rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3313,9 +3330,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident With ## -## Ends in an error in state: 460. +## Ends in an error in state: 459. ## ## fun_call -> Ident . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## path -> Ident . [ LBRACKET ASS ] @@ -3327,9 +3344,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then LBRACE Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE Skip End ## -## Ends in an error in state: 571. +## Ends in an error in state: 570. ## ## clause_block -> LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3340,15 +3357,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then LBRACE With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE With ## -## Ends in an error in state: 459. +## Ends in an error in state: 458. ## ## clause_block -> LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3358,9 +3375,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip Else With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip Else With ## -## Ends in an error in state: 577. +## Ends in an error in state: 576. ## ## conditional -> If expr Then if_clause option(SEMI) Else . if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3370,9 +3387,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip SEMI EQ +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip SEMI EQ ## -## Ends in an error in state: 576. +## Ends in an error in state: 575. ## ## conditional -> If expr Then if_clause option(SEMI) . Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3382,9 +3399,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip With ## -## Ends in an error in state: 575. +## Ends in an error in state: 574. ## ## conditional -> If expr Then if_clause . option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3394,9 +3411,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then With ## -## Ends in an error in state: 458. +## Ends in an error in state: 457. ## ## conditional -> If expr Then . if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3406,9 +3423,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim VBAR ## -## Ends in an error in state: 457. +## Ends in an error in state: 456. ## ## conditional -> If expr . Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3419,23 +3436,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If With ## -## Ends in an error in state: 456. +## Ends in an error in state: 455. ## ## conditional -> If . expr Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3445,9 +3462,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr DOT Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT Ident With ## -## Ends in an error in state: 427. +## Ends in an error in state: 426. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3457,9 +3474,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr DOT With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT With ## -## Ends in an error in state: 426. +## Ends in an error in state: 425. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3469,9 +3486,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr With ## -## Ends in an error in state: 425. +## Ends in an error in state: 424. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3481,9 +3498,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident VBAR ## -## Ends in an error in state: 433. +## Ends in an error in state: 432. ## ## map_patch -> Patch path . With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch path . With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3496,14 +3513,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 424, spurious reduction of production path -> Ident +## In state 423, spurious reduction of production path -> Ident ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident While +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident While ## -## Ends in an error in state: 424. +## Ends in an error in state: 423. ## ## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] @@ -3514,9 +3531,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET Unit ARROW Bytes End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 449. +## Ends in an error in state: 448. ## ## ne_injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3527,26 +3544,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET With ## -## Ends in an error in state: 448. +## Ends in an error in state: 447. ## ## ne_injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3556,9 +3573,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map Unit ARROW Bytes RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 451. +## Ends in an error in state: 450. ## ## ne_injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3569,26 +3586,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 247, spurious reduction of production binding -> expr ARROW expr +## In state 248, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 244, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map With ## -## Ends in an error in state: 447. +## Ends in an error in state: 446. ## ## ne_injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Map,binding) -> Map . LBRACKET sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3599,9 +3616,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 445. +## Ends in an error in state: 444. ## ## ne_injection(Record,field_assignment) -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3612,26 +3629,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 443. +## Ends in an error in state: 442. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3642,26 +3659,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record LBRACKET With ## -## Ends in an error in state: 442. +## Ends in an error in state: 441. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3671,9 +3688,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record With ## -## Ends in an error in state: 441. +## Ends in an error in state: 440. ## ## ne_injection(Record,field_assignment) -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Record,field_assignment) -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3684,9 +3701,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET Unit End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET Verbatim End ## -## Ends in an error in state: 437. +## Ends in an error in state: 436. ## ## ne_injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3697,25 +3714,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET With ## -## Ends in an error in state: 436. +## Ends in an error in state: 435. ## ## ne_injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3725,9 +3742,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set Unit RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set Verbatim RBRACKET ## -## Ends in an error in state: 439. +## Ends in an error in state: 438. ## ## ne_injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3738,25 +3755,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set With ## -## Ends in an error in state: 435. +## Ends in an error in state: 434. ## ## ne_injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Set,expr) -> Set . LBRACKET sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3767,9 +3784,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With With ## -## Ends in an error in state: 434. +## Ends in an error in state: 433. ## ## map_patch -> Patch path With . ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch path With . ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3781,9 +3798,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch With ## -## Ends in an error in state: 432. +## Ends in an error in state: 431. ## ## map_patch -> Patch . path With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch . path With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3795,9 +3812,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From Map With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Map With ## -## Ends in an error in state: 430. +## Ends in an error in state: 429. ## ## map_remove -> Remove expr From Map . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3807,9 +3824,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Set With ## -## Ends in an error in state: 423. +## Ends in an error in state: 422. ## ## set_remove -> Remove expr From Set . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3819,9 +3836,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From With ## -## Ends in an error in state: 422. +## Ends in an error in state: 421. ## ## map_remove -> Remove expr From . Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr From . Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3832,9 +3849,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim VBAR ## -## Ends in an error in state: 421. +## Ends in an error in state: 420. ## ## map_remove -> Remove expr . From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr . From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3846,23 +3863,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove With ## -## Ends in an error in state: 420. +## Ends in an error in state: 419. ## ## map_remove -> Remove . expr From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove . expr From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3873,9 +3890,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 468. +## Ends in an error in state: 467. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3885,9 +3902,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 469. +## Ends in an error in state: 468. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3897,9 +3914,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip RBRACE +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip RBRACE ## -## Ends in an error in state: 579. +## Ends in an error in state: 578. ## ## block -> Begin sep_or_term_list(statement,SEMI) . End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3910,15 +3927,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI Skip SEMI With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip SEMI With ## -## Ends in an error in state: 560. +## Ends in an error in state: 559. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## seq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3929,9 +3946,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip With ## -## Ends in an error in state: 559. +## Ends in an error in state: 558. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3943,9 +3960,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI With ## -## Ends in an error in state: 558. +## Ends in an error in state: 557. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## nseq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3956,9 +3973,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip With ## -## Ends in an error in state: 557. +## Ends in an error in state: 556. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3970,9 +3987,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String ASS With ## -## Ends in an error in state: 416. +## Ends in an error in state: 415. ## ## unqualified_decl(ASS) -> Ident COLON type_expr ASS . expr [ SEMI RBRACE End ] ## @@ -3982,9 +3999,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String VBAR ## -## Ends in an error in state: 415. +## Ends in an error in state: 414. ## ## unqualified_decl(ASS) -> Ident COLON type_expr . ASS expr [ SEMI RBRACE End ] ## @@ -3995,17 +4012,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON With ## -## Ends in an error in state: 414. +## Ends in an error in state: 413. ## ## unqualified_decl(ASS) -> Ident COLON . type_expr ASS expr [ SEMI RBRACE End ] ## @@ -4015,9 +4031,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident With ## -## Ends in an error in state: 413. +## Ends in an error in state: 412. ## ## unqualified_decl(ASS) -> Ident . COLON type_expr ASS expr [ SEMI RBRACE End ] ## @@ -4027,9 +4043,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var With ## -## Ends in an error in state: 412. +## Ends in an error in state: 411. ## ## open_var_decl -> Var . unqualified_decl(ASS) [ SEMI RBRACE End ] ## @@ -4039,9 +4055,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While Verbatim VBAR ## -## Ends in an error in state: 410. +## Ends in an error in state: 409. ## ## while_loop -> While expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4052,23 +4068,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 195, spurious reduction of production unary_expr -> core_expr +## In state 149, spurious reduction of production mult_expr -> unary_expr +## In state 171, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr +## In state 151, spurious reduction of production conj_expr -> set_membership +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While With ## -## Ends in an error in state: 409. +## Ends in an error in state: 408. ## ## while_loop -> While . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4078,9 +4094,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin With ## -## Ends in an error in state: 411. +## Ends in an error in state: 410. ## ## block -> Begin . sep_or_term_list(statement,SEMI) End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4090,9 +4106,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block LBRACE Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE Skip End ## -## Ends in an error in state: 582. +## Ends in an error in state: 581. ## ## block -> Block LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4103,15 +4119,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 556, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 573, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block LBRACE With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE With ## -## Ends in an error in state: 408. +## Ends in an error in state: 407. ## ## block -> Block LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4121,9 +4137,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block With ## -## Ends in an error in state: 407. +## Ends in an error in state: 406. ## ## block -> Block . LBRACE sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4133,37 +4149,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 589. -## -## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] -## -## The known suffix of the stack is as follows: -## open_fun_decl -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 467, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr -## - - - -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With -## -## Ends in an error in state: 466. +## Ends in an error in state: 465. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4174,9 +4162,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 465. +## Ends in an error in state: 464. ## ## open_fun_decl -> Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4188,17 +4176,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 464. +## Ends in an error in state: 463. ## ## open_fun_decl -> Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4211,7 +4198,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 463. +## Ends in an error in state: 462. ## ## open_fun_decl -> Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4224,7 +4211,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR With contract: Function Ident With ## -## Ends in an error in state: 462. +## Ends in an error in state: 461. ## ## open_fun_decl -> Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4237,7 +4224,7 @@ contract: Function Ident With contract: Function With ## -## Ends in an error in state: 461. +## Ends in an error in state: 460. ## ## open_fun_decl -> Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4248,9 +4235,9 @@ contract: Function With -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 585. +## Ends in an error in state: 584. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4260,9 +4247,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 586. +## Ends in an error in state: 585. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4272,9 +4259,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 88. +## Ends in an error in state: 89. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4285,9 +4272,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 87. +## Ends in an error in state: 88. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4299,17 +4286,16 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 86. +## Ends in an error in state: 87. ## ## open_fun_decl -> Recursive Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4322,7 +4308,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 85. +## Ends in an error in state: 86. ## ## open_fun_decl -> Recursive Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4335,7 +4321,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With contract: Recursive Function Ident With ## -## Ends in an error in state: 69. +## Ends in an error in state: 70. ## ## open_fun_decl -> Recursive Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4348,7 +4334,7 @@ contract: Recursive Function Ident With contract: Recursive Function With ## -## Ends in an error in state: 68. +## Ends in an error in state: 69. ## ## open_fun_decl -> Recursive Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4361,7 +4347,7 @@ contract: Recursive Function With contract: Recursive With ## -## Ends in an error in state: 67. +## Ends in an error in state: 68. ## ## open_fun_decl -> Recursive . Function Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive . Function Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4374,7 +4360,7 @@ contract: Recursive With contract: Type Ident Is BigMap With ## -## Ends in an error in state: 18. +## Ends in an error in state: 19. ## ## core_type -> BigMap . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4386,7 +4372,7 @@ contract: Type Ident Is BigMap With contract: Type Ident Is Constr Of With ## -## Ends in an error in state: 27. +## Ends in an error in state: 28. ## ## variant -> Constr Of . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4398,7 +4384,7 @@ contract: Type Ident Is Constr Of With contract: Type Ident Is Constr VBAR With ## -## Ends in an error in state: 39. +## Ends in an error in state: 40. ## ## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4410,7 +4396,7 @@ contract: Type Ident Is Constr VBAR With contract: Type Ident Is Constr With ## -## Ends in an error in state: 26. +## Ends in an error in state: 27. ## ## variant -> Constr . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## variant -> Constr . Of fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] @@ -4421,79 +4407,9 @@ contract: Type Ident Is Constr With -contract: Type Ident Is Ident ARROW With -## -## Ends in an error in state: 36. -## -## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] -## -## The known suffix of the stack is as follows: -## cartesian ARROW -## - - - -contract: Type Ident Is Ident TIMES Ident TIMES With -## -## Ends in an error in state: 33. -## -## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident Is Ident TIMES LPAR Ident RPAR With -## -## Ends in an error in state: 32. -## -## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident Is Ident TIMES With -## -## Ends in an error in state: 30. -## -## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident Is Ident VBAR -## -## Ends in an error in state: 64. -## -## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Recursive Function EOF Const Attributes ] -## -## The known suffix of the stack is as follows: -## Type Ident Is type_expr -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## - - - contract: Type Ident Is Ident With ## -## Ends in an error in state: 15. +## Ends in an error in state: 16. ## ## core_type -> Ident . [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## core_type -> Ident . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] @@ -4504,22 +4420,9 @@ contract: Type Ident Is Ident With -contract: Type Ident Is LPAR Constr RPAR With +contract: Type Ident Is LPAR String VBAR ## -## Ends in an error in state: 29. -## -## cartesian -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident Is LPAR Ident VBAR -## -## Ends in an error in state: 61. +## Ends in an error in state: 62. ## ## par(type_expr) -> LPAR type_expr . RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4530,17 +4433,16 @@ contract: Type Ident Is LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Type Ident Is LPAR With ## -## Ends in an error in state: 6. +## Ends in an error in state: 7. ## ## par(type_expr) -> LPAR . type_expr RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4552,7 +4454,7 @@ contract: Type Ident Is LPAR With contract: Type Ident Is List With ## -## Ends in an error in state: 13. +## Ends in an error in state: 14. ## ## core_type -> List . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4562,9 +4464,9 @@ contract: Type Ident Is List With -contract: Type Ident Is Map LPAR Ident COMMA With +contract: Type Ident Is Map LPAR String COMMA With ## -## Ends in an error in state: 21. +## Ends in an error in state: 22. ## ## nsepseq(type_expr,COMMA) -> type_expr COMMA . nsepseq(type_expr,COMMA) [ RPAR ] ## @@ -4574,9 +4476,9 @@ contract: Type Ident Is Map LPAR Ident COMMA With -contract: Type Ident Is Map LPAR Ident VBAR +contract: Type Ident Is Map LPAR String VBAR ## -## Ends in an error in state: 20. +## Ends in an error in state: 21. ## ## nsepseq(type_expr,COMMA) -> type_expr . [ RPAR ] ## nsepseq(type_expr,COMMA) -> type_expr . COMMA nsepseq(type_expr,COMMA) [ RPAR ] @@ -4588,17 +4490,16 @@ contract: Type Ident Is Map LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Type Ident Is Map LPAR With ## -## Ends in an error in state: 12. +## Ends in an error in state: 13. ## ## par(nsepseq(type_expr,COMMA)) -> LPAR . nsepseq(type_expr,COMMA) RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4610,7 +4511,7 @@ contract: Type Ident Is Map LPAR With contract: Type Ident Is Map With ## -## Ends in an error in state: 11. +## Ends in an error in state: 12. ## ## core_type -> Map . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4622,7 +4523,7 @@ contract: Type Ident Is Map With contract: Type Ident Is Record Ident COLON Ident RBRACKET ## -## Ends in an error in state: 59. +## Ends in an error in state: 60. ## ## record_type -> Record sep_or_term_list(field_decl,SEMI) . End [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4633,20 +4534,20 @@ contract: Type Ident Is Record Ident COLON Ident RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr -## In state 52, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl -## In state 51, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 53, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl +## In state 52, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) ## contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident SEMI With ## -## Ends in an error in state: 57. +## Ends in an error in state: 58. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACKET End ] @@ -4659,7 +4560,7 @@ contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident SEMI Wit contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident VBAR ## -## Ends in an error in state: 56. +## Ends in an error in state: 57. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACKET End ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACKET End ] @@ -4672,18 +4573,18 @@ contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident Is Record Ident COLON Ident SEMI With ## -## Ends in an error in state: 53. +## Ends in an error in state: 54. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACKET End ] @@ -4696,7 +4597,7 @@ contract: Type Ident Is Record Ident COLON Ident SEMI With contract: Type Ident Is Record Ident COLON Ident VBAR ## -## Ends in an error in state: 52. +## Ends in an error in state: 53. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACKET End ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACKET End ] @@ -4709,18 +4610,18 @@ contract: Type Ident Is Record Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident Is Record Ident COLON With ## -## Ends in an error in state: 10. +## Ends in an error in state: 11. ## ## field_decl -> Ident COLON . type_expr [ SEMI RBRACKET End ] ## @@ -4732,7 +4633,7 @@ contract: Type Ident Is Record Ident COLON With contract: Type Ident Is Record Ident With ## -## Ends in an error in state: 9. +## Ends in an error in state: 10. ## ## field_decl -> Ident . COLON type_expr [ SEMI RBRACKET End ] ## @@ -4744,7 +4645,7 @@ contract: Type Ident Is Record Ident With contract: Type Ident Is Record LBRACKET Ident COLON Ident End ## -## Ends in an error in state: 48. +## Ends in an error in state: 49. ## ## record_type -> Record LBRACKET sep_or_term_list(field_decl,SEMI) . RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4755,20 +4656,20 @@ contract: Type Ident Is Record LBRACKET Ident COLON Ident End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr -## In state 52, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl -## In state 51, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 53, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl +## In state 52, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) ## contract: Type Ident Is Record LBRACKET With ## -## Ends in an error in state: 8. +## Ends in an error in state: 9. ## ## record_type -> Record LBRACKET . sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4780,7 +4681,7 @@ contract: Type Ident Is Record LBRACKET With contract: Type Ident Is Record With ## -## Ends in an error in state: 7. +## Ends in an error in state: 8. ## ## record_type -> Record . sep_or_term_list(field_decl,SEMI) End [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## record_type -> Record . LBRACKET sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] @@ -4793,7 +4694,7 @@ contract: Type Ident Is Record With contract: Type Ident Is Set With ## -## Ends in an error in state: 5. +## Ends in an error in state: 6. ## ## core_type -> Set . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4803,9 +4704,91 @@ contract: Type Ident Is Set With +contract: Type Ident Is String ARROW With +## +## Ends in an error in state: 37. +## +## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## +## The known suffix of the stack is as follows: +## cartesian ARROW +## + + + +contract: Type Ident Is String TIMES String TIMES With +## +## Ends in an error in state: 34. +## +## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident Is String TIMES String With +## +## Ends in an error in state: 33. +## +## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + +contract: Type Ident Is String TIMES With +## +## Ends in an error in state: 31. +## +## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident Is String VBAR +## +## Ends in an error in state: 65. +## +## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Recursive Function EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## Type Ident Is type_expr +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## + + + +contract: Type Ident Is String With +## +## Ends in an error in state: 30. +## +## cartesian -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + contract: Type Ident Is VBAR Const ## -## Ends in an error in state: 25. +## Ends in an error in state: 26. ## ## sum_type -> option(VBAR) . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## diff --git a/src/passes/01-parser/reasonligo/Parser.mly b/src/passes/01-parser/reasonligo/Parser.mly index b4114040d..998279770 100644 --- a/src/passes/01-parser/reasonligo/Parser.mly +++ b/src/passes/01-parser/reasonligo/Parser.mly @@ -1012,19 +1012,28 @@ field_assignment: field_expr = $3} in {region; value} } +real_selection: + field_name { FieldName $1 } +| "" { Component $1 } + field_path_assignment: - field_name { - let value = { + real_selection { + let region = selection_to_region $1 + and value = { field_path = ($1,[]); assignment = ghost; - field_expr = EVar $1 } - in {$1 with value} + field_expr = match $1 with + FieldName var -> EVar var + | Component {value;region} -> + let value = Z.to_string (snd value) in + EVar {value;region} } + in {region; value} } -| nsepseq(field_name,".") ":" expr { - let start = nsepseq_to_region (fun x -> x.region) $1 in - let stop = expr_to_region $3 in - let region = cover start stop in - let value = { +| nsepseq(real_selection,".") ":" expr { + let start = nsepseq_to_region selection_to_region $1 + and stop = expr_to_region $3 in + let region = cover start stop + and value = { field_path = $1; assignment = $2; field_expr = $3} diff --git a/src/passes/01-parser/reasonligo/error.messages.checked-in b/src/passes/01-parser/reasonligo/error.messages.checked-in index 3d73d28de..f161e5a67 100644 --- a/src/passes/01-parser/reasonligo/error.messages.checked-in +++ b/src/passes/01-parser/reasonligo/error.messages.checked-in @@ -2135,18 +2135,6 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR -interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR -## -## Ends in an error in state: 331. -## -## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] -## -## The known suffix of the stack is as follows: -## sub_pattern COMMA -## - - - interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD ## ## Ends in an error in state: 330. @@ -2160,6 +2148,18 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR +## +## Ends in an error in state: 336. +## +## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] +## +## The known suffix of the stack is as follows: +## sub_pattern COMMA +## + + + interactive_expr: Switch WILD LBRACE VBAR WILD WILD ## ## Ends in an error in state: 430. diff --git a/src/passes/02-concrete_to_imperative/cameligo.ml b/src/passes/02-concrete_to_imperative/cameligo.ml index 04ac16fe0..79e0c5acc 100644 --- a/src/passes/02-concrete_to_imperative/cameligo.ml +++ b/src/passes/02-concrete_to_imperative/cameligo.ml @@ -343,26 +343,25 @@ let rec compile_expression : let path' = let aux (s:Raw.selection) = match s with - FieldName property -> property.value - | Component index -> Z.to_string (snd index.value) + FieldName property -> Access_record property.value + | Component index -> Access_tuple (snd index.value) in List.map aux @@ npseq_to_list path in - return @@ List.fold_left (e_record_accessor ~loc ) var path' + return @@ e_accessor ~loc var path' in - let compile_path : Raw.path -> string * label list = fun p -> + let compile_selection : Raw.selection -> access = fun s -> + match s with + | FieldName property -> Access_record property.value + | Component index -> (Access_tuple (snd index.value)) + in + let compile_path : Raw.path -> string * access list = fun p -> match p with | Raw.Name v -> (v.value , []) | Raw.Path p -> ( let p' = p.value in let var = p'.struct_name.value in let path = p'.field_path in - let path' = - let aux (s:Raw.selection) = - match s with - | FieldName property -> Label property.value - | Component index -> Label (Z.to_string (snd index.value)) - in - List.map aux @@ npseq_to_list path in + let path' = List.map compile_selection @@ npseq_to_list path in (var , path') ) in @@ -371,30 +370,19 @@ let rec compile_expression : let (name, path) = compile_path u.record in let record = match path with | [] -> e_variable (Var.of_name name) - | _ -> - let aux expr (Label l) = e_record_accessor expr l in - List.fold_left aux (e_variable (Var.of_name name)) path in + | _ -> e_accessor (e_variable (Var.of_name name)) path in let updates = u.updates.value.ne_elements in let%bind updates' = let aux (f:Raw.field_path_assign Raw.reg) = let (f,_) = r_split f in let%bind expr = compile_expression f.field_expr in - ok ( List.map (fun (x: _ Raw.reg) -> x.value) (npseq_to_list f.field_path), expr) + ok ( List.map compile_selection (npseq_to_list f.field_path), expr) in bind_map_list aux @@ npseq_to_list updates in - let aux ur (path, expr) = - let rec aux record = function - | [] -> failwith "error in parsing" - | hd :: [] -> ok @@ e_record_update ~loc record hd expr - | hd :: tl -> - let%bind expr = (aux (e_record_accessor ~loc record hd) tl) in - ok @@ e_record_update ~loc record hd expr - in - aux ur path in + let aux ur (path, expr) = ok @@ e_update ~loc ur path expr in bind_fold_list aux record updates' in - trace (abstracting_expr t) @@ match t with Raw.ELetIn e -> @@ -439,11 +427,11 @@ let rec compile_expression : | hd :: [] -> if (List.length prep_vars = 1) then e_let_in ~loc hd inline rhs_b_expr body - else e_let_in ~loc hd inline (e_record_accessor ~loc rhs_b_expr (string_of_int ((List.length prep_vars) - 1))) body + else e_let_in ~loc hd inline (e_accessor ~loc rhs_b_expr [Access_tuple (Z.of_int ((List.length prep_vars) - 1))]) body | hd :: tl -> e_let_in ~loc hd inline - (e_record_accessor ~loc rhs_b_expr (string_of_int ((List.length prep_vars) - (List.length tl) - 1))) + (e_accessor ~loc rhs_b_expr [Access_tuple (Z.of_int ((List.length prep_vars) - (List.length tl) - 1))]) (chain_let_in tl body) | [] -> body (* Precluded by corner case assertion above *) in diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index 9b653c280..e8021dd3c 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -271,11 +271,11 @@ let compile_projection : Raw.projection Region.reg -> _ = fun p -> let path' = let aux (s:Raw.selection) = match s with - | FieldName property -> property.value - | Component index -> (Z.to_string (snd index.value)) + | FieldName property -> Access_record property.value + | Component index -> (Access_tuple (snd index.value)) in List.map aux @@ npseq_to_list path in - ok @@ List.fold_left (e_record_accessor ~loc) var path' + ok @@ e_accessor ~loc var path' let rec compile_expression (t:Raw.expr) : expr result = @@ -451,7 +451,7 @@ let rec compile_expression (t:Raw.expr) : expr result = | Path p -> compile_projection p in let%bind index = compile_expression lu.index.value.inside in - return @@ e_look_up ~loc path index + return @@ e_accessor ~loc path [Access_map index] ) | EFun f -> let (f , loc) = r_split f in @@ -464,25 +464,17 @@ and compile_update = fun (u:Raw.update Region.reg) -> let (name, path) = compile_path u.record in let record = match path with | [] -> e_variable (Var.of_name name) - | _ -> e_accessor_list (e_variable (Var.of_name name)) path in + | _ -> e_accessor (e_variable (Var.of_name name)) path in let updates = u.updates.value.ne_elements in let%bind updates' = let aux (f:Raw.field_path_assign Raw.reg) = let (f,_) = r_split f in let%bind expr = compile_expression f.field_expr in - ok ( List.map (fun (x: _ Raw.reg) -> x.value) (npseq_to_list f.field_path), expr) + ok ( List.map compile_selection (npseq_to_list f.field_path), expr) in bind_map_list aux @@ npseq_to_list updates in - let aux ur (path, expr) = - let rec aux record = function - | [] -> failwith "error in parsing" - | hd :: [] -> ok @@ e_record_update ~loc record hd expr - | hd :: tl -> - let%bind expr = (aux (e_record_accessor ~loc record hd) tl) in - ok @@ e_record_update ~loc record hd expr - in - aux ur path in + let aux ur (path, expr) = ok @@ e_update ~loc ur path expr in bind_fold_list aux record updates' and compile_logic_expression (t:Raw.logic_expr) : expression result = @@ -668,7 +660,7 @@ and compile_fun_decl : let%bind tpl_declarations = let aux = fun i (param, type_expr) -> let expr = - e_record_accessor (e_variable arguments_name) (string_of_int i) in + e_accessor (e_variable arguments_name) [Access_record (string_of_int i)] in let type_variable = Some type_expr in let ass = return_let_in (Var.of_name param , type_variable) inline expr in ass @@ -731,7 +723,7 @@ and compile_fun_expression : (arguments_name , type_expression) in let%bind tpl_declarations = let aux = fun i (param, param_type) -> - let expr = e_record_accessor (e_variable arguments_name) (string_of_int i) in + let expr = e_accessor (e_variable arguments_name) [Access_tuple (Z.of_int i)] in let type_variable = Some param_type in let ass = return_let_in (Var.of_name param , type_variable) false expr in ass @@ -871,7 +863,8 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res match a.lhs with | Path path -> ( let (name , path') = compile_path path in - return_statement @@ e_ez_assign ~loc name path' value_expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name path' value_expr ) | MapPath v -> ( let v' = v.value in @@ -884,7 +877,8 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in let%bind key_expr = compile_expression v'.index.value.inside in let expr' = e_map_add key_expr value_expr map in - return_statement @@ e_ez_assign ~loc varname path expr' + let varname = Var.of_name varname in + return_statement @@ e_assign ~loc varname path expr' ) ) | CaseInstr c -> ( @@ -914,7 +908,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let reg = r.region in let (r,loc) = r_split r in let aux (fa :Raw.field_assign Raw.reg) : Raw.field_path_assign Raw.reg= - {value = {field_path = (fa.value.field_name, []); equal=fa.value.equal; field_expr = fa.value.field_expr}; + {value = {field_path = (FieldName fa.value.field_name, []); equal=fa.value.equal; field_expr = fa.value.field_expr}; region = fa.region} in let update : Raw.field_path_assign Raw.reg Raw.ne_injection Raw.reg = { @@ -924,7 +918,8 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let u : Raw.update = {record=r.path;kwd_with=r.kwd_with; updates=update} in let%bind expr = compile_update {value=u;region=reg} in let (name , access_path) = compile_path r.path in - return_statement @@ e_ez_assign ~loc name access_path expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name access_path expr ) | MapPatch patch -> ( @@ -945,9 +940,10 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let assigns = List.fold_right (fun (key, value) map -> (e_map_add key value map)) inj - (e_accessor_list ~loc (e_variable (Var.of_name name)) access_path) + (e_accessor ~loc (e_variable (Var.of_name name)) access_path) in - return_statement @@ e_ez_assign ~loc name access_path assigns + let name = Var.of_name name in + return_statement @@ e_assign ~loc name access_path assigns ) | SetPatch patch -> ( let (setp, loc) = r_split patch in @@ -961,13 +957,14 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res | _ :: _ -> let assigns = List.fold_right (fun hd s -> e_constant C_SET_ADD [hd ; s]) - inj (e_accessor_list ~loc (e_variable (Var.of_name name)) access_path) in - return_statement @@ e_ez_assign ~loc name access_path assigns + inj (e_accessor ~loc (e_variable (Var.of_name name)) access_path) in + let name = Var.of_name name in + return_statement @@ e_assign ~loc name access_path assigns ) | MapRemove r -> ( let (v , loc) = r_split r in let key = v.key in - let%bind (varname,map,path) = match v.map with + let%bind (name,map,path) = match v.map with | Name v -> ok (v.value , e_variable (Var.of_name v.value) , []) | Path p -> let (name,p') = compile_path v.map in @@ -976,11 +973,12 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in let%bind key' = compile_expression key in let expr = e_constant ~loc C_MAP_REMOVE [key' ; map] in - return_statement @@ e_ez_assign ~loc varname path expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name path expr ) | SetRemove r -> ( let (set_rm, loc) = r_split r in - let%bind (varname, set, path) = match set_rm.set with + let%bind (name, set, path) = match set_rm.set with | Name v -> ok (v.value, e_variable (Var.of_name v.value), []) | Path path -> let(name, p') = compile_path set_rm.set in @@ -989,26 +987,26 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in let%bind removed' = compile_expression set_rm.element in let expr = e_constant ~loc C_SET_REMOVE [removed' ; set] in - return_statement @@ e_ez_assign ~loc varname path expr + let name = Var.of_name name in + return_statement @@ e_assign ~loc name path expr ) -and compile_path : Raw.path -> string * string list = fun p -> +and compile_path : Raw.path -> string * access list = fun p -> match p with | Raw.Name v -> (v.value , []) | Raw.Path p -> ( let p' = p.value in let var = p'.struct_name.value in let path = p'.field_path in - let path' = - let aux (s:Raw.selection) = - match s with - | FieldName property -> property.value - | Component index -> (Z.to_string (snd index.value)) - in - List.map aux @@ npseq_to_list path in + let path' = List.map compile_selection @@ npseq_to_list path in (var , path') ) +and compile_selection : Raw.selection -> access = fun s -> + match s with + | FieldName property -> Access_record property.value + | Component index -> (Access_tuple (snd index.value)) + and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fun t -> let open Raw in let get_var (t:Raw.pattern) = diff --git a/src/passes/03-self_ast_imperative/helpers.ml b/src/passes/03-self_ast_imperative/helpers.ml index 6a0d90946..667899533 100644 --- a/src/passes/03-self_ast_imperative/helpers.ml +++ b/src/passes/03-self_ast_imperative/helpers.ml @@ -30,9 +30,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list (bind_fold_pair self) init' lst in ok res ) - | E_look_up ab -> - let%bind res = bind_fold_pair self init' ab in - ok res | E_application {lamb;args} -> ( let ab = (lamb,args) in let%bind res = bind_fold_pair self init' ab in @@ -56,15 +53,25 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_lmap aux (ok init') m in ok res ) - | E_record_update {record;update} -> ( + | E_update {record;path;update} -> ( let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in let%bind res = fold_expression self res update in ok res ) - | E_record_accessor {record} -> ( - let%bind res = self init' record in - ok res - ) + | E_accessor {record;path} -> ( + let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in + ok res + ) | E_tuple t -> ( let aux init'' expr = let%bind res = fold_expression self init'' expr in @@ -73,15 +80,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list aux (init') t in ok res ) - | E_tuple_update {tuple;update} -> ( - let%bind res = self init' tuple in - let%bind res = fold_expression self res update in - ok res - ) - | E_tuple_accessor {tuple} -> ( - let%bind res = self init' tuple in - ok res - ) | E_let_in { let_binder = _ ; rhs ; let_result } -> ( let%bind res = self init' rhs in let%bind res = self res let_result in @@ -172,10 +170,6 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind lst' = bind_map_list (bind_map_pair self) lst in return @@ E_big_map lst' ) - | E_look_up ab -> ( - let%bind ab' = bind_map_pair self ab in - return @@ E_look_up ab' - ) | E_ascription ascr -> ( let%bind e' = self ascr.anno_expr in return @@ E_ascription {ascr with anno_expr=e'} @@ -185,32 +179,37 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind cases' = map_cases f cases in return @@ E_matching {matchee=e';cases=cases'} ) - | E_record_accessor acc -> ( - let%bind e' = self acc.record in - return @@ E_record_accessor {acc with record = e'} - ) | E_record m -> ( let%bind m' = bind_map_lmap self m in return @@ E_record m' ) - | E_record_update {record; path; update} -> ( + | E_accessor {record; path} -> ( let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in + return @@ E_accessor {record; path} + ) + | E_update {record; path; update} -> ( + let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in let%bind update = self update in - return @@ E_record_update {record;path;update} + return @@ E_update {record;path;update} ) | E_tuple t -> ( let%bind t' = bind_map_list self t in return @@ E_tuple t' ) - | E_tuple_update {tuple; path; update} -> ( - let%bind tuple = self tuple in - let%bind update = self update in - return @@ E_tuple_update {tuple; path; update} - ) - | E_tuple_accessor {tuple;path} -> ( - let%bind tuple = self tuple in - return @@ E_tuple_accessor {tuple;path} - ) | E_constructor c -> ( let%bind e' = self c.element in return @@ E_constructor {c with element = e'} @@ -361,10 +360,6 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res, lst') = bind_fold_map_list (bind_fold_map_pair self) init' lst in ok (res, return @@ E_big_map lst') ) - | E_look_up ab -> ( - let%bind (res, ab') = bind_fold_map_pair self init' ab in - ok (res, return @@ E_look_up ab') - ) | E_ascription ascr -> ( let%bind (res,e') = self init' ascr.anno_expr in ok (res, return @@ E_ascription {ascr with anno_expr=e'}) @@ -374,33 +369,38 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,cases') = fold_map_cases f res cases in ok (res, return @@ E_matching {matchee=e';cases=cases'}) ) - | E_record_accessor acc -> ( - let%bind (res, e') = self init' acc.record in - ok (res, return @@ E_record_accessor {acc with record = e'}) - ) | E_record m -> ( let%bind (res, lst') = bind_fold_map_list (fun res (k,e) -> let%bind (res,e) = self res e in ok (res,(k,e))) init' (LMap.to_kv_list m) in let m' = LMap.of_list lst' in ok (res, return @@ E_record m') ) - | E_record_update {record; path; update} -> ( + | E_accessor {record;path} -> ( let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in + ok (res, return @@ E_accessor {record; path}) + ) + | E_update {record; path; update} -> ( + let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in let%bind (res, update) = self res update in - ok (res, return @@ E_record_update {record;path;update}) + ok (res, return @@ E_update {record;path;update}) ) | E_tuple t -> ( let%bind (res, t') = bind_fold_map_list self init' t in ok (res, return @@ E_tuple t') ) - | E_tuple_update {tuple; path; update} -> ( - let%bind (res, tuple) = self init' tuple in - let%bind (res, update) = self res update in - ok (res, return @@ E_tuple_update {tuple;path;update}) - ) - | E_tuple_accessor {tuple; path} -> ( - let%bind (res, tuple) = self init' tuple in - ok (res, return @@ E_tuple_accessor {tuple; path}) - ) | E_constructor c -> ( let%bind (res,e') = self init' c.element in ok (res, return @@ E_constructor {c with element = e'}) diff --git a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml index b9604aedc..7bb8569f3 100644 --- a/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml +++ b/src/passes/04-imperative_to_sugar/imperative_to_sugar.ml @@ -46,7 +46,7 @@ let repair_mutable_variable_in_matching (match_body : O.expression) (element_nam ok (true,(decl_var, free_var), O.e_let_in let_binder false false rhs let_result) else( let free_var = if (List.mem name free_var) then free_var else name::free_var in - let expr = O.e_let_in (env,None) false false (O.e_record_update (O.e_variable env) (O.Label (Var.to_name name)) (O.e_variable name)) let_result in + let expr = O.e_let_in (env,None) false false (O.e_update (O.e_variable env) [O.Access_record (Var.to_name name)] (O.e_variable name)) let_result in ok (true,(decl_var, free_var), O.e_let_in let_binder false false rhs expr) ) | E_constant {cons_name=C_MAP_FOLD;arguments= _} @@ -58,9 +58,9 @@ let repair_mutable_variable_in_matching (match_body : O.expression) (element_nam | E_skip | E_literal _ | E_variable _ | E_application _ | E_lambda _| E_recursive _ - | E_constructor _ | E_record _| E_record_accessor _|E_record_update _ - | E_ascription _ | E_sequence _ | E_tuple _ | E_tuple_accessor _ | E_tuple_update _ - | E_map _ | E_big_map _ |E_list _ | E_set _ |E_look_up _ + | E_constructor _ | E_record _| E_accessor _|E_update _ + | E_ascription _ | E_sequence _ | E_tuple _ + | E_map _ | E_big_map _ |E_list _ | E_set _ -> ok (true, (decl_var, free_var),ass_exp) ) (element_names,[]) @@ -87,8 +87,7 @@ and repair_mutable_variable_in_loops (for_body : O.expression) (element_names : else( let free_var = if (List.mem name free_var) then free_var else name::free_var in let expr = O.e_let_in (env,None) false false ( - O.e_record_update (O.e_variable env) (Label "0") - (O.e_record_update (O.e_record_accessor (O.e_variable env) (Label "0")) (Label (Var.to_name name)) (O.e_variable name)) + O.e_update (O.e_variable env) [O.Access_tuple Z.zero; O.Access_record (Var.to_name name)] (O.e_variable name) ) let_result in ok (true,(decl_var, free_var), O.e_let_in let_binder false false rhs expr) @@ -102,9 +101,9 @@ and repair_mutable_variable_in_loops (for_body : O.expression) (element_names : | E_skip | E_literal _ | E_variable _ | E_application _ | E_lambda _| E_recursive _ - | E_constructor _ | E_record _| E_record_accessor _|E_record_update _ - | E_ascription _ | E_sequence _ | E_tuple _ | E_tuple_accessor _ | E_tuple_update _ - | E_map _ | E_big_map _ |E_list _ | E_set _ |E_look_up _ + | E_constructor _ | E_record _| E_accessor _| E_update _ + | E_ascription _ | E_sequence _ | E_tuple _ + | E_map _ | E_big_map _ |E_list _ | E_set _ -> ok (true, (decl_var, free_var),ass_exp) ) (element_names,[]) @@ -120,7 +119,7 @@ and store_mutable_variable (free_vars : I.expression_variable list) = and restore_mutable_variable (expr : O.expression->O.expression) (free_vars : O.expression_variable list) (env : O.expression_variable) = let aux (f: O.expression -> O.expression) (ev: O.expression_variable) = - fun expr -> f (O.e_let_in (ev,None) true false (O.e_record_accessor (O.e_variable env) (Label (Var.to_name ev))) expr) + fun expr -> f (O.e_let_in (ev,None) true false (O.e_accessor (O.e_variable env) [O.Access_record (Var.to_name ev)]) expr) in let ef = List.fold_left aux (fun e -> e) free_vars in fun e -> match e with @@ -234,13 +233,15 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) ) record in return @@ O.e_record ~loc (O.LMap.of_list record) - | I.E_record_accessor {record;path} -> + | I.E_accessor {record;path} -> let%bind record = compile_expression record in - return @@ O.e_record_accessor ~loc record path - | I.E_record_update {record;path;update} -> + let%bind path = compile_path path in + return @@ O.e_accessor ~loc record path + | I.E_update {record;path;update} -> let%bind record = compile_expression record in + let%bind path = compile_path path in let%bind update = compile_expression update in - return @@ O.e_record_update ~loc record path update + return @@ O.e_update ~loc record path update | I.E_map map -> let%bind map = bind_map_list ( bind_map_pair compile_expression @@ -259,9 +260,6 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) | I.E_set set -> let%bind set = bind_map_list compile_expression set in return @@ O.e_set ~loc set - | I.E_look_up look_up -> - let%bind (a,b) = bind_map_pair compile_expression look_up in - return @@ O.e_look_up ~loc a b | I.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = compile_expression anno_expr in let%bind type_annotation = compile_type_expression type_annotation in @@ -298,41 +296,10 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) | I.E_tuple tuple -> let%bind tuple = bind_map_list compile_expression tuple in return @@ O.e_tuple ~loc tuple - | I.E_tuple_accessor {tuple;path} -> - let%bind tuple = compile_expression tuple in - return @@ O.e_tuple_accessor ~loc tuple path - | I.E_tuple_update {tuple;path;update} -> - let%bind tuple = compile_expression tuple in - let%bind update = compile_expression update in - return @@ O.e_tuple_update ~loc tuple path update | I.E_assign {variable; access_path; expression} -> - let accessor ?loc s a = - match a with - I.Access_tuple _i -> failwith "adding tuple soon" - | I.Access_record a -> ok @@ O.e_record_accessor ?loc s (Label a) - | I.Access_map k -> - let%bind k = compile_expression k in - ok @@ O.e_constant ?loc C_MAP_FIND_OPT [k;s] - in - let update ?loc (s:O.expression) a e = - match a with - I.Access_tuple _i -> failwith "adding tuple soon" - | I.Access_record a -> ok @@ O.e_record_update ?loc s (Label a) e - | I.Access_map k -> - let%bind k = compile_expression k in - ok @@ O.e_constant ?loc C_UPDATE [k;O.e_some (e);s] - in - let aux (s, e : O.expression * _) lst = - let%bind s' = accessor ~loc:s.location s lst in - let e' = fun expr -> - let%bind u = update ~loc:s.location s lst (expr) - in e u - in - ok @@ (s',e') - in - let%bind (_,rhs) = bind_fold_list aux (O.e_variable variable, fun e -> ok @@ e) access_path in + let%bind access_path = compile_path access_path in let%bind expression = compile_expression expression in - let%bind rhs = rhs @@ expression in + let rhs = O.e_update ~loc (O.e_variable ~loc variable) access_path expression in ok @@ fun expr -> (match expr with | None -> O.e_let_in ~loc (variable,None) true false rhs (O.e_skip ()) | Some e -> O.e_let_in ~loc (variable, None) true false rhs e @@ -347,6 +314,16 @@ and compile_expression' : I.expression -> (O.expression option -> O.expression) let%bind w = compile_while w in ok @@ w +and compile_path : I.access list -> O.access list result = + fun path -> + let aux a = match a with + | I.Access_record s -> ok @@ O.Access_record s + | I.Access_tuple i -> ok @@ O.Access_tuple i + | I.Access_map e -> + let%bind e = compile_expression e in + ok @@ O.Access_map e + in + bind_map_list aux path and compile_lambda : I.lambda -> O.lambda result = fun {binder;input_type;output_type;result}-> @@ -453,7 +430,7 @@ and compile_while I.{condition;body} = let for_body = add_to_end for_body ctrl in let aux name expr= - O.e_let_in (name,None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable binder) (Label "0")) (Label (Var.to_name name))) expr + O.e_let_in (name,None) false false (O.e_accessor (O.e_variable binder) [Access_tuple Z.zero; Access_record (Var.to_name name)]) expr in let init_rec = O.e_tuple [store_mutable_variable @@ captured_name_list] in let restore = fun expr -> List.fold_right aux captured_name_list expr in @@ -468,7 +445,7 @@ and compile_while I.{condition;body} = let return_expr = fun expr -> O.e_let_in let_binder false false init_rec @@ O.e_let_in let_binder false false loop @@ - O.e_let_in let_binder false false (O.e_record_accessor (O.e_variable env_rec) (Label"0")) @@ + O.e_let_in let_binder false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.zero]) @@ expr in ok @@ restore_mutable_variable return_expr captured_name_list env_rec @@ -483,7 +460,7 @@ and compile_for I.{binder;start;final;increment;body} = let continue_expr = O.e_constant C_FOLD_CONTINUE [(O.e_variable env_rec)] in let ctrl = O.e_let_in (binder,Some (O.t_int ())) false false (O.e_constant C_ADD [ O.e_variable binder ; step ]) @@ - O.e_let_in (env_rec, None) false false (O.e_record_update (O.e_variable env_rec) (Label "1") @@ O.e_variable binder)@@ + O.e_let_in (env_rec, None) false false (O.e_update (O.e_variable env_rec) [Access_tuple Z.one] @@ O.e_variable binder)@@ continue_expr in (* Modify the body loop*) @@ -492,7 +469,7 @@ and compile_for I.{binder;start;final;increment;body} = let for_body = add_to_end for_body ctrl in let aux name expr= - O.e_let_in (name,None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable env_rec) (Label "0")) (Label (Var.to_name name))) expr + O.e_let_in (name,None) false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.zero; Access_record (Var.to_name name)]) expr in (* restores the initial value of the free_var*) @@ -501,7 +478,7 @@ and compile_for I.{binder;start;final;increment;body} = (*Prep the lambda for the fold*) let stop_expr = O.e_constant C_FOLD_STOP [O.e_variable env_rec] in let aux_func = O.e_lambda env_rec None None @@ - O.e_let_in (binder,Some (O.t_int ())) false false (O.e_record_accessor (O.e_variable env_rec) (Label "1")) @@ + O.e_let_in (binder,Some (O.t_int ())) false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.one]) @@ O.e_cond cond (restore for_body) (stop_expr) in (* Make the fold_while en precharge the vakye *) @@ -514,7 +491,7 @@ and compile_for I.{binder;start;final;increment;body} = O.e_let_in (binder, Some (O.t_int ())) false false start @@ O.e_let_in let_binder false false init_rec @@ O.e_let_in let_binder false false loop @@ - O.e_let_in let_binder false false (O.e_record_accessor (O.e_variable env_rec) (Label "0")) @@ + O.e_let_in let_binder false false (O.e_accessor (O.e_variable env_rec) [Access_tuple Z.zero]) @@ expr in ok @@ restore_mutable_variable return_expr captured_name_list env_rec @@ -530,21 +507,21 @@ and compile_for_each I.{binder;collection;collection_type; body} = let%bind body = compile_expression body in let%bind ((_,free_vars), body) = repair_mutable_variable_in_loops body element_names args in - let for_body = add_to_end body @@ (O.e_record_accessor (O.e_variable args) (Label "0")) in + let for_body = add_to_end body @@ (O.e_accessor (O.e_variable args) [Access_tuple Z.zero]) in let init_record = store_mutable_variable free_vars in let%bind collect = compile_expression collection in let aux name expr= - O.e_let_in (name,None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "0")) (Label (Var.to_name name))) expr + O.e_let_in (name,None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.zero; Access_record (Var.to_name name)]) expr in let restore = fun expr -> List.fold_right aux free_vars expr in let restore = match collection_type with | Map -> (match snd binder with - | Some v -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "1")) (Label "0")) - (O.e_let_in (v, None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "1")) (Label "1")) expr)) - | None -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_record_accessor (O.e_record_accessor (O.e_variable args) (Label "1")) (Label "0")) expr) + | Some v -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one; Access_tuple Z.zero]) + (O.e_let_in (v, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one; Access_tuple Z.one]) expr)) + | None -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one; Access_tuple Z.zero]) expr) ) - | _ -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_record_accessor (O.e_variable args) (Label "1")) expr) + | _ -> fun expr -> restore (O.e_let_in (fst binder, None) false false (O.e_accessor (O.e_variable args) [Access_tuple Z.one]) expr) in let lambda = O.e_lambda args None None (restore for_body) in let%bind op_name = match collection_type with @@ -610,18 +587,18 @@ let rec uncompile_type_expression : O.type_expression -> I.type_expression resul let%bind lst = bind_map_list uncompile_type_expression lst in return @@ T_operator (type_operator, lst) -let rec uncompile_expression' : O.expression -> I.expression result = +let rec uncompile_expression : O.expression -> I.expression result = fun e -> let return expr = ok @@ I.make_e ~loc:e.location expr in match e.expression_content with O.E_literal lit -> return @@ I.E_literal lit | O.E_constant {cons_name;arguments} -> - let%bind arguments = bind_map_list uncompile_expression' arguments in + let%bind arguments = bind_map_list uncompile_expression arguments in return @@ I.E_constant {cons_name;arguments} | O.E_variable name -> return @@ I.E_variable name | O.E_application {lamb; args} -> - let%bind lamb = uncompile_expression' lamb in - let%bind args = uncompile_expression' args in + let%bind lamb = uncompile_expression lamb in + let%bind args = uncompile_expression args in return @@ I.E_application {lamb; args} | O.E_lambda lambda -> let%bind lambda = uncompile_lambda lambda in @@ -633,114 +610,116 @@ let rec uncompile_expression' : O.expression -> I.expression result = | O.E_let_in {let_binder;inline;rhs;let_result} -> let (binder,ty_opt) = let_binder in let%bind ty_opt = bind_map_option uncompile_type_expression ty_opt in - let%bind rhs = uncompile_expression' rhs in - let%bind let_result = uncompile_expression' let_result in + let%bind rhs = uncompile_expression rhs in + let%bind let_result = uncompile_expression let_result in return @@ I.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} | O.E_constructor {constructor;element} -> - let%bind element = uncompile_expression' element in + let%bind element = uncompile_expression element in return @@ I.E_constructor {constructor;element} | O.E_matching {matchee; cases} -> - let%bind matchee = uncompile_expression' matchee in + let%bind matchee = uncompile_expression matchee in let%bind cases = uncompile_matching cases in return @@ I.E_matching {matchee;cases} | O.E_record record -> let record = I.LMap.to_kv_list record in let%bind record = bind_map_list (fun (k,v) -> - let%bind v = uncompile_expression' v in + let%bind v = uncompile_expression v in ok @@ (k,v) ) record in return @@ I.E_record (O.LMap.of_list record) - | O.E_record_accessor {record;path} -> - let%bind record = uncompile_expression' record in - return @@ I.E_record_accessor {record;path} - | O.E_record_update {record;path;update} -> - let%bind record = uncompile_expression' record in - let%bind update = uncompile_expression' update in - return @@ I.E_record_update {record;path;update} + | O.E_accessor {record;path} -> + let%bind record = uncompile_expression record in + let%bind path = uncompile_path path in + return @@ I.E_accessor {record;path} + | O.E_update {record;path;update} -> + let%bind record = uncompile_expression record in + let%bind path = uncompile_path path in + let%bind update = uncompile_expression update in + return @@ I.E_update {record;path;update} | O.E_tuple tuple -> - let%bind tuple = bind_map_list uncompile_expression' tuple in + let%bind tuple = bind_map_list uncompile_expression tuple in return @@ I.E_tuple tuple - | O.E_tuple_accessor {tuple;path} -> - let%bind tuple = uncompile_expression' tuple in - return @@ I.E_tuple_accessor {tuple;path} - | O.E_tuple_update {tuple;path;update} -> - let%bind tuple = uncompile_expression' tuple in - let%bind update = uncompile_expression' update in - return @@ I.E_tuple_update {tuple;path;update} | O.E_map map -> let%bind map = bind_map_list ( - bind_map_pair uncompile_expression' + bind_map_pair uncompile_expression ) map in return @@ I.E_map map | O.E_big_map big_map -> let%bind big_map = bind_map_list ( - bind_map_pair uncompile_expression' + bind_map_pair uncompile_expression ) big_map in return @@ I.E_big_map big_map | O.E_list lst -> - let%bind lst = bind_map_list uncompile_expression' lst in + let%bind lst = bind_map_list uncompile_expression lst in return @@ I.E_list lst | O.E_set set -> - let%bind set = bind_map_list uncompile_expression' set in + let%bind set = bind_map_list uncompile_expression set in return @@ I.E_set set - | O.E_look_up look_up -> - let%bind look_up = bind_map_pair uncompile_expression' look_up in - return @@ I.E_look_up look_up | O.E_ascription {anno_expr; type_annotation} -> - let%bind anno_expr = uncompile_expression' anno_expr in + let%bind anno_expr = uncompile_expression anno_expr in let%bind type_annotation = uncompile_type_expression type_annotation in return @@ I.E_ascription {anno_expr; type_annotation} | O.E_cond {condition;then_clause;else_clause} -> - let%bind condition = uncompile_expression' condition in - let%bind then_clause = uncompile_expression' then_clause in - let%bind else_clause = uncompile_expression' else_clause in + let%bind condition = uncompile_expression condition in + let%bind then_clause = uncompile_expression then_clause in + let%bind else_clause = uncompile_expression else_clause in return @@ I.E_cond {condition; then_clause; else_clause} | O.E_sequence {expr1; expr2} -> - let%bind expr1 = uncompile_expression' expr1 in - let%bind expr2 = uncompile_expression' expr2 in + let%bind expr1 = uncompile_expression expr1 in + let%bind expr2 = uncompile_expression expr2 in return @@ I.E_sequence {expr1; expr2} | O.E_skip -> return @@ I.E_skip +and uncompile_path : O.access list -> I.access list result = + fun path -> let aux a = match a with + | O.Access_record s -> ok @@ I.Access_record s + | O.Access_tuple i -> ok @@ I.Access_tuple i + | O.Access_map e -> + let%bind e = uncompile_expression e in + ok @@ I.Access_map e + in + bind_map_list aux path + and uncompile_lambda : O.lambda -> I.lambda result = fun {binder;input_type;output_type;result}-> let%bind input_type = bind_map_option uncompile_type_expression input_type in let%bind output_type = bind_map_option uncompile_type_expression output_type in - let%bind result = uncompile_expression' result in + let%bind result = uncompile_expression result in ok @@ I.{binder;input_type;output_type;result} and uncompile_matching : O.matching_expr -> I.matching_expr result = fun m -> match m with | O.Match_list {match_nil;match_cons} -> - let%bind match_nil = uncompile_expression' match_nil in + let%bind match_nil = uncompile_expression match_nil in let (hd,tl,expr) = match_cons in - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in ok @@ I.Match_list {match_nil; match_cons=(hd,tl,expr)} | O.Match_option {match_none;match_some} -> - let%bind match_none = uncompile_expression' match_none in + let%bind match_none = uncompile_expression match_none in let (n,expr) = match_some in - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in ok @@ I.Match_option {match_none; match_some=(n,expr)} | O.Match_variant lst -> let%bind lst = bind_map_list ( fun ((c,n),expr) -> - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in ok @@ ((c,n),expr) ) lst in ok @@ I.Match_variant lst | O.Match_record (lst,ty_opt,expr) -> - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in let%bind ty_opt = bind_map_option (bind_map_list uncompile_type_expression) ty_opt in ok @@ I.Match_record (lst,ty_opt,expr) | O.Match_tuple (lst,ty_opt,expr) -> - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in let%bind ty_opt = bind_map_option (bind_map_list uncompile_type_expression) ty_opt in ok @@ I.Match_tuple (lst,ty_opt,expr) | O.Match_variable (lst,ty_opt,expr) -> - let%bind expr = uncompile_expression' expr in + let%bind expr = uncompile_expression expr in let%bind ty_opt = bind_map_option uncompile_type_expression ty_opt in ok @@ I.Match_variable (lst,ty_opt,expr) diff --git a/src/passes/05-self_ast_sugar/helpers.ml b/src/passes/05-self_ast_sugar/helpers.ml index bb8b37fb7..d626d099e 100644 --- a/src/passes/05-self_ast_sugar/helpers.ml +++ b/src/passes/05-self_ast_sugar/helpers.ml @@ -30,9 +30,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list (bind_fold_pair self) init' lst in ok res ) - | E_look_up ab -> - let%bind res = bind_fold_pair self init' ab in - ok res | E_application {lamb;args} -> ( let ab = (lamb,args) in let%bind res = bind_fold_pair self init' ab in @@ -56,15 +53,25 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_lmap aux (ok init') m in ok res ) - | E_record_update {record;update} -> ( + | E_update {record;path;update} -> ( let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in let%bind res = fold_expression self res update in ok res ) - | E_record_accessor {record} -> ( - let%bind res = self init' record in - ok res - ) + | E_accessor {record;path} -> ( + let%bind res = self init' record in + let aux res a = match a with + | Access_map e -> self res e + | _ -> ok res + in + let%bind res = bind_fold_list aux res path in + ok res + ) | E_let_in { let_binder = _ ; rhs ; let_result } -> ( let%bind res = self init' rhs in let%bind res = self res let_result in @@ -90,15 +97,6 @@ let rec fold_expression : 'a folder -> 'a -> expression -> 'a result = fun f ini let%bind res = bind_fold_list aux (init') t in ok res ) - | E_tuple_update {tuple;update} -> ( - let%bind res = self init' tuple in - let%bind res = fold_expression self res update in - ok res - ) - | E_tuple_accessor {tuple} -> ( - let%bind res = self init' tuple in - ok res - ) and fold_cases : 'a folder -> 'a -> matching_expr -> 'a result = fun f init m -> match m with @@ -158,10 +156,6 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind lst' = bind_map_list (bind_map_pair self) lst in return @@ E_big_map lst' ) - | E_look_up ab -> ( - let%bind ab' = bind_map_pair self ab in - return @@ E_look_up ab' - ) | E_ascription ascr -> ( let%bind e' = self ascr.anno_expr in return @@ E_ascription {ascr with anno_expr=e'} @@ -171,18 +165,32 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind cases' = map_cases f cases in return @@ E_matching {matchee=e';cases=cases'} ) - | E_record_accessor acc -> ( - let%bind e' = self acc.record in - return @@ E_record_accessor {acc with record = e'} - ) | E_record m -> ( let%bind m' = bind_map_lmap self m in return @@ E_record m' ) - | E_record_update {record; path; update} -> ( + | E_accessor {record; path} -> ( let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in + return @@ E_accessor {record; path} + ) + | E_update {record; path; update} -> ( + let%bind record = self record in + let aux a = match a with + | Access_map e -> + let%bind e = self e in + ok @@ Access_map e + | e -> ok @@ e + in + let%bind path = bind_map_list aux path in let%bind update = self update in - return @@ E_record_update {record;path;update} + return @@ E_update {record;path;update} ) | E_constructor c -> ( let%bind e' = self c.element in @@ -223,15 +231,6 @@ let rec map_expression : exp_mapper -> expression -> expression result = fun f e let%bind t' = bind_map_list self t in return @@ E_tuple t' ) - | E_tuple_update {tuple; path; update} -> ( - let%bind tuple = self tuple in - let%bind update = self update in - return @@ E_tuple_update {tuple; path; update} - ) - | E_tuple_accessor {tuple;path} -> ( - let%bind tuple = self tuple in - return @@ E_tuple_accessor {tuple;path} - ) | E_literal _ | E_variable _ | E_skip as e' -> return e' and map_type_expression : ty_exp_mapper -> type_expression -> type_expression result = fun f te -> @@ -328,10 +327,6 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res, lst') = bind_fold_map_list (bind_fold_map_pair self) init' lst in ok (res, return @@ E_big_map lst') ) - | E_look_up ab -> ( - let%bind (res, ab') = bind_fold_map_pair self init' ab in - ok (res, return @@ E_look_up ab') - ) | E_ascription ascr -> ( let%bind (res,e') = self init' ascr.anno_expr in ok (res, return @@ E_ascription {ascr with anno_expr=e'}) @@ -341,33 +336,38 @@ let rec fold_map_expression : 'a fold_mapper -> 'a -> expression -> ('a * expres let%bind (res,cases') = fold_map_cases f res cases in ok (res, return @@ E_matching {matchee=e';cases=cases'}) ) - | E_record_accessor acc -> ( - let%bind (res, e') = self init' acc.record in - ok (res, return @@ E_record_accessor {acc with record = e'}) - ) | E_record m -> ( let%bind (res, lst') = bind_fold_map_list (fun res (k,e) -> let%bind (res,e) = self res e in ok (res,(k,e))) init' (LMap.to_kv_list m) in let m' = LMap.of_list lst' in ok (res, return @@ E_record m') ) - | E_record_update {record; path; update} -> ( + | E_accessor {record;path} -> ( let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in + ok (res, return @@ E_accessor {record; path}) + ) + | E_update {record; path; update} -> ( + let%bind (res, record) = self init' record in + let aux res a = match a with + | Access_map e -> + let%bind (res,e) = self res e in + ok @@ (res,Access_map e) + | e -> ok @@ (res,e) + in + let%bind (res, path) = bind_fold_map_list aux res path in let%bind (res, update) = self res update in - ok (res, return @@ E_record_update {record;path;update}) + ok (res, return @@ E_update {record;path;update}) ) | E_tuple t -> ( let%bind (res, t') = bind_fold_map_list self init' t in ok (res, return @@ E_tuple t') ) - | E_tuple_update {tuple; path; update} -> ( - let%bind (res, tuple) = self init' tuple in - let%bind (res, update) = self res update in - ok (res, return @@ E_tuple_update {tuple;path;update}) - ) - | E_tuple_accessor {tuple; path} -> ( - let%bind (res, tuple) = self init' tuple in - ok (res, return @@ E_tuple_accessor {tuple; path}) - ) | E_constructor c -> ( let%bind (res,e') = self init' c.element in ok (res, return @@ E_constructor {c with element = e'}) diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index ba6e8f441..9acfb1f73 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -86,13 +86,46 @@ let rec compile_expression : I.expression -> O.expression result = ) record in return @@ O.E_record (O.LMap.of_list record) - | I.E_record_accessor {record;path} -> + | I.E_accessor {record;path} -> let%bind record = compile_expression record in - return @@ O.E_record_accessor {record;path} - | I.E_record_update {record;path;update} -> + let accessor ?loc e a = + match a with + I.Access_tuple i -> ok @@ O.e_record_accessor ?loc e (Label (Z.to_string i)) + | I.Access_record a -> ok @@ O.e_record_accessor ?loc e (Label a) + | I.Access_map k -> + let%bind k = compile_expression k in + ok @@ O.e_constant ?loc C_MAP_FIND_OPT [k;e] + in + bind_fold_list accessor record path + | I.E_update {record;path;update} -> let%bind record = compile_expression record in let%bind update = compile_expression update in - return @@ O.E_record_update {record;path;update} + let accessor ?loc e a = + match a with + I.Access_tuple i -> ok @@ O.e_record_accessor ?loc e (Label (Z.to_string i)) + | I.Access_record a -> ok @@ O.e_record_accessor ?loc e (Label a) + | I.Access_map k -> + let%bind k = compile_expression k in + ok @@ O.e_constant ?loc C_MAP_FIND_OPT [k;e] + in + let updator ?loc (s:O.expression) a e = + match a with + I.Access_tuple i -> ok @@ O.e_record_update ?loc s (Label (Z.to_string i)) e + | I.Access_record a -> ok @@ O.e_record_update ?loc s (Label a) e + | I.Access_map k -> + let%bind k = compile_expression k in + ok @@ O.e_constant ?loc C_UPDATE [k;O.e_some (e);s] + in + let aux (s, e : O.expression * _) lst = + let%bind s' = accessor ~loc:s.location s lst in + let e' = fun expr -> + let%bind u = updator ~loc:s.location s lst (expr) + in e u + in + ok @@ (s',e') + in + let%bind (_,rhs) = bind_fold_list aux (record, fun e -> ok @@ e) path in + rhs @@ update | I.E_map map -> ( let map = List.sort_uniq compare map in let aux = fun prev (k, v) -> @@ -125,9 +158,6 @@ let rec compile_expression : I.expression -> O.expression result = let%bind init = return @@ E_constant {cons_name=C_SET_EMPTY;arguments=[]} in bind_fold_list aux init lst' ) - | I.E_look_up look_up -> - let%bind (path, index) = bind_map_pair compile_expression look_up in - return @@ O.E_constant {cons_name=C_MAP_FIND_OPT;arguments=[index;path]} | I.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = compile_expression anno_expr in let%bind type_annotation = idle_type_expression type_annotation in @@ -149,15 +179,6 @@ let rec compile_expression : I.expression -> O.expression result = let%bind (_, lst ) = bind_fold_list aux (0,[]) t in let m = O.LMap.of_list lst in return @@ O.E_record m - | I.E_tuple_accessor {tuple;path} -> - let%bind record = compile_expression tuple in - let path = O.Label (string_of_int path) in - return @@ O.E_record_accessor {record;path} - | I.E_tuple_update {tuple;path;update} -> - let%bind record = compile_expression tuple in - let path = O.Label (string_of_int path) in - let%bind update = compile_expression update in - return @@ O.E_record_update {record;path;update} and compile_lambda : I.lambda -> O.lambda result = fun {binder;input_type;output_type;result}-> @@ -325,11 +346,13 @@ let rec uncompile_expression : O.expression -> I.expression result = return @@ I.E_record (O.LMap.of_list record) | O.E_record_accessor {record;path} -> let%bind record = uncompile_expression record in - return @@ I.E_record_accessor {record;path} + let Label path = path in + return @@ I.E_accessor {record;path=[I.Access_record path]} | O.E_record_update {record;path;update} -> let%bind record = uncompile_expression record in let%bind update = uncompile_expression update in - return @@ I.E_record_update {record;path;update} + let Label path = path in + return @@ I.E_update {record;path=[I.Access_record path];update} | O.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = uncompile_expression anno_expr in let%bind type_annotation = uncompile_type_expression type_annotation in diff --git a/src/stages/1-ast_imperative/PP.ml b/src/stages/1-ast_imperative/PP.ml index 03fa88165..b803ae7dc 100644 --- a/src/stages/1-ast_imperative/PP.ml +++ b/src/stages/1-ast_imperative/PP.ml @@ -83,10 +83,10 @@ and expression_content ppf (ec : expression_content) = c.arguments | E_record m -> fprintf ppf "{%a}" (record_sep expression (const ";")) m - | E_record_accessor ra -> - fprintf ppf "%a.%a" expression ra.record label ra.path - | E_record_update {record; path; update} -> - fprintf ppf "{ %a with %a = %a }" expression record label path expression update + | E_accessor {record;path} -> + fprintf ppf "%a.%a" expression record (list_sep accessor (const ".")) path + | E_update {record; path; update} -> + fprintf ppf "{ %a with %a = %a }" expression record (list_sep accessor (const ".")) path expression update | E_map m -> fprintf ppf "map[%a]" (list_sep_d assoc_expression) m | E_big_map m -> @@ -95,8 +95,6 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "list[%a]" (list_sep_d expression) lst | E_set lst -> fprintf ppf "set[%a]" (list_sep_d expression) lst - | E_look_up (ds, ind) -> - fprintf ppf "(%a)[%a]" expression ds expression ind | E_lambda {binder; input_type; output_type; result} -> fprintf ppf "lambda (%a:%a) : %a return %a" expression_variable binder @@ -129,14 +127,10 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "skip" | E_tuple t -> fprintf ppf "(%a)" (list_sep_d expression) t - | E_tuple_accessor ta -> - fprintf ppf "%a.%d" expression ta.tuple ta.path - | E_tuple_update {tuple; path; update} -> - fprintf ppf "{ %a with %d = %a }" expression tuple path expression update | E_assign {variable; access_path; expression=e} -> fprintf ppf "%a%a := %a" expression_variable variable - (list_sep (fun ppf a -> fprintf ppf ".%a" accessor a) (fun ppf () -> fprintf ppf "")) access_path + (list_sep accessor (const ".")) access_path expression e | E_for {binder; start; final; increment; body} -> fprintf ppf "for %a from %a to %a by %a do %a" @@ -157,7 +151,7 @@ and expression_content ppf (ec : expression_content) = and accessor ppf a = match a with - | Access_tuple i -> fprintf ppf "%d" i + | Access_tuple i -> fprintf ppf "%a" Z.pp_print i | Access_record s -> fprintf ppf "%s" s | Access_map e -> fprintf ppf "%a" expression e diff --git a/src/stages/1-ast_imperative/combinators.ml b/src/stages/1-ast_imperative/combinators.ml index c30f5b433..76a9f110c 100644 --- a/src/stages/1-ast_imperative/combinators.ml +++ b/src/stages/1-ast_imperative/combinators.ml @@ -119,15 +119,12 @@ let e_let_in ?loc (binder, ascr) inline rhs let_result = make_e ?loc @@ E_let_in let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constructor = Constructor s; element = a} let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} -let e_record_accessor ?loc a b = make_e ?loc @@ E_record_accessor {record = a; path = Label b} -let e_accessor_list ?loc a b = List.fold_left (fun a b -> e_record_accessor ?loc a b) a b -let e_record_update ?loc record path update = make_e ?loc @@ E_record_update {record; path=Label path; update} +let e_accessor ?loc record path = make_e ?loc @@ E_accessor {record; path} +let e_update ?loc record path update = make_e ?loc @@ E_update {record; path; update} let e_annotation ?loc anno_expr ty = make_e ?loc @@ E_ascription {anno_expr; type_annotation = ty} let e_tuple ?loc lst : expression = make_e ?loc @@ E_tuple lst -let e_tuple_accessor ?loc tuple path : expression = make_e ?loc @@ E_tuple_accessor {tuple; path} -let e_tuple_update ?loc tuple path update : expression = make_e ?loc @@ E_tuple_update {tuple; path; update} let e_pair ?loc a b : expression = e_tuple ?loc [a;b] let e_cond ?loc condition then_clause else_clause = make_e ?loc @@ E_cond {condition;then_clause;else_clause} @@ -138,7 +135,6 @@ let e_list ?loc lst : expression = make_e ?loc @@ E_list lst let e_set ?loc lst : expression = make_e ?loc @@ E_set lst let e_map ?loc lst : expression = make_e ?loc @@ E_map lst let e_big_map ?loc lst : expression = make_e ?loc @@ E_big_map lst -let e_look_up ?loc x y = make_e ?loc @@ E_look_up (x , y) let e_while ?loc condition body = make_e ?loc @@ E_while {condition; body} let e_for ?loc binder start final increment body = make_e ?loc @@ E_for {binder;start;final;increment;body} @@ -189,14 +185,10 @@ let e_typed_set ?loc lst k = e_annotation ?loc (e_set lst) (t_set k) let e_assign ?loc variable access_path expression = make_e ?loc @@ E_assign {variable;access_path;expression} -let e_ez_assign ?loc variable access_path expression = - let variable = Var.of_name variable in - let access_path = List.map (fun s -> Access_record s) access_path in - e_assign ?loc variable access_path expression let get_e_accessor = fun t -> match t with - | E_record_accessor {record; path} -> ok (record , path) + | E_accessor {record; path} -> ok (record , path) | _ -> simple_fail "not an accessor" let assert_e_accessor = fun t -> diff --git a/src/stages/1-ast_imperative/combinators.mli b/src/stages/1-ast_imperative/combinators.mli index ac835c221..61b947e60 100644 --- a/src/stages/1-ast_imperative/combinators.mli +++ b/src/stages/1-ast_imperative/combinators.mli @@ -106,15 +106,12 @@ val e_matching_variable: ?loc:Location.t -> expression -> expression_variable -> val e_record : ?loc:Location.t -> expr Map.String.t -> expression val e_record_ez : ?loc:Location.t -> ( string * expr ) list -> expression -val e_record_accessor : ?loc:Location.t -> expression -> string -> expression -val e_accessor_list : ?loc:Location.t -> expression -> string list -> expression -val e_record_update : ?loc:Location.t -> expression -> string -> expression -> expression +val e_accessor : ?loc:Location.t -> expression -> access list -> expression +val e_update : ?loc:Location.t -> expression -> access list -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression val e_tuple : ?loc:Location.t -> expression list -> expression -val e_tuple_accessor : ?loc:Location.t -> expression -> int -> expression -val e_tuple_update : ?loc:Location.t -> expression -> int -> expression -> expression val e_pair : ?loc:Location.t -> expression -> expression -> expression val e_cond: ?loc:Location.t -> expression -> expression -> expression -> expression @@ -125,10 +122,8 @@ val e_list : ?loc:Location.t -> expression list -> expression val e_set : ?loc:Location.t -> expression list -> expression val e_map : ?loc:Location.t -> ( expression * expression ) list -> expression val e_big_map : ?loc:Location.t -> ( expr * expr ) list -> expression -val e_look_up : ?loc:Location.t -> expression -> expression -> expression val e_assign : ?loc:Location.t -> expression_variable -> access list -> expression -> expression -val e_ez_assign : ?loc:Location.t -> string -> string list -> expression -> expression val e_while : ?loc:Location.t -> expression -> expression -> expression val e_for : ?loc:Location.t -> expression_variable -> expression -> expression -> expression -> expression -> expression diff --git a/src/stages/1-ast_imperative/types.ml b/src/stages/1-ast_imperative/types.ml index f932904d5..69b852c4b 100644 --- a/src/stages/1-ast_imperative/types.ml +++ b/src/stages/1-ast_imperative/types.ml @@ -53,8 +53,8 @@ and expression_content = | E_matching of matching (* Record *) | E_record of expression label_map - | E_record_accessor of record_accessor - | E_record_update of record_update + | E_accessor of accessor + | E_update of update (* Advanced *) | E_ascription of ascription (* Sugar *) @@ -62,14 +62,11 @@ and expression_content = | E_sequence of sequence | E_skip | E_tuple of expression list - | E_tuple_accessor of tuple_accessor - | E_tuple_update of tuple_update (* Data Structures *) | E_map of (expression * expression) list | E_big_map of (expression * expression) list | E_list of expression list | E_set of expression list - | E_look_up of (expression * expression) (* Imperative *) | E_assign of assign | E_for of for_ @@ -105,8 +102,8 @@ and let_in = and constructor = {constructor: constructor'; element: expression} -and record_accessor = {record: expression; path: label} -and record_update = {record: expression; path: label ; update: expression} +and accessor = {record: expression; path: access list} +and update = {record: expression; path: access list; update: expression} @@ -142,9 +139,6 @@ and sequence = { expr2: expression ; } -and tuple_accessor = {tuple: expression; path: int} -and tuple_update = {tuple: expression; path: int ; update: expression} - and assign = { variable : expression_variable; access_path : access list; @@ -152,7 +146,7 @@ and assign = { } and access = - | Access_tuple of int + | Access_tuple of Z.t | Access_record of string | Access_map of expr diff --git a/src/stages/2-ast_sugar/PP.ml b/src/stages/2-ast_sugar/PP.ml index 49b3404ea..fc3e253d6 100644 --- a/src/stages/2-ast_sugar/PP.ml +++ b/src/stages/2-ast_sugar/PP.ml @@ -78,10 +78,10 @@ and expression_content ppf (ec : expression_content) = c.arguments | E_record m -> fprintf ppf "{%a}" (record_sep_expr expression (const ";")) m - | E_record_accessor ra -> - fprintf ppf "%a.%a" expression ra.record label ra.path - | E_record_update {record; path; update} -> - fprintf ppf "{ %a with %a = %a }" expression record label path expression update + | E_accessor {record;path} -> + fprintf ppf "%a.%a" expression record (list_sep accessor (const ".")) path + | E_update {record; path; update} -> + fprintf ppf "{ %a with %a = %a }" expression record (list_sep accessor (const ".")) path expression update | E_map m -> fprintf ppf "map[%a]" (list_sep_d assoc_expression) m | E_big_map m -> @@ -90,8 +90,6 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "list[%a]" (list_sep_d expression) lst | E_set lst -> fprintf ppf "set[%a]" (list_sep_d expression) lst - | E_look_up (ds, ind) -> - fprintf ppf "(%a)[%a]" expression ds expression ind | E_lambda {binder; input_type; output_type; result} -> fprintf ppf "lambda (%a:%a) : %a return %a" expression_variable binder @@ -127,10 +125,12 @@ and expression_content ppf (ec : expression_content) = fprintf ppf "skip" | E_tuple t -> fprintf ppf "(%a)" (list_sep_d expression) t - | E_tuple_accessor ta -> - fprintf ppf "%a.%d" expression ta.tuple ta.path - | E_tuple_update {tuple; path; update} -> - fprintf ppf "{ %a with %d = %a }" expression tuple path expression update + +and accessor ppf a = + match a with + | Access_tuple i -> fprintf ppf "%a" Z.pp_print i + | Access_record s -> fprintf ppf "%s" s + | Access_map e -> fprintf ppf "%a" expression e and option_type_name ppf ((n, ty_opt) : expression_variable * type_expression option) = diff --git a/src/stages/2-ast_sugar/combinators.ml b/src/stages/2-ast_sugar/combinators.ml index 9449b39ad..2243c08ab 100644 --- a/src/stages/2-ast_sugar/combinators.ml +++ b/src/stages/2-ast_sugar/combinators.ml @@ -108,14 +108,12 @@ let e_constructor ?loc s a : expression = make_e ?loc @@ E_constructor { constru let e_matching ?loc a b : expression = make_e ?loc @@ E_matching {matchee=a;cases=b} let e_record ?loc map : expression = make_e ?loc @@ E_record map -let e_record_accessor ?loc record path = make_e ?loc @@ E_record_accessor {record; path} -let e_record_update ?loc record path update = make_e ?loc @@ E_record_update {record; path; update} +let e_accessor ?loc record path = make_e ?loc @@ E_accessor {record; path} +let e_update ?loc record path update = make_e ?loc @@ E_update {record; path; update} let e_annotation ?loc anno_expr ty = make_e ?loc @@ E_ascription {anno_expr; type_annotation = ty} let e_tuple ?loc lst : expression = make_e ?loc @@ E_tuple lst -let e_tuple_accessor ?loc tuple path = make_e ?loc @@ E_tuple_accessor {tuple; path} -let e_tuple_update ?loc tuple path update = make_e ?loc @@ E_tuple_update {tuple; path; update} let e_pair ?loc a b : expression = e_tuple ?loc [a;b] let e_cond ?loc condition then_clause else_clause = make_e ?loc @@ E_cond {condition;then_clause;else_clause} @@ -126,7 +124,6 @@ let e_list ?loc lst : expression = make_e ?loc @@ E_list lst let e_set ?loc lst : expression = make_e ?loc @@ E_set lst let e_map ?loc lst : expression = make_e ?loc @@ E_map lst let e_big_map ?loc lst : expression = make_e ?loc @@ E_big_map lst -let e_look_up ?loc a b : expression = make_e ?loc @@ E_look_up (a,b) let e_bool ?loc b : expression = e_constructor ?loc (Constructor (string_of_bool b)) (e_unit ()) @@ -150,13 +147,13 @@ let e_typed_set ?loc lst k = e_annotation ?loc (e_set lst) (t_set k) -let get_e_record_accessor = fun t -> +let get_e_accessor = fun t -> match t with - | E_record_accessor {record; path} -> ok (record, path) + | E_accessor {record; path} -> ok (record, path) | _ -> simple_fail "not a record accessor" let assert_e_accessor = fun t -> - let%bind _ = get_e_record_accessor t in + let%bind _ = get_e_accessor t in ok () let get_e_pair = fun t -> diff --git a/src/stages/2-ast_sugar/combinators.mli b/src/stages/2-ast_sugar/combinators.mli index 6a229cca8..206cd0c8d 100644 --- a/src/stages/2-ast_sugar/combinators.mli +++ b/src/stages/2-ast_sugar/combinators.mli @@ -78,15 +78,13 @@ val e_application : ?loc:Location.t -> expression -> expression -> expression val e_recursive : ?loc:Location.t -> expression_variable -> type_expression -> lambda -> expression val e_let_in : ?loc:Location.t -> ( expression_variable * type_expression option ) -> bool -> bool -> expression -> expression -> expression -val e_record : ?loc:Location.t -> expr label_map -> expression -val e_record_accessor : ?loc:Location.t -> expression -> label -> expression -val e_record_update : ?loc:Location.t -> expression -> label -> expression -> expression +val e_record : ?loc:Location.t -> expr label_map -> expression +val e_accessor : ?loc:Location.t -> expression -> access list -> expression +val e_update : ?loc:Location.t -> expression -> access list -> expression -> expression val e_annotation : ?loc:Location.t -> expression -> type_expression -> expression val e_tuple : ?loc:Location.t -> expression list -> expression -val e_tuple_accessor : ?loc:Location.t -> expression -> int -> expression -val e_tuple_update : ?loc:Location.t -> expression -> int -> expression -> expression val e_pair : ?loc:Location.t -> expression -> expression -> expression val e_cond: ?loc:Location.t -> expression -> expression -> expression -> expression @@ -97,7 +95,6 @@ val e_list : ?loc:Location.t -> expression list -> expression val e_set : ?loc:Location.t -> expression list -> expression val e_map : ?loc:Location.t -> ( expression * expression ) list -> expression val e_big_map : ?loc:Location.t -> ( expr * expr ) list -> expression -val e_look_up : ?loc:Location.t -> expression -> expression -> expression val e_matching : ?loc:Location.t -> expression -> matching_expr -> expression diff --git a/src/stages/2-ast_sugar/types.ml b/src/stages/2-ast_sugar/types.ml index f62904220..cece05416 100644 --- a/src/stages/2-ast_sugar/types.ml +++ b/src/stages/2-ast_sugar/types.ml @@ -54,8 +54,8 @@ and expression_content = | E_matching of matching (* Record *) | E_record of expression label_map - | E_record_accessor of record_accessor - | E_record_update of record_update + | E_accessor of accessor + | E_update of update (* Advanced *) | E_ascription of ascription (* Sugar *) @@ -63,14 +63,11 @@ and expression_content = | E_sequence of sequence | E_skip | E_tuple of expression list - | E_tuple_accessor of tuple_accessor - | E_tuple_update of tuple_update (* Data Structures *) | E_map of (expression * expression) list | E_big_map of (expression * expression) list | E_list of expression list | E_set of expression list - | E_look_up of (expression * expression) and constant = { cons_name: constant' (* this is at the end because it is huge *) @@ -103,8 +100,13 @@ and let_in = { and constructor = {constructor: constructor'; element: expression} -and record_accessor = {record: expression; path: label} -and record_update = {record: expression; path: label ; update: expression} +and accessor = {record: expression; path: access list} +and update = {record: expression; path: access list ; update: expression} + +and access = + | Access_tuple of Z.t + | Access_record of string + | Access_map of expr and matching_expr = | Match_variant of ((constructor' * expression_variable) * expression) list @@ -137,9 +139,6 @@ and sequence = { expr2: expression ; } -and tuple_accessor = {tuple: expression; path: int} -and tuple_update = {tuple: expression; path: int ; update: expression} - and environment_element_definition = | ED_binder | ED_declaration of (expression * free_variables) From 574903ed2f996fe6f4134ab56235d14668aa0a4e Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Wulfman Date: Fri, 5 Jun 2020 18:20:43 +0200 Subject: [PATCH 44/67] fix name --- src/passes/06-sugar_to_core/sugar_to_core.ml | 34 ++++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/passes/06-sugar_to_core/sugar_to_core.ml b/src/passes/06-sugar_to_core/sugar_to_core.ml index 9acfb1f73..b7b745a6f 100644 --- a/src/passes/06-sugar_to_core/sugar_to_core.ml +++ b/src/passes/06-sugar_to_core/sugar_to_core.ml @@ -2,7 +2,7 @@ module I = Ast_sugar module O = Ast_core open Trace -let rec idle_type_expression : I.type_expression -> O.type_expression result = +let rec compile_type_expression : I.type_expression -> O.type_expression result = fun te -> let return tc = ok @@ O.make_t ~loc:te.location tc in match te.type_content with @@ -11,7 +11,7 @@ let rec idle_type_expression : I.type_expression -> O.type_expression result = let%bind sum = bind_map_list (fun (k,v) -> let {ctor_type ; michelson_annotation ; ctor_decl_pos} : I.ctor_content = v in - let%bind ctor_type = idle_type_expression ctor_type in + let%bind ctor_type = compile_type_expression ctor_type in let v' : O.ctor_content = {ctor_type ; michelson_annotation ; ctor_decl_pos} in ok @@ (k,v') ) sum @@ -22,7 +22,7 @@ let rec idle_type_expression : I.type_expression -> O.type_expression result = let%bind record = bind_map_list (fun (k,v) -> let {field_type ; michelson_annotation ; field_decl_pos} : I.field_content = v in - let%bind field_type = idle_type_expression field_type in + let%bind field_type = compile_type_expression field_type in let v' : O.field_content = {field_type ; field_annotation=michelson_annotation ; field_decl_pos} in ok @@ (k,v') ) record @@ -30,19 +30,19 @@ let rec idle_type_expression : I.type_expression -> O.type_expression result = return @@ O.T_record (O.LMap.of_list record) | I.T_tuple tuple -> let aux (i,acc) el = - let%bind el = idle_type_expression el in + let%bind el = compile_type_expression el in ok @@ (i+1,(O.Label (string_of_int i), ({field_type=el;field_annotation=None;field_decl_pos=0}:O.field_content))::acc) in let%bind (_, lst ) = bind_fold_list aux (0,[]) tuple in let record = O.LMap.of_list lst in return @@ O.T_record record | I.T_arrow {type1;type2} -> - let%bind type1 = idle_type_expression type1 in - let%bind type2 = idle_type_expression type2 in + let%bind type1 = compile_type_expression type1 in + let%bind type2 = compile_type_expression type2 in return @@ T_arrow {type1;type2} | I.T_variable type_variable -> return @@ T_variable type_variable | I.T_constant type_constant -> return @@ T_constant type_constant | I.T_operator (type_operator, lst) -> - let%bind lst = bind_map_list idle_type_expression lst in + let%bind lst = bind_map_list compile_type_expression lst in return @@ T_operator (type_operator, lst) let rec compile_expression : I.expression -> O.expression result = @@ -62,12 +62,12 @@ let rec compile_expression : I.expression -> O.expression result = let%bind lambda = compile_lambda lambda in return @@ O.E_lambda lambda | I.E_recursive {fun_name;fun_type;lambda} -> - let%bind fun_type = idle_type_expression fun_type in + let%bind fun_type = compile_type_expression fun_type in let%bind lambda = compile_lambda lambda in return @@ O.E_recursive {fun_name;fun_type;lambda} | I.E_let_in {let_binder;inline;rhs;let_result} -> let (binder,ty_opt) = let_binder in - let%bind ty_opt = bind_map_option idle_type_expression ty_opt in + let%bind ty_opt = bind_map_option compile_type_expression ty_opt in let%bind rhs = compile_expression rhs in let%bind let_result = compile_expression let_result in return @@ O.E_let_in {let_binder=(binder,ty_opt);inline;rhs;let_result} @@ -160,7 +160,7 @@ let rec compile_expression : I.expression -> O.expression result = ) | I.E_ascription {anno_expr; type_annotation} -> let%bind anno_expr = compile_expression anno_expr in - let%bind type_annotation = idle_type_expression type_annotation in + let%bind type_annotation = compile_type_expression type_annotation in return @@ O.E_ascription {anno_expr; type_annotation} | I.E_cond {condition; then_clause; else_clause} -> let%bind matchee = compile_expression condition in @@ -182,8 +182,8 @@ let rec compile_expression : I.expression -> O.expression result = and compile_lambda : I.lambda -> O.lambda result = fun {binder;input_type;output_type;result}-> - let%bind input_type = bind_map_option idle_type_expression input_type in - let%bind output_type = bind_map_option idle_type_expression output_type in + let%bind input_type = bind_map_option compile_type_expression input_type in + let%bind output_type = bind_map_option compile_type_expression output_type in let%bind result = compile_expression result in ok @@ O.{binder;input_type;output_type;result} and compile_matching : Location.t -> O.expression -> I.matching_expr -> O.expression result = @@ -214,7 +214,7 @@ and compile_matching : Location.t -> O.expression -> I.matching_expr -> O.expres | None -> List.map (fun x -> (x, None)) fields in let%bind next = compile_expression expr in - let%bind field_types = bind_map_option (bind_map_list idle_type_expression) field_types in + let%bind field_types = bind_map_option (bind_map_list compile_type_expression) field_types in let aux ((index,expr) : int * _ ) ((field,name): (O.label * (O.expression_variable * O.type_expression option))) = let f = fun expr' -> O.e_let_in name false (O.e_record_accessor e field) expr' in (index+1, fun expr' -> expr (f expr')) @@ -231,7 +231,7 @@ and compile_matching : Location.t -> O.expression -> I.matching_expr -> O.expres | None -> List.map (fun x -> (x, None)) fields in let%bind next = compile_expression expr in - let%bind field_types = bind_map_option (bind_map_list idle_type_expression) field_types in + let%bind field_types = bind_map_option (bind_map_list compile_type_expression) field_types in let aux ((index,expr) : int * _ ) (field: O.expression_variable * O.type_expression option) = let f = fun expr' -> O.e_let_in field false (O.e_record_accessor e (Label (string_of_int index))) expr' in (index+1, fun expr' -> expr (f expr')) @@ -241,7 +241,7 @@ and compile_matching : Location.t -> O.expression -> I.matching_expr -> O.expres in ok @@ header next | I.Match_variable (a, ty_opt, expr) -> - let%bind ty_opt = bind_map_option idle_type_expression ty_opt in + let%bind ty_opt = bind_map_option compile_type_expression ty_opt in let%bind expr = compile_expression expr in ok @@ O.e_let_in (a,ty_opt) false e expr @@ -251,10 +251,10 @@ let compile_declaration : I.declaration Location.wrap -> _ = match declaration with | I.Declaration_constant (n, te_opt, inline, expr) -> let%bind expr = compile_expression expr in - let%bind te_opt = bind_map_option idle_type_expression te_opt in + let%bind te_opt = bind_map_option compile_type_expression te_opt in return @@ O.Declaration_constant (n, te_opt, inline, expr) | I.Declaration_type (n, te) -> - let%bind te = idle_type_expression te in + let%bind te = compile_type_expression te in return @@ O.Declaration_type (n,te) let compile_program : I.program -> O.program result = From 77920a1c5891cd585921eb34f9c2ab5f1d80714c Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Fri, 5 Jun 2020 23:24:49 +0200 Subject: [PATCH 45/67] Fixed parsing of lambdas (cannot be recursive) in PascaLIGO. Added more to the pretty-printing of PascaLIGO. Improved pretty-printing of CameLIGO. --- src/passes/01-parser/cameligo/AST.ml | 4 +- src/passes/01-parser/cameligo/Parser.mly | 5 +- src/passes/01-parser/cameligo/Pretty.ml | 23 ++-- src/passes/01-parser/pascaligo/AST.ml | 5 +- src/passes/01-parser/pascaligo/Parser.mly | 28 ++--- src/passes/01-parser/pascaligo/ParserLog.ml | 45 +++---- src/passes/01-parser/pascaligo/Pretty.ml | 125 ++++++++++++-------- 7 files changed, 130 insertions(+), 105 deletions(-) diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index 9be76e138..afb945c2d 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -228,7 +228,7 @@ and field_pattern = { and expr = ECase of expr case reg | ECond of cond_expr reg -| EAnnot of (expr * colon * type_expr) par reg +| EAnnot of annot_expr par reg | ELogic of logic_expr | EArith of arith_expr | EString of string_expr @@ -247,6 +247,8 @@ and expr = | EFun of fun_expr reg | ESeq of expr injection reg +and annot_expr = expr * colon * type_expr + and 'a injection = { compound : compound; elements : ('a, semi) sepseq; diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index 4f309c5b6..35f692671 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -583,7 +583,10 @@ core_expr: | record_expr { ERecord $1 } | update_record { EUpdate $1 } | par(expr) { EPar $1 } -| par(expr ":" type_expr {$1,$2,$3}) { EAnnot $1 } +| par(annot_expr) { EAnnot $1 } + +annot_expr: + expr ":" type_expr { $1,$2,$3 } module_field: module_name "." module_fun { diff --git a/src/passes/01-parser/cameligo/Pretty.ml b/src/passes/01-parser/cameligo/Pretty.ml index 50a16afb4..8fa298e3f 100644 --- a/src/passes/01-parser/cameligo/Pretty.ml +++ b/src/passes/01-parser/cameligo/Pretty.ml @@ -41,8 +41,9 @@ and pp_verbatim s = string "{|" ^^ pp_ident s ^^ string "|}" and pp_let_binding (binding : let_binding) = let {binders; lhs_type; let_rhs; _} = binding in - let patterns = Utils.nseq_to_list binders in - let patterns = group (separate_map (break 1) pp_pattern patterns) in + let head, tail = binders in + let patterns = + group (nest 2 (separate_map (break 1) pp_pattern (head::tail))) in let lhs = patterns ^^ match lhs_type with @@ -95,11 +96,11 @@ and pp_ppar p = pp_par pp_pattern p and pp_plist = function PListComp cmp -> pp_list_comp cmp -| PCons cons -> pp_cons cons +| PCons cons -> pp_pcons cons and pp_list_comp e = group (pp_injection pp_pattern e) -and pp_cons {value; _} = +and pp_pcons {value; _} = let patt1, _, patt2 = value in prefix 2 1 (pp_pattern patt1 ^^ string " ::") (pp_pattern patt2) @@ -126,14 +127,15 @@ and pp_ptyped {value; _} = and pp_type_decl decl = let {name; type_expr; _} = decl.value in + let padding = match type_expr with TSum _ -> 0 | _ -> 2 in string "type " ^^ string name.value ^^ string " =" - ^^ group (nest 2 (break 1 ^^ pp_type_expr type_expr)) + ^^ group (nest padding (break 1 ^^ pp_type_expr type_expr)) and pp_expr = function ECase e -> pp_case_expr e | ECond e -> group (pp_cond_expr e) | EAnnot e -> pp_annot_expr e -| ELogic e -> pp_logic_expr e +| ELogic e -> group (pp_logic_expr e) | EArith e -> group (pp_arith_expr e) | EString e -> pp_string_expr e | EList e -> group (pp_list_expr e) @@ -166,15 +168,16 @@ and pp_cases {value; _} = and pp_clause {value; _} = let {pattern; rhs; _} = value in - prefix 4 1 (pp_pattern pattern ^^ string " ->") (pp_expr rhs) + pp_pattern pattern ^^ prefix 4 1 (string " ->") (pp_expr rhs) and pp_cond_expr {value; _} = let {test; ifso; kwd_else; ifnot; _} = value in let test = string "if " ^^ group (nest 3 (pp_expr test)) and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) and ifnot = string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) - in if kwd_else#is_ghost then test ^/^ ifso - else test ^/^ ifso ^/^ ifnot + in if kwd_else#is_ghost + then test ^/^ ifso + else test ^/^ ifso ^/^ ifnot and pp_annot_expr {value; _} = let expr, _, type_expr = value.inside in @@ -420,7 +423,7 @@ and pp_field_decl {value; _} = in prefix 2 1 (name ^^ string " :") t_expr and pp_type_app {value = ctor, tuple; _} = - prefix 2 1 (pp_type_tuple tuple) (pp_type_constr ctor) + pp_type_tuple tuple ^^ group (nest 2 (break 1 ^^ pp_type_constr ctor)) and pp_type_tuple {value; _} = let head, tail = value.inside in diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index cf6906b69..631704d47 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -206,7 +206,6 @@ and type_tuple = (type_expr, comma) nsepseq par reg (* Function and procedure declarations *) and fun_expr = { - kwd_recursive: kwd_recursive option; kwd_function : kwd_function; param : parameters; colon : colon; @@ -448,7 +447,7 @@ and collection = and expr = ECase of expr case reg | ECond of cond_expr reg -| EAnnot of annot_expr reg +| EAnnot of annot_expr par reg | ELogic of logic_expr | EArith of arith_expr | EString of string_expr @@ -467,7 +466,7 @@ and expr = | EPar of expr par reg | EFun of fun_expr reg -and annot_expr = expr * type_expr +and annot_expr = expr * colon * type_expr and set_expr = SetInj of expr injection reg diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 753354cfd..64a12eb78 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -239,16 +239,15 @@ field_decl: fun_expr: - ioption ("recursive") "function" parameters ":" type_expr "is" expr { - let stop = expr_to_region $7 in - let region = cover $2 stop - and value = {kwd_recursive= $1; - kwd_function = $2; - param = $3; - colon = $4; - ret_type = $5; - kwd_is = $6; - return = $7} + "function" parameters ":" type_expr "is" expr { + let stop = expr_to_region $6 in + let region = cover $1 stop + and value = {kwd_function = $1; + param = $2; + colon = $3; + ret_type = $4; + kwd_is = $5; + return = $6} in {region; value} } (* Function declarations *) @@ -849,7 +848,7 @@ core_expr: | "False" { ELogic (BoolExpr (False $1)) } | "True" { ELogic (BoolExpr (True $1)) } | "Unit" { EUnit $1 } -| annot_expr { EAnnot $1 } +| par(annot_expr) { EAnnot $1 } | tuple_expr { ETuple $1 } | list_expr { EList $1 } | "None" { EConstr (NoneExpr $1) } @@ -891,12 +890,7 @@ fun_call_or_par_or_projection: | fun_call { ECall $1 } annot_expr: - "(" disj_expr ":" type_expr ")" { - let start = expr_to_region $2 - and stop = type_expr_to_region $4 in - let region = cover start stop - and value = $2, $4 - in {region; value} } + disj_expr ":" type_expr { $1,$2,$3 } set_expr: injection("set",expr) { SetInj ($1 (fun region -> InjSet region)) } diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index 6ae1ca0ac..414b27d0f 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -180,9 +180,9 @@ and print_type_app state {value; _} = and print_type_fun state {value; _} = let type_expr_a, arrow, type_expr_b = value in - print_type_expr state type_expr_a; - print_token state arrow "->"; - print_type_expr state type_expr_b + print_type_expr state type_expr_a; + print_token state arrow "->"; + print_type_expr state type_expr_b and print_par_type state {value; _} = let {lpar; inside; rpar} = value in @@ -206,12 +206,12 @@ and print_fun_decl state {value; _} = let {kwd_function; fun_name; param; colon; ret_type; kwd_is; block_with; return; terminator; _} = value in - print_token state kwd_function "function"; - print_var state fun_name; - print_parameters state param; - print_token state colon ":"; - print_type_expr state ret_type; - print_token state kwd_is "is"; + print_token state kwd_function "function"; + print_var state fun_name; + print_parameters state param; + print_token state colon ":"; + print_type_expr state ret_type; + print_token state kwd_is "is"; (match block_with with None -> () | Some (block, kwd_with) -> @@ -221,15 +221,14 @@ and print_fun_decl state {value; _} = print_terminator state terminator; and print_fun_expr state {value; _} = - let {kwd_recursive; kwd_function; param; colon; + let {kwd_function; param; colon; ret_type; kwd_is; return} : fun_expr = value in - print_token_opt state kwd_recursive "recursive"; - print_token state kwd_function "function"; - print_parameters state param; - print_token state colon ":"; - print_type_expr state ret_type; - print_token state kwd_is "is"; - print_expr state return + print_token state kwd_function "function"; + print_parameters state param; + print_token state colon ":"; + print_type_expr state ret_type; + print_token state kwd_is "is"; + print_expr state return and print_parameters state {value; _} = let {lpar; inside; rpar} = value in @@ -260,10 +259,10 @@ and print_block state block = match enclosing with Block (kwd_block, lbrace, rbrace) -> print_token state kwd_block "block"; - print_token state lbrace "{"; + print_token state lbrace "{"; print_statements state statements; print_terminator state terminator; - print_token state rbrace "}" + print_token state rbrace "}" | BeginEnd (kwd_begin, kwd_end) -> print_token state kwd_begin "begin"; print_statements state statements; @@ -464,7 +463,9 @@ and print_expr state = function | EPar e -> print_par_expr state e | EFun e -> print_fun_expr state e -and print_annot_expr state (expr , type_expr) = +and print_annot_expr state node = + let {inside; _} : annot_expr par = node in + let expr, _, type_expr = inside in print_expr state expr; print_type_expr state type_expr @@ -1432,7 +1433,7 @@ and pp_expr state = function pp_cond_expr state value | EAnnot {value; region} -> pp_loc_node state "EAnnot" region; - pp_annotated state value + pp_annotated state value.inside | ELogic e_logic -> pp_node state "ELogic"; pp_e_logic (state#pad 1 0) e_logic @@ -1607,7 +1608,7 @@ and pp_string_expr state = function pp_node state "Verbatim"; pp_verbatim (state#pad 1 0) v -and pp_annotated state (expr, t_expr) = +and pp_annotated state (expr, _, t_expr) = pp_expr (state#pad 2 0) expr; pp_type_expr (state#pad 2 1) t_expr diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index 37ee63569..089763655 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -32,14 +32,14 @@ and pp_attr_decl decl = pp_ne_injection pp_string decl and pp_const_decl {value; _} = let {name; const_type; init; attributes; _} = value in - let start = string ("const " ^ name.value ^ " :") in + let start = string ("const " ^ name.value) in let t_expr = pp_type_expr const_type in let attr = match attributes with None -> empty - | Some a -> hardline ^^ pp_attr_decl a - in prefix 2 1 start t_expr - ^/^ prefix 2 1 (string "=") (pp_expr init) - ^^ attr + | Some a -> hardline ^^ pp_attr_decl a in + group (start ^/^ nest 2 (string ": " ^^ t_expr)) + ^^ group (break 1 ^^ nest 2 (string "= " ^^ pp_expr init)) + ^^ attr (* Type declarations *) @@ -117,32 +117,40 @@ and pp_type_tuple {value; _} = (* Function and procedure declarations *) -and pp_fun_expr {value; _} = string "TODO:pp_fun_expr" +and pp_fun_expr {value; _} = + let {param; ret_type; return; _} : fun_expr = value in + let start = string "function" in + let parameters = pp_par pp_parameters param in + let return_t = pp_type_expr ret_type in + let expr = pp_expr return in + group (start ^^ nest 2 (break 1 ^^ parameters)) + ^^ group (break 1 ^^ nest 2 (string ": " ^^ return_t)) + ^^ string " is" ^^ group (nest 4 (break 1 ^^ expr)) and pp_fun_decl {value; _} = let {kwd_recursive; fun_name; param; ret_type; block_with; return; attributes; _} = value in let start = match kwd_recursive with - None -> string "function" + None -> string "function" | Some _ -> string "recursive" ^/^ string "function" in + let start = start ^^ group (break 1 ^^ nest 2 (pp_ident fun_name)) in let parameters = pp_par pp_parameters param in let return_t = pp_type_expr ret_type in - let blk_opening, blk_in, blk_closing = - match block_with with - None -> empty, empty, empty - | Some (b,_) -> - hardline ^^ string "is block [", pp_block b, string "] with" in let expr = pp_expr return in - let attr = match attributes with + let body = + match block_with with + None -> group (nest 2 (break 1 ^^ expr)) + | Some (b,_) -> hardline ^^ string "block [" + ^^ nest 2 (hardline ^^ pp_block b) + ^^ hardline + ^^ group (string "] with" ^^ nest 4 (break 1 ^^ expr)) + and attr = match attributes with None -> empty - | Some a -> hardline ^^ pp_attr_decl a - in group (start ^^ nest 2 (break 1 ^^ parameters)) - ^/^ string ": " ^^ nest 2 return_t - ^^ blk_opening - ^^ nest 2 (break 0 ^^ blk_in) - ^/^ group (blk_closing ^^ nest 4 (break 1 ^^ expr)) - ^^ attr + | Some a -> hardline ^^ pp_attr_decl a in + prefix 2 1 start parameters + ^^ group (nest 2 (break 1 ^^ string ": " ^^ return_t ^^ string " is")) + ^^ body ^^ attr and pp_parameters p = pp_nsepseq ";" pp_param_decl p @@ -178,10 +186,10 @@ and pp_data_decl = function and pp_var_decl {value; _} = let {name; var_type; init; _} = value in - let start = string ("var " ^ name.value ^ " :") in - let t_expr = pp_type_expr var_type - in prefix 2 1 start - (t_expr ^/^ prefix 2 1 (string ":=") (pp_expr init)) + let start = string ("var " ^ name.value) in + let t_expr = pp_type_expr var_type in + group (start ^/^ nest 2 (string ": " ^^ t_expr)) + ^^ group (break 1 ^^ nest 2 (string ":= " ^^ pp_expr init)) and pp_instruction = function Cond i -> group (pp_conditional i) @@ -196,41 +204,52 @@ and pp_instruction = function | MapRemove i -> pp_map_remove i | SetRemove i -> pp_set_remove i -and pp_set_remove {value; _} = string "TODO:pp_set_remove" +and pp_set_remove {value; _} = + let {element; set; _} : set_remove = value in + string "remove" ^^ group (nest 2 (break 1 ^^ pp_expr element)) + ^/^ string "from set" ^^ group (nest 2 (break 1 ^^ pp_path set)) -and pp_map_remove {value; _} = string "TODO:pp_map_remove" +and pp_map_remove {value; _} = + let {key; map; _} = value in + string "remove" ^^ group (nest 2 (break 1 ^^ pp_expr key)) + ^/^ string "from map" ^^ group (nest 2 (break 1 ^^ pp_path map)) and pp_set_patch {value; _} = string "TODO:pp_set_patch" and pp_map_patch {value; _} = string "TODO:pp_map_patch" -and pp_binding b = string "TODO:pp_binding" +and pp_binding {value; _} = + let {source; image; _} = value in + pp_expr source ^^ string " ->" + ^^ group (nest 2 (break 1 ^^ pp_expr image)) and pp_record_patch {value; _} = string "TODO:pp_record_patch" -and pp_cond_expr {value; _} = string "TODO:pp_cond_expr" +and pp_cond_expr {value; _} = + let {test; ifso; kwd_else; ifnot; _} : cond_expr = value in + let test = string "if " ^^ group (nest 3 (pp_expr test)) + and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) + and ifnot = string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) + in test ^/^ ifso ^/^ ifnot and pp_conditional {value; _} = let {test; ifso; ifnot; _} : conditional = value in let test = string "if " ^^ group (nest 3 (pp_expr test)) and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) - and ifnot = - if is_clause_block ifnot then - string "else {" - ^^ group (nest 2 (hardline ^^ pp_if_clause ifnot)) - ^^ hardline ^^ string "}" - else - string "else" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifnot)) + and ifnot = match ifnot with + ClauseInstr i -> + string "else" + ^^ group (nest 2 (break 1 ^^ pp_instruction i)) + | ClauseBlock b -> + string "else {" + ^^ group (nest 2 (hardline ^^ pp_clause_block b)) + ^^ hardline ^^ string "}" in test ^/^ ifso ^/^ ifnot and pp_if_clause = function ClauseInstr i -> pp_instruction i | ClauseBlock b -> pp_clause_block b -and is_clause_block = function - ClauseInstr _ -> false -| ClauseBlock _ -> true - and pp_clause_block = function LongBlock b -> pp_block b | ShortBlock {value; _} -> Utils.(pp_statements <@ fst) value.inside @@ -251,7 +270,7 @@ and pp_cases : fun printer {value; _} -> let head, tail = value in let head = pp_case_clause printer head in - let head = if tail = [] then head else blank 2 ^^ head in + let head = blank 2 ^^ head in let rest = List.map snd tail in let app clause = break 1 ^^ string "| " ^^ pp_case_clause printer clause in head ^^ concat_map app rest @@ -260,8 +279,7 @@ and pp_case_clause : 'a.('a -> document) -> 'a case_clause Region.reg -> document = fun printer {value; _} -> let {pattern; rhs; _} = value in - prefix 4 1 (pp_pattern pattern ^^ string " ->") (printer rhs) - + pp_pattern pattern ^^ prefix 4 1 (string " ->") (printer rhs) and pp_assignment {value; _} = let {lhs; rhs; _} = value in @@ -298,7 +316,7 @@ and pp_expr = function ECase e -> pp_case pp_expr e | ECond e -> group (pp_cond_expr e) | EAnnot e -> pp_annot_expr e -| ELogic e -> pp_logic_expr e +| ELogic e -> group (pp_logic_expr e) | EArith e -> group (pp_arith_expr e) | EString e -> pp_string_expr e | EList e -> group (pp_list_expr e) @@ -316,7 +334,10 @@ and pp_expr = function | EPar e -> pp_par pp_expr e | EFun e -> pp_fun_expr e -and pp_annot_expr {value; _} = string "TODO:pp_annot_expr" +and pp_annot_expr {value; _} = + let expr, _, type_expr = value.inside in + group (string "(" ^^ nest 1 (pp_expr expr ^/^ string ": " + ^^ pp_type_expr type_expr ^^ string ")")) and pp_set_expr = function SetInj inj -> string "TODO:pp_set_expr:SetInj" @@ -324,11 +345,11 @@ and pp_set_expr = function and pp_map_expr = function MapLookUp fetch -> pp_map_lookup fetch -| MapInj inj -> pp_injection pp_binding inj -| BigMapInj inj -> pp_injection pp_binding inj +| MapInj inj -> group (pp_injection pp_binding inj) +| BigMapInj inj -> group (pp_injection pp_binding inj) and pp_map_lookup {value; _} = - pp_path value.path ^^ blank 1 ^^ pp_brackets pp_expr value.index + prefix 2 1 (pp_path value.path) (pp_brackets pp_expr value.index) and pp_path = function Name v -> pp_ident v @@ -451,7 +472,8 @@ and pp_injection : let kwd = pp_injection_kwd kind in let offset = String.length kwd + 2 in string (kwd ^ " [") - ^^ group (nest 2 (break 0 ^^ elements ^^ string "]")) + ^^ group (nest 2 (break 0 ^^ elements)) + ^^ break 0 ^^ string "]" and pp_injection_kwd = function InjSet _ -> "set" @@ -467,7 +489,8 @@ and pp_ne_injection : let kwd = pp_ne_injection_kwd kind in let offset = String.length kwd + 2 in string (kwd ^ " [") - ^^ group (nest 2 (break 0 ^^ elements ^^ string "]")) + ^^ group (nest 2 (break 0 ^^ elements )) + ^^ break 0 ^^ string "]" and pp_ne_injection_kwd = function NEInjAttr _ -> "attributes" @@ -526,9 +549,9 @@ and pp_list_pattern = function PListComp cmp -> pp_list_comp cmp | PNil _ -> string "nil" | PParCons p -> pp_ppar_cons p -| PCons p -> pp_nsepseq "#" pp_pattern p.value +| PCons p -> nest 4 (pp_nsepseq " #" pp_pattern p.value) -and pp_list_comp {value; _} = string "TODO:pp_list_comp" +and pp_list_comp e = group (pp_injection pp_pattern e) and pp_ppar_cons {value; _} = string "TODO:pp_ppar_cons" From bfac7f3b0abbafdd201a158ecbf68a6dabae9b04 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Sat, 6 Jun 2020 20:47:31 +0200 Subject: [PATCH 46/67] * Fixed AST node `for_int` (step clause) * Fixed Parser and ParserLog (step clause missing). * Added more printers. --- src/passes/01-parser/pascaligo/AST.ml | 13 +- src/passes/01-parser/pascaligo/Parser.mly | 4 +- src/passes/01-parser/pascaligo/ParserLog.ml | 51 ++++---- src/passes/01-parser/pascaligo/Pretty.ml | 127 ++++++++++++-------- 4 files changed, 114 insertions(+), 81 deletions(-) diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index 631704d47..5625b250c 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -412,13 +412,12 @@ and for_loop = | ForCollect of for_collect reg and for_int = { - kwd_for : kwd_for; - assign : var_assign reg; - kwd_to : kwd_to; - bound : expr; - kwd_step : kwd_step option; - step : expr option; - block : block reg + kwd_for : kwd_for; + assign : var_assign reg; + kwd_to : kwd_to; + bound : expr; + step : (kwd_step * expr) option; + block : block reg } and var_assign = { diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 64a12eb78..d5cc773fe 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -622,7 +622,6 @@ for_loop: assign = $2; kwd_to = $3; bound = $4; - kwd_step = None; step = None; block = $5} in For (ForInt {region; value}) @@ -633,8 +632,7 @@ for_loop: assign = $2; kwd_to = $3; bound = $4; - kwd_step = Some $5; - step = Some $6; + step = Some ($5, $6); block = $7} in For (ForInt {region; value}) } diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index 414b27d0f..0d28c2705 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -395,19 +395,16 @@ and print_for_loop state = function | ForCollect for_collect -> print_for_collect state for_collect and print_for_int state ({value; _} : for_int reg) = - let {kwd_for; assign; kwd_to; bound; kwd_step; step; block} = value in + let {kwd_for; assign; kwd_to; bound; step; block} = value in print_token state kwd_for "for"; print_var_assign state assign; print_token state kwd_to "to"; print_expr state bound; - match kwd_step with - | None -> (); - | Some kwd_step -> - print_token state kwd_step "step"; - match step with - | None -> (); - | Some step -> - print_expr state step; + (match step with + None -> (); + | Some (kwd_step, expr) -> + print_token state kwd_step "step"; + print_expr state expr); print_block state block and print_var_assign state {value; _} = @@ -1274,7 +1271,7 @@ and pp_projection state proj = List.iteri (apply len) selections and pp_update state update = - pp_path state update.record; + pp_path (state#pad 2 0) update.record; pp_ne_injection pp_field_path_assign state update.updates.value and pp_selection state = function @@ -1315,17 +1312,27 @@ and pp_for_loop state = function pp_for_collect state value and pp_for_int state for_int = + let {assign; bound; step; block; _} = for_int in + let arity = + match step with None -> 3 | Some _ -> 4 in let () = - let state = state#pad 3 0 in + let state = state#pad arity 0 in pp_node state ""; - pp_var_assign state for_int.assign.value in + pp_var_assign state assign.value in let () = - let state = state#pad 3 1 in + let state = state#pad arity 1 in pp_node state ""; - pp_expr (state#pad 1 0) for_int.bound in + pp_expr (state#pad 1 0) bound in let () = - let state = state#pad 3 2 in - let statements = for_int.block.value.statements in + match step with + None -> () + | Some (_, expr) -> + let state = state#pad arity 2 in + pp_node state ""; + pp_expr (state#pad 1 0) expr in + let () = + let state = state#pad arity (arity-1) in + let statements = block.value.statements in pp_node state ""; pp_statements state statements in () @@ -1348,10 +1355,10 @@ and pp_for_collect state collect = pp_collection (state#pad 2 0) collect.collection; pp_expr (state#pad 1 0) collect.expr in let () = - let state = state#pad 3 2 in - let statements = collect.block.value.statements in - pp_node state ""; - pp_statements state statements + let state = state#pad 3 2 in + let statements = collect.block.value.statements in + pp_node state ""; + pp_statements state statements in () and pp_collection state = function @@ -1381,10 +1388,10 @@ and pp_field_assign state {value; _} = pp_expr (state#pad 2 1) value.field_expr and pp_field_path_assign state {value; _} = - pp_node state ""; + pp_node state ""; let path = Utils.nsepseq_to_list value.field_path in List.iter (pp_ident (state#pad 2 0)) path; - pp_expr (state#pad 2 1) value.field_expr + pp_expr (state#pad 2 1) value.field_expr and pp_map_patch state patch = pp_path (state#pad 2 0) patch.path; diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index 089763655..69ca98130 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -141,13 +141,12 @@ and pp_fun_decl {value; _} = let body = match block_with with None -> group (nest 2 (break 1 ^^ expr)) - | Some (b,_) -> hardline ^^ string "block [" - ^^ nest 2 (hardline ^^ pp_block b) - ^^ hardline - ^^ group (string "] with" ^^ nest 4 (break 1 ^^ expr)) - and attr = match attributes with - None -> empty - | Some a -> hardline ^^ pp_attr_decl a in + | Some (b,_) -> hardline ^^ pp_block b ^^ string " with" + ^^ group (nest 4 (break 1 ^^ expr)) + and attr = + match attributes with + None -> empty + | Some a -> hardline ^^ pp_attr_decl a in prefix 2 1 start parameters ^^ group (nest 2 (break 1 ^^ string ": " ^^ return_t ^^ string " is")) ^^ body ^^ attr @@ -170,7 +169,10 @@ and pp_param_var {value; _} = let t_expr = pp_type_expr param_type in prefix 2 1 (name ^^ string " :") t_expr -and pp_block {value; _} = pp_statements value.statements +and pp_block {value; _} = + string "block {" + ^^ nest 2 (hardline ^^ pp_statements value.statements) + ^^ hardline ^^ string "}" and pp_statements s = pp_nsepseq ";" pp_statement s @@ -207,28 +209,43 @@ and pp_instruction = function and pp_set_remove {value; _} = let {element; set; _} : set_remove = value in string "remove" ^^ group (nest 2 (break 1 ^^ pp_expr element)) - ^/^ string "from set" ^^ group (nest 2 (break 1 ^^ pp_path set)) + ^^ group (break 1 ^^ prefix 2 1 (string "from set") (pp_path set)) and pp_map_remove {value; _} = let {key; map; _} = value in string "remove" ^^ group (nest 2 (break 1 ^^ pp_expr key)) - ^/^ string "from map" ^^ group (nest 2 (break 1 ^^ pp_path map)) + ^^ group (break 1 ^^ prefix 2 1 (string "from map") (pp_path map)) -and pp_set_patch {value; _} = string "TODO:pp_set_patch" +and pp_set_patch {value; _} = + let {path; set_inj; _} = value in + let inj = pp_ne_injection pp_expr set_inj in + string "patch" + ^^ group (nest 2 (break 1 ^^ pp_path path) ^/^ string "with") + ^^ group (nest 2 (break 1 ^^ inj)) -and pp_map_patch {value; _} = string "TODO:pp_map_patch" +and pp_map_patch {value; _} = + let {path; map_inj; _} = value in + let inj = pp_ne_injection pp_binding map_inj in + string "patch" + ^^ group (nest 2 (break 1 ^^ pp_path path) ^/^ string "with") + ^^ group (nest 2 (break 1 ^^ inj)) and pp_binding {value; _} = let {source; image; _} = value in - pp_expr source ^^ string " ->" - ^^ group (nest 2 (break 1 ^^ pp_expr image)) + pp_expr source + ^^ string " ->" ^^ group (nest 2 (break 1 ^^ pp_expr image)) -and pp_record_patch {value; _} = string "TODO:pp_record_patch" +and pp_record_patch {value; _} = + let {path; record_inj; _} = value in + let inj = pp_record record_inj in + string "patch" + ^^ group (nest 2 (break 1 ^^ pp_path path) ^/^ string "with") + ^^ group (nest 2 (break 1 ^^ inj)) and pp_cond_expr {value; _} = let {test; ifso; kwd_else; ifnot; _} : cond_expr = value in - let test = string "if " ^^ group (nest 3 (pp_expr test)) - and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) + let test = string "if " ^^ group (nest 3 (pp_expr test)) + and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) and ifnot = string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) in test ^/^ ifso ^/^ ifnot @@ -237,12 +254,12 @@ and pp_conditional {value; _} = let test = string "if " ^^ group (nest 3 (pp_expr test)) and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) and ifnot = match ifnot with - ClauseInstr i -> + ClauseInstr _ | ClauseBlock LongBlock _ -> string "else" - ^^ group (nest 2 (break 1 ^^ pp_instruction i)) - | ClauseBlock b -> + ^^ group (nest 2 (break 1 ^^ pp_if_clause ifnot)) + | ClauseBlock ShortBlock _ -> string "else {" - ^^ group (nest 2 (hardline ^^ pp_clause_block b)) + ^^ group (nest 2 (hardline ^^ pp_if_clause ifnot)) ^^ hardline ^^ string "}" in test ^/^ ifso ^/^ ifnot @@ -252,21 +269,23 @@ and pp_if_clause = function and pp_clause_block = function LongBlock b -> pp_block b -| ShortBlock {value; _} -> Utils.(pp_statements <@ fst) value.inside +| ShortBlock b -> Utils.(pp_statements <@ fst) b.value.inside -and pp_set_membership {value; _} = string "TODO:pp_set_membership" +and pp_set_membership {value; _} = + let {set; element; _} = value in + pp_expr set ^/^ string "contains" ^/^ pp_expr element -and pp_case : - 'a.('a -> document) -> 'a case Region.reg -> document = +and pp_case : 'a.('a -> document) -> 'a case Region.reg -> document = fun printer {value; _} -> - let {expr; cases; _} = value in - group (string "case " ^^ nest 5 (pp_expr expr) ^/^ string "of [") - ^^ hardline ^^ pp_cases printer cases - ^^ hardline ^^ string "]" + let {expr; cases; _} = value in + group (string "case " ^^ nest 5 (pp_expr expr) ^/^ string "of [") + ^^ hardline ^^ pp_cases printer cases + ^^ hardline ^^ string "]" and pp_cases : 'a.('a -> document) -> - ('a case_clause reg, vbar) Utils.nsepseq Region.reg -> document = + ('a case_clause reg, vbar) Utils.nsepseq Region.reg -> + document = fun printer {value; _} -> let head, tail = value in let head = pp_case_clause printer head in @@ -296,12 +315,22 @@ and pp_loop = function and pp_while_loop {value; _} = string "TODO:pp_while_loop" and pp_for_loop = function - ForInt l -> pp_for_int l + ForInt l -> pp_for_int l | ForCollect l -> pp_for_collect l -and pp_for_int {value; _} = string "TODO:pp_for_int" +and pp_for_int {value; _} = + let {assign; bound; step; block; _} = value in + let step = + match step with + None -> empty + | Some (_, e) -> prefix 2 1 (string " step") (pp_expr e) in + prefix 2 1 (string "for") (pp_var_assign assign) + ^^ prefix 2 1 (string " to") (pp_expr bound) + ^^ step ^^ hardline ^^ pp_block block -and pp_var_assign {value; _} = string "TODO:pp_var_assign" +and pp_var_assign {value; _} = + let {name; expr; _} = value in + prefix 2 1 (pp_ident name ^^ string " :=") (pp_expr expr) and pp_for_collect {value; _} = string "TODO:pp_for_collect" @@ -336,12 +365,12 @@ and pp_expr = function and pp_annot_expr {value; _} = let expr, _, type_expr = value.inside in - group (string "(" ^^ nest 1 (pp_expr expr ^/^ string ": " - ^^ pp_type_expr type_expr ^^ string ")")) + group (string "(" ^^ nest 1 (pp_expr expr ^/^ string ": " + ^^ pp_type_expr type_expr ^^ string ")")) and pp_set_expr = function - SetInj inj -> string "TODO:pp_set_expr:SetInj" -| SetMem mem -> string "TODO:pp_set_expr:SetMem" + SetInj inj -> pp_injection pp_expr inj +| SetMem mem -> pp_set_membership mem and pp_map_expr = function MapLookUp fetch -> pp_map_lookup fetch @@ -397,8 +426,8 @@ and pp_mutez {value; _} = Z.to_string (snd value) ^ "mutez" |> string and pp_string_expr = function - Cat e -> pp_bin_op "^" e -| String e -> pp_string e + Cat e -> pp_bin_op "^" e +| String e -> pp_string e | Verbatim e -> pp_verbatim e and pp_ident {value; _} = string value @@ -408,13 +437,13 @@ and pp_string s = string "\"" ^^ pp_ident s ^^ string "\"" and pp_verbatim s = string "{|" ^^ pp_ident s ^^ string "|}" and pp_list_expr = function - ECons e -> pp_bin_op "#" e + ECons e -> pp_bin_op "#" e | EListComp e -> group (pp_injection pp_expr e) -| ENil _ -> string "nil" +| ENil _ -> string "nil" and pp_constr_expr = function - SomeApp a -> pp_some_app a -| NoneExpr _ -> string "None" + SomeApp a -> pp_some_app a +| NoneExpr _ -> string "None" | ConstrApp a -> pp_constr_app a and pp_some_app {value; _} = string "TODO:pp_some_app" @@ -488,9 +517,9 @@ and pp_ne_injection : let elements = pp_nsepseq ";" printer ne_elements in let kwd = pp_ne_injection_kwd kind in let offset = String.length kwd + 2 in - string (kwd ^ " [") - ^^ group (nest 2 (break 0 ^^ elements )) - ^^ break 0 ^^ string "]" + group (string (kwd ^ " [") + ^^ group (nest 2 (break 0 ^^ elements )) + ^^ break 0 ^^ string "]") and pp_ne_injection_kwd = function NEInjAttr _ -> "attributes" @@ -500,9 +529,9 @@ and pp_ne_injection_kwd = function and pp_nsepseq : 'a.string -> - ('a -> document) -> - ('a, t) Utils.nsepseq -> - document = + ('a -> document) -> + ('a, t) Utils.nsepseq -> + document = fun sep printer elements -> let elems = Utils.nsepseq_to_list elements and sep = string sep ^^ break 1 From 534447dc9e7bc90c0cb00cefce7f653e1274c453 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 8 Jun 2020 00:19:05 +0200 Subject: [PATCH 47/67] More printers. --- src/passes/01-parser/pascaligo/AST.ml | 4 +- src/passes/01-parser/pascaligo/Parser.mly | 4 +- src/passes/01-parser/pascaligo/ParserLog.ml | 8 +-- src/passes/01-parser/pascaligo/Pretty.ml | 72 ++++++++++++++------- 4 files changed, 58 insertions(+), 30 deletions(-) diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index 5625b250c..a028fbdcd 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -543,7 +543,7 @@ and constr_expr = and field_assign = { field_name : field_name; - equal : equal; + assignment : equal; field_expr : expr } @@ -563,7 +563,7 @@ and update = { and field_path_assign = { field_path : (field_name, dot) nsepseq; - equal : equal; + assignment : equal; field_expr : expr } diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index d5cc773fe..ebdc4d2a8 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -976,7 +976,7 @@ update_record: field_assignment: field_name "=" expr { let region = cover $1.region (expr_to_region $3) - and value = {field_name=$1; equal=$2; field_expr=$3} + and value = {field_name=$1; assignment=$2; field_expr=$3} in {region; value} } field_path_assignment: @@ -984,7 +984,7 @@ field_path_assignment: let start = nsepseq_to_region (fun x -> x.region) $1 and stop = expr_to_region $3 in let region = cover start stop - and value = {field_path=$1; equal=$2; field_expr=$3} + and value = {field_path=$1; assignment=$2; field_expr=$3} in {region; value} } fun_call: diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index 0d28c2705..da2f1ac75 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -619,15 +619,15 @@ and print_record_expr state = print_ne_injection state print_field_assign and print_field_assign state {value; _} = - let {field_name; equal; field_expr} = value in + let {field_name; assignment; field_expr} = value in print_var state field_name; - print_token state equal "="; + print_token state assignment "="; print_expr state field_expr and print_field_path_assign state {value; _} = - let {field_path; equal; field_expr} = value in + let {field_path; assignment; field_expr} = value in print_nsepseq state "field_path" print_var field_path; - print_token state equal "="; + print_token state assignment "="; print_expr state field_expr and print_update_expr state {value; _} = diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index 69ca98130..462901e00 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -243,7 +243,7 @@ and pp_record_patch {value; _} = ^^ group (nest 2 (break 1 ^^ inj)) and pp_cond_expr {value; _} = - let {test; ifso; kwd_else; ifnot; _} : cond_expr = value in + let {test; ifso; ifnot; _} : cond_expr = value in let test = string "if " ^^ group (nest 3 (pp_expr test)) and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_expr ifso)) and ifnot = string "else" ^^ group (nest 2 (break 1 ^^ pp_expr ifnot)) @@ -272,8 +272,8 @@ and pp_clause_block = function | ShortBlock b -> Utils.(pp_statements <@ fst) b.value.inside and pp_set_membership {value; _} = - let {set; element; _} = value in - pp_expr set ^/^ string "contains" ^/^ pp_expr element + let {set; element; _} : set_membership = value in + group (pp_expr set ^/^ string "contains" ^/^ pp_expr element) and pp_case : 'a.('a -> document) -> 'a case Region.reg -> document = fun printer {value; _} -> @@ -312,7 +312,9 @@ and pp_loop = function While l -> pp_while_loop l | For f -> pp_for_loop f -and pp_while_loop {value; _} = string "TODO:pp_while_loop" +and pp_while_loop {value; _} = + let {cond; block; _} = value in + prefix 2 1 (string "while") (pp_expr cond) ^^ hardline ^^ pp_block block and pp_for_loop = function ForInt l -> pp_for_int l @@ -332,7 +334,15 @@ and pp_var_assign {value; _} = let {name; expr; _} = value in prefix 2 1 (pp_ident name ^^ string " :=") (pp_expr expr) -and pp_for_collect {value; _} = string "TODO:pp_for_collect" +and pp_for_collect {value; _} = + let {var; bind_to; collection; expr; block; _} = value in + let binding = + match bind_to with + None -> pp_ident var + | Some (_, dest) -> pp_ident var ^^ string " -> " ^^ pp_ident dest in + prefix 2 1 (string "for") binding + ^^ prefix 2 1 (string " in") (pp_collection collection ^/^ pp_expr expr) + ^^ hardline ^^ pp_block block and pp_collection = function Map _ -> string "map" @@ -374,8 +384,8 @@ and pp_set_expr = function and pp_map_expr = function MapLookUp fetch -> pp_map_lookup fetch -| MapInj inj -> group (pp_injection pp_binding inj) -| BigMapInj inj -> group (pp_injection pp_binding inj) +| MapInj inj -> pp_injection pp_binding inj +| BigMapInj inj -> pp_injection pp_binding inj and pp_map_lookup {value; _} = prefix 2 1 (pp_path value.path) (pp_brackets pp_expr value.index) @@ -438,7 +448,7 @@ and pp_verbatim s = string "{|" ^^ pp_ident s ^^ string "|}" and pp_list_expr = function ECons e -> pp_bin_op "#" e -| EListComp e -> group (pp_injection pp_expr e) +| EListComp e -> pp_injection pp_expr e | ENil _ -> string "nil" and pp_constr_expr = function @@ -463,7 +473,12 @@ and pp_projection {value; _} = and pp_update {value; _} = string "TODO:pp_update" -and pp_field_path_assign {value; _} = string "TODO:pp_field_path_assign" +and pp_field_path_assign {value; _} = + let {field_path; field_expr; _} = value in + let fields = Utils.nsepseq_to_list field_path + and sep = string "." ^^ break 0 in + let fields = separate_map sep pp_ident fields in + group (fields ^^ nest 2 (break 1 ^^ string "= " ^^ pp_expr field_expr)) and pp_selection = function FieldName v -> string v.value @@ -494,15 +509,13 @@ and pp_arguments v = pp_tuple_expr v and pp_injection : 'a.('a -> document) -> 'a injection reg -> document = fun printer {value; _} -> - let {kind; enclosing; elements; _} = value in + let {kind; elements; _} = value in let sep = string ";" ^^ break 1 in let elements = Utils.sepseq_to_list elements in let elements = separate_map sep printer elements in let kwd = pp_injection_kwd kind in - let offset = String.length kwd + 2 in - string (kwd ^ " [") - ^^ group (nest 2 (break 0 ^^ elements)) - ^^ break 0 ^^ string "]" + group (string (kwd ^ " [") + ^^ nest 2 (break 0 ^^ elements) ^^ break 0 ^^ string "]") and pp_injection_kwd = function InjSet _ -> "set" @@ -513,10 +526,9 @@ and pp_injection_kwd = function and pp_ne_injection : 'a.('a -> document) -> 'a ne_injection reg -> document = fun printer {value; _} -> - let {kind; enclosing; ne_elements; _} = value in + let {kind; ne_elements; _} = value in let elements = pp_nsepseq ";" printer ne_elements in let kwd = pp_ne_injection_kwd kind in - let offset = String.length kwd + 2 in group (string (kwd ^ " [") ^^ group (nest 2 (break 0 ^^ elements )) ^^ break 0 ^^ string "]") @@ -570,9 +582,24 @@ and pp_constr_pattern = function and pp_psome {value=_, p; _} = prefix 4 1 (string "Some") (pp_par pp_pattern p) -and pp_pconstr_app {value; _} = string "TODO:pp_pconstr_app" +and pp_pconstr_app {value; _} = + match value with + constr, None -> pp_ident constr + | constr, Some ptuple -> + prefix 4 1 (pp_ident constr) (pp_tuple_pattern ptuple) -and pp_tuple_pattern {value; _} = string "TODO:tuple_pattern" +and pp_tuple_pattern {value; _} = + let head, tail = value.inside in + let rec app = function + [] -> empty + | [e] -> group (break 1 ^^ pp_pattern e) + | e::items -> + group (break 1 ^^ pp_pattern e ^^ string ",") ^^ app items in + let components = + if tail = [] + then pp_pattern head + else pp_pattern head ^^ string "," ^^ app (List.map snd tail) + in string "(" ^^ nest 1 (components ^^ string ")") and pp_list_pattern = function PListComp cmp -> pp_list_comp cmp @@ -580,8 +607,9 @@ and pp_list_pattern = function | PParCons p -> pp_ppar_cons p | PCons p -> nest 4 (pp_nsepseq " #" pp_pattern p.value) -and pp_list_comp e = group (pp_injection pp_pattern e) +and pp_list_comp e = pp_injection pp_pattern e -and pp_ppar_cons {value; _} = string "TODO:pp_ppar_cons" - -and pp_cons {value; _} = string "TODO:pp_cons" +and pp_ppar_cons {value; _} = + let patt1, _, patt2 = value.inside in + let comp = prefix 2 1 (pp_pattern patt1 ^^ string " ::") (pp_pattern patt2) + in string "(" ^^ nest 1 (comp ^^ string ")") From 8d291b2d2e4d79ae91885085f5c79f5021cdaaa6 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 8 Jun 2020 11:59:58 +0200 Subject: [PATCH 48/67] Finished v1 of PascaLIGO pretty-printer. --- src/passes/01-parser/cameligo/Pretty.ml | 4 +- src/passes/01-parser/pascaligo/Pretty.ml | 30 ++++--- src/passes/01-parser/pascaligo/Tests/pp.ligo | 40 +++++---- src/passes/1-parser/cameligo/Tests/pp.mligo | 29 ------- src/passes/1-parser/pascaligo/Tests/pp.ligo | 91 -------------------- 5 files changed, 44 insertions(+), 150 deletions(-) delete mode 100644 src/passes/1-parser/cameligo/Tests/pp.mligo delete mode 100644 src/passes/1-parser/pascaligo/Tests/pp.ligo diff --git a/src/passes/01-parser/cameligo/Pretty.ml b/src/passes/01-parser/cameligo/Pretty.ml index 8fa298e3f..ba8451d52 100644 --- a/src/passes/01-parser/cameligo/Pretty.ml +++ b/src/passes/01-parser/cameligo/Pretty.ml @@ -72,9 +72,9 @@ and pp_pattern = function and pp_pconstr = function PNone _ -> string "None" | PSomeApp p -> pp_patt_some p -| PConstrApp a -> pp_patt_c_app a +| PConstrApp a -> pp_pconstr_app a -and pp_patt_c_app {value; _} = +and pp_pconstr_app {value; _} = match value with constr, None -> pp_ident constr | constr, Some pat -> diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index 462901e00..ecf7d0d44 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -148,7 +148,7 @@ and pp_fun_decl {value; _} = None -> empty | Some a -> hardline ^^ pp_attr_decl a in prefix 2 1 start parameters - ^^ group (nest 2 (break 1 ^^ string ": " ^^ return_t ^^ string " is")) + ^^ group (nest 2 (break 1 ^^ string ": " ^^ nest 2 return_t ^^ string " is")) ^^ body ^^ attr and pp_parameters p = pp_nsepseq ";" pp_param_decl p @@ -456,11 +456,20 @@ and pp_constr_expr = function | NoneExpr _ -> string "None" | ConstrApp a -> pp_constr_app a -and pp_some_app {value; _} = string "TODO:pp_some_app" +and pp_some_app {value; _} = + prefix 4 1 (string "Some") (pp_arguments (snd value)) -and pp_constr_app {value; _} = string "TODO:pp_constr_app" +and pp_constr_app {value; _} = + let constr, args = value in + let constr = string constr.value in + match args with + None -> constr + | Some tuple -> prefix 2 1 constr (pp_tuple_expr tuple) -and pp_field_assign {value; _} = string "TODO:pp_field_assign" + +and pp_field_assign {value; _} = + let {field_name; field_expr; _} = value in + prefix 2 1 (pp_ident field_name ^^ string " =") (pp_expr field_expr) and pp_record ne_inj = group (pp_ne_injection pp_field_assign ne_inj) @@ -471,7 +480,11 @@ and pp_projection {value; _} = let fields = separate_map sep pp_selection fields in group (pp_ident struct_name ^^ string "." ^^ break 0 ^^ fields) -and pp_update {value; _} = string "TODO:pp_update" +and pp_update {value; _} = + let {record; updates; _} = value in + let updates = group (pp_ne_injection pp_field_path_assign updates) + and record = pp_path record in + record ^^ string " with" ^^ nest 2 (break 1 ^^ updates) and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in @@ -540,10 +553,7 @@ and pp_ne_injection_kwd = function | NEInjRecord _ -> "record" and pp_nsepseq : - 'a.string -> - ('a -> document) -> - ('a, t) Utils.nsepseq -> - document = + 'a.string -> ('a -> document) -> ('a, t) Utils.nsepseq -> document = fun sep printer elements -> let elems = Utils.nsepseq_to_list elements and sep = string sep ^^ break 1 @@ -596,7 +606,7 @@ and pp_tuple_pattern {value; _} = | e::items -> group (break 1 ^^ pp_pattern e ^^ string ",") ^^ app items in let components = - if tail = [] + if tail = [] then pp_pattern head else pp_pattern head ^^ string "," ^^ app (List.map snd tail) in string "(" ^^ nest 1 (components ^^ string ")") diff --git a/src/passes/01-parser/pascaligo/Tests/pp.ligo b/src/passes/01-parser/pascaligo/Tests/pp.ligo index da28debcd..2dd2563df 100644 --- a/src/passes/01-parser/pascaligo/Tests/pp.ligo +++ b/src/passes/01-parser/pascaligo/Tests/pp.ligo @@ -1,19 +1,23 @@ +function incr_map (const l : list (int)) : list (int) is + List.map (function (const i : int) : int is i + 1, l) + type t is timestamp * nat -> map (string, address) type u is A | B of t * int | C of int -> (string -> int) type v is record aaaaaa : ttttttt; bbbbbb : record ccccccccc : string end end -(* + function back (var store : store) : list (operation) * store is begin - var operations : list (operation) := list []; - const a : nat = 0n; - x0 := record foo = "1"; bar = 4n end; - x1 := nil; - x2 := list end; + var operations : list (operation) := list []; + const operations : list (operation) = list []; + const a : nat = 0n; + x0 := record foo = "1"; bar = 4n end; + x1 := nil; + x2 := list end; x3 := 3#4# list [5; 6]; case foo of 10n -> skip end; - if s contains x then skip else skip; +if saaa.0.1.2.a.b.b.x contains xxxxxxxxxxxxxxx[123] then skip else skip; s := set [3_000mutez; -2; 1n]; a := A; b := B (a); @@ -21,12 +25,12 @@ function back (var store : store) : list (operation) * store is d := None; e := Some (a, B (b)); z := z.1.2; - x := map [1 -> "1"; 2 -> "2"]; +x := if true then map [1 -> "1"; 2 -> "2"; 3 -> "3"; 4 -> "4"; 5 -> "5555555555555555"] else Unit; y := a.b.c[3]; a := "hello " ^ "world" ^ "!"; - r := record a = 0 end; - r := r with record a = 42 end; - patch store.backers with set [(1); f(2*3)]; + r := record aaaaaaaaaaaa = 100000000; bbbbbbb = ffffff (2, aa, x, y) + 1 end; + r := r with record aaaaaaaaaaa = 444442; bbbbbbbbb = 43 + f (z) / 234 end; + patch store.backers.8.aa.33333.5 with set [(1); f(2*3); 123124234/2345]; remove (1,2,3) from set foo.bar; remove 3 from map foo.bar; patch store.backers with map [sender -> amount]; @@ -39,7 +43,7 @@ function back (var store : store) : list (operation) * store is begin acc := 2 - (if toggle then f(x) else Unit); end; - for i := 1n to 10n + for i := 1n to 10n step 2n begin acc := acc + i; end; @@ -53,10 +57,11 @@ function back (var store : store) : list (operation) * store is | False#True#Unit#0xAA#"hi"#4#nil -> skip ] end with (operations, store, (more_stuff, and_here_too)) -*) + function claim (var store : store; const bar : t; const baz : u; var z : operations * store * (more_stuff * and_here_too)) : list (operation) * store * timestamp * nat -> map (string, address) is begin - var operations : list (operation * map (address, map (longname, domain))) := nilllllllllll; + const operations : list (operation * map (address, map (longname, domain))) = nilllllllllll; +var operations : list (operation * map (address, map (longname, domain))) := nilllllllllll; attributes ["foo"; "inline"]; if now <= store.deadline then failwith ("Too soon.") @@ -64,20 +69,20 @@ function back (var store : store) : list (operation) * store is case store.backers[sender] of None -> failwith ("Not a backer.") + | Some (0) -> skip | Some (quantity) -> if balance >= store.goal or store.funded then failwith ("Goal reached: no refund.") else begin - operations.0.foo := list [transaction (unit, sender, quantity)]; - remove sender from map store.backers + operations.0.foo := list [transaction (unit, sender, quantity); transaction (foo, bar, bazzzzzzzzzzzzzzz)]; + remove sender.0099999.fffff [fiar (abaxxasfdf)] from map store.backers.foooooo.barrrrr.01.bazzzzzzz end end end with long_function_name (operations, store, (more_stuff, (and_here_too, well_in_here_too), hello)) attributes ["inline"; "foo"] -(* function withdraw (var store : store) : list (operation) * store is begin var operations : list (operation) := list end; @@ -95,4 +100,3 @@ function withdraw (var store : store) : list (operation) * store is nil -> (operations, (store : store)) | _ -> (operations, store) end -*) diff --git a/src/passes/1-parser/cameligo/Tests/pp.mligo b/src/passes/1-parser/cameligo/Tests/pp.mligo deleted file mode 100644 index d84c270aa..000000000 --- a/src/passes/1-parser/cameligo/Tests/pp.mligo +++ /dev/null @@ -1,29 +0,0 @@ -type q = {a: int; b: {c: string}} -type r = int list -type s = (int, address) map -type t = int -type u = {a: int; b: t * char} -type v = int * (string * address) -type w = timestamp * nat -> (string, address) map -type x = A | B of t * int | C of int -> (string -> int) - -let x = 4 -let y : t = (if true then -3 + f x x else 0) - 1 -let f (x: int) y = (x : int) -let z : (t) = y -let w = - match f 3 with - None -> [] - | Some (1::[2;3]) -> [4;5]::[] -let n : nat = 0n -let a = A -let b = B a -let c = C (a, B (a)) -let d = None -let e = Some (a, B b) -let z = z.1.2 -let v = "hello" ^ "world" ^ "!" -let w = Map.literal [(1,"1"); (2,"2")] - -let r = { field = 0} -let r = { r with field = 42} diff --git a/src/passes/1-parser/pascaligo/Tests/pp.ligo b/src/passes/1-parser/pascaligo/Tests/pp.ligo deleted file mode 100644 index f4b185f69..000000000 --- a/src/passes/1-parser/pascaligo/Tests/pp.ligo +++ /dev/null @@ -1,91 +0,0 @@ -type t is timestamp * nat -> map (string, address) -type u is A | B of t * int | C of int -> (string -> int) -type v is record a : t; b : record c : string end end - -function back (var store : store) : list (operation) * store is - var operations : list (operation) := list [] - begin - const a : nat = 0n; - x0 := record foo = "1"; bar = 4n end; - x1 := nil; - x2 := list end; - x3 := 3#4# list [5; 6]; - case foo of - 10n -> skip - end; - if s contains x then skip else skip; - s := set [3_000mtz; -2; 1n]; - a := A; - b := B (a); - c := C (a, B (a)); - d := None; - e := Some (a, B (b)); - z := z.1.2; - x := map [1 -> "1"; 2 -> "2"]; - y := a.b.c[3]; - a := "hello " ^ "world" ^ "!"; - patch store.backers with set [(1); f(2*3)]; - remove (1,2,3) from set foo.bar; - remove 3 from map foo.bar; - patch store.backers with map [sender -> amount]; - if now > store.deadline and (not True) then - begin - f (x,1); - for k -> d : int * string in map m block { skip }; - for x : int in set s block { skip }; - while i < 10n - begin - acc := 2 - (if toggle then f(x) else Unit); - end; - for i := 1n to 10n - begin - acc := acc + i; - end; - failwith ("Deadline passed"); - end - else - case store.backers[sender] of [ - None -> store.0.backers[sender] := amount - | Some (_) -> skip - | B (x, C (y,z)) -> skip - | False#True#Unit#0xAA#"hi"#4#nil -> skip - ] - end with (operations, store) - -function claim (var store : store) : list (operation) * store is - var operations : list (operation) := nil - begin - if now <= store.deadline then - failwith ("Too soon.") - else - case store.backers[sender] of - None -> - failwith ("Not a backer.") - | Some (amount) -> - if balance >= store.goal or store.funded then - failwith ("Goal reached: no refund.") - else - begin - operations.0.foo := list [transaction (unit, sender, amount)]; - remove sender from map store.backers - end - end - end with (operations, store) - -function withdraw (var store : store) : list (operation) * store is - var operations : list (operation) := list end - begin - if sender = owner then - if now >= store.deadline then - if balance >= store.goal then { -// store.funded := True; - patch store with record funded = True; a = b end; - operations := list [Transfer (owner, balance)]; - }; - else failwith ("Below target.") - else failwith ("Too soon."); - else skip - end with case (foo: bar) of - nil -> (operations, (store : store)) - | _ -> (operations, store) - end From 2d65ba638e0ef270556bbcb4f5563b4f94add234 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 8 Jun 2020 12:06:19 +0200 Subject: [PATCH 49/67] Updated syntax error messages. --- .../cameligo/error.messages.checked-in | 29 +- .../pascaligo/error.messages.checked-in | 2512 ++++++++--------- 2 files changed, 1227 insertions(+), 1314 deletions(-) diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index c3ac95367..49c957c75 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -2380,14 +2380,14 @@ interactive_expr: LBRACKET With -interactive_expr: LPAR Verbatim COLON String VBAR +interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 582. +## Ends in an error in state: 583. ## -## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(annot_expr) -> LPAR annot_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: -## LPAR expr COLON type_expr +## LPAR annot_expr ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an @@ -2396,6 +2396,7 @@ interactive_expr: LPAR Verbatim COLON String VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type +## In state 582, spurious reduction of production annot_expr -> expr COLON type_expr ## @@ -2404,10 +2405,10 @@ interactive_expr: LPAR Verbatim COLON With ## ## Ends in an error in state: 581. ## -## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## annot_expr -> expr COLON . type_expr [ RPAR ] ## ## The known suffix of the stack is as follows: -## LPAR expr COLON +## expr COLON ## @@ -2416,7 +2417,7 @@ interactive_expr: LPAR Verbatim With ## ## Ends in an error in state: 579. ## -## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## annot_expr -> expr . COLON type_expr [ RPAR ] ## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## ## The known suffix of the stack is as follows: @@ -2446,7 +2447,7 @@ interactive_expr: LPAR With ## ## Ends in an error in state: 167. ## -## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] +## par(annot_expr) -> LPAR . annot_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## par(expr) -> LPAR . expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## unit -> LPAR . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -3753,7 +3754,7 @@ interactive_expr: Verbatim WILD interactive_expr: Verbatim With ## -## Ends in an error in state: 599. +## Ends in an error in state: 600. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -3782,7 +3783,7 @@ interactive_expr: Verbatim With interactive_expr: With ## -## Ends in an error in state: 597. +## Ends in an error in state: 598. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -4228,7 +4229,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 586. +## Ends in an error in state: 587. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4353,7 +4354,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 588. +## Ends in an error in state: 589. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4489,7 +4490,7 @@ contract: Type Ident EQ Constr With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 594. +## Ends in an error in state: 595. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4505,7 +4506,7 @@ contract: Type Ident EQ Ident VBAR ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type ## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 590, spurious reduction of production declaration -> type_decl +## In state 591, spurious reduction of production declaration -> type_decl ## diff --git a/src/passes/01-parser/pascaligo/error.messages.checked-in b/src/passes/01-parser/pascaligo/error.messages.checked-in index 45dbffc55..4704c00cd 100644 --- a/src/passes/01-parser/pascaligo/error.messages.checked-in +++ b/src/passes/01-parser/pascaligo/error.messages.checked-in @@ -1,6 +1,6 @@ -interactive_expr: BigMap LBRACKET Unit ARROW Bytes End +interactive_expr: BigMap LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 151. +## Ends in an error in state: 147. ## ## injection(BigMap,binding) -> BigMap LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -11,26 +11,26 @@ interactive_expr: BigMap LBRACKET Unit ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr +## In state 245, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 241, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap LBRACKET With ## -## Ends in an error in state: 144. +## Ends in an error in state: 140. ## ## injection(BigMap,binding) -> BigMap LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -41,9 +41,9 @@ interactive_expr: BigMap LBRACKET With -interactive_expr: BigMap Unit ARROW Bytes RBRACKET +interactive_expr: BigMap Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 257. +## Ends in an error in state: 253. ## ## injection(BigMap,binding) -> BigMap sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -54,26 +54,26 @@ interactive_expr: BigMap Unit ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr +## In state 245, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 241, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: BigMap With ## -## Ends in an error in state: 143. +## Ends in an error in state: 139. ## ## injection(BigMap,binding) -> BigMap . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(BigMap,binding) -> BigMap . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -88,7 +88,7 @@ interactive_expr: BigMap With interactive_expr: C_Some With ## -## Ends in an error in state: 139. +## Ends in an error in state: 135. ## ## core_expr -> C_Some . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -98,9 +98,9 @@ interactive_expr: C_Some With -interactive_expr: Case Unit Of C_Some LPAR WILD With +interactive_expr: Case Verbatim Of C_Some LPAR WILD With ## -## Ends in an error in state: 285. +## Ends in an error in state: 281. ## ## par(core_pattern) -> LPAR core_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -110,9 +110,9 @@ interactive_expr: Case Unit Of C_Some LPAR WILD With -interactive_expr: Case Unit Of C_Some LPAR With +interactive_expr: Case Verbatim Of C_Some LPAR With ## -## Ends in an error in state: 277. +## Ends in an error in state: 273. ## ## par(core_pattern) -> LPAR . core_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -122,9 +122,9 @@ interactive_expr: Case Unit Of C_Some LPAR With -interactive_expr: Case Unit Of C_Some With +interactive_expr: Case Verbatim Of C_Some With ## -## Ends in an error in state: 276. +## Ends in an error in state: 272. ## ## constr_pattern -> C_Some . par(core_pattern) [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -134,9 +134,9 @@ interactive_expr: Case Unit Of C_Some With -interactive_expr: Case Unit Of Constr LPAR WILD With +interactive_expr: Case Verbatim Of Constr LPAR WILD With ## -## Ends in an error in state: 291. +## Ends in an error in state: 287. ## ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . COMMA nsepseq(core_pattern,COMMA) [ RPAR ] @@ -147,9 +147,9 @@ interactive_expr: Case Unit Of Constr LPAR WILD With -interactive_expr: Case Unit Of Constr LPAR With +interactive_expr: Case Verbatim Of Constr LPAR With ## -## Ends in an error in state: 275. +## Ends in an error in state: 271. ## ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -159,9 +159,9 @@ interactive_expr: Case Unit Of Constr LPAR With -interactive_expr: Case Unit Of Constr With +interactive_expr: Case Verbatim Of Constr With ## -## Ends in an error in state: 274. +## Ends in an error in state: 270. ## ## constr_pattern -> Constr . tuple_pattern [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -172,9 +172,9 @@ interactive_expr: Case Unit Of Constr With -interactive_expr: Case Unit Of LBRACKET VBAR Block +interactive_expr: Case Verbatim Of LBRACKET VBAR Block ## -## Ends in an error in state: 262. +## Ends in an error in state: 258. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) . cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -184,9 +184,9 @@ interactive_expr: Case Unit Of LBRACKET VBAR Block -interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes End +interactive_expr: Case Verbatim Of LBRACKET WILD ARROW Bytes End ## -## Ends in an error in state: 326. +## Ends in an error in state: 322. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) cases(expr) . RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -197,26 +197,26 @@ interactive_expr: Case Unit Of LBRACKET WILD ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 320, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 324, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 321, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## -interactive_expr: Case Unit Of LBRACKET With +interactive_expr: Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 261. +## Ends in an error in state: 257. ## ## case(expr) -> Case expr Of LBRACKET . option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -226,9 +226,9 @@ interactive_expr: Case Unit Of LBRACKET With -interactive_expr: Case Unit Of LPAR WILD COMMA With +interactive_expr: Case Verbatim Of LPAR WILD COMMA With ## -## Ends in an error in state: 292. +## Ends in an error in state: 288. ## ## nsepseq(core_pattern,COMMA) -> core_pattern COMMA . nsepseq(core_pattern,COMMA) [ RPAR ] ## @@ -238,9 +238,9 @@ interactive_expr: Case Unit Of LPAR WILD COMMA With -interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW +interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## -## Ends in an error in state: 304. +## Ends in an error in state: 300. ## ## par(cons_pattern) -> LPAR cons_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -251,15 +251,15 @@ interactive_expr: Case Unit Of LPAR WILD CONS Bytes ARROW ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern -## In state 297, spurious reduction of production cons_pattern -> core_pattern CONS pattern +## In state 294, spurious reduction of production pattern -> core_pattern +## In state 293, spurious reduction of production cons_pattern -> core_pattern CONS pattern ## -interactive_expr: Case Unit Of LPAR WILD CONS With +interactive_expr: Case Verbatim Of LPAR WILD CONS With ## -## Ends in an error in state: 296. +## Ends in an error in state: 292. ## ## cons_pattern -> core_pattern CONS . pattern [ RPAR ] ## @@ -269,9 +269,9 @@ interactive_expr: Case Unit Of LPAR WILD CONS With -interactive_expr: Case Unit Of LPAR WILD With +interactive_expr: Case Verbatim Of LPAR WILD With ## -## Ends in an error in state: 295. +## Ends in an error in state: 291. ## ## cons_pattern -> core_pattern . CONS pattern [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] @@ -283,9 +283,9 @@ interactive_expr: Case Unit Of LPAR WILD With -interactive_expr: Case Unit Of LPAR With +interactive_expr: Case Verbatim Of LPAR With ## -## Ends in an error in state: 270. +## Ends in an error in state: 266. ## ## par(cons_pattern) -> LPAR . cons_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -296,9 +296,9 @@ interactive_expr: Case Unit Of LPAR With -interactive_expr: Case Unit Of List LBRACKET WILD End +interactive_expr: Case Verbatim Of List LBRACKET WILD End ## -## Ends in an error in state: 308. +## Ends in an error in state: 304. ## ## injection(List,core_pattern) -> List LBRACKET sep_or_term_list(core_pattern,SEMI) . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -309,15 +309,15 @@ interactive_expr: Case Unit Of List LBRACKET WILD End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 308, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 307, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## -interactive_expr: Case Unit Of List LBRACKET With +interactive_expr: Case Verbatim Of List LBRACKET With ## -## Ends in an error in state: 306. +## Ends in an error in state: 302. ## ## injection(List,core_pattern) -> List LBRACKET . sep_or_term_list(core_pattern,SEMI) RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List LBRACKET . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -328,9 +328,9 @@ interactive_expr: Case Unit Of List LBRACKET With -interactive_expr: Case Unit Of List WILD RBRACKET +interactive_expr: Case Verbatim Of List WILD RBRACKET ## -## Ends in an error in state: 320. +## Ends in an error in state: 316. ## ## injection(List,core_pattern) -> List sep_or_term_list(core_pattern,SEMI) . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -341,15 +341,15 @@ interactive_expr: Case Unit Of List WILD RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 308, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 307, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## -interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With +interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With ## -## Ends in an error in state: 317. +## Ends in an error in state: 313. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -360,9 +360,9 @@ interactive_expr: Case Unit Of List WILD SEMI WILD SEMI With -interactive_expr: Case Unit Of List WILD SEMI WILD With +interactive_expr: Case Verbatim Of List WILD SEMI WILD With ## -## Ends in an error in state: 316. +## Ends in an error in state: 312. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -374,9 +374,9 @@ interactive_expr: Case Unit Of List WILD SEMI WILD With -interactive_expr: Case Unit Of List WILD SEMI With +interactive_expr: Case Verbatim Of List WILD SEMI With ## -## Ends in an error in state: 313. +## Ends in an error in state: 309. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -387,9 +387,9 @@ interactive_expr: Case Unit Of List WILD SEMI With -interactive_expr: Case Unit Of List WILD With +interactive_expr: Case Verbatim Of List WILD With ## -## Ends in an error in state: 312. +## Ends in an error in state: 308. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -401,9 +401,9 @@ interactive_expr: Case Unit Of List WILD With -interactive_expr: Case Unit Of List With +interactive_expr: Case Verbatim Of List With ## -## Ends in an error in state: 269. +## Ends in an error in state: 265. ## ## injection(List,core_pattern) -> List . sep_or_term_list(core_pattern,SEMI) End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -416,9 +416,9 @@ interactive_expr: Case Unit Of List With -interactive_expr: Case Unit Of VBAR Block +interactive_expr: Case Verbatim Of VBAR Block ## -## Ends in an error in state: 331. +## Ends in an error in state: 327. ## ## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -428,9 +428,9 @@ interactive_expr: Case Unit Of VBAR Block -interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET +interactive_expr: Case Verbatim Of WILD ARROW Bytes RBRACKET ## -## Ends in an error in state: 332. +## Ends in an error in state: 328. ## ## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -441,26 +441,26 @@ interactive_expr: Case Unit Of WILD ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 320, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 324, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 321, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## -interactive_expr: Case Unit Of WILD ARROW Bytes Type +interactive_expr: Case Verbatim Of WILD ARROW Bytes Type ## -## Ends in an error in state: 328. +## Ends in an error in state: 324. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . [ RBRACKET End ] ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . VBAR nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] @@ -472,24 +472,24 @@ interactive_expr: Case Unit Of WILD ARROW Bytes Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 320, spurious reduction of production case_clause(expr) -> pattern ARROW expr ## -interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With +interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 329. +## Ends in an error in state: 325. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) VBAR . nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] ## @@ -499,9 +499,9 @@ interactive_expr: Case Unit Of WILD ARROW Bytes VBAR With -interactive_expr: Case Unit Of WILD ARROW With +interactive_expr: Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 323. +## Ends in an error in state: 319. ## ## case_clause(expr) -> pattern ARROW . expr [ VBAR RBRACKET End ] ## @@ -511,9 +511,9 @@ interactive_expr: Case Unit Of WILD ARROW With -interactive_expr: Case Unit Of WILD CONS WILD CONS With +interactive_expr: Case Verbatim Of WILD CONS WILD CONS With ## -## Ends in an error in state: 302. +## Ends in an error in state: 298. ## ## nsepseq(core_pattern,CONS) -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -523,9 +523,9 @@ interactive_expr: Case Unit Of WILD CONS WILD CONS With -interactive_expr: Case Unit Of WILD CONS WILD With +interactive_expr: Case Verbatim Of WILD CONS WILD With ## -## Ends in an error in state: 301. +## Ends in an error in state: 297. ## ## nsepseq(core_pattern,CONS) -> core_pattern . [ RPAR ARROW ] ## nsepseq(core_pattern,CONS) -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -536,9 +536,9 @@ interactive_expr: Case Unit Of WILD CONS WILD With -interactive_expr: Case Unit Of WILD CONS With +interactive_expr: Case Verbatim Of WILD CONS With ## -## Ends in an error in state: 299. +## Ends in an error in state: 295. ## ## pattern -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -548,9 +548,9 @@ interactive_expr: Case Unit Of WILD CONS With -interactive_expr: Case Unit Of WILD RPAR +interactive_expr: Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 322. +## Ends in an error in state: 318. ## ## case_clause(expr) -> pattern . ARROW expr [ VBAR RBRACKET End ] ## @@ -561,14 +561,14 @@ interactive_expr: Case Unit Of WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern +## In state 294, spurious reduction of production pattern -> core_pattern ## -interactive_expr: Case Unit Of WILD With +interactive_expr: Case Verbatim Of WILD With ## -## Ends in an error in state: 298. +## Ends in an error in state: 294. ## ## pattern -> core_pattern . [ RPAR ARROW ] ## pattern -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -579,9 +579,9 @@ interactive_expr: Case Unit Of WILD With -interactive_expr: Case Unit Of With +interactive_expr: Case Verbatim Of With ## -## Ends in an error in state: 260. +## Ends in an error in state: 256. ## ## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr Of . LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -592,9 +592,9 @@ interactive_expr: Case Unit Of With -interactive_expr: Case Unit VBAR +interactive_expr: Case Verbatim VBAR ## -## Ends in an error in state: 259. +## Ends in an error in state: 255. ## ## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr . Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -606,23 +606,23 @@ interactive_expr: Case Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## interactive_expr: Case With ## -## Ends in an error in state: 138. +## Ends in an error in state: 134. ## ## case(expr) -> Case . expr Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case . expr Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -635,7 +635,7 @@ interactive_expr: Case With interactive_expr: Constr DOT And With ## -## Ends in an error in state: 176. +## Ends in an error in state: 173. ## ## core_expr -> module_field . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> module_field . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -648,7 +648,7 @@ interactive_expr: Constr DOT And With interactive_expr: Constr DOT Ident DOT With ## -## Ends in an error in state: 127. +## Ends in an error in state: 123. ## ## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -660,7 +660,7 @@ interactive_expr: Constr DOT Ident DOT With interactive_expr: Constr DOT Ident With ## -## Ends in an error in state: 126. +## Ends in an error in state: 122. ## ## module_fun -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -673,7 +673,7 @@ interactive_expr: Constr DOT Ident With interactive_expr: Constr DOT With ## -## Ends in an error in state: 122. +## Ends in an error in state: 118. ## ## module_field -> Constr DOT . module_fun [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -686,7 +686,7 @@ interactive_expr: Constr DOT With interactive_expr: Constr With ## -## Ends in an error in state: 121. +## Ends in an error in state: 117. ## ## core_expr -> Constr . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## core_expr -> Constr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -699,9 +699,9 @@ interactive_expr: Constr With -interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 119. +## Ends in an error in state: 115. ## ## fun_expr -> Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -711,9 +711,9 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With -interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 118. +## Ends in an error in state: 114. ## ## fun_expr -> Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -724,17 +724,16 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 117. +## Ends in an error in state: 113. ## ## fun_expr -> Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -746,7 +745,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR COLON With interactive_expr: Function LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 116. +## Ends in an error in state: 112. ## ## fun_expr -> Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -758,7 +757,7 @@ interactive_expr: Function LPAR Const Ident COLON Ident RPAR With interactive_expr: Function LPAR Const Ident COLON With ## -## Ends in an error in state: 78. +## Ends in an error in state: 79. ## ## param_decl -> Const Ident COLON . param_type [ SEMI RPAR ] ## @@ -770,7 +769,7 @@ interactive_expr: Function LPAR Const Ident COLON With interactive_expr: Function LPAR Const Ident With ## -## Ends in an error in state: 77. +## Ends in an error in state: 78. ## ## param_decl -> Const Ident . COLON param_type [ SEMI RPAR ] ## @@ -782,7 +781,7 @@ interactive_expr: Function LPAR Const Ident With interactive_expr: Function LPAR Const With ## -## Ends in an error in state: 76. +## Ends in an error in state: 77. ## ## param_decl -> Const . Ident COLON param_type [ SEMI RPAR ] ## @@ -794,7 +793,7 @@ interactive_expr: Function LPAR Const With interactive_expr: Function LPAR Var Ident COLON Ident SEMI With ## -## Ends in an error in state: 81. +## Ends in an error in state: 82. ## ## nsepseq(param_decl,SEMI) -> param_decl SEMI . nsepseq(param_decl,SEMI) [ RPAR ] ## @@ -806,7 +805,7 @@ interactive_expr: Function LPAR Var Ident COLON Ident SEMI With interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## -## Ends in an error in state: 80. +## Ends in an error in state: 81. ## ## nsepseq(param_decl,SEMI) -> param_decl . [ RPAR ] ## nsepseq(param_decl,SEMI) -> param_decl . SEMI nsepseq(param_decl,SEMI) [ RPAR ] @@ -818,18 +817,18 @@ interactive_expr: Function LPAR Var Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 75, spurious reduction of production param_type -> fun_type -## In state 74, spurious reduction of production param_decl -> Var Ident COLON param_type +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 76, spurious reduction of production param_type -> fun_type +## In state 75, spurious reduction of production param_decl -> Var Ident COLON param_type ## interactive_expr: Function LPAR Var Ident COLON With ## -## Ends in an error in state: 73. +## Ends in an error in state: 74. ## ## param_decl -> Var Ident COLON . param_type [ SEMI RPAR ] ## @@ -841,7 +840,7 @@ interactive_expr: Function LPAR Var Ident COLON With interactive_expr: Function LPAR Var Ident With ## -## Ends in an error in state: 72. +## Ends in an error in state: 73. ## ## param_decl -> Var Ident . COLON param_type [ SEMI RPAR ] ## @@ -853,7 +852,7 @@ interactive_expr: Function LPAR Var Ident With interactive_expr: Function LPAR Var With ## -## Ends in an error in state: 71. +## Ends in an error in state: 72. ## ## param_decl -> Var . Ident COLON param_type [ SEMI RPAR ] ## @@ -865,7 +864,7 @@ interactive_expr: Function LPAR Var With interactive_expr: Function LPAR With ## -## Ends in an error in state: 70. +## Ends in an error in state: 71. ## ## par(nsepseq(param_decl,SEMI)) -> LPAR . nsepseq(param_decl,SEMI) RPAR [ COLON ] ## @@ -877,7 +876,7 @@ interactive_expr: Function LPAR With interactive_expr: Function With ## -## Ends in an error in state: 115. +## Ends in an error in state: 111. ## ## fun_expr -> Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -889,7 +888,7 @@ interactive_expr: Function With interactive_expr: Ident DOT Ident ASS ## -## Ends in an error in state: 154. +## Ends in an error in state: 150. ## ## fun_call_or_par_or_projection -> projection . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## path -> projection . [ With LBRACKET ] @@ -901,15 +900,15 @@ interactive_expr: Ident DOT Ident ASS ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 130, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 126, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 338, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) ## interactive_expr: Ident DOT Int DOT With ## -## Ends in an error in state: 131. +## Ends in an error in state: 127. ## ## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -921,7 +920,7 @@ interactive_expr: Ident DOT Int DOT With interactive_expr: Ident DOT Int While ## -## Ends in an error in state: 130. +## Ends in an error in state: 126. ## ## nsepseq(selection,DOT) -> selection . [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] @@ -934,7 +933,7 @@ interactive_expr: Ident DOT Int While interactive_expr: Ident DOT With ## -## Ends in an error in state: 341. +## Ends in an error in state: 337. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -944,9 +943,9 @@ interactive_expr: Ident DOT With -interactive_expr: Ident LBRACKET Unit VBAR +interactive_expr: Ident LBRACKET Verbatim VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 237. ## ## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -957,23 +956,23 @@ interactive_expr: Ident LBRACKET Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LBRACKET With ## -## Ends in an error in state: 240. +## Ends in an error in state: 236. ## ## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -983,9 +982,9 @@ interactive_expr: Ident LBRACKET With -interactive_expr: Ident LPAR Unit COMMA With +interactive_expr: Ident LPAR Verbatim COMMA With ## -## Ends in an error in state: 339. +## Ends in an error in state: 335. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -995,9 +994,9 @@ interactive_expr: Ident LPAR Unit COMMA With -interactive_expr: Ident LPAR Unit VBAR +interactive_expr: Ident LPAR Verbatim VBAR ## -## Ends in an error in state: 338. +## Ends in an error in state: 334. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1009,23 +1008,23 @@ interactive_expr: Ident LPAR Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LPAR With ## -## Ends in an error in state: 114. +## Ends in an error in state: 110. ## ## par(nsepseq(expr,COMMA)) -> LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1037,7 +1036,7 @@ interactive_expr: Ident LPAR With interactive_expr: Ident While ## -## Ends in an error in state: 113. +## Ends in an error in state: 109. ## ## core_expr -> Ident . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> Ident . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1052,7 +1051,7 @@ interactive_expr: Ident While interactive_expr: Ident With Record Ident DOT With ## -## Ends in an error in state: 162. +## Ends in an error in state: 158. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ] ## @@ -1064,7 +1063,7 @@ interactive_expr: Ident With Record Ident DOT With interactive_expr: Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 237. +## Ends in an error in state: 233. ## ## ne_injection(Record,field_path_assignment) -> Record sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1075,26 +1074,26 @@ interactive_expr: Ident With Record Ident EQ Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 167, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 190, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 226, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 163, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 235. +## Ends in an error in state: 231. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1107,7 +1106,7 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 230. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1120,24 +1119,24 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 190, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: Ident With Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 231. +## Ends in an error in state: 227. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1150,7 +1149,7 @@ interactive_expr: Ident With Record Ident EQ Bytes SEMI With interactive_expr: Ident With Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 230. +## Ends in an error in state: 226. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1163,24 +1162,24 @@ interactive_expr: Ident With Record Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 190, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr ## interactive_expr: Ident With Record Ident EQ With ## -## Ends in an error in state: 169. +## Ends in an error in state: 165. ## ## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACKET End ] ## @@ -1192,7 +1191,7 @@ interactive_expr: Ident With Record Ident EQ With interactive_expr: Ident With Record Ident With ## -## Ends in an error in state: 161. +## Ends in an error in state: 157. ## ## nsepseq(field_name,DOT) -> Ident . [ EQ ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ] @@ -1205,7 +1204,7 @@ interactive_expr: Ident With Record Ident With interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 164. +## Ends in an error in state: 160. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1216,26 +1215,26 @@ interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 194, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr -## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 167, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 190, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr +## In state 226, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 163, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## interactive_expr: Ident With Record LBRACKET With ## -## Ends in an error in state: 160. +## Ends in an error in state: 156. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET . sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1247,7 +1246,7 @@ interactive_expr: Ident With Record LBRACKET With interactive_expr: Ident With Record With ## -## Ends in an error in state: 159. +## Ends in an error in state: 155. ## ## ne_injection(Record,field_path_assignment) -> Record . sep_or_term_list(field_path_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## ne_injection(Record,field_path_assignment) -> Record . LBRACKET sep_or_term_list(field_path_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1260,7 +1259,7 @@ interactive_expr: Ident With Record With interactive_expr: Ident With With ## -## Ends in an error in state: 158. +## Ends in an error in state: 154. ## ## update_record -> path With . ne_injection(Record,field_path_assignment) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1270,9 +1269,9 @@ interactive_expr: Ident With With -interactive_expr: If Unit Then Unit Else With +interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 348. +## Ends in an error in state: 344. ## ## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1282,9 +1281,9 @@ interactive_expr: If Unit Then Unit Else With -interactive_expr: If Unit Then Unit SEMI EQ +interactive_expr: If Verbatim Then Verbatim SEMI EQ ## -## Ends in an error in state: 347. +## Ends in an error in state: 343. ## ## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1294,9 +1293,9 @@ interactive_expr: If Unit Then Unit SEMI EQ -interactive_expr: If Unit Then Unit VBAR +interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 346. +## Ends in an error in state: 342. ## ## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1307,23 +1306,23 @@ interactive_expr: If Unit Then Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -interactive_expr: If Unit Then With +interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 345. +## Ends in an error in state: 341. ## ## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1333,9 +1332,9 @@ interactive_expr: If Unit Then With -interactive_expr: If Unit VBAR +interactive_expr: If Verbatim VBAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 340. ## ## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1346,23 +1345,23 @@ interactive_expr: If Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## interactive_expr: If With ## -## Ends in an error in state: 112. +## Ends in an error in state: 108. ## ## cond_expr -> If . expr Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1374,7 +1373,7 @@ interactive_expr: If With interactive_expr: LPAR Bytes RPAR With ## -## Ends in an error in state: 171. +## Ends in an error in state: 167. ## ## fun_call_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1384,9 +1383,9 @@ interactive_expr: LPAR Bytes RPAR With -interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR +interactive_expr: LPAR If Verbatim Then Bytes Else Bytes VBAR ## -## Ends in an error in state: 352. +## Ends in an error in state: 348. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## tuple_comp -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1398,58 +1397,59 @@ interactive_expr: LPAR If Unit Then Bytes Else Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 349, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr -## In state 228, spurious reduction of production expr -> cond_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 345, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr +## In state 224, spurious reduction of production expr -> cond_expr ## -interactive_expr: LPAR Unit COLON Ident VBAR +interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 358. +## Ends in an error in state: 355. ## -## annot_expr -> LPAR disj_expr COLON type_expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## par(annot_expr) -> LPAR annot_expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## ## The known suffix of the stack is as follows: -## LPAR disj_expr COLON type_expr +## LPAR annot_expr ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 354, spurious reduction of production annot_expr -> disj_expr COLON type_expr ## -interactive_expr: LPAR Unit COLON With +interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 357. +## Ends in an error in state: 353. ## -## annot_expr -> LPAR disj_expr COLON . type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## annot_expr -> disj_expr COLON . type_expr [ RPAR ] ## ## The known suffix of the stack is as follows: -## LPAR disj_expr COLON +## disj_expr COLON ## -interactive_expr: LPAR Unit COMMA With +interactive_expr: LPAR Verbatim COMMA With ## -## Ends in an error in state: 354. +## Ends in an error in state: 350. ## ## tuple_comp -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -1459,39 +1459,39 @@ interactive_expr: LPAR Unit COMMA With -interactive_expr: LPAR Unit VBAR +interactive_expr: LPAR Verbatim VBAR ## -## Ends in an error in state: 356. +## Ends in an error in state: 352. ## -## annot_expr -> LPAR disj_expr . COLON type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## annot_expr -> disj_expr . COLON type_expr [ RPAR ] ## disj_expr -> disj_expr . Or conj_expr [ RPAR Or COMMA COLON ] ## expr -> disj_expr . [ RPAR COMMA ] ## ## The known suffix of the stack is as follows: -## LPAR disj_expr +## disj_expr ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr ## interactive_expr: LPAR With ## -## Ends in an error in state: 110. +## Ends in an error in state: 106. ## -## annot_expr -> LPAR . disj_expr COLON type_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] +## par(annot_expr) -> LPAR . annot_expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## par(expr) -> LPAR . expr RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## par(tuple_comp) -> LPAR . tuple_comp RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1501,9 +1501,9 @@ interactive_expr: LPAR With -interactive_expr: List LBRACKET Unit End +interactive_expr: List LBRACKET Verbatim End ## -## Ends in an error in state: 362. +## Ends in an error in state: 359. ## ## injection(List,expr) -> List LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1514,25 +1514,25 @@ interactive_expr: List LBRACKET Unit End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 363, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 362, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List LBRACKET With ## -## Ends in an error in state: 360. +## Ends in an error in state: 357. ## ## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1543,9 +1543,9 @@ interactive_expr: List LBRACKET With -interactive_expr: List Unit RBRACKET +interactive_expr: List Verbatim RBRACKET ## -## Ends in an error in state: 374. +## Ends in an error in state: 371. ## ## injection(List,expr) -> List sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1556,25 +1556,25 @@ interactive_expr: List Unit RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 363, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 362, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List With ## -## Ends in an error in state: 109. +## Ends in an error in state: 105. ## ## injection(List,expr) -> List . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1589,7 +1589,7 @@ interactive_expr: List With interactive_expr: MINUS With ## -## Ends in an error in state: 108. +## Ends in an error in state: 104. ## ## unary_expr -> MINUS . core_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1599,9 +1599,9 @@ interactive_expr: MINUS With -interactive_expr: Map LBRACKET Unit ARROW Bytes End +interactive_expr: Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 379. +## Ends in an error in state: 376. ## ## injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1612,26 +1612,26 @@ interactive_expr: Map LBRACKET Unit ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr +## In state 245, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 241, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map LBRACKET With ## -## Ends in an error in state: 377. +## Ends in an error in state: 374. ## ## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1642,9 +1642,9 @@ interactive_expr: Map LBRACKET With -interactive_expr: Map Unit ARROW Bytes RBRACKET +interactive_expr: Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 382. +## Ends in an error in state: 379. ## ## injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1655,26 +1655,26 @@ interactive_expr: Map Unit ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr +## In state 245, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 241, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With +interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 254. +## Ends in an error in state: 250. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1685,9 +1685,9 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes SEMI With -interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR +interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 253. +## Ends in an error in state: 249. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1700,24 +1700,24 @@ interactive_expr: Map Unit ARROW Bytes SEMI Unit ARROW Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr ## -interactive_expr: Map Unit ARROW Bytes SEMI With +interactive_expr: Map Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 250. +## Ends in an error in state: 246. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1728,9 +1728,9 @@ interactive_expr: Map Unit ARROW Bytes SEMI With -interactive_expr: Map Unit ARROW Bytes VBAR +interactive_expr: Map Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 249. +## Ends in an error in state: 245. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1743,24 +1743,24 @@ interactive_expr: Map Unit ARROW Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr ## -interactive_expr: Map Unit ARROW With +interactive_expr: Map Verbatim ARROW With ## -## Ends in an error in state: 247. +## Ends in an error in state: 243. ## ## binding -> expr ARROW . expr [ SEMI RBRACKET End ] ## @@ -1770,9 +1770,9 @@ interactive_expr: Map Unit ARROW With -interactive_expr: Map Unit VBAR +interactive_expr: Map Verbatim VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 242. ## ## binding -> expr . ARROW expr [ SEMI RBRACKET End ] ## @@ -1783,23 +1783,23 @@ interactive_expr: Map Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## interactive_expr: Map With ## -## Ends in an error in state: 107. +## Ends in an error in state: 103. ## ## injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1814,7 +1814,7 @@ interactive_expr: Map With interactive_expr: Not Bytes With ## -## Ends in an error in state: 173. +## Ends in an error in state: 170. ## ## add_expr -> mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1829,7 +1829,7 @@ interactive_expr: Not Bytes With interactive_expr: Not With ## -## Ends in an error in state: 103. +## Ends in an error in state: 99. ## ## unary_expr -> Not . core_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1841,7 +1841,7 @@ interactive_expr: Not With interactive_expr: Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 397. +## Ends in an error in state: 394. ## ## record_expr -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1852,26 +1852,26 @@ interactive_expr: Record Ident EQ Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 382, spurious reduction of production field_assignment -> Ident EQ expr +## In state 387, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 386, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 395. +## Ends in an error in state: 392. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1884,7 +1884,7 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## -## Ends in an error in state: 394. +## Ends in an error in state: 391. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1897,24 +1897,24 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 382, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 391. +## Ends in an error in state: 388. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1927,7 +1927,7 @@ interactive_expr: Record Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 390. +## Ends in an error in state: 387. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1940,24 +1940,24 @@ interactive_expr: Record Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 382, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ With ## -## Ends in an error in state: 102. +## Ends in an error in state: 98. ## ## field_assignment -> Ident EQ . expr [ SEMI RBRACKET End ] ## @@ -1969,7 +1969,7 @@ interactive_expr: Record Ident EQ With interactive_expr: Record Ident With ## -## Ends in an error in state: 101. +## Ends in an error in state: 97. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACKET End ] ## @@ -1981,7 +1981,7 @@ interactive_expr: Record Ident With interactive_expr: Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 386. +## Ends in an error in state: 383. ## ## record_expr -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1992,26 +1992,26 @@ interactive_expr: Record LBRACKET Ident EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 382, spurious reduction of production field_assignment -> Ident EQ expr +## In state 387, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 386, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record LBRACKET With ## -## Ends in an error in state: 100. +## Ends in an error in state: 96. ## ## record_expr -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2023,7 +2023,7 @@ interactive_expr: Record LBRACKET With interactive_expr: Record With ## -## Ends in an error in state: 99. +## Ends in an error in state: 95. ## ## record_expr -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## record_expr -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2034,90 +2034,9 @@ interactive_expr: Record With -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident Is With +interactive_expr: Set LBRACKET Verbatim End ## -## Ends in an error in state: 98. -## -## fun_expr -> Recursive Function parameters COLON type_expr Is . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## -## The known suffix of the stack is as follows: -## Recursive Function parameters COLON type_expr Is -## - - - -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON Ident VBAR -## -## Ends in an error in state: 97. -## -## fun_expr -> Recursive Function parameters COLON type_expr . Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## -## The known suffix of the stack is as follows: -## Recursive Function parameters COLON type_expr -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## - - - -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR COLON With -## -## Ends in an error in state: 96. -## -## fun_expr -> Recursive Function parameters COLON . type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## -## The known suffix of the stack is as follows: -## Recursive Function parameters COLON -## - - - -interactive_expr: Recursive Function LPAR Const Ident COLON Ident RPAR With -## -## Ends in an error in state: 95. -## -## fun_expr -> Recursive Function parameters . COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## -## The known suffix of the stack is as follows: -## Recursive Function parameters -## - - - -interactive_expr: Recursive Function With -## -## Ends in an error in state: 94. -## -## fun_expr -> Recursive Function . parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## -## The known suffix of the stack is as follows: -## Recursive Function -## - - - -interactive_expr: Recursive With -## -## Ends in an error in state: 93. -## -## fun_expr -> Recursive . Function parameters COLON type_expr Is expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] -## -## The known suffix of the stack is as follows: -## Recursive -## - - - -interactive_expr: Set LBRACKET Unit End -## -## Ends in an error in state: 402. +## Ends in an error in state: 398. ## ## injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2128,25 +2047,25 @@ interactive_expr: Set LBRACKET Unit End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 363, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 362, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set LBRACKET With ## -## Ends in an error in state: 400. +## Ends in an error in state: 396. ## ## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2157,9 +2076,9 @@ interactive_expr: Set LBRACKET With -interactive_expr: Set Unit RBRACKET +interactive_expr: Set Verbatim RBRACKET ## -## Ends in an error in state: 405. +## Ends in an error in state: 401. ## ## injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2170,25 +2089,25 @@ interactive_expr: Set Unit RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 363, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 362, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -interactive_expr: Set Unit SEMI Unit SEMI With +interactive_expr: Set Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 371. +## Ends in an error in state: 368. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2199,9 +2118,9 @@ interactive_expr: Set Unit SEMI Unit SEMI With -interactive_expr: Set Unit SEMI Unit VBAR +interactive_expr: Set Verbatim SEMI Verbatim VBAR ## -## Ends in an error in state: 370. +## Ends in an error in state: 367. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2214,23 +2133,23 @@ interactive_expr: Set Unit SEMI Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -interactive_expr: Set Unit SEMI With +interactive_expr: Set Verbatim SEMI With ## -## Ends in an error in state: 367. +## Ends in an error in state: 364. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2241,9 +2160,9 @@ interactive_expr: Set Unit SEMI With -interactive_expr: Set Unit VBAR +interactive_expr: Set Verbatim VBAR ## -## Ends in an error in state: 366. +## Ends in an error in state: 363. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2256,23 +2175,23 @@ interactive_expr: Set Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## interactive_expr: Set With ## -## Ends in an error in state: 92. +## Ends in an error in state: 94. ## ## injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2285,9 +2204,9 @@ interactive_expr: Set With -interactive_expr: Unit And With +interactive_expr: Verbatim And With ## -## Ends in an error in state: 225. +## Ends in an error in state: 221. ## ## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2297,9 +2216,9 @@ interactive_expr: Unit And With -interactive_expr: Unit CAT With +interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 201. +## Ends in an error in state: 197. ## ## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2309,9 +2228,9 @@ interactive_expr: Unit CAT With -interactive_expr: Unit COLON +interactive_expr: Verbatim COLON ## -## Ends in an error in state: 195. +## Ends in an error in state: 191. ## ## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## expr -> disj_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -2323,22 +2242,22 @@ interactive_expr: Unit COLON ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr ## -interactive_expr: Unit CONS With +interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 208. +## Ends in an error in state: 204. ## ## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2348,9 +2267,9 @@ interactive_expr: Unit CONS With -interactive_expr: Unit Contains With +interactive_expr: Verbatim Contains With ## -## Ends in an error in state: 198. +## Ends in an error in state: 194. ## ## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2360,9 +2279,9 @@ interactive_expr: Unit Contains With -interactive_expr: Unit EQ With +interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 221. +## Ends in an error in state: 217. ## ## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2372,9 +2291,9 @@ interactive_expr: Unit EQ With -interactive_expr: Unit GE With +interactive_expr: Verbatim GE With ## -## Ends in an error in state: 219. +## Ends in an error in state: 215. ## ## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2384,9 +2303,9 @@ interactive_expr: Unit GE With -interactive_expr: Unit GT With +interactive_expr: Verbatim GT With ## -## Ends in an error in state: 217. +## Ends in an error in state: 213. ## ## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2396,9 +2315,9 @@ interactive_expr: Unit GT With -interactive_expr: Unit LE With +interactive_expr: Verbatim LE With ## -## Ends in an error in state: 215. +## Ends in an error in state: 211. ## ## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2408,9 +2327,9 @@ interactive_expr: Unit LE With -interactive_expr: Unit LT With +interactive_expr: Verbatim LT With ## -## Ends in an error in state: 213. +## Ends in an error in state: 209. ## ## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2420,9 +2339,9 @@ interactive_expr: Unit LT With -interactive_expr: Unit MINUS Unit With +interactive_expr: Verbatim MINUS Verbatim With ## -## Ends in an error in state: 207. +## Ends in an error in state: 203. ## ## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2435,9 +2354,9 @@ interactive_expr: Unit MINUS Unit With -interactive_expr: Unit MINUS With +interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 206. +## Ends in an error in state: 202. ## ## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2447,9 +2366,9 @@ interactive_expr: Unit MINUS With -interactive_expr: Unit Mod With +interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 191. +## Ends in an error in state: 187. ## ## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2459,9 +2378,9 @@ interactive_expr: Unit Mod With -interactive_expr: Unit NE With +interactive_expr: Verbatim NE With ## -## Ends in an error in state: 211. +## Ends in an error in state: 207. ## ## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2471,9 +2390,9 @@ interactive_expr: Unit NE With -interactive_expr: Unit Or With +interactive_expr: Verbatim Or With ## -## Ends in an error in state: 196. +## Ends in an error in state: 192. ## ## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] ## @@ -2483,9 +2402,9 @@ interactive_expr: Unit Or With -interactive_expr: Unit PLUS Unit With +interactive_expr: Verbatim PLUS Verbatim With ## -## Ends in an error in state: 205. +## Ends in an error in state: 201. ## ## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2498,9 +2417,9 @@ interactive_expr: Unit PLUS Unit With -interactive_expr: Unit PLUS With +interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 204. +## Ends in an error in state: 200. ## ## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2510,9 +2429,9 @@ interactive_expr: Unit PLUS With -interactive_expr: Unit SLASH With +interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 189. +## Ends in an error in state: 185. ## ## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2522,9 +2441,9 @@ interactive_expr: Unit SLASH With -interactive_expr: Unit TIMES With +interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 174. +## Ends in an error in state: 171. ## ## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2534,9 +2453,9 @@ interactive_expr: Unit TIMES With -interactive_expr: Unit VBAR +interactive_expr: Verbatim VBAR ## -## Ends in an error in state: 607. +## Ends in an error in state: 603. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -2547,23 +2466,23 @@ interactive_expr: Unit VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -interactive_expr: Unit With +interactive_expr: Verbatim With ## -## Ends in an error in state: 197. +## Ends in an error in state: 193. ## ## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## unary_expr -> core_expr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2576,7 +2495,7 @@ interactive_expr: Unit With interactive_expr: With ## -## Ends in an error in state: 605. +## Ends in an error in state: 601. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2588,7 +2507,7 @@ interactive_expr: With contract: Attributes LBRACKET String End ## -## Ends in an error in state: 551. +## Ends in an error in state: 547. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET sep_or_term_list(String,SEMI) . RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2599,15 +2518,15 @@ contract: Attributes LBRACKET String End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 543, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 554, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 539, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 550, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes LBRACKET With ## -## Ends in an error in state: 550. +## Ends in an error in state: 546. ## ## ne_injection(Attributes,String) -> Attributes LBRACKET . sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2619,7 +2538,7 @@ contract: Attributes LBRACKET With contract: Attributes String End Attributes String End SEMI With ## -## Ends in an error in state: 600. +## Ends in an error in state: 596. ## ## seq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2631,7 +2550,7 @@ contract: Attributes String End Attributes String End SEMI With contract: Attributes String End SEMI With ## -## Ends in an error in state: 598. +## Ends in an error in state: 594. ## ## nseq(declaration) -> declaration . seq(declaration) [ EOF ] ## @@ -2643,7 +2562,7 @@ contract: Attributes String End SEMI With contract: Attributes String End With ## -## Ends in an error in state: 593. +## Ends in an error in state: 589. ## ## attr_decl -> open_attr_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2655,7 +2574,7 @@ contract: Attributes String End With contract: Attributes String RBRACKET ## -## Ends in an error in state: 555. +## Ends in an error in state: 551. ## ## ne_injection(Attributes,String) -> Attributes sep_or_term_list(String,SEMI) . End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2666,15 +2585,15 @@ contract: Attributes String RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 543, spurious reduction of production nsepseq(String,SEMI) -> String -## In state 554, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) +## In state 539, spurious reduction of production nsepseq(String,SEMI) -> String +## In state 550, spurious reduction of production sep_or_term_list(String,SEMI) -> nsepseq(String,SEMI) ## contract: Attributes String SEMI String SEMI With ## -## Ends in an error in state: 546. +## Ends in an error in state: 542. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2687,7 +2606,7 @@ contract: Attributes String SEMI String SEMI With contract: Attributes String SEMI String With ## -## Ends in an error in state: 545. +## Ends in an error in state: 541. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2701,7 +2620,7 @@ contract: Attributes String SEMI String With contract: Attributes String SEMI With ## -## Ends in an error in state: 544. +## Ends in an error in state: 540. ## ## nsepseq(String,SEMI) -> String SEMI . nsepseq(String,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(String,SEMI)) -> String SEMI . seq(__anonymous_0(String,SEMI)) [ RBRACKET End ] @@ -2714,7 +2633,7 @@ contract: Attributes String SEMI With contract: Attributes String With ## -## Ends in an error in state: 543. +## Ends in an error in state: 539. ## ## nsepseq(String,SEMI) -> String . [ RBRACKET End ] ## nsepseq(String,SEMI) -> String . SEMI nsepseq(String,SEMI) [ RBRACKET End ] @@ -2728,7 +2647,7 @@ contract: Attributes String With contract: Attributes With ## -## Ends in an error in state: 542. +## Ends in an error in state: 538. ## ## ne_injection(Attributes,String) -> Attributes . sep_or_term_list(String,SEMI) End [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## ne_injection(Attributes,String) -> Attributes . LBRACKET sep_or_term_list(String,SEMI) RBRACKET [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -2741,7 +2660,7 @@ contract: Attributes With contract: Const Ident COLON Ident EQ Bytes VBAR ## -## Ends in an error in state: 591. +## Ends in an error in state: 587. ## ## const_decl -> open_const_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] ## @@ -2752,25 +2671,25 @@ contract: Const Ident COLON Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 499, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr -## In state 500, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 495, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr +## In state 496, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) ## -contract: Const Ident COLON Ident EQ With +contract: Const Ident COLON String EQ With ## -## Ends in an error in state: 498. +## Ends in an error in state: 494. ## ## unqualified_decl(EQ) -> Ident COLON type_expr EQ . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2780,9 +2699,9 @@ contract: Const Ident COLON Ident EQ With -contract: Const Ident COLON Ident VBAR +contract: Const Ident COLON String VBAR ## -## Ends in an error in state: 497. +## Ends in an error in state: 493. ## ## unqualified_decl(EQ) -> Ident COLON type_expr . EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2793,17 +2712,16 @@ contract: Const Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Const Ident COLON With ## -## Ends in an error in state: 496. +## Ends in an error in state: 492. ## ## unqualified_decl(EQ) -> Ident COLON . type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2815,7 +2733,7 @@ contract: Const Ident COLON With contract: Const Ident With ## -## Ends in an error in state: 495. +## Ends in an error in state: 491. ## ## unqualified_decl(EQ) -> Ident . COLON type_expr EQ expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2827,7 +2745,7 @@ contract: Const Ident With contract: Const With ## -## Ends in an error in state: 494. +## Ends in an error in state: 490. ## ## open_const_decl -> Const . unqualified_decl(EQ) [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -2837,9 +2755,37 @@ contract: Const With -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET VBAR Block +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR ## -## Ends in an error in state: 505. +## Ends in an error in state: 585. +## +## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## open_fun_decl +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 463, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr +## + + + +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET VBAR Block +## +## Ends in an error in state: 501. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) . cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2849,9 +2795,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET WILD ARROW Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET WILD ARROW Skip End ## -## Ends in an error in state: 534. +## Ends in an error in state: 530. ## ## case(if_clause) -> Case expr Of LBRACKET option(VBAR) cases(if_clause) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2862,15 +2808,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 536, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 533, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 532, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 529, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 504. +## Ends in an error in state: 500. ## ## case(if_clause) -> Case expr Of LBRACKET . option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2880,9 +2826,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of VBAR Block +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of VBAR Block ## -## Ends in an error in state: 539. +## Ends in an error in state: 535. ## ## case(if_clause) -> Case expr Of option(VBAR) . cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2892,9 +2838,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip RBRACKET ## -## Ends in an error in state: 540. +## Ends in an error in state: 536. ## ## case(if_clause) -> Case expr Of option(VBAR) cases(if_clause) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -2905,15 +2851,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 536, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) -## In state 533, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) +## In state 532, spurious reduction of production nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) +## In state 529, spurious reduction of production cases(if_clause) -> nsepseq(case_clause(if_clause),VBAR) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip VBAR With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip VBAR With ## -## Ends in an error in state: 537. +## Ends in an error in state: 533. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) VBAR . nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] ## @@ -2923,9 +2869,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW Skip With ## -## Ends in an error in state: 536. +## Ends in an error in state: 532. ## ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . [ RBRACKET End ] ## nsepseq(case_clause(if_clause),VBAR) -> case_clause(if_clause) . VBAR nsepseq(case_clause(if_clause),VBAR) [ RBRACKET End ] @@ -2936,9 +2882,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD ARROW With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 507. +## Ends in an error in state: 503. ## ## case_clause(if_clause) -> pattern ARROW . if_clause [ VBAR RBRACKET End ] ## @@ -2948,9 +2894,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of WILD RPAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 506. +## Ends in an error in state: 502. ## ## case_clause(if_clause) -> pattern . ARROW if_clause [ VBAR RBRACKET End ] ## @@ -2961,14 +2907,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 298, spurious reduction of production pattern -> core_pattern +## In state 294, spurious reduction of production pattern -> core_pattern ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit Of With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim Of With ## -## Ends in an error in state: 503. +## Ends in an error in state: 499. ## ## case(if_clause) -> Case expr Of . option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr Of . LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2979,9 +2925,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case Verbatim VBAR ## -## Ends in an error in state: 502. +## Ends in an error in state: 498. ## ## case(if_clause) -> Case expr . Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case expr . Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -2993,23 +2939,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Case With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Case With ## -## Ends in an error in state: 501. +## Ends in an error in state: 497. ## ## case(if_clause) -> Case . expr Of option(VBAR) cases(if_clause) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## case(if_clause) -> Case . expr Of LBRACKET option(VBAR) cases(if_clause) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3020,9 +2966,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Constr DOT And With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr DOT And With ## -## Ends in an error in state: 514. +## Ends in an error in state: 510. ## ## fun_call -> module_field . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3032,9 +2978,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Constr With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Constr With ## -## Ends in an error in state: 493. +## Ends in an error in state: 489. ## ## module_field -> Constr . DOT module_fun [ LPAR ] ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ LBRACKET ASS ] @@ -3045,9 +2991,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ARROW Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW Ident With ## -## Ends in an error in state: 477. +## Ends in an error in state: 473. ## ## for_loop -> For Ident option(arrow_clause) . In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3057,9 +3003,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ARROW With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ARROW With ## -## Ends in an error in state: 475. +## Ends in an error in state: 471. ## ## arrow_clause -> ARROW . Ident [ In ] ## @@ -3069,9 +3015,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit Step Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step Verbatim VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 486. ## ## for_loop -> For var_assign To expr Step expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3082,23 +3028,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit Step With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim Step With ## -## Ends in an error in state: 489. +## Ends in an error in state: 485. ## ## for_loop -> For var_assign To expr Step . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3108,9 +3054,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To Verbatim VBAR ## -## Ends in an error in state: 488. +## Ends in an error in state: 484. ## ## for_loop -> For var_assign To expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To expr . Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3122,23 +3068,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes To With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes To With ## -## Ends in an error in state: 487. +## Ends in an error in state: 483. ## ## for_loop -> For var_assign To . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign To . expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3149,9 +3095,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS Bytes VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS Bytes VBAR ## -## Ends in an error in state: 486. +## Ends in an error in state: 482. ## ## for_loop -> For var_assign . To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For var_assign . To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3163,24 +3109,24 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 474, spurious reduction of production var_assign -> Ident ASS expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 470, spurious reduction of production var_assign -> Ident ASS expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident ASS With ## -## Ends in an error in state: 473. +## Ends in an error in state: 469. ## ## var_assign -> Ident ASS . expr [ To ] ## @@ -3190,9 +3136,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set Verbatim VBAR ## -## Ends in an error in state: 483. +## Ends in an error in state: 479. ## ## for_loop -> For Ident option(arrow_clause) In collection expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3203,23 +3149,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In Set With ## -## Ends in an error in state: 482. +## Ends in an error in state: 478. ## ## for_loop -> For Ident option(arrow_clause) In collection . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3229,9 +3175,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident In With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident In With ## -## Ends in an error in state: 478. +## Ends in an error in state: 474. ## ## for_loop -> For Ident option(arrow_clause) In . collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3241,9 +3187,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For Ident With ## -## Ends in an error in state: 472. +## Ends in an error in state: 468. ## ## for_loop -> For Ident . option(arrow_clause) In collection expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## var_assign -> Ident . ASS expr [ To ] @@ -3254,9 +3200,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin For With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin For With ## -## Ends in an error in state: 471. +## Ends in an error in state: 467. ## ## for_loop -> For . var_assign To expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## for_loop -> For . var_assign To expr Step expr block [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3268,9 +3214,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident ASS With ## -## Ends in an error in state: 520. +## Ends in an error in state: 516. ## ## assignment -> lhs ASS . rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3280,9 +3226,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident DOT Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident DOT Ident With ## -## Ends in an error in state: 513. +## Ends in an error in state: 509. ## ## lhs -> path . [ ASS ] ## map_lookup -> path . brackets(expr) [ ASS ] @@ -3294,16 +3240,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 130, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 342, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 428, spurious reduction of production path -> projection +## In state 126, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 338, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 424, spurious reduction of production path -> projection ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident LBRACKET Bytes RBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident LBRACKET Bytes RBRACKET With ## -## Ends in an error in state: 519. +## Ends in an error in state: 515. ## ## assignment -> lhs . ASS rhs [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3313,9 +3259,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Ident With ## -## Ends in an error in state: 460. +## Ends in an error in state: 456. ## ## fun_call -> Ident . arguments [ VBAR SEMI RBRACKET RBRACE End Else ] ## path -> Ident . [ LBRACKET ASS ] @@ -3327,9 +3273,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then LBRACE Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE Skip End ## -## Ends in an error in state: 571. +## Ends in an error in state: 567. ## ## clause_block -> LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3340,15 +3286,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 553, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 570, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then LBRACE With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then LBRACE With ## -## Ends in an error in state: 459. +## Ends in an error in state: 455. ## ## clause_block -> LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3358,9 +3304,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip Else With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip Else With ## -## Ends in an error in state: 577. +## Ends in an error in state: 573. ## ## conditional -> If expr Then if_clause option(SEMI) Else . if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3370,9 +3316,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip SEMI EQ +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip SEMI EQ ## -## Ends in an error in state: 576. +## Ends in an error in state: 572. ## ## conditional -> If expr Then if_clause option(SEMI) . Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3382,9 +3328,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then Skip With ## -## Ends in an error in state: 575. +## Ends in an error in state: 571. ## ## conditional -> If expr Then if_clause . option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3394,9 +3340,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit Then With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim Then With ## -## Ends in an error in state: 458. +## Ends in an error in state: 454. ## ## conditional -> If expr Then . if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3406,9 +3352,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If Verbatim VBAR ## -## Ends in an error in state: 457. +## Ends in an error in state: 453. ## ## conditional -> If expr . Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3419,23 +3365,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin If With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin If With ## -## Ends in an error in state: 456. +## Ends in an error in state: 452. ## ## conditional -> If . expr Then if_clause option(SEMI) Else if_clause [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3445,9 +3391,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr DOT Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT Ident With ## -## Ends in an error in state: 427. +## Ends in an error in state: 423. ## ## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3457,9 +3403,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr DOT With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT With ## -## Ends in an error in state: 426. +## Ends in an error in state: 422. ## ## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3469,9 +3415,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Constr With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr With ## -## Ends in an error in state: 425. +## Ends in an error in state: 421. ## ## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3481,9 +3427,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident VBAR ## -## Ends in an error in state: 433. +## Ends in an error in state: 429. ## ## map_patch -> Patch path . With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch path . With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3496,14 +3442,14 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 424, spurious reduction of production path -> Ident +## In state 420, spurious reduction of production path -> Ident ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident While +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident While ## -## Ends in an error in state: 424. +## Ends in an error in state: 420. ## ## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else ] ## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] @@ -3514,9 +3460,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET Unit ARROW Bytes End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 449. +## Ends in an error in state: 445. ## ## ne_injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3527,26 +3473,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr +## In state 245, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 241, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map LBRACKET With ## -## Ends in an error in state: 448. +## Ends in an error in state: 444. ## ## ne_injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3556,9 +3502,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map Unit ARROW Bytes RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 451. +## Ends in an error in state: 447. ## ## ne_injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3569,26 +3515,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 248, spurious reduction of production binding -> expr ARROW expr -## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 244, spurious reduction of production binding -> expr ARROW expr +## In state 245, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 241, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Map With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Map With ## -## Ends in an error in state: 447. +## Ends in an error in state: 443. ## ## ne_injection(Map,binding) -> Map . sep_or_term_list(binding,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Map,binding) -> Map . LBRACKET sep_or_term_list(binding,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3599,9 +3545,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 445. +## Ends in an error in state: 441. ## ## ne_injection(Record,field_assignment) -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3612,26 +3558,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 382, spurious reduction of production field_assignment -> Ident EQ expr +## In state 387, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 386, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 443. +## Ends in an error in state: 439. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3642,26 +3588,26 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 385, spurious reduction of production field_assignment -> Ident EQ expr -## In state 390, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 389, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 382, spurious reduction of production field_assignment -> Ident EQ expr +## In state 387, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 386, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record LBRACKET With ## -## Ends in an error in state: 442. +## Ends in an error in state: 438. ## ## ne_injection(Record,field_assignment) -> Record LBRACKET . sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3671,9 +3617,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Record With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Record With ## -## Ends in an error in state: 441. +## Ends in an error in state: 437. ## ## ne_injection(Record,field_assignment) -> Record . sep_or_term_list(field_assignment,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Record,field_assignment) -> Record . LBRACKET sep_or_term_list(field_assignment,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3684,9 +3630,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET Unit End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET Verbatim End ## -## Ends in an error in state: 437. +## Ends in an error in state: 433. ## ## ne_injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3697,25 +3643,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 363, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 362, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set LBRACKET With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set LBRACKET With ## -## Ends in an error in state: 436. +## Ends in an error in state: 432. ## ## ne_injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3725,9 +3671,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set Unit RBRACKET +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set Verbatim RBRACKET ## -## Ends in an error in state: 439. +## Ends in an error in state: 435. ## ## ne_injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3738,25 +3684,25 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 366, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 365, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr +## In state 363, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 362, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With Set With ## -## Ends in an error in state: 435. +## Ends in an error in state: 431. ## ## ne_injection(Set,expr) -> Set . sep_or_term_list(expr,SEMI) End [ VBAR SEMI RBRACKET RBRACE End Else ] ## ne_injection(Set,expr) -> Set . LBRACKET sep_or_term_list(expr,SEMI) RBRACKET [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3767,9 +3713,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch Ident With With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident With With ## -## Ends in an error in state: 434. +## Ends in an error in state: 430. ## ## map_patch -> Patch path With . ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch path With . ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3781,9 +3727,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Patch With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch With ## -## Ends in an error in state: 432. +## Ends in an error in state: 428. ## ## map_patch -> Patch . path With ne_injection(Map,binding) [ VBAR SEMI RBRACKET RBRACE End Else ] ## record_patch -> Patch . path With ne_injection(Record,field_assignment) [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3795,9 +3741,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From Map With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Map With ## -## Ends in an error in state: 430. +## Ends in an error in state: 426. ## ## map_remove -> Remove expr From Map . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3807,9 +3753,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From Set With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Set With ## -## Ends in an error in state: 423. +## Ends in an error in state: 419. ## ## set_remove -> Remove expr From Set . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3819,9 +3765,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit From With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From With ## -## Ends in an error in state: 422. +## Ends in an error in state: 418. ## ## map_remove -> Remove expr From . Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr From . Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3832,9 +3778,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim VBAR ## -## Ends in an error in state: 421. +## Ends in an error in state: 417. ## ## map_remove -> Remove expr . From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr . From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3846,23 +3792,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Remove With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove With ## -## Ends in an error in state: 420. +## Ends in an error in state: 416. ## ## map_remove -> Remove . expr From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove . expr From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3873,9 +3819,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 468. +## Ends in an error in state: 464. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3885,9 +3831,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 469. +## Ends in an error in state: 465. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -3897,9 +3843,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip RBRACE +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip RBRACE ## -## Ends in an error in state: 579. +## Ends in an error in state: 575. ## ## block -> Begin sep_or_term_list(statement,SEMI) . End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3910,15 +3856,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 553, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 570, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI Skip SEMI With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip SEMI With ## -## Ends in an error in state: 560. +## Ends in an error in state: 556. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## seq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3929,9 +3875,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI Skip With ## -## Ends in an error in state: 559. +## Ends in an error in state: 555. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3943,9 +3889,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip SEMI With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip SEMI With ## -## Ends in an error in state: 558. +## Ends in an error in state: 554. ## ## nsepseq(statement,SEMI) -> statement SEMI . nsepseq(statement,SEMI) [ RBRACE End ] ## nseq(__anonymous_0(statement,SEMI)) -> statement SEMI . seq(__anonymous_0(statement,SEMI)) [ RBRACE End ] @@ -3956,9 +3902,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip With ## -## Ends in an error in state: 557. +## Ends in an error in state: 553. ## ## nsepseq(statement,SEMI) -> statement . [ RBRACE End ] ## nsepseq(statement,SEMI) -> statement . SEMI nsepseq(statement,SEMI) [ RBRACE End ] @@ -3970,9 +3916,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON Ident ASS With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String ASS With ## -## Ends in an error in state: 416. +## Ends in an error in state: 412. ## ## unqualified_decl(ASS) -> Ident COLON type_expr ASS . expr [ SEMI RBRACE End ] ## @@ -3982,9 +3928,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String VBAR ## -## Ends in an error in state: 415. +## Ends in an error in state: 411. ## ## unqualified_decl(ASS) -> Ident COLON type_expr . ASS expr [ SEMI RBRACE End ] ## @@ -3995,17 +3941,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident COLON With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON With ## -## Ends in an error in state: 414. +## Ends in an error in state: 410. ## ## unqualified_decl(ASS) -> Ident COLON . type_expr ASS expr [ SEMI RBRACE End ] ## @@ -4015,9 +3960,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var Ident With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident With ## -## Ends in an error in state: 413. +## Ends in an error in state: 409. ## ## unqualified_decl(ASS) -> Ident . COLON type_expr ASS expr [ SEMI RBRACE End ] ## @@ -4027,9 +3972,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Var With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var With ## -## Ends in an error in state: 412. +## Ends in an error in state: 408. ## ## open_var_decl -> Var . unqualified_decl(ASS) [ SEMI RBRACE End ] ## @@ -4039,9 +3984,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While Unit VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While Verbatim VBAR ## -## Ends in an error in state: 410. +## Ends in an error in state: 406. ## ## while_loop -> While expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4052,23 +3997,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr +## In state 193, spurious reduction of production unary_expr -> core_expr +## In state 143, spurious reduction of production mult_expr -> unary_expr +## In state 170, spurious reduction of production add_expr -> mult_expr +## In state 199, spurious reduction of production cons_expr -> add_expr +## In state 196, spurious reduction of production cat_expr -> cons_expr +## In state 219, spurious reduction of production comp_expr -> cat_expr +## In state 206, spurious reduction of production set_membership -> comp_expr +## In state 145, spurious reduction of production conj_expr -> set_membership +## In state 223, spurious reduction of production disj_expr -> conj_expr +## In state 191, spurious reduction of production expr -> disj_expr ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin While With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While With ## -## Ends in an error in state: 409. +## Ends in an error in state: 405. ## ## while_loop -> While . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4078,9 +4023,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin With ## -## Ends in an error in state: 411. +## Ends in an error in state: 407. ## ## block -> Begin . sep_or_term_list(statement,SEMI) End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4090,9 +4035,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block LBRACE Skip End +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE Skip End ## -## Ends in an error in state: 582. +## Ends in an error in state: 578. ## ## block -> Block LBRACE sep_or_term_list(statement,SEMI) . RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4103,15 +4048,15 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 557, spurious reduction of production nsepseq(statement,SEMI) -> statement -## In state 574, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) +## In state 553, spurious reduction of production nsepseq(statement,SEMI) -> statement +## In state 570, spurious reduction of production sep_or_term_list(statement,SEMI) -> nsepseq(statement,SEMI) ## -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block LBRACE With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE With ## -## Ends in an error in state: 408. +## Ends in an error in state: 404. ## ## block -> Block LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4121,9 +4066,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block With +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block With ## -## Ends in an error in state: 407. +## Ends in an error in state: 403. ## ## block -> Block . LBRACE sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4133,37 +4078,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Block -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 589. -## -## fun_decl -> open_fun_decl . option(SEMI) [ Type Recursive Function EOF Const Attributes ] -## -## The known suffix of the stack is as follows: -## open_fun_decl -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 197, spurious reduction of production unary_expr -> core_expr -## In state 147, spurious reduction of production mult_expr -> unary_expr -## In state 173, spurious reduction of production add_expr -> mult_expr -## In state 203, spurious reduction of production cons_expr -> add_expr -## In state 200, spurious reduction of production cat_expr -> cons_expr -## In state 223, spurious reduction of production comp_expr -> cat_expr -## In state 210, spurious reduction of production set_membership -> comp_expr -## In state 149, spurious reduction of production conj_expr -> set_membership -## In state 227, spurious reduction of production disj_expr -> conj_expr -## In state 195, spurious reduction of production expr -> disj_expr -## In state 467, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr -## - - - -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With -## -## Ends in an error in state: 466. +## Ends in an error in state: 462. ## ## open_fun_decl -> Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4174,9 +4091,9 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 465. +## Ends in an error in state: 461. ## ## open_fun_decl -> Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4188,17 +4105,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 464. +## Ends in an error in state: 460. ## ## open_fun_decl -> Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4211,7 +4127,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 463. +## Ends in an error in state: 459. ## ## open_fun_decl -> Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4224,7 +4140,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR With contract: Function Ident With ## -## Ends in an error in state: 462. +## Ends in an error in state: 458. ## ## open_fun_decl -> Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4237,7 +4153,7 @@ contract: Function Ident With contract: Function With ## -## Ends in an error in state: 461. +## Ends in an error in state: 457. ## ## open_fun_decl -> Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4248,9 +4164,9 @@ contract: Function With -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End While +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End While ## -## Ends in an error in state: 585. +## Ends in an error in state: 581. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block . With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4260,9 +4176,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Begin Skip End With With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Skip End With With ## -## Ends in an error in state: 586. +## Ends in an error in state: 582. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is block With . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## @@ -4272,9 +4188,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is With +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is With ## -## Ends in an error in state: 88. +## Ends in an error in state: 89. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is . block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr Is . expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4285,9 +4201,9 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident -contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident VBAR +contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON String VBAR ## -## Ends in an error in state: 87. +## Ends in an error in state: 88. ## ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr . Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON type_expr . Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4299,17 +4215,16 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With ## -## Ends in an error in state: 86. +## Ends in an error in state: 87. ## ## open_fun_decl -> Recursive Function Ident parameters COLON . type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters COLON . type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4322,7 +4237,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR COLON With contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With ## -## Ends in an error in state: 85. +## Ends in an error in state: 86. ## ## open_fun_decl -> Recursive Function Ident parameters . COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident parameters . COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4335,7 +4250,7 @@ contract: Recursive Function Ident LPAR Const Ident COLON Ident RPAR With contract: Recursive Function Ident With ## -## Ends in an error in state: 69. +## Ends in an error in state: 70. ## ## open_fun_decl -> Recursive Function Ident . parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function Ident . parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4348,7 +4263,7 @@ contract: Recursive Function Ident With contract: Recursive Function With ## -## Ends in an error in state: 68. +## Ends in an error in state: 69. ## ## open_fun_decl -> Recursive Function . Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive Function . Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4361,7 +4276,7 @@ contract: Recursive Function With contract: Recursive With ## -## Ends in an error in state: 67. +## Ends in an error in state: 68. ## ## open_fun_decl -> Recursive . Function Ident parameters COLON type_expr Is block With expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] ## open_fun_decl -> Recursive . Function Ident parameters COLON type_expr Is expr [ Type SEMI Recursive RBRACE Function End EOF Const Attributes ] @@ -4374,7 +4289,7 @@ contract: Recursive With contract: Type Ident Is BigMap With ## -## Ends in an error in state: 18. +## Ends in an error in state: 19. ## ## core_type -> BigMap . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4386,7 +4301,7 @@ contract: Type Ident Is BigMap With contract: Type Ident Is Constr Of With ## -## Ends in an error in state: 27. +## Ends in an error in state: 28. ## ## variant -> Constr Of . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4398,7 +4313,7 @@ contract: Type Ident Is Constr Of With contract: Type Ident Is Constr VBAR With ## -## Ends in an error in state: 39. +## Ends in an error in state: 40. ## ## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4410,7 +4325,7 @@ contract: Type Ident Is Constr VBAR With contract: Type Ident Is Constr With ## -## Ends in an error in state: 26. +## Ends in an error in state: 27. ## ## variant -> Constr . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## variant -> Constr . Of fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] @@ -4421,79 +4336,9 @@ contract: Type Ident Is Constr With -contract: Type Ident Is Ident ARROW With -## -## Ends in an error in state: 36. -## -## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] -## -## The known suffix of the stack is as follows: -## cartesian ARROW -## - - - -contract: Type Ident Is Ident TIMES Ident TIMES With -## -## Ends in an error in state: 33. -## -## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident Is Ident TIMES LPAR Ident RPAR With -## -## Ends in an error in state: 32. -## -## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident Is Ident TIMES With -## -## Ends in an error in state: 30. -## -## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type TIMES -## - - - -contract: Type Ident Is Ident VBAR -## -## Ends in an error in state: 64. -## -## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Recursive Function EOF Const Attributes ] -## -## The known suffix of the stack is as follows: -## Type Ident Is type_expr -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## - - - contract: Type Ident Is Ident With ## -## Ends in an error in state: 15. +## Ends in an error in state: 16. ## ## core_type -> Ident . [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## core_type -> Ident . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] @@ -4504,22 +4349,9 @@ contract: Type Ident Is Ident With -contract: Type Ident Is LPAR Constr RPAR With +contract: Type Ident Is LPAR String VBAR ## -## Ends in an error in state: 29. -## -## cartesian -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] -## -## The known suffix of the stack is as follows: -## core_type -## - - - -contract: Type Ident Is LPAR Ident VBAR -## -## Ends in an error in state: 61. +## Ends in an error in state: 62. ## ## par(type_expr) -> LPAR type_expr . RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4530,17 +4362,16 @@ contract: Type Ident Is LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Type Ident Is LPAR With ## -## Ends in an error in state: 6. +## Ends in an error in state: 7. ## ## par(type_expr) -> LPAR . type_expr RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4552,7 +4383,7 @@ contract: Type Ident Is LPAR With contract: Type Ident Is List With ## -## Ends in an error in state: 13. +## Ends in an error in state: 14. ## ## core_type -> List . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4562,9 +4393,9 @@ contract: Type Ident Is List With -contract: Type Ident Is Map LPAR Ident COMMA With +contract: Type Ident Is Map LPAR String COMMA With ## -## Ends in an error in state: 21. +## Ends in an error in state: 22. ## ## nsepseq(type_expr,COMMA) -> type_expr COMMA . nsepseq(type_expr,COMMA) [ RPAR ] ## @@ -4574,9 +4405,9 @@ contract: Type Ident Is Map LPAR Ident COMMA With -contract: Type Ident Is Map LPAR Ident VBAR +contract: Type Ident Is Map LPAR String VBAR ## -## Ends in an error in state: 20. +## Ends in an error in state: 21. ## ## nsepseq(type_expr,COMMA) -> type_expr . [ RPAR ] ## nsepseq(type_expr,COMMA) -> type_expr . COMMA nsepseq(type_expr,COMMA) [ RPAR ] @@ -4588,17 +4419,16 @@ contract: Type Ident Is Map LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type ## contract: Type Ident Is Map LPAR With ## -## Ends in an error in state: 12. +## Ends in an error in state: 13. ## ## par(nsepseq(type_expr,COMMA)) -> LPAR . nsepseq(type_expr,COMMA) RPAR [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4610,7 +4440,7 @@ contract: Type Ident Is Map LPAR With contract: Type Ident Is Map With ## -## Ends in an error in state: 11. +## Ends in an error in state: 12. ## ## core_type -> Map . type_tuple [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4622,7 +4452,7 @@ contract: Type Ident Is Map With contract: Type Ident Is Record Ident COLON Ident RBRACKET ## -## Ends in an error in state: 59. +## Ends in an error in state: 60. ## ## record_type -> Record sep_or_term_list(field_decl,SEMI) . End [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4633,20 +4463,20 @@ contract: Type Ident Is Record Ident COLON Ident RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr -## In state 52, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl -## In state 51, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 53, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl +## In state 52, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) ## contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident SEMI With ## -## Ends in an error in state: 57. +## Ends in an error in state: 58. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACKET End ] @@ -4659,7 +4489,7 @@ contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident SEMI Wit contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident VBAR ## -## Ends in an error in state: 56. +## Ends in an error in state: 57. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACKET End ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACKET End ] @@ -4672,18 +4502,18 @@ contract: Type Ident Is Record Ident COLON Ident SEMI Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident Is Record Ident COLON Ident SEMI With ## -## Ends in an error in state: 53. +## Ends in an error in state: 54. ## ## nsepseq(field_decl,SEMI) -> field_decl SEMI . nsepseq(field_decl,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_decl,SEMI)) -> field_decl SEMI . seq(__anonymous_0(field_decl,SEMI)) [ RBRACKET End ] @@ -4696,7 +4526,7 @@ contract: Type Ident Is Record Ident COLON Ident SEMI With contract: Type Ident Is Record Ident COLON Ident VBAR ## -## Ends in an error in state: 52. +## Ends in an error in state: 53. ## ## nsepseq(field_decl,SEMI) -> field_decl . [ RBRACKET End ] ## nsepseq(field_decl,SEMI) -> field_decl . SEMI nsepseq(field_decl,SEMI) [ RBRACKET End ] @@ -4709,18 +4539,18 @@ contract: Type Ident Is Record Ident COLON Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr ## contract: Type Ident Is Record Ident COLON With ## -## Ends in an error in state: 10. +## Ends in an error in state: 11. ## ## field_decl -> Ident COLON . type_expr [ SEMI RBRACKET End ] ## @@ -4732,7 +4562,7 @@ contract: Type Ident Is Record Ident COLON With contract: Type Ident Is Record Ident With ## -## Ends in an error in state: 9. +## Ends in an error in state: 10. ## ## field_decl -> Ident . COLON type_expr [ SEMI RBRACKET End ] ## @@ -4744,7 +4574,7 @@ contract: Type Ident Is Record Ident With contract: Type Ident Is Record LBRACKET Ident COLON Ident End ## -## Ends in an error in state: 48. +## Ends in an error in state: 49. ## ## record_type -> Record LBRACKET sep_or_term_list(field_decl,SEMI) . RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4755,20 +4585,20 @@ contract: Type Ident Is Record LBRACKET Ident COLON Ident End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 15, spurious reduction of production core_type -> Ident -## In state 29, spurious reduction of production cartesian -> core_type -## In state 35, spurious reduction of production fun_type -> cartesian -## In state 43, spurious reduction of production type_expr -> fun_type -## In state 47, spurious reduction of production field_decl -> Ident COLON type_expr -## In state 52, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl -## In state 51, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) +## In state 16, spurious reduction of production core_type -> Ident +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr +## In state 53, spurious reduction of production nsepseq(field_decl,SEMI) -> field_decl +## In state 52, spurious reduction of production sep_or_term_list(field_decl,SEMI) -> nsepseq(field_decl,SEMI) ## contract: Type Ident Is Record LBRACKET With ## -## Ends in an error in state: 8. +## Ends in an error in state: 9. ## ## record_type -> Record LBRACKET . sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## @@ -4780,7 +4610,7 @@ contract: Type Ident Is Record LBRACKET With contract: Type Ident Is Record With ## -## Ends in an error in state: 7. +## Ends in an error in state: 8. ## ## record_type -> Record . sep_or_term_list(field_decl,SEMI) End [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## record_type -> Record . LBRACKET sep_or_term_list(field_decl,SEMI) RBRACKET [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] @@ -4793,7 +4623,7 @@ contract: Type Ident Is Record With contract: Type Ident Is Set With ## -## Ends in an error in state: 5. +## Ends in an error in state: 6. ## ## core_type -> Set . par(type_expr) [ VBAR Type TIMES SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] ## @@ -4803,9 +4633,91 @@ contract: Type Ident Is Set With +contract: Type Ident Is String ARROW With +## +## Ends in an error in state: 37. +## +## fun_type -> cartesian ARROW . fun_type [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] +## +## The known suffix of the stack is as follows: +## cartesian ARROW +## + + + +contract: Type Ident Is String TIMES String TIMES With +## +## Ends in an error in state: 34. +## +## nsepseq(core_type,TIMES) -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident Is String TIMES String With +## +## Ends in an error in state: 33. +## +## nsepseq(core_type,TIMES) -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## nsepseq(core_type,TIMES) -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + +contract: Type Ident Is String TIMES With +## +## Ends in an error in state: 31. +## +## cartesian -> core_type TIMES . nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type TIMES +## + + + +contract: Type Ident Is String VBAR +## +## Ends in an error in state: 65. +## +## type_decl -> Type Ident Is type_expr . option(SEMI) [ Type Recursive Function EOF Const Attributes ] +## +## The known suffix of the stack is as follows: +## Type Ident Is type_expr +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 30, spurious reduction of production cartesian -> core_type +## In state 36, spurious reduction of production fun_type -> cartesian +## In state 44, spurious reduction of production type_expr -> fun_type +## + + + +contract: Type Ident Is String With +## +## Ends in an error in state: 30. +## +## cartesian -> core_type . [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## cartesian -> core_type . TIMES nsepseq(core_type,TIMES) [ VBAR Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ARROW ] +## +## The known suffix of the stack is as follows: +## core_type +## + + + contract: Type Ident Is VBAR Const ## -## Ends in an error in state: 25. +## Ends in an error in state: 26. ## ## sum_type -> option(VBAR) . nsepseq(variant,VBAR) [ Type SEMI Recursive RPAR RBRACKET Is Function End EQ EOF Const COMMA Attributes ASS ] ## From 838fdf6a5f832047d8bcf54b34a1b660ef1df8c4 Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Mon, 8 Jun 2020 12:40:14 +0200 Subject: [PATCH 50/67] Fixed build. --- src/bin/expect_tests/literals.ml | 4 +- src/passes/01-parser/pascaligo/dune | 2 + .../02-concrete_to_imperative/pascaligo.ml | 48 +++++++++---------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/bin/expect_tests/literals.ml b/src/bin/expect_tests/literals.ml index c4c4b03a9..aebe463e3 100644 --- a/src/bin/expect_tests/literals.ml +++ b/src/bin/expect_tests/literals.ml @@ -7,7 +7,7 @@ let%expect_test _ = let%expect_test _ = run_ligo_bad ["interpret" ; "(\"thisisnotasignature\":signature)" ; "--syntax=pascaligo"] ; [%expect {| - ligo: in file "", line 0, characters 1-32. Badly formatted literal: Signature thisisnotasignature {"location":"in file \"\", line 0, characters 1-32"} + ligo: in file "", line 0, characters 0-33. Badly formatted literal: Signature thisisnotasignature {"location":"in file \"\", line 0, characters 0-33"} If you're not sure how to fix this error, you can @@ -25,7 +25,7 @@ let%expect_test _ = let%expect_test _ = run_ligo_bad ["interpret" ; "(\"thisisnotapublickey\":key)" ; "--syntax=pascaligo"] ; [%expect {| - ligo: in file "", line 0, characters 1-26. Badly formatted literal: key thisisnotapublickey {"location":"in file \"\", line 0, characters 1-26"} + ligo: in file "", line 0, characters 0-27. Badly formatted literal: key thisisnotapublickey {"location":"in file \"\", line 0, characters 0-27"} If you're not sure how to fix this error, you can diff --git a/src/passes/01-parser/pascaligo/dune b/src/passes/01-parser/pascaligo/dune index 5aa59af6d..5b2f099ca 100644 --- a/src/passes/01-parser/pascaligo/dune +++ b/src/passes/01-parser/pascaligo/dune @@ -17,6 +17,8 @@ (modules Scoping AST pascaligo Parser ParserLog LexToken ParErr Pretty) (libraries + pprint + terminal_size menhirLib parser_shared hex diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index 4d978247b..62a946fd6 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -282,20 +282,21 @@ let rec compile_expression (t:Raw.expr) : expr result = let return x = ok x in match t with | EAnnot a -> ( - let ((expr , type_expr) , loc) = r_split a in + let par, loc = r_split a in + let expr, _, type_expr = par.inside in let%bind expr' = compile_expression expr in let%bind type_expr' = compile_type_expression type_expr in return @@ e_annotation ~loc expr' type_expr' ) | EVar c -> ( - let (c' , loc) = r_split c in + let (c', loc) = r_split c in match constants c' with | None -> return @@ e_variable ~loc (Var.of_name c.value) | Some s -> return @@ e_constant ~loc s [] ) | ECall x -> ( - let ((f, args) , loc) = r_split x in - let (args , args_loc) = r_split args in + let ((f, args), loc) = r_split x in + let (args, args_loc) = r_split args in let args' = npseq_to_list args.inside in match f with | EVar name -> ( @@ -698,7 +699,7 @@ and compile_fun_expression : loc:_ -> Raw.fun_expr -> (type_expression option * expression) result = fun ~loc x -> let open! Raw in - let {kwd_recursive;param;ret_type;return} : fun_expr = x in + let {param; ret_type; return; _} : fun_expr = x in let statements = [] in (match param.value.inside with a, [] -> ( @@ -714,10 +715,8 @@ and compile_fun_expression : bind_fold_right_list aux result body in let binder = Var.of_name binder in let fun_type = t_function input_type output_type in - let expression = match kwd_recursive with - | None -> e_lambda ~loc binder (Some input_type)(Some output_type) result - | Some _ -> e_recursive ~loc binder fun_type - @@ {binder;input_type=Some input_type; output_type= Some output_type; result} + let expression = + e_lambda ~loc binder (Some input_type)(Some output_type) result in ok (Some fun_type , expression) ) @@ -745,10 +744,8 @@ and compile_fun_expression : let aux prec cur = cur (Some prec) in bind_fold_right_list aux result body in let fun_type = t_function input_type output_type in - let expression = match kwd_recursive with - | None -> e_lambda ~loc binder (Some input_type)(Some output_type) result - | Some _ -> e_recursive ~loc binder fun_type - @@ {binder;input_type=Some input_type; output_type= Some output_type; result} + let expression = + e_lambda ~loc binder (Some input_type)(Some output_type) result in ok (Some fun_type , expression) ) @@ -822,7 +819,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let%bind bound = compile_expression fi.bound in let%bind step = match fi.step with | None -> ok @@ e_int_z Z.one - | Some step -> compile_expression step in + | Some (_, step) -> compile_expression step in let%bind body = compile_block fi.block.value in let%bind body = body @@ None in return_statement @@ e_for ~loc binder start bound step body @@ -910,23 +907,24 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let%bind m = compile_cases cases in return_statement @@ e_matching ~loc expr m ) - | RecordPatch r -> ( + | RecordPatch r -> let reg = r.region in let (r,loc) = r_split r in - let aux (fa :Raw.field_assign Raw.reg) : Raw.field_path_assign Raw.reg= - {value = {field_path = (fa.value.field_name, []); equal=fa.value.equal; field_expr = fa.value.field_expr}; - region = fa.region} - in + let aux (fa :Raw.field_assign Raw.reg) : Raw.field_path_assign Raw.reg = + {value = {field_path = fa.value.field_name, []; + assignment = fa.value.assignment; + field_expr = fa.value.field_expr}; + region = fa.region} in let update : Raw.field_path_assign Raw.reg Raw.ne_injection Raw.reg = { - value = Raw.map_ne_injection aux r.record_inj.value; - region=r.record_inj.region - } in - let u : Raw.update = {record=r.path;kwd_with=r.kwd_with; updates=update} in + value = Raw.map_ne_injection aux r.record_inj.value; + region = r.record_inj.region} in + let u : Raw.update = { + record = r.path; + kwd_with = r.kwd_with; + updates = update} in let%bind expr = compile_update {value=u;region=reg} in let (name , access_path) = compile_path r.path in return_statement @@ e_ez_assign ~loc name access_path expr - - ) | MapPatch patch -> ( let (map_p, loc) = r_split patch in let (name, access_path) = compile_path map_p.path in From 4382c3c042a61eabc986378555647541a102f845 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Mon, 8 Jun 2020 13:27:24 +0200 Subject: [PATCH 51/67] Merge fixes. --- src/test/contracts/expected/FA1.2.mligo.expected | 10 +++++----- .../contracts/expected/check_signature.mligo.expected | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/contracts/expected/FA1.2.mligo.expected b/src/test/contracts/expected/FA1.2.mligo.expected index 6bfd26c97..5d8ea43fe 100644 --- a/src/test/contracts/expected/FA1.2.mligo.expected +++ b/src/test/contracts/expected/FA1.2.mligo.expected @@ -24,11 +24,11 @@ type getBalance = {owner : address; callback : nat contract} type getTotalSupply = {callback : nat contract} type action = - Transfer of transfer - | Approve of approve - | GetAllowance of getAllowance - | GetBalance of getBalance - | GetTotalSupply of getTotalSupply + Transfer of transfer +| Approve of approve +| GetAllowance of getAllowance +| GetBalance of getBalance +| GetTotalSupply of getTotalSupply let transfer (p, s : transfer * storage) : operation list * storage = diff --git a/src/test/contracts/expected/check_signature.mligo.expected b/src/test/contracts/expected/check_signature.mligo.expected index bef4276d4..d947f5e26 100644 --- a/src/test/contracts/expected/check_signature.mligo.expected +++ b/src/test/contracts/expected/check_signature.mligo.expected @@ -1,5 +1,5 @@ let check_signature -(pk, signed, msg : key * signature * bytes) : bool = + (pk, signed, msg : key * signature * bytes) : bool = Crypto.check pk signed msg let example : bool = From cb112954051829a2872bb82d3d13441faf45172a Mon Sep 17 00:00:00 2001 From: Alexander Bantyev Date: Mon, 8 Jun 2020 14:41:23 +0300 Subject: [PATCH 52/67] Add nix artifacts to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 7c9d772a8..344feff64 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ *.merlin cache/* Version.ml +/result +/result-* /_opam/ /*.pp.ligo /*.pp.mligo From aee524ffc4bd43161a16563985c903fc1e109e07 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Mon, 8 Jun 2020 13:48:54 +0200 Subject: [PATCH 53/67] Use correct file input for idempotent testing of CameLIGO contracts. --- src/test/contracts/dune | 68 ++++++++++++++++++++--------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/test/contracts/dune b/src/test/contracts/dune index 4f28c22d4..a456f5e69 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -335,40 +335,40 @@ (rule (targets variant.religo_output2) (action (with-stdout-to variant.religo_output2 (run ligo pretty-print variant.religo_output -s reasonligo))) (deps variant.religo_output)) (rule (targets website2.religo_output2) (action (with-stdout-to website2.religo_output2 (run ligo pretty-print website2.religo_output -s reasonligo))) (deps website2.religo_output)) -(rule (targets assert.mligo_output2) (action (with-stdout-to assert.mligo_output2 (run ligo pretty-print assert.mligo -s cameligo))) (deps assert.mligo_output)) -(rule (targets address.mligo_output2) (action (with-stdout-to address.mligo_output2 (run ligo pretty-print address.mligo -s cameligo))) (deps address.mligo_output)) -(rule (targets amount_lambda.mligo_output2) (action (with-stdout-to amount_lambda.mligo_output2 (run ligo pretty-print amount_lambda.mligo -s cameligo))) (deps amount_lambda.mligo_output)) -(rule (targets amount.mligo_output2) (action (with-stdout-to amount.mligo_output2 (run ligo pretty-print amount.mligo -s cameligo))) (deps amount.mligo_output)) -(rule (targets arithmetic.mligo_output2) (action (with-stdout-to arithmetic.mligo_output2 (run ligo pretty-print arithmetic.mligo -s cameligo))) (deps arithmetic.mligo_output)) -(rule (targets attributes.mligo_output2) (action (with-stdout-to attributes.mligo_output2 (run ligo pretty-print attributes.mligo -s cameligo))) (deps attributes.mligo_output)) -(rule (targets balance_constant.mligo_output2) (action (with-stdout-to balance_constant.mligo_output2 (run ligo pretty-print balance_constant.mligo -s cameligo))) (deps balance_constant.mligo_output)) -(rule (targets basic.mligo_output2) (action (with-stdout-to basic.mligo_output2 (run ligo pretty-print basic.mligo -s cameligo))) (deps basic.mligo_output)) -(rule (targets big_map.mligo_output2) (action (with-stdout-to big_map.mligo_output2 (run ligo pretty-print big_map.mligo -s cameligo))) (deps big_map.mligo_output)) -(rule (targets bitwise_arithmetic.mligo_output2) (action (with-stdout-to bitwise_arithmetic.mligo_output2 (run ligo pretty-print bitwise_arithmetic.mligo -s cameligo))) (deps bitwise_arithmetic.mligo_output)) -(rule (targets boolean_operators.mligo_output2) (action (with-stdout-to boolean_operators.mligo_output2 (run ligo pretty-print boolean_operators.mligo -s cameligo))) (deps boolean_operators.mligo_output)) -(rule (targets bytes_arithmetic.mligo_output2) (action (with-stdout-to bytes_arithmetic.mligo_output2 (run ligo pretty-print bytes_arithmetic.mligo -s cameligo))) (deps bytes_arithmetic.mligo_output)) -(rule (targets bytes_unpack.mligo_output2) (action (with-stdout-to bytes_unpack.mligo_output2 (run ligo pretty-print bytes_unpack.mligo -s cameligo))) (deps bytes_unpack.mligo_output)) -(rule (targets check_signature.mligo_output2) (action (with-stdout-to check_signature.mligo_output2 (run ligo pretty-print check_signature.mligo -s cameligo))) (deps check_signature.mligo_output)) -(rule (targets closure.mligo_output2) (action (with-stdout-to closure.mligo_output2 (run ligo pretty-print closure.mligo -s cameligo))) (deps closure.mligo_output)) -(rule (targets comparable.mligo_output2) (action (with-stdout-to comparable.mligo_output2 (run ligo pretty-print comparable.mligo -s cameligo))) (deps comparable.mligo_output)) -(rule (targets condition-annot.mligo_output2) (action (with-stdout-to condition-annot.mligo_output2 (run ligo pretty-print condition-annot.mligo -s cameligo))) (deps condition-annot.mligo_output)) -(rule (targets condition-shadowing.mligo_output2) (action (with-stdout-to condition-shadowing.mligo_output2 (run ligo pretty-print condition-shadowing.mligo -s cameligo))) (deps condition-shadowing.mligo_output)) -(rule (targets condition.mligo_output2) (action (with-stdout-to condition.mligo_output2 (run ligo pretty-print condition.mligo -s cameligo))) (deps condition.mligo_output)) -(rule (targets counter.mligo_output2) (action (with-stdout-to counter.mligo_output2 (run ligo pretty-print counter.mligo -s cameligo))) (deps counter.mligo_output)) -(rule (targets create_contract.mligo_output2) (action (with-stdout-to create_contract.mligo_output2 (run ligo pretty-print create_contract.mligo -s cameligo))) (deps create_contract.mligo_output)) -(rule (targets crypto.mligo_output2) (action (with-stdout-to crypto.mligo_output2 (run ligo pretty-print crypto.mligo -s cameligo))) (deps crypto.mligo_output)) -(rule (targets curry.mligo_output2) (action (with-stdout-to curry.mligo_output2 (run ligo pretty-print curry.mligo -s cameligo))) (deps curry.mligo_output)) -(rule (targets double_michelson_or.mligo_output2) (action (with-stdout-to double_michelson_or.mligo_output2 (run ligo pretty-print double_michelson_or.mligo -s cameligo))) (deps double_michelson_or.mligo_output)) -(rule (targets empty_case.mligo_output2) (action (with-stdout-to empty_case.mligo_output2 (run ligo pretty-print empty_case.mligo -s cameligo))) (deps empty_case.mligo_output)) -(rule (targets eq_bool.mligo_output2) (action (with-stdout-to eq_bool.mligo_output2 (run ligo pretty-print eq_bool.mligo -s cameligo))) (deps eq_bool.mligo_output)) -(rule (targets FA1.2.mligo_output2) (action (with-stdout-to FA1.2.mligo_output2 (run ligo pretty-print FA1.2.mligo -s cameligo))) (deps FA1.2.mligo_output)) -(rule (targets failwith.mligo_output2) (action (with-stdout-to failwith.mligo_output2 (run ligo pretty-print failwith.mligo -s cameligo))) (deps failwith.mligo_output)) -(rule (targets fibo.mligo_output2) (action (with-stdout-to fibo.mligo_output2 (run ligo pretty-print fibo.mligo -s cameligo))) (deps fibo.mligo_output)) -(rule (targets fibo2.mligo_output2) (action (with-stdout-to fibo2.mligo_output2 (run ligo pretty-print fibo2.mligo -s cameligo))) (deps fibo2.mligo_output)) -(rule (targets fibo3.mligo_output2) (action (with-stdout-to fibo3.mligo_output2 (run ligo pretty-print fibo3.mligo -s cameligo))) (deps fibo3.mligo_output)) -(rule (targets fibo4.mligo_output2) (action (with-stdout-to fibo4.mligo_output2 (run ligo pretty-print fibo4.mligo -s cameligo))) (deps fibo4.mligo_output)) -(rule (targets function-shared.mligo_output2) (action (with-stdout-to function-shared.mligo_output2 (run ligo pretty-print function-shared.mligo -s cameligo))) (deps function-shared.mligo_output)) -(rule (targets guess_string.mligo_output2) (action (with-stdout-to guess_string.mligo_output2 (run ligo pretty-print guess_string.mligo -s cameligo))) (deps guess_string.mligo_output)) +(rule (targets assert.mligo_output2) (action (with-stdout-to assert.mligo_output2 (run ligo pretty-print assert.mligo_output -s cameligo))) (deps assert.mligo_output)) +(rule (targets address.mligo_output2) (action (with-stdout-to address.mligo_output2 (run ligo pretty-print address.mligo_output -s cameligo))) (deps address.mligo_output)) +(rule (targets amount_lambda.mligo_output2) (action (with-stdout-to amount_lambda.mligo_output2 (run ligo pretty-print amount_lambda.mligo_output -s cameligo))) (deps amount_lambda.mligo_output)) +(rule (targets amount.mligo_output2) (action (with-stdout-to amount.mligo_output2 (run ligo pretty-print amount.mligo_output -s cameligo))) (deps amount.mligo_output)) +(rule (targets arithmetic.mligo_output2) (action (with-stdout-to arithmetic.mligo_output2 (run ligo pretty-print arithmetic.mligo_output -s cameligo))) (deps arithmetic.mligo_output)) +(rule (targets attributes.mligo_output2) (action (with-stdout-to attributes.mligo_output2 (run ligo pretty-print attributes.mligo_output -s cameligo))) (deps attributes.mligo_output)) +(rule (targets balance_constant.mligo_output2) (action (with-stdout-to balance_constant.mligo_output2 (run ligo pretty-print balance_constant.mligo_output -s cameligo))) (deps balance_constant.mligo_output)) +(rule (targets basic.mligo_output2) (action (with-stdout-to basic.mligo_output2 (run ligo pretty-print basic.mligo_output -s cameligo))) (deps basic.mligo_output)) +(rule (targets big_map.mligo_output2) (action (with-stdout-to big_map.mligo_output2 (run ligo pretty-print big_map.mligo_output -s cameligo))) (deps big_map.mligo_output)) +(rule (targets bitwise_arithmetic.mligo_output2) (action (with-stdout-to bitwise_arithmetic.mligo_output2 (run ligo pretty-print bitwise_arithmetic.mligo_output -s cameligo))) (deps bitwise_arithmetic.mligo_output)) +(rule (targets boolean_operators.mligo_output2) (action (with-stdout-to boolean_operators.mligo_output2 (run ligo pretty-print boolean_operators.mligo_output -s cameligo))) (deps boolean_operators.mligo_output)) +(rule (targets bytes_arithmetic.mligo_output2) (action (with-stdout-to bytes_arithmetic.mligo_output2 (run ligo pretty-print bytes_arithmetic.mligo_output -s cameligo))) (deps bytes_arithmetic.mligo_output)) +(rule (targets bytes_unpack.mligo_output2) (action (with-stdout-to bytes_unpack.mligo_output2 (run ligo pretty-print bytes_unpack.mligo_output -s cameligo))) (deps bytes_unpack.mligo_output)) +(rule (targets check_signature.mligo_output2) (action (with-stdout-to check_signature.mligo_output2 (run ligo pretty-print check_signature.mligo_output -s cameligo))) (deps check_signature.mligo_output)) +(rule (targets closure.mligo_output2) (action (with-stdout-to closure.mligo_output2 (run ligo pretty-print closure.mligo_output -s cameligo))) (deps closure.mligo_output)) +(rule (targets comparable.mligo_output2) (action (with-stdout-to comparable.mligo_output2 (run ligo pretty-print comparable.mligo_output -s cameligo))) (deps comparable.mligo_output)) +(rule (targets condition-annot.mligo_output2) (action (with-stdout-to condition-annot.mligo_output2 (run ligo pretty-print condition-annot.mligo_output -s cameligo))) (deps condition-annot.mligo_output)) +(rule (targets condition-shadowing.mligo_output2) (action (with-stdout-to condition-shadowing.mligo_output2 (run ligo pretty-print condition-shadowing.mligo_output -s cameligo))) (deps condition-shadowing.mligo_output)) +(rule (targets condition.mligo_output2) (action (with-stdout-to condition.mligo_output2 (run ligo pretty-print condition.mligo_output -s cameligo))) (deps condition.mligo_output)) +(rule (targets counter.mligo_output2) (action (with-stdout-to counter.mligo_output2 (run ligo pretty-print counter.mligo_output -s cameligo))) (deps counter.mligo_output)) +(rule (targets create_contract.mligo_output2) (action (with-stdout-to create_contract.mligo_output2 (run ligo pretty-print create_contract.mligo_output -s cameligo))) (deps create_contract.mligo_output)) +(rule (targets crypto.mligo_output2) (action (with-stdout-to crypto.mligo_output2 (run ligo pretty-print crypto.mligo_output -s cameligo))) (deps crypto.mligo_output)) +(rule (targets curry.mligo_output2) (action (with-stdout-to curry.mligo_output2 (run ligo pretty-print curry.mligo_output -s cameligo))) (deps curry.mligo_output)) +(rule (targets double_michelson_or.mligo_output2) (action (with-stdout-to double_michelson_or.mligo_output2 (run ligo pretty-print double_michelson_or.mligo_output -s cameligo))) (deps double_michelson_or.mligo_output)) +(rule (targets empty_case.mligo_output2) (action (with-stdout-to empty_case.mligo_output2 (run ligo pretty-print empty_case.mligo_output -s cameligo))) (deps empty_case.mligo_output)) +(rule (targets eq_bool.mligo_output2) (action (with-stdout-to eq_bool.mligo_output2 (run ligo pretty-print eq_bool.mligo_output -s cameligo))) (deps eq_bool.mligo_output)) +(rule (targets FA1.2.mligo_output2) (action (with-stdout-to FA1.2.mligo_output2 (run ligo pretty-print FA1.2.mligo_output -s cameligo))) (deps FA1.2.mligo_output)) +(rule (targets failwith.mligo_output2) (action (with-stdout-to failwith.mligo_output2 (run ligo pretty-print failwith.mligo_output -s cameligo))) (deps failwith.mligo_output)) +(rule (targets fibo.mligo_output2) (action (with-stdout-to fibo.mligo_output2 (run ligo pretty-print fibo.mligo_output -s cameligo))) (deps fibo.mligo_output)) +(rule (targets fibo2.mligo_output2) (action (with-stdout-to fibo2.mligo_output2 (run ligo pretty-print fibo2.mligo_output -s cameligo))) (deps fibo2.mligo_output)) +(rule (targets fibo3.mligo_output2) (action (with-stdout-to fibo3.mligo_output2 (run ligo pretty-print fibo3.mligo_output -s cameligo))) (deps fibo3.mligo_output)) +(rule (targets fibo4.mligo_output2) (action (with-stdout-to fibo4.mligo_output2 (run ligo pretty-print fibo4.mligo_output -s cameligo))) (deps fibo4.mligo_output)) +(rule (targets function-shared.mligo_output2) (action (with-stdout-to function-shared.mligo_output2 (run ligo pretty-print function-shared.mligo_output -s cameligo))) (deps function-shared.mligo_output)) +(rule (targets guess_string.mligo_output2) (action (with-stdout-to guess_string.mligo_output2 (run ligo pretty-print guess_string.mligo_output -s cameligo))) (deps guess_string.mligo_output)) ;; diff the pretty printed contract with the pretty printed pretty printed contract ;; reasonligo From 046f31f7c1ffb88d89d9687f73170d644898ec60 Mon Sep 17 00:00:00 2001 From: Alexander Bantyev Date: Mon, 8 Jun 2020 14:50:51 +0300 Subject: [PATCH 54/67] Nix: apply gitignore on sources --- nix/ocaml-overlay.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/nix/ocaml-overlay.nix b/nix/ocaml-overlay.nix index 8dd971e79..4ff46b20b 100644 --- a/nix/ocaml-overlay.nix +++ b/nix/ocaml-overlay.nix @@ -9,11 +9,12 @@ let inherit (import sources."gitignore.nix" { inherit (self) lib; }) gitignoreSource; # Remove list of directories or files from source (to stop unneeded rebuilds) + # Also, apply the gitignore here. filterOut = xs: - self.lib.cleanSourceWith { + gitignoreSource (self.lib.cleanSourceWith { filter = p: type: !(builtins.elem (builtins.baseNameOf p) xs); src = gitignoreSource ../.; - }; + }); in { ocamlPackages = self.ocaml-ng.ocamlPackages_4_07.overrideScope' (builtins.foldl' self.lib.composeExtensions (_: _: { }) [ From d7b4a97731628606f7ca06ae747cf2256bd8a30c Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Mon, 8 Jun 2020 15:00:10 +0200 Subject: [PATCH 55/67] PascaLIGO fixes. --- src/main/compile/helpers.ml | 9 +++++++-- src/passes/01-parser/pascaligo/Pretty.ml | 15 +++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/main/compile/helpers.ml b/src/main/compile/helpers.ml index 0cb37196d..8d89c369f 100644 --- a/src/main/compile/helpers.ml +++ b/src/main/compile/helpers.ml @@ -186,8 +186,13 @@ let preprocess syntax source = let pretty_print_pascaligo source = let%bind ast = Parser.Pascaligo.parse_file source in - let () = ignore ast in (* TODO *) - let buffer = Buffer.create 131 + let doc = Parser_pascaligo.Pretty.print ast in + let buffer = Buffer.create 131 in + let width = + match Terminal_size.get_columns () with + None -> 60 + | Some c -> c in + let () = PPrint.ToBuffer.pretty 1.0 width buffer doc in Trace.ok buffer let pretty_print_cameligo source = diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index 230afa2d3..b65c3d6d8 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -254,7 +254,14 @@ and pp_cond_expr {value; _} = and pp_conditional {value; _} = let {test; ifso; ifnot; _} : conditional = value in let test = string "if " ^^ group (nest 3 (pp_expr test)) - and ifso = string "then" ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) + and ifso = match ifso with + ClauseInstr _ | ClauseBlock LongBlock _ -> + string "then" + ^^ group (nest 2 (break 1 ^^ pp_if_clause ifso)) + | ClauseBlock ShortBlock _ -> + string "then {" + ^^ group (nest 2 (hardline ^^ pp_if_clause ifso)) + ^^ hardline ^^ string "}" and ifnot = match ifnot with ClauseInstr _ | ClauseBlock LongBlock _ -> string "else" @@ -401,8 +408,8 @@ and pp_logic_expr = function | CompExpr e -> pp_comp_expr e and pp_bool_expr = function - Or e -> pp_bin_op "||" e -| And e -> pp_bin_op "&&" e + Or e -> pp_bin_op "or" e +| And e -> pp_bin_op "and" e | Not e -> pp_un_op "not" e | True _ -> string "true" | False _ -> string "false" @@ -421,7 +428,7 @@ and pp_comp_expr = function | Gt e -> pp_bin_op ">" e | Geq e -> pp_bin_op ">=" e | Equal e -> pp_bin_op "=" e -| Neq e -> pp_bin_op "<>" e +| Neq e -> pp_bin_op "=/=" e and pp_arith_expr = function Add e -> pp_bin_op "+" e From a58dca70979012766ecd1f0c505ed1d5e1e4c963 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Mon, 8 Jun 2020 15:00:44 +0200 Subject: [PATCH 56/67] Add PascaLIGO pretty printer tests. --- src/test/contracts/dune | 796 +++++++++++++++++- .../contracts/expected/FA1.2.ligo.expected | 172 ++++ .../contracts/expected/address.ligo.expected | 4 + .../contracts/expected/amount.ligo.expected | 7 + .../expected/annotation.ligo.expected | 4 + .../expected/application.ligo.expected | 13 + .../expected/arithmetic.ligo.expected | 16 + .../contracts/expected/assign.ligo.expected | 4 + .../expected/attributes.ligo.expected | 24 + .../expected/bad_timestamp.ligo.expected | 11 + .../expected/bad_type_operator.ligo.expected | 12 + .../expected/balance_constant.ligo.expected | 10 + .../contracts/expected/big_map.ligo.expected | 41 + .../expected/bitwise_arithmetic.ligo.expected | 11 + .../expected/blockless.ligo.expected | 1 + .../expected/boolean_operators.ligo.expected | 9 + .../expected/bytes_arithmetic.ligo.expected | 8 + .../expected/bytes_unpack.ligo.expected | 15 + .../contracts/expected/chain_id.ligo.expected | 2 + .../expected/check_signature.ligo.expected | 5 + .../expected/closure-1.ligo.expected | 4 + .../expected/closure-2.ligo.expected | 5 + .../expected/closure-3.ligo.expected | 6 + .../contracts/expected/closure.ligo.expected | 5 + .../contracts/expected/coase.ligo.expected | 137 +++ .../expected/condition-simple.ligo.expected | 2 + .../expected/condition.ligo.expected | 10 + .../contracts/expected/counter.ligo.expected | 7 + .../contracts/expected/crypto.ligo.expected | 5 + .../expected/declaration-local.ligo.expected | 4 + .../expected/declarations.ligo.expected | 3 + .../expected/deep_access.ligo.expected | 31 + .../expected/dispatch-counter.ligo.expected | 21 + .../expected/double_main.ligo.expected | 14 + .../double_michelson_or.ligo.expected | 12 + .../expected/empty_case.ligo.expected | 7 + .../expected/entrypoints.ligo.expected | 23 + .../contracts/expected/eq_bool.ligo.expected | 5 + .../expected/evaluation_tests.ligo.expected | 5 + .../contracts/expected/failwith.ligo.expected | 44 + .../contracts/expected/for_fail.ligo.expected | 7 + .../expected/function-anon.ligo.expected | 2 + .../expected/function-complex.ligo.expected | 7 + .../expected/function-shared.ligo.expected | 6 + .../contracts/expected/function.ligo.expected | 1 + .../expected/get_contract.ligo.expected | 20 + .../expected/heap-instance.ligo.expected | 6 + .../contracts/expected/heap.ligo.expected | 103 +++ .../expected/high-order.ligo.expected | 40 + src/test/contracts/expected/id.ligo.expected | 164 ++++ .../expected/implicit_account.ligo.expected | 2 + .../contracts/expected/included.ligo.expected | 1 + .../contracts/expected/includer.ligo.expected | 3 + .../contracts/expected/isnat.ligo.expected | 1 + .../contracts/expected/key_hash.ligo.expected | 6 + .../key_hash_comparable.ligo.expected | 10 + .../contracts/expected/lambda.ligo.expected | 4 + .../contracts/expected/list.ligo.expected | 32 + .../contracts/expected/loop.ligo.expected | 231 +++++ .../expected/loop_bugs.ligo.expected | 23 + src/test/contracts/expected/map.ligo.expected | 66 ++ .../contracts/expected/match.ligo.expected | 36 + .../expected/michelson_or_tree.ligo.expected | 13 + ...chelson_or_tree_intermediary.ligo.expected | 13 + .../michelson_pair_tree.ligo.expected | 13 + ...elson_pair_tree_intermediary.ligo.expected | 13 + .../multiple-parameters.ligo.expected | 14 + .../expected/multisig-v2.ligo.expected | 129 +++ .../contracts/expected/multisig.ligo.expected | 73 ++ .../contracts/expected/option.ligo.expected | 12 + .../expected/quote-declaration.ligo.expected | 3 + .../expected/quote-declarations.ligo.expected | 5 + .../contracts/expected/record.ligo.expected | 41 + .../expected/recursion.ligo.expected | 9 + .../expected/redeclaration.ligo.expected | 7 + .../expected/replaceable_id.ligo.expected | 40 + .../expected/self_address.ligo.expected | 2 + .../self_type_annotation.ligo.expected | 12 + .../self_with_entrypoint.ligo.expected | 14 + .../self_without_entrypoint.ligo.expected | 14 + .../expected/set_arithmetic-1.ligo.expected | 15 + .../expected/set_arithmetic.ligo.expected | 35 + .../expected/set_delegate.ligo.expected | 5 + .../contracts/expected/shadow.ligo.expected | 4 + .../expected/simple_access.ligo.expected | 19 + .../contracts/expected/string.ligo.expected | 7 + .../expected/string_arithmetic.ligo.expected | 5 + .../expected/super-counter.ligo.expected | 12 + src/test/contracts/expected/tez.ligo.expected | 21 + .../expected/time-lock.ligo.expected | 34 + .../expected/timestamp.ligo.expected | 5 + .../contracts/expected/toto.ligo.expected | 3 + .../contracts/expected/tuple.ligo.expected | 27 + .../expected/type-alias.ligo.expected | 3 + .../contracts/expected/unit.ligo.expected | 1 + .../expected/variant-matching.ligo.expected | 8 + .../contracts/expected/variant.ligo.expected | 7 + .../contracts/expected/website1.ligo.expected | 3 + .../contracts/expected/website2.ligo.expected | 15 + 99 files changed, 2939 insertions(+), 3 deletions(-) create mode 100644 src/test/contracts/expected/FA1.2.ligo.expected create mode 100644 src/test/contracts/expected/address.ligo.expected create mode 100644 src/test/contracts/expected/amount.ligo.expected create mode 100644 src/test/contracts/expected/annotation.ligo.expected create mode 100644 src/test/contracts/expected/application.ligo.expected create mode 100644 src/test/contracts/expected/arithmetic.ligo.expected create mode 100644 src/test/contracts/expected/assign.ligo.expected create mode 100644 src/test/contracts/expected/attributes.ligo.expected create mode 100644 src/test/contracts/expected/bad_timestamp.ligo.expected create mode 100644 src/test/contracts/expected/bad_type_operator.ligo.expected create mode 100644 src/test/contracts/expected/balance_constant.ligo.expected create mode 100644 src/test/contracts/expected/big_map.ligo.expected create mode 100644 src/test/contracts/expected/bitwise_arithmetic.ligo.expected create mode 100644 src/test/contracts/expected/blockless.ligo.expected create mode 100644 src/test/contracts/expected/boolean_operators.ligo.expected create mode 100644 src/test/contracts/expected/bytes_arithmetic.ligo.expected create mode 100644 src/test/contracts/expected/bytes_unpack.ligo.expected create mode 100644 src/test/contracts/expected/chain_id.ligo.expected create mode 100644 src/test/contracts/expected/check_signature.ligo.expected create mode 100644 src/test/contracts/expected/closure-1.ligo.expected create mode 100644 src/test/contracts/expected/closure-2.ligo.expected create mode 100644 src/test/contracts/expected/closure-3.ligo.expected create mode 100644 src/test/contracts/expected/closure.ligo.expected create mode 100644 src/test/contracts/expected/coase.ligo.expected create mode 100644 src/test/contracts/expected/condition-simple.ligo.expected create mode 100644 src/test/contracts/expected/condition.ligo.expected create mode 100644 src/test/contracts/expected/counter.ligo.expected create mode 100644 src/test/contracts/expected/crypto.ligo.expected create mode 100644 src/test/contracts/expected/declaration-local.ligo.expected create mode 100644 src/test/contracts/expected/declarations.ligo.expected create mode 100644 src/test/contracts/expected/deep_access.ligo.expected create mode 100644 src/test/contracts/expected/dispatch-counter.ligo.expected create mode 100644 src/test/contracts/expected/double_main.ligo.expected create mode 100644 src/test/contracts/expected/double_michelson_or.ligo.expected create mode 100644 src/test/contracts/expected/empty_case.ligo.expected create mode 100644 src/test/contracts/expected/entrypoints.ligo.expected create mode 100644 src/test/contracts/expected/eq_bool.ligo.expected create mode 100644 src/test/contracts/expected/evaluation_tests.ligo.expected create mode 100644 src/test/contracts/expected/failwith.ligo.expected create mode 100644 src/test/contracts/expected/for_fail.ligo.expected create mode 100644 src/test/contracts/expected/function-anon.ligo.expected create mode 100644 src/test/contracts/expected/function-complex.ligo.expected create mode 100644 src/test/contracts/expected/function-shared.ligo.expected create mode 100644 src/test/contracts/expected/function.ligo.expected create mode 100644 src/test/contracts/expected/get_contract.ligo.expected create mode 100644 src/test/contracts/expected/heap-instance.ligo.expected create mode 100644 src/test/contracts/expected/heap.ligo.expected create mode 100644 src/test/contracts/expected/high-order.ligo.expected create mode 100644 src/test/contracts/expected/id.ligo.expected create mode 100644 src/test/contracts/expected/implicit_account.ligo.expected create mode 100644 src/test/contracts/expected/included.ligo.expected create mode 100644 src/test/contracts/expected/includer.ligo.expected create mode 100644 src/test/contracts/expected/isnat.ligo.expected create mode 100644 src/test/contracts/expected/key_hash.ligo.expected create mode 100644 src/test/contracts/expected/key_hash_comparable.ligo.expected create mode 100644 src/test/contracts/expected/lambda.ligo.expected create mode 100644 src/test/contracts/expected/list.ligo.expected create mode 100644 src/test/contracts/expected/loop.ligo.expected create mode 100644 src/test/contracts/expected/loop_bugs.ligo.expected create mode 100644 src/test/contracts/expected/map.ligo.expected create mode 100644 src/test/contracts/expected/match.ligo.expected create mode 100644 src/test/contracts/expected/michelson_or_tree.ligo.expected create mode 100644 src/test/contracts/expected/michelson_or_tree_intermediary.ligo.expected create mode 100644 src/test/contracts/expected/michelson_pair_tree.ligo.expected create mode 100644 src/test/contracts/expected/michelson_pair_tree_intermediary.ligo.expected create mode 100644 src/test/contracts/expected/multiple-parameters.ligo.expected create mode 100644 src/test/contracts/expected/multisig-v2.ligo.expected create mode 100644 src/test/contracts/expected/multisig.ligo.expected create mode 100644 src/test/contracts/expected/option.ligo.expected create mode 100644 src/test/contracts/expected/quote-declaration.ligo.expected create mode 100644 src/test/contracts/expected/quote-declarations.ligo.expected create mode 100644 src/test/contracts/expected/record.ligo.expected create mode 100644 src/test/contracts/expected/recursion.ligo.expected create mode 100644 src/test/contracts/expected/redeclaration.ligo.expected create mode 100644 src/test/contracts/expected/replaceable_id.ligo.expected create mode 100644 src/test/contracts/expected/self_address.ligo.expected create mode 100644 src/test/contracts/expected/self_type_annotation.ligo.expected create mode 100644 src/test/contracts/expected/self_with_entrypoint.ligo.expected create mode 100644 src/test/contracts/expected/self_without_entrypoint.ligo.expected create mode 100644 src/test/contracts/expected/set_arithmetic-1.ligo.expected create mode 100644 src/test/contracts/expected/set_arithmetic.ligo.expected create mode 100644 src/test/contracts/expected/set_delegate.ligo.expected create mode 100644 src/test/contracts/expected/shadow.ligo.expected create mode 100644 src/test/contracts/expected/simple_access.ligo.expected create mode 100644 src/test/contracts/expected/string.ligo.expected create mode 100644 src/test/contracts/expected/string_arithmetic.ligo.expected create mode 100644 src/test/contracts/expected/super-counter.ligo.expected create mode 100644 src/test/contracts/expected/tez.ligo.expected create mode 100644 src/test/contracts/expected/time-lock.ligo.expected create mode 100644 src/test/contracts/expected/timestamp.ligo.expected create mode 100644 src/test/contracts/expected/toto.ligo.expected create mode 100644 src/test/contracts/expected/tuple.ligo.expected create mode 100644 src/test/contracts/expected/type-alias.ligo.expected create mode 100644 src/test/contracts/expected/unit.ligo.expected create mode 100644 src/test/contracts/expected/variant-matching.ligo.expected create mode 100644 src/test/contracts/expected/variant.ligo.expected create mode 100644 src/test/contracts/expected/website1.ligo.expected create mode 100644 src/test/contracts/expected/website2.ligo.expected diff --git a/src/test/contracts/dune b/src/test/contracts/dune index a456f5e69..7068bb793 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -91,6 +91,103 @@ (rule (targets function-shared.mligo_output) (action (with-stdout-to function-shared.mligo_output (run ligo pretty-print function-shared.mligo))) (deps function-shared.mligo)) (rule (targets guess_string.mligo_output) (action (with-stdout-to guess_string.mligo_output (run ligo pretty-print guess_string.mligo))) (deps guess_string.mligo)) +;; pascaligo +(rule (targets address.ligo_output) (action (with-stdout-to address.ligo_output (run ligo pretty-print address.ligo))) (deps address.ligo)) +(rule (targets amount.ligo_output) (action (with-stdout-to amount.ligo_output (run ligo pretty-print amount.ligo))) (deps amount.ligo)) +(rule (targets annotation.ligo_output) (action (with-stdout-to annotation.ligo_output (run ligo pretty-print annotation.ligo))) (deps annotation.ligo)) +(rule (targets application.ligo_output) (action (with-stdout-to application.ligo_output (run ligo pretty-print application.ligo))) (deps application.ligo)) +(rule (targets arithmetic.ligo_output) (action (with-stdout-to arithmetic.ligo_output (run ligo pretty-print arithmetic.ligo))) (deps arithmetic.ligo)) +(rule (targets assign.ligo_output) (action (with-stdout-to assign.ligo_output (run ligo pretty-print assign.ligo))) (deps assign.ligo)) +(rule (targets attributes.ligo_output) (action (with-stdout-to attributes.ligo_output (run ligo pretty-print attributes.ligo))) (deps attributes.ligo)) +(rule (targets bad_timestamp.ligo_output) (action (with-stdout-to bad_timestamp.ligo_output (run ligo pretty-print bad_timestamp.ligo))) (deps bad_timestamp.ligo)) +(rule (targets bad_type_operator.ligo_output) (action (with-stdout-to bad_type_operator.ligo_output (run ligo pretty-print bad_type_operator.ligo))) (deps bad_type_operator.ligo)) +(rule (targets balance_constant.ligo_output) (action (with-stdout-to balance_constant.ligo_output (run ligo pretty-print balance_constant.ligo))) (deps balance_constant.ligo)) +(rule (targets big_map.ligo_output) (action (with-stdout-to big_map.ligo_output (run ligo pretty-print big_map.ligo))) (deps big_map.ligo)) +(rule (targets bitwise_arithmetic.ligo_output) (action (with-stdout-to bitwise_arithmetic.ligo_output (run ligo pretty-print bitwise_arithmetic.ligo))) (deps bitwise_arithmetic.ligo)) +(rule (targets blockless.ligo_output) (action (with-stdout-to blockless.ligo_output (run ligo pretty-print blockless.ligo))) (deps blockless.ligo)) +(rule (targets boolean_operators.ligo_output) (action (with-stdout-to boolean_operators.ligo_output (run ligo pretty-print boolean_operators.ligo))) (deps boolean_operators.ligo)) +(rule (targets bytes_arithmetic.ligo_output) (action (with-stdout-to bytes_arithmetic.ligo_output (run ligo pretty-print bytes_arithmetic.ligo))) (deps bytes_arithmetic.ligo)) +(rule (targets bytes_unpack.ligo_output) (action (with-stdout-to bytes_unpack.ligo_output (run ligo pretty-print bytes_unpack.ligo))) (deps bytes_unpack.ligo)) +(rule (targets chain_id.ligo_output) (action (with-stdout-to chain_id.ligo_output (run ligo pretty-print chain_id.ligo))) (deps chain_id.ligo)) +(rule (targets check_signature.ligo_output) (action (with-stdout-to check_signature.ligo_output (run ligo pretty-print check_signature.ligo))) (deps check_signature.ligo)) +(rule (targets closure-1.ligo_output) (action (with-stdout-to closure-1.ligo_output (run ligo pretty-print closure-1.ligo))) (deps closure-1.ligo)) +(rule (targets closure-2.ligo_output) (action (with-stdout-to closure-2.ligo_output (run ligo pretty-print closure-2.ligo))) (deps closure-2.ligo)) +(rule (targets closure-3.ligo_output) (action (with-stdout-to closure-3.ligo_output (run ligo pretty-print closure-3.ligo))) (deps closure-3.ligo)) +(rule (targets closure.ligo_output) (action (with-stdout-to closure.ligo_output (run ligo pretty-print closure.ligo))) (deps closure.ligo)) +(rule (targets coase.ligo_output) (action (with-stdout-to coase.ligo_output (run ligo pretty-print coase.ligo))) (deps coase.ligo)) +(rule (targets condition-simple.ligo_output) (action (with-stdout-to condition-simple.ligo_output (run ligo pretty-print condition-simple.ligo))) (deps condition-simple.ligo)) +(rule (targets condition.ligo_output) (action (with-stdout-to condition.ligo_output (run ligo pretty-print condition.ligo))) (deps condition.ligo)) +(rule (targets counter.ligo_output) (action (with-stdout-to counter.ligo_output (run ligo pretty-print counter.ligo))) (deps counter.ligo)) +(rule (targets crypto.ligo_output) (action (with-stdout-to crypto.ligo_output (run ligo pretty-print crypto.ligo))) (deps crypto.ligo)) +(rule (targets declaration-local.ligo_output) (action (with-stdout-to declaration-local.ligo_output (run ligo pretty-print declaration-local.ligo))) (deps declaration-local.ligo)) +(rule (targets declarations.ligo_output) (action (with-stdout-to declarations.ligo_output (run ligo pretty-print declarations.ligo))) (deps declarations.ligo)) +(rule (targets deep_access.ligo_output) (action (with-stdout-to deep_access.ligo_output (run ligo pretty-print deep_access.ligo))) (deps deep_access.ligo)) +(rule (targets dispatch-counter.ligo_output) (action (with-stdout-to dispatch-counter.ligo_output (run ligo pretty-print dispatch-counter.ligo))) (deps dispatch-counter.ligo)) +(rule (targets double_main.ligo_output) (action (with-stdout-to double_main.ligo_output (run ligo pretty-print double_main.ligo))) (deps double_main.ligo)) +(rule (targets double_michelson_or.ligo_output) (action (with-stdout-to double_michelson_or.ligo_output (run ligo pretty-print double_michelson_or.ligo))) (deps double_michelson_or.ligo)) +(rule (targets empty_case.ligo_output) (action (with-stdout-to empty_case.ligo_output (run ligo pretty-print empty_case.ligo))) (deps empty_case.ligo)) +(rule (targets entrypoints.ligo_output) (action (with-stdout-to entrypoints.ligo_output (run ligo pretty-print entrypoints.ligo))) (deps entrypoints.ligo)) +(rule (targets eq_bool.ligo_output) (action (with-stdout-to eq_bool.ligo_output (run ligo pretty-print eq_bool.ligo))) (deps eq_bool.ligo)) +(rule (targets evaluation_tests.ligo_output) (action (with-stdout-to evaluation_tests.ligo_output (run ligo pretty-print evaluation_tests.ligo))) (deps evaluation_tests.ligo)) +(rule (targets FA1.2.ligo_output) (action (with-stdout-to FA1.2.ligo_output (run ligo pretty-print FA1.2.ligo))) (deps FA1.2.ligo)) +(rule (targets failwith.ligo_output) (action (with-stdout-to failwith.ligo_output (run ligo pretty-print failwith.ligo))) (deps failwith.ligo)) +(rule (targets for_fail.ligo_output) (action (with-stdout-to for_fail.ligo_output (run ligo pretty-print for_fail.ligo))) (deps for_fail.ligo)) +(rule (targets function-anon.ligo_output) (action (with-stdout-to function-anon.ligo_output (run ligo pretty-print function-anon.ligo))) (deps function-anon.ligo)) +(rule (targets function-complex.ligo_output) (action (with-stdout-to function-complex.ligo_output (run ligo pretty-print function-complex.ligo))) (deps function-complex.ligo)) +(rule (targets function-shared.ligo_output) (action (with-stdout-to function-shared.ligo_output (run ligo pretty-print function-shared.ligo))) (deps function-shared.ligo)) +(rule (targets function.ligo_output) (action (with-stdout-to function.ligo_output (run ligo pretty-print function.ligo))) (deps function.ligo)) +(rule (targets get_contract.ligo_output) (action (with-stdout-to get_contract.ligo_output (run ligo pretty-print get_contract.ligo))) (deps get_contract.ligo)) +(rule (targets high-order.ligo_output) (action (with-stdout-to high-order.ligo_output (run ligo pretty-print high-order.ligo))) (deps high-order.ligo)) +(rule (targets id.ligo_output) (action (with-stdout-to id.ligo_output (run ligo pretty-print id.ligo))) (deps id.ligo)) +(rule (targets implicit_account.ligo_output) (action (with-stdout-to implicit_account.ligo_output (run ligo pretty-print implicit_account.ligo))) (deps implicit_account.ligo)) +(rule (targets included.ligo_output) (action (with-stdout-to included.ligo_output (run ligo pretty-print included.ligo))) (deps included.ligo)) +(rule (targets includer.ligo_output) (action (with-stdout-to includer.ligo_output (run ligo pretty-print includer.ligo))) (deps includer.ligo)) +(rule (targets isnat.ligo_output) (action (with-stdout-to isnat.ligo_output (run ligo pretty-print isnat.ligo))) (deps isnat.ligo)) +(rule (targets key_hash_comparable.ligo_output) (action (with-stdout-to key_hash_comparable.ligo_output (run ligo pretty-print key_hash_comparable.ligo))) (deps key_hash_comparable.ligo)) +(rule (targets key_hash.ligo_output) (action (with-stdout-to key_hash.ligo_output (run ligo pretty-print key_hash.ligo))) (deps key_hash.ligo)) +(rule (targets lambda.ligo_output) (action (with-stdout-to lambda.ligo_output (run ligo pretty-print lambda.ligo))) (deps lambda.ligo)) +(rule (targets list.ligo_output) (action (with-stdout-to list.ligo_output (run ligo pretty-print list.ligo))) (deps list.ligo)) +(rule (targets loop_bugs.ligo_output) (action (with-stdout-to loop_bugs.ligo_output (run ligo pretty-print loop_bugs.ligo))) (deps loop_bugs.ligo)) +(rule (targets loop.ligo_output) (action (with-stdout-to loop.ligo_output (run ligo pretty-print loop.ligo))) (deps loop.ligo)) +(rule (targets map.ligo_output) (action (with-stdout-to map.ligo_output (run ligo pretty-print map.ligo))) (deps map.ligo)) +(rule (targets match.ligo_output) (action (with-stdout-to match.ligo_output (run ligo pretty-print match.ligo))) (deps match.ligo)) +(rule (targets michelson_or_tree_intermediary.ligo_output) (action (with-stdout-to michelson_or_tree_intermediary.ligo_output (run ligo pretty-print michelson_or_tree_intermediary.ligo))) (deps michelson_or_tree_intermediary.ligo)) +(rule (targets michelson_or_tree.ligo_output) (action (with-stdout-to michelson_or_tree.ligo_output (run ligo pretty-print michelson_or_tree.ligo))) (deps michelson_or_tree.ligo)) +(rule (targets michelson_pair_tree_intermediary.ligo_output) (action (with-stdout-to michelson_pair_tree_intermediary.ligo_output (run ligo pretty-print michelson_pair_tree_intermediary.ligo))) (deps michelson_pair_tree_intermediary.ligo)) +(rule (targets michelson_pair_tree.ligo_output) (action (with-stdout-to michelson_pair_tree.ligo_output (run ligo pretty-print michelson_pair_tree.ligo))) (deps michelson_pair_tree.ligo)) +(rule (targets multiple-parameters.ligo_output) (action (with-stdout-to multiple-parameters.ligo_output (run ligo pretty-print multiple-parameters.ligo))) (deps multiple-parameters.ligo)) +(rule (targets multisig-v2.ligo_output) (action (with-stdout-to multisig-v2.ligo_output (run ligo pretty-print multisig-v2.ligo))) (deps multisig-v2.ligo)) +(rule (targets multisig.ligo_output) (action (with-stdout-to multisig.ligo_output (run ligo pretty-print multisig.ligo))) (deps multisig.ligo)) +(rule (targets option.ligo_output) (action (with-stdout-to option.ligo_output (run ligo pretty-print option.ligo))) (deps option.ligo)) +(rule (targets quote-declaration.ligo_output) (action (with-stdout-to quote-declaration.ligo_output (run ligo pretty-print quote-declaration.ligo))) (deps quote-declaration.ligo)) +(rule (targets quote-declarations.ligo_output) (action (with-stdout-to quote-declarations.ligo_output (run ligo pretty-print quote-declarations.ligo))) (deps quote-declarations.ligo)) +(rule (targets record.ligo_output) (action (with-stdout-to record.ligo_output (run ligo pretty-print record.ligo))) (deps record.ligo)) +(rule (targets recursion.ligo_output) (action (with-stdout-to recursion.ligo_output (run ligo pretty-print recursion.ligo))) (deps recursion.ligo)) +(rule (targets redeclaration.ligo_output) (action (with-stdout-to redeclaration.ligo_output (run ligo pretty-print redeclaration.ligo))) (deps redeclaration.ligo)) +(rule (targets replaceable_id.ligo_output) (action (with-stdout-to replaceable_id.ligo_output (run ligo pretty-print replaceable_id.ligo))) (deps replaceable_id.ligo)) +(rule (targets self_address.ligo_output) (action (with-stdout-to self_address.ligo_output (run ligo pretty-print self_address.ligo))) (deps self_address.ligo)) +(rule (targets self_type_annotation.ligo_output) (action (with-stdout-to self_type_annotation.ligo_output (run ligo pretty-print self_type_annotation.ligo))) (deps self_type_annotation.ligo)) +(rule (targets self_with_entrypoint.ligo_output) (action (with-stdout-to self_with_entrypoint.ligo_output (run ligo pretty-print self_with_entrypoint.ligo))) (deps self_with_entrypoint.ligo)) +(rule (targets self_without_entrypoint.ligo_output) (action (with-stdout-to self_without_entrypoint.ligo_output (run ligo pretty-print self_without_entrypoint.ligo))) (deps self_without_entrypoint.ligo)) +(rule (targets set_arithmetic-1.ligo_output) (action (with-stdout-to set_arithmetic-1.ligo_output (run ligo pretty-print set_arithmetic-1.ligo))) (deps set_arithmetic-1.ligo)) +(rule (targets set_arithmetic.ligo_output) (action (with-stdout-to set_arithmetic.ligo_output (run ligo pretty-print set_arithmetic.ligo))) (deps set_arithmetic.ligo)) +(rule (targets set_delegate.ligo_output) (action (with-stdout-to set_delegate.ligo_output (run ligo pretty-print set_delegate.ligo))) (deps set_delegate.ligo)) +(rule (targets shadow.ligo_output) (action (with-stdout-to shadow.ligo_output (run ligo pretty-print shadow.ligo))) (deps shadow.ligo)) +(rule (targets simple_access.ligo_output) (action (with-stdout-to simple_access.ligo_output (run ligo pretty-print simple_access.ligo))) (deps simple_access.ligo)) +(rule (targets string_arithmetic.ligo_output) (action (with-stdout-to string_arithmetic.ligo_output (run ligo pretty-print string_arithmetic.ligo))) (deps string_arithmetic.ligo)) +(rule (targets string.ligo_output) (action (with-stdout-to string.ligo_output (run ligo pretty-print string.ligo))) (deps string.ligo)) +(rule (targets super-counter.ligo_output) (action (with-stdout-to super-counter.ligo_output (run ligo pretty-print super-counter.ligo))) (deps super-counter.ligo)) +(rule (targets tez.ligo_output) (action (with-stdout-to tez.ligo_output (run ligo pretty-print tez.ligo))) (deps tez.ligo)) +(rule (targets time-lock.ligo_output) (action (with-stdout-to time-lock.ligo_output (run ligo pretty-print time-lock.ligo))) (deps time-lock.ligo)) +(rule (targets timestamp.ligo_output) (action (with-stdout-to timestamp.ligo_output (run ligo pretty-print timestamp.ligo))) (deps timestamp.ligo)) +(rule (targets toto.ligo_output) (action (with-stdout-to toto.ligo_output (run ligo pretty-print toto.ligo))) (deps toto.ligo)) +(rule (targets tuple.ligo_output) (action (with-stdout-to tuple.ligo_output (run ligo pretty-print tuple.ligo))) (deps tuple.ligo)) +(rule (targets type-alias.ligo_output) (action (with-stdout-to type-alias.ligo_output (run ligo pretty-print type-alias.ligo))) (deps type-alias.ligo)) +(rule (targets unit.ligo_output) (action (with-stdout-to unit.ligo_output (run ligo pretty-print unit.ligo))) (deps unit.ligo)) +(rule (targets variant-matching.ligo_output) (action (with-stdout-to variant-matching.ligo_output (run ligo pretty-print variant-matching.ligo))) (deps variant-matching.ligo)) +(rule (targets variant.ligo_output) (action (with-stdout-to variant.ligo_output (run ligo pretty-print variant.ligo))) (deps variant.ligo)) +(rule (targets website1.ligo_output) (action (with-stdout-to website1.ligo_output (run ligo pretty-print website1.ligo))) (deps website1.ligo)) +(rule (targets website2.ligo_output) (action (with-stdout-to website2.ligo_output (run ligo pretty-print website2.ligo))) (deps website2.ligo)) ;; compare the output with the expected result ;; reasonligo @@ -185,6 +282,105 @@ (alias (name runtest) (action (diff expected/function-shared.mligo.expected function-shared.mligo_output))) (alias (name runtest) (action (diff expected/guess_string.mligo.expected guess_string.mligo_output))) +;; pascaligo +(alias (name runtest) (action (diff expected/address.ligo.expected address.ligo_output))) +(alias (name runtest) (action (diff expected/amount.ligo.expected amount.ligo_output))) +(alias (name runtest) (action (diff expected/annotation.ligo.expected annotation.ligo_output))) +(alias (name runtest) (action (diff expected/application.ligo.expected application.ligo_output))) +(alias (name runtest) (action (diff expected/arithmetic.ligo.expected arithmetic.ligo_output))) +(alias (name runtest) (action (diff expected/assign.ligo.expected assign.ligo_output))) +(alias (name runtest) (action (diff expected/attributes.ligo.expected attributes.ligo_output))) +(alias (name runtest) (action (diff expected/bad_timestamp.ligo.expected bad_timestamp.ligo_output))) +(alias (name runtest) (action (diff expected/bad_type_operator.ligo.expected bad_type_operator.ligo_output))) +(alias (name runtest) (action (diff expected/balance_constant.ligo.expected balance_constant.ligo_output))) +(alias (name runtest) (action (diff expected/big_map.ligo.expected big_map.ligo_output))) +(alias (name runtest) (action (diff expected/bitwise_arithmetic.ligo.expected bitwise_arithmetic.ligo_output))) +(alias (name runtest) (action (diff expected/blockless.ligo.expected blockless.ligo_output))) +(alias (name runtest) (action (diff expected/boolean_operators.ligo.expected boolean_operators.ligo_output))) +(alias (name runtest) (action (diff expected/bytes_arithmetic.ligo.expected bytes_arithmetic.ligo_output))) +(alias (name runtest) (action (diff expected/bytes_unpack.ligo.expected bytes_unpack.ligo_output))) +(alias (name runtest) (action (diff expected/chain_id.ligo.expected chain_id.ligo_output))) +(alias (name runtest) (action (diff expected/check_signature.ligo.expected check_signature.ligo_output))) +(alias (name runtest) (action (diff expected/closure-1.ligo.expected closure-1.ligo_output))) +(alias (name runtest) (action (diff expected/closure-2.ligo.expected closure-2.ligo_output))) +(alias (name runtest) (action (diff expected/closure-3.ligo.expected closure-3.ligo_output))) +(alias (name runtest) (action (diff expected/closure.ligo.expected closure.ligo_output))) +(alias (name runtest) (action (diff expected/coase.ligo.expected coase.ligo_output))) +(alias (name runtest) (action (diff expected/condition-simple.ligo.expected condition-simple.ligo_output))) +(alias (name runtest) (action (diff expected/condition.ligo.expected condition.ligo_output))) +(alias (name runtest) (action (diff expected/counter.ligo.expected counter.ligo_output))) +(alias (name runtest) (action (diff expected/crypto.ligo.expected crypto.ligo_output))) +(alias (name runtest) (action (diff expected/declaration-local.ligo.expected declaration-local.ligo_output))) +(alias (name runtest) (action (diff expected/declarations.ligo.expected declarations.ligo_output))) +(alias (name runtest) (action (diff expected/deep_access.ligo.expected deep_access.ligo_output))) +(alias (name runtest) (action (diff expected/dispatch-counter.ligo.expected dispatch-counter.ligo_output))) +(alias (name runtest) (action (diff expected/double_main.ligo.expected double_main.ligo_output))) +(alias (name runtest) (action (diff expected/double_michelson_or.ligo.expected double_michelson_or.ligo_output))) +(alias (name runtest) (action (diff expected/empty_case.ligo.expected empty_case.ligo_output))) +(alias (name runtest) (action (diff expected/entrypoints.ligo.expected entrypoints.ligo_output))) +(alias (name runtest) (action (diff expected/eq_bool.ligo.expected eq_bool.ligo_output))) +(alias (name runtest) (action (diff expected/evaluation_tests.ligo.expected evaluation_tests.ligo_output))) +(alias (name runtest) (action (diff expected/FA1.2.ligo.expected FA1.2.ligo_output))) +(alias (name runtest) (action (diff expected/failwith.ligo.expected failwith.ligo_output))) +(alias (name runtest) (action (diff expected/for_fail.ligo.expected for_fail.ligo_output))) +(alias (name runtest) (action (diff expected/function-anon.ligo.expected function-anon.ligo_output))) +(alias (name runtest) (action (diff expected/function-complex.ligo.expected function-complex.ligo_output))) +(alias (name runtest) (action (diff expected/function-shared.ligo.expected function-shared.ligo_output))) +(alias (name runtest) (action (diff expected/function.ligo.expected function.ligo_output))) +(alias (name runtest) (action (diff expected/get_contract.ligo.expected get_contract.ligo_output))) +(alias (name runtest) (action (diff expected/high-order.ligo.expected high-order.ligo_output))) +(alias (name runtest) (action (diff expected/id.ligo.expected id.ligo_output))) +(alias (name runtest) (action (diff expected/implicit_account.ligo.expected implicit_account.ligo_output))) +(alias (name runtest) (action (diff expected/included.ligo.expected included.ligo_output))) +(alias (name runtest) (action (diff expected/includer.ligo.expected includer.ligo_output))) +(alias (name runtest) (action (diff expected/isnat.ligo.expected isnat.ligo_output))) +(alias (name runtest) (action (diff expected/key_hash_comparable.ligo.expected key_hash_comparable.ligo_output))) +(alias (name runtest) (action (diff expected/key_hash.ligo.expected key_hash.ligo_output))) +(alias (name runtest) (action (diff expected/lambda.ligo.expected lambda.ligo_output))) +(alias (name runtest) (action (diff expected/list.ligo.expected list.ligo_output))) +(alias (name runtest) (action (diff expected/loop_bugs.ligo.expected loop_bugs.ligo_output))) +(alias (name runtest) (action (diff expected/loop.ligo.expected loop.ligo_output))) +(alias (name runtest) (action (diff expected/map.ligo.expected map.ligo_output))) +(alias (name runtest) (action (diff expected/match.ligo.expected match.ligo_output))) +(alias (name runtest) (action (diff expected/michelson_or_tree_intermediary.ligo.expected michelson_or_tree_intermediary.ligo_output))) +(alias (name runtest) (action (diff expected/michelson_or_tree.ligo.expected michelson_or_tree.ligo_output))) +(alias (name runtest) (action (diff expected/michelson_pair_tree_intermediary.ligo.expected michelson_pair_tree_intermediary.ligo_output))) +(alias (name runtest) (action (diff expected/michelson_pair_tree.ligo.expected michelson_pair_tree.ligo_output))) +(alias (name runtest) (action (diff expected/multiple-parameters.ligo.expected multiple-parameters.ligo_output))) +(alias (name runtest) (action (diff expected/multisig-v2.ligo.expected multisig-v2.ligo_output))) +(alias (name runtest) (action (diff expected/multisig.ligo.expected multisig.ligo_output))) +(alias (name runtest) (action (diff expected/option.ligo.expected option.ligo_output))) +(alias (name runtest) (action (diff expected/quote-declaration.ligo.expected quote-declaration.ligo_output))) +(alias (name runtest) (action (diff expected/quote-declarations.ligo.expected quote-declarations.ligo_output))) +(alias (name runtest) (action (diff expected/record.ligo.expected record.ligo_output))) +(alias (name runtest) (action (diff expected/recursion.ligo.expected recursion.ligo_output))) +(alias (name runtest) (action (diff expected/redeclaration.ligo.expected redeclaration.ligo_output))) +(alias (name runtest) (action (diff expected/replaceable_id.ligo.expected replaceable_id.ligo_output))) +(alias (name runtest) (action (diff expected/self_address.ligo.expected self_address.ligo_output))) +(alias (name runtest) (action (diff expected/self_type_annotation.ligo.expected self_type_annotation.ligo_output))) +(alias (name runtest) (action (diff expected/self_with_entrypoint.ligo.expected self_with_entrypoint.ligo_output))) +(alias (name runtest) (action (diff expected/self_without_entrypoint.ligo.expected self_without_entrypoint.ligo_output))) +(alias (name runtest) (action (diff expected/set_arithmetic-1.ligo.expected set_arithmetic-1.ligo_output))) +(alias (name runtest) (action (diff expected/set_arithmetic.ligo.expected set_arithmetic.ligo_output))) +(alias (name runtest) (action (diff expected/set_delegate.ligo.expected set_delegate.ligo_output))) +(alias (name runtest) (action (diff expected/shadow.ligo.expected shadow.ligo_output))) +(alias (name runtest) (action (diff expected/simple_access.ligo.expected simple_access.ligo_output))) +(alias (name runtest) (action (diff expected/string_arithmetic.ligo.expected string_arithmetic.ligo_output))) +(alias (name runtest) (action (diff expected/string.ligo.expected string.ligo_output))) +(alias (name runtest) (action (diff expected/super-counter.ligo.expected super-counter.ligo_output))) +(alias (name runtest) (action (diff expected/tez.ligo.expected tez.ligo_output))) +(alias (name runtest) (action (diff expected/time-lock.ligo.expected time-lock.ligo_output))) +(alias (name runtest) (action (diff expected/timestamp.ligo.expected timestamp.ligo_output))) +(alias (name runtest) (action (diff expected/toto.ligo.expected toto.ligo_output))) +(alias (name runtest) (action (diff expected/tuple.ligo.expected tuple.ligo_output))) +(alias (name runtest) (action (diff expected/type-alias.ligo.expected type-alias.ligo_output))) +(alias (name runtest) (action (diff expected/unit.ligo.expected unit.ligo_output))) +(alias (name runtest) (action (diff expected/variant-matching.ligo.expected variant-matching.ligo_output))) +(alias (name runtest) (action (diff expected/variant.ligo.expected variant.ligo_output))) +(alias (name runtest) (action (diff expected/website1.ligo.expected website1.ligo_output))) +(alias (name runtest) (action (diff expected/website2.ligo.expected website2.ligo_output))) + + ;; try to parse the generated contracts ;; reasonligo (alias (name runtest) (action (ignore-stdout (run ligo print-cst address.religo_output -s reasonligo))) (deps address.religo_output)) @@ -278,6 +474,105 @@ (alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.mligo_output -s cameligo))) (deps function-shared.mligo_output)) (alias (name runtest) (action (ignore-stdout (run ligo print-cst guess_string.mligo_output -s cameligo))) (deps guess_string.mligo_output)) +;; pascaligo +(alias (name runtest) (action (ignore-stdout (run ligo print-cst address.ligo_output -s pascaligo))) (deps address.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst amount.ligo_output -s pascaligo))) (deps amount.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst annotation.ligo_output -s pascaligo))) (deps annotation.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst application.ligo_output -s pascaligo))) (deps application.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst arithmetic.ligo_output -s pascaligo))) (deps arithmetic.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst assign.ligo_output -s pascaligo))) (deps assign.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst attributes.ligo_output -s pascaligo))) (deps attributes.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_timestamp.ligo_output -s pascaligo))) (deps bad_timestamp.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bad_type_operator.ligo_output -s pascaligo))) (deps bad_type_operator.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst balance_constant.ligo_output -s pascaligo))) (deps balance_constant.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst big_map.ligo_output -s pascaligo))) (deps big_map.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bitwise_arithmetic.ligo_output -s pascaligo))) (deps bitwise_arithmetic.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst blockless.ligo_output -s pascaligo))) (deps blockless.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst boolean_operators.ligo_output -s pascaligo))) (deps boolean_operators.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_arithmetic.ligo_output -s pascaligo))) (deps bytes_arithmetic.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst bytes_unpack.ligo_output -s pascaligo))) (deps bytes_unpack.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst chain_id.ligo_output -s pascaligo))) (deps chain_id.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst check_signature.ligo_output -s pascaligo))) (deps check_signature.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure-1.ligo_output -s pascaligo))) (deps closure-1.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure-2.ligo_output -s pascaligo))) (deps closure-2.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure-3.ligo_output -s pascaligo))) (deps closure-3.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst closure.ligo_output -s pascaligo))) (deps closure.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst coase.ligo_output -s pascaligo))) (deps coase.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition-simple.ligo_output -s pascaligo))) (deps condition-simple.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst condition.ligo_output -s pascaligo))) (deps condition.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst counter.ligo_output -s pascaligo))) (deps counter.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst crypto.ligo_output -s pascaligo))) (deps crypto.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst declaration-local.ligo_output -s pascaligo))) (deps declaration-local.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst declarations.ligo_output -s pascaligo))) (deps declarations.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst deep_access.ligo_output -s pascaligo))) (deps deep_access.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst dispatch-counter.ligo_output -s pascaligo))) (deps dispatch-counter.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst double_main.ligo_output -s pascaligo))) (deps double_main.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst double_michelson_or.ligo_output -s pascaligo))) (deps double_michelson_or.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst empty_case.ligo_output -s pascaligo))) (deps empty_case.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst entrypoints.ligo_output -s pascaligo))) (deps entrypoints.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst eq_bool.ligo_output -s pascaligo))) (deps eq_bool.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst evaluation_tests.ligo_output -s pascaligo))) (deps evaluation_tests.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst FA1.2.ligo_output -s pascaligo))) (deps FA1.2.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst failwith.ligo_output -s pascaligo))) (deps failwith.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst for_fail.ligo_output -s pascaligo))) (deps for_fail.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-anon.ligo_output -s pascaligo))) (deps function-anon.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-complex.ligo_output -s pascaligo))) (deps function-complex.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function-shared.ligo_output -s pascaligo))) (deps function-shared.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst function.ligo_output -s pascaligo))) (deps function.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst get_contract.ligo_output -s pascaligo))) (deps get_contract.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst high-order.ligo_output -s pascaligo))) (deps high-order.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst id.ligo_output -s pascaligo))) (deps id.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst implicit_account.ligo_output -s pascaligo))) (deps implicit_account.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst included.ligo_output -s pascaligo))) (deps included.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst includer.ligo_output -s pascaligo))) (deps includer.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst isnat.ligo_output -s pascaligo))) (deps isnat.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash_comparable.ligo_output -s pascaligo))) (deps key_hash_comparable.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst key_hash.ligo_output -s pascaligo))) (deps key_hash.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst lambda.ligo_output -s pascaligo))) (deps lambda.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst list.ligo_output -s pascaligo))) (deps list.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop_bugs.ligo_output -s pascaligo))) (deps loop_bugs.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst loop.ligo_output -s pascaligo))) (deps loop.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst map.ligo_output -s pascaligo))) (deps map.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst match.ligo_output -s pascaligo))) (deps match.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_or_tree_intermediary.ligo_output -s pascaligo))) (deps michelson_or_tree_intermediary.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_or_tree.ligo_output -s pascaligo))) (deps michelson_or_tree.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree_intermediary.ligo_output -s pascaligo))) (deps michelson_pair_tree_intermediary.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst michelson_pair_tree.ligo_output -s pascaligo))) (deps michelson_pair_tree.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multiple-parameters.ligo_output -s pascaligo))) (deps multiple-parameters.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig-v2.ligo_output -s pascaligo))) (deps multisig-v2.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst multisig.ligo_output -s pascaligo))) (deps multisig.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst option.ligo_output -s pascaligo))) (deps option.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst quote-declaration.ligo_output -s pascaligo))) (deps quote-declaration.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst quote-declarations.ligo_output -s pascaligo))) (deps quote-declarations.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst record.ligo_output -s pascaligo))) (deps record.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst recursion.ligo_output -s pascaligo))) (deps recursion.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst redeclaration.ligo_output -s pascaligo))) (deps redeclaration.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst replaceable_id.ligo_output -s pascaligo))) (deps replaceable_id.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_address.ligo_output -s pascaligo))) (deps self_address.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_type_annotation.ligo_output -s pascaligo))) (deps self_type_annotation.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_with_entrypoint.ligo_output -s pascaligo))) (deps self_with_entrypoint.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst self_without_entrypoint.ligo_output -s pascaligo))) (deps self_without_entrypoint.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic-1.ligo_output -s pascaligo))) (deps set_arithmetic-1.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_arithmetic.ligo_output -s pascaligo))) (deps set_arithmetic.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst set_delegate.ligo_output -s pascaligo))) (deps set_delegate.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst shadow.ligo_output -s pascaligo))) (deps shadow.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst simple_access.ligo_output -s pascaligo))) (deps simple_access.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst string_arithmetic.ligo_output -s pascaligo))) (deps string_arithmetic.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst string.ligo_output -s pascaligo))) (deps string.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst super-counter.ligo_output -s pascaligo))) (deps super-counter.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tez.ligo_output -s pascaligo))) (deps tez.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst time-lock.ligo_output -s pascaligo))) (deps time-lock.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst timestamp.ligo_output -s pascaligo))) (deps timestamp.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst toto.ligo_output -s pascaligo))) (deps toto.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst tuple.ligo_output -s pascaligo))) (deps tuple.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst type-alias.ligo_output -s pascaligo))) (deps type-alias.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst unit.ligo_output -s pascaligo))) (deps unit.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant-matching.ligo_output -s pascaligo))) (deps variant-matching.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst variant.ligo_output -s pascaligo))) (deps variant.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst website1.ligo_output -s pascaligo))) (deps website1.ligo_output)) +(alias (name runtest) (action (ignore-stdout (run ligo print-cst website2.ligo_output -s pascaligo))) (deps website2.ligo_output)) + + ;; pretty print with the former pretty printed contracts as input ;; reasonligo (rule (targets address.religo_output2) (action (with-stdout-to address.religo_output2 (run ligo pretty-print address.religo_output -s reasonligo))) (deps address.religo_output)) @@ -335,6 +630,7 @@ (rule (targets variant.religo_output2) (action (with-stdout-to variant.religo_output2 (run ligo pretty-print variant.religo_output -s reasonligo))) (deps variant.religo_output)) (rule (targets website2.religo_output2) (action (with-stdout-to website2.religo_output2 (run ligo pretty-print website2.religo_output -s reasonligo))) (deps website2.religo_output)) +;; cameligo (rule (targets assert.mligo_output2) (action (with-stdout-to assert.mligo_output2 (run ligo pretty-print assert.mligo_output -s cameligo))) (deps assert.mligo_output)) (rule (targets address.mligo_output2) (action (with-stdout-to address.mligo_output2 (run ligo pretty-print address.mligo_output -s cameligo))) (deps address.mligo_output)) (rule (targets amount_lambda.mligo_output2) (action (with-stdout-to amount_lambda.mligo_output2 (run ligo pretty-print amount_lambda.mligo_output -s cameligo))) (deps amount_lambda.mligo_output)) @@ -370,6 +666,104 @@ (rule (targets function-shared.mligo_output2) (action (with-stdout-to function-shared.mligo_output2 (run ligo pretty-print function-shared.mligo_output -s cameligo))) (deps function-shared.mligo_output)) (rule (targets guess_string.mligo_output2) (action (with-stdout-to guess_string.mligo_output2 (run ligo pretty-print guess_string.mligo_output -s cameligo))) (deps guess_string.mligo_output)) +;; pascaligo +(rule (targets address.ligo_output2) (action (with-stdout-to address.ligo_output2 (run ligo pretty-print address.ligo_output -s pascaligo))) (deps address.ligo_output)) +(rule (targets amount.ligo_output2) (action (with-stdout-to amount.ligo_output2 (run ligo pretty-print amount.ligo_output -s pascaligo))) (deps amount.ligo_output)) +(rule (targets annotation.ligo_output2) (action (with-stdout-to annotation.ligo_output2 (run ligo pretty-print annotation.ligo_output -s pascaligo))) (deps annotation.ligo_output)) +(rule (targets application.ligo_output2) (action (with-stdout-to application.ligo_output2 (run ligo pretty-print application.ligo_output -s pascaligo))) (deps application.ligo_output)) +(rule (targets arithmetic.ligo_output2) (action (with-stdout-to arithmetic.ligo_output2 (run ligo pretty-print arithmetic.ligo_output -s pascaligo))) (deps arithmetic.ligo_output)) +(rule (targets assign.ligo_output2) (action (with-stdout-to assign.ligo_output2 (run ligo pretty-print assign.ligo_output -s pascaligo))) (deps assign.ligo_output)) +(rule (targets attributes.ligo_output2) (action (with-stdout-to attributes.ligo_output2 (run ligo pretty-print attributes.ligo_output -s pascaligo))) (deps attributes.ligo_output)) +(rule (targets bad_timestamp.ligo_output2) (action (with-stdout-to bad_timestamp.ligo_output2 (run ligo pretty-print bad_timestamp.ligo_output -s pascaligo))) (deps bad_timestamp.ligo_output)) +(rule (targets bad_type_operator.ligo_output2) (action (with-stdout-to bad_type_operator.ligo_output2 (run ligo pretty-print bad_type_operator.ligo_output -s pascaligo))) (deps bad_type_operator.ligo_output)) +(rule (targets balance_constant.ligo_output2) (action (with-stdout-to balance_constant.ligo_output2 (run ligo pretty-print balance_constant.ligo_output -s pascaligo))) (deps balance_constant.ligo_output)) +(rule (targets big_map.ligo_output2) (action (with-stdout-to big_map.ligo_output2 (run ligo pretty-print big_map.ligo_output -s pascaligo))) (deps big_map.ligo_output)) +(rule (targets bitwise_arithmetic.ligo_output2) (action (with-stdout-to bitwise_arithmetic.ligo_output2 (run ligo pretty-print bitwise_arithmetic.ligo_output -s pascaligo))) (deps bitwise_arithmetic.ligo_output)) +(rule (targets blockless.ligo_output2) (action (with-stdout-to blockless.ligo_output2 (run ligo pretty-print blockless.ligo_output -s pascaligo))) (deps blockless.ligo_output)) +(rule (targets boolean_operators.ligo_output2) (action (with-stdout-to boolean_operators.ligo_output2 (run ligo pretty-print boolean_operators.ligo_output -s pascaligo))) (deps boolean_operators.ligo_output)) +(rule (targets bytes_arithmetic.ligo_output2) (action (with-stdout-to bytes_arithmetic.ligo_output2 (run ligo pretty-print bytes_arithmetic.ligo_output -s pascaligo))) (deps bytes_arithmetic.ligo_output)) +(rule (targets bytes_unpack.ligo_output2) (action (with-stdout-to bytes_unpack.ligo_output2 (run ligo pretty-print bytes_unpack.ligo_output -s pascaligo))) (deps bytes_unpack.ligo_output)) +(rule (targets chain_id.ligo_output2) (action (with-stdout-to chain_id.ligo_output2 (run ligo pretty-print chain_id.ligo_output -s pascaligo))) (deps chain_id.ligo_output)) +(rule (targets check_signature.ligo_output2) (action (with-stdout-to check_signature.ligo_output2 (run ligo pretty-print check_signature.ligo_output -s pascaligo))) (deps check_signature.ligo_output)) +(rule (targets closure-1.ligo_output2) (action (with-stdout-to closure-1.ligo_output2 (run ligo pretty-print closure-1.ligo_output -s pascaligo))) (deps closure-1.ligo_output)) +(rule (targets closure-2.ligo_output2) (action (with-stdout-to closure-2.ligo_output2 (run ligo pretty-print closure-2.ligo_output -s pascaligo))) (deps closure-2.ligo_output)) +(rule (targets closure-3.ligo_output2) (action (with-stdout-to closure-3.ligo_output2 (run ligo pretty-print closure-3.ligo_output -s pascaligo))) (deps closure-3.ligo_output)) +(rule (targets closure.ligo_output2) (action (with-stdout-to closure.ligo_output2 (run ligo pretty-print closure.ligo_output -s pascaligo))) (deps closure.ligo_output)) +(rule (targets coase.ligo_output2) (action (with-stdout-to coase.ligo_output2 (run ligo pretty-print coase.ligo_output -s pascaligo))) (deps coase.ligo_output)) +(rule (targets condition-simple.ligo_output2) (action (with-stdout-to condition-simple.ligo_output2 (run ligo pretty-print condition-simple.ligo_output -s pascaligo))) (deps condition-simple.ligo_output)) +(rule (targets condition.ligo_output2) (action (with-stdout-to condition.ligo_output2 (run ligo pretty-print condition.ligo_output -s pascaligo))) (deps condition.ligo_output)) +(rule (targets counter.ligo_output2) (action (with-stdout-to counter.ligo_output2 (run ligo pretty-print counter.ligo_output -s pascaligo))) (deps counter.ligo_output)) +(rule (targets crypto.ligo_output2) (action (with-stdout-to crypto.ligo_output2 (run ligo pretty-print crypto.ligo_output -s pascaligo))) (deps crypto.ligo_output)) +(rule (targets declaration-local.ligo_output2) (action (with-stdout-to declaration-local.ligo_output2 (run ligo pretty-print declaration-local.ligo_output -s pascaligo))) (deps declaration-local.ligo_output)) +(rule (targets declarations.ligo_output2) (action (with-stdout-to declarations.ligo_output2 (run ligo pretty-print declarations.ligo_output -s pascaligo))) (deps declarations.ligo_output)) +(rule (targets deep_access.ligo_output2) (action (with-stdout-to deep_access.ligo_output2 (run ligo pretty-print deep_access.ligo_output -s pascaligo))) (deps deep_access.ligo_output)) +(rule (targets dispatch-counter.ligo_output2) (action (with-stdout-to dispatch-counter.ligo_output2 (run ligo pretty-print dispatch-counter.ligo_output -s pascaligo))) (deps dispatch-counter.ligo_output)) +(rule (targets double_main.ligo_output2) (action (with-stdout-to double_main.ligo_output2 (run ligo pretty-print double_main.ligo_output -s pascaligo))) (deps double_main.ligo_output)) +(rule (targets double_michelson_or.ligo_output2) (action (with-stdout-to double_michelson_or.ligo_output2 (run ligo pretty-print double_michelson_or.ligo_output -s pascaligo))) (deps double_michelson_or.ligo_output)) +(rule (targets empty_case.ligo_output2) (action (with-stdout-to empty_case.ligo_output2 (run ligo pretty-print empty_case.ligo_output -s pascaligo))) (deps empty_case.ligo_output)) +(rule (targets entrypoints.ligo_output2) (action (with-stdout-to entrypoints.ligo_output2 (run ligo pretty-print entrypoints.ligo_output -s pascaligo))) (deps entrypoints.ligo_output)) +(rule (targets eq_bool.ligo_output2) (action (with-stdout-to eq_bool.ligo_output2 (run ligo pretty-print eq_bool.ligo_output -s pascaligo))) (deps eq_bool.ligo_output)) +(rule (targets evaluation_tests.ligo_output2) (action (with-stdout-to evaluation_tests.ligo_output2 (run ligo pretty-print evaluation_tests.ligo_output -s pascaligo))) (deps evaluation_tests.ligo_output)) +(rule (targets FA1.2.ligo_output2) (action (with-stdout-to FA1.2.ligo_output2 (run ligo pretty-print FA1.2.ligo_output -s pascaligo))) (deps FA1.2.ligo_output)) +(rule (targets failwith.ligo_output2) (action (with-stdout-to failwith.ligo_output2 (run ligo pretty-print failwith.ligo_output -s pascaligo))) (deps failwith.ligo_output)) +(rule (targets for_fail.ligo_output2) (action (with-stdout-to for_fail.ligo_output2 (run ligo pretty-print for_fail.ligo_output -s pascaligo))) (deps for_fail.ligo_output)) +(rule (targets function-anon.ligo_output2) (action (with-stdout-to function-anon.ligo_output2 (run ligo pretty-print function-anon.ligo_output -s pascaligo))) (deps function-anon.ligo_output)) +(rule (targets function-complex.ligo_output2) (action (with-stdout-to function-complex.ligo_output2 (run ligo pretty-print function-complex.ligo_output -s pascaligo))) (deps function-complex.ligo_output)) +(rule (targets function-shared.ligo_output2) (action (with-stdout-to function-shared.ligo_output2 (run ligo pretty-print function-shared.ligo_output -s pascaligo))) (deps function-shared.ligo_output)) +(rule (targets function.ligo_output2) (action (with-stdout-to function.ligo_output2 (run ligo pretty-print function.ligo_output -s pascaligo))) (deps function.ligo_output)) +(rule (targets get_contract.ligo_output2) (action (with-stdout-to get_contract.ligo_output2 (run ligo pretty-print get_contract.ligo_output -s pascaligo))) (deps get_contract.ligo_output)) +(rule (targets high-order.ligo_output2) (action (with-stdout-to high-order.ligo_output2 (run ligo pretty-print high-order.ligo_output -s pascaligo))) (deps high-order.ligo_output)) +(rule (targets id.ligo_output2) (action (with-stdout-to id.ligo_output2 (run ligo pretty-print id.ligo_output -s pascaligo))) (deps id.ligo_output)) +(rule (targets implicit_account.ligo_output2) (action (with-stdout-to implicit_account.ligo_output2 (run ligo pretty-print implicit_account.ligo_output -s pascaligo))) (deps implicit_account.ligo_output)) +(rule (targets included.ligo_output2) (action (with-stdout-to included.ligo_output2 (run ligo pretty-print included.ligo_output -s pascaligo))) (deps included.ligo_output)) +(rule (targets includer.ligo_output2) (action (with-stdout-to includer.ligo_output2 (run ligo pretty-print includer.ligo_output -s pascaligo))) (deps includer.ligo_output)) +(rule (targets isnat.ligo_output2) (action (with-stdout-to isnat.ligo_output2 (run ligo pretty-print isnat.ligo_output -s pascaligo))) (deps isnat.ligo_output)) +(rule (targets key_hash_comparable.ligo_output2) (action (with-stdout-to key_hash_comparable.ligo_output2 (run ligo pretty-print key_hash_comparable.ligo_output -s pascaligo))) (deps key_hash_comparable.ligo_output)) +(rule (targets key_hash.ligo_output2) (action (with-stdout-to key_hash.ligo_output2 (run ligo pretty-print key_hash.ligo_output -s pascaligo))) (deps key_hash.ligo_output)) +(rule (targets lambda.ligo_output2) (action (with-stdout-to lambda.ligo_output2 (run ligo pretty-print lambda.ligo_output -s pascaligo))) (deps lambda.ligo_output)) +(rule (targets list.ligo_output2) (action (with-stdout-to list.ligo_output2 (run ligo pretty-print list.ligo_output -s pascaligo))) (deps list.ligo_output)) +(rule (targets loop_bugs.ligo_output2) (action (with-stdout-to loop_bugs.ligo_output2 (run ligo pretty-print loop_bugs.ligo_output -s pascaligo))) (deps loop_bugs.ligo_output)) +(rule (targets loop.ligo_output2) (action (with-stdout-to loop.ligo_output2 (run ligo pretty-print loop.ligo_output -s pascaligo))) (deps loop.ligo_output)) +(rule (targets map.ligo_output2) (action (with-stdout-to map.ligo_output2 (run ligo pretty-print map.ligo_output -s pascaligo))) (deps map.ligo_output)) +(rule (targets match.ligo_output2) (action (with-stdout-to match.ligo_output2 (run ligo pretty-print match.ligo_output -s pascaligo))) (deps match.ligo_output)) +(rule (targets michelson_or_tree_intermediary.ligo_output2) (action (with-stdout-to michelson_or_tree_intermediary.ligo_output2 (run ligo pretty-print michelson_or_tree_intermediary.ligo_output -s pascaligo))) (deps michelson_or_tree_intermediary.ligo_output)) +(rule (targets michelson_or_tree.ligo_output2) (action (with-stdout-to michelson_or_tree.ligo_output2 (run ligo pretty-print michelson_or_tree.ligo_output -s pascaligo))) (deps michelson_or_tree.ligo_output)) +(rule (targets michelson_pair_tree_intermediary.ligo_output2) (action (with-stdout-to michelson_pair_tree_intermediary.ligo_output2 (run ligo pretty-print michelson_pair_tree_intermediary.ligo_output -s pascaligo))) (deps michelson_pair_tree_intermediary.ligo_output)) +(rule (targets michelson_pair_tree.ligo_output2) (action (with-stdout-to michelson_pair_tree.ligo_output2 (run ligo pretty-print michelson_pair_tree.ligo_output -s pascaligo))) (deps michelson_pair_tree.ligo_output)) +(rule (targets multiple-parameters.ligo_output2) (action (with-stdout-to multiple-parameters.ligo_output2 (run ligo pretty-print multiple-parameters.ligo_output -s pascaligo))) (deps multiple-parameters.ligo_output)) +(rule (targets multisig-v2.ligo_output2) (action (with-stdout-to multisig-v2.ligo_output2 (run ligo pretty-print multisig-v2.ligo_output -s pascaligo))) (deps multisig-v2.ligo_output)) +(rule (targets multisig.ligo_output2) (action (with-stdout-to multisig.ligo_output2 (run ligo pretty-print multisig.ligo_output -s pascaligo))) (deps multisig.ligo_output)) +(rule (targets option.ligo_output2) (action (with-stdout-to option.ligo_output2 (run ligo pretty-print option.ligo_output -s pascaligo))) (deps option.ligo_output)) +(rule (targets quote-declaration.ligo_output2) (action (with-stdout-to quote-declaration.ligo_output2 (run ligo pretty-print quote-declaration.ligo_output -s pascaligo))) (deps quote-declaration.ligo_output)) +(rule (targets quote-declarations.ligo_output2) (action (with-stdout-to quote-declarations.ligo_output2 (run ligo pretty-print quote-declarations.ligo_output -s pascaligo))) (deps quote-declarations.ligo_output)) +(rule (targets record.ligo_output2) (action (with-stdout-to record.ligo_output2 (run ligo pretty-print record.ligo_output -s pascaligo))) (deps record.ligo_output)) +(rule (targets recursion.ligo_output2) (action (with-stdout-to recursion.ligo_output2 (run ligo pretty-print recursion.ligo_output -s pascaligo))) (deps recursion.ligo_output)) +(rule (targets redeclaration.ligo_output2) (action (with-stdout-to redeclaration.ligo_output2 (run ligo pretty-print redeclaration.ligo_output -s pascaligo))) (deps redeclaration.ligo_output)) +(rule (targets replaceable_id.ligo_output2) (action (with-stdout-to replaceable_id.ligo_output2 (run ligo pretty-print replaceable_id.ligo_output -s pascaligo))) (deps replaceable_id.ligo_output)) +(rule (targets self_address.ligo_output2) (action (with-stdout-to self_address.ligo_output2 (run ligo pretty-print self_address.ligo_output -s pascaligo))) (deps self_address.ligo_output)) +(rule (targets self_type_annotation.ligo_output2) (action (with-stdout-to self_type_annotation.ligo_output2 (run ligo pretty-print self_type_annotation.ligo_output -s pascaligo))) (deps self_type_annotation.ligo_output)) +(rule (targets self_with_entrypoint.ligo_output2) (action (with-stdout-to self_with_entrypoint.ligo_output2 (run ligo pretty-print self_with_entrypoint.ligo_output -s pascaligo))) (deps self_with_entrypoint.ligo_output)) +(rule (targets self_without_entrypoint.ligo_output2) (action (with-stdout-to self_without_entrypoint.ligo_output2 (run ligo pretty-print self_without_entrypoint.ligo_output -s pascaligo))) (deps self_without_entrypoint.ligo_output)) +(rule (targets set_arithmetic-1.ligo_output2) (action (with-stdout-to set_arithmetic-1.ligo_output2 (run ligo pretty-print set_arithmetic-1.ligo_output -s pascaligo))) (deps set_arithmetic-1.ligo_output)) +(rule (targets set_arithmetic.ligo_output2) (action (with-stdout-to set_arithmetic.ligo_output2 (run ligo pretty-print set_arithmetic.ligo_output -s pascaligo))) (deps set_arithmetic.ligo_output)) +(rule (targets set_delegate.ligo_output2) (action (with-stdout-to set_delegate.ligo_output2 (run ligo pretty-print set_delegate.ligo_output -s pascaligo))) (deps set_delegate.ligo_output)) +(rule (targets shadow.ligo_output2) (action (with-stdout-to shadow.ligo_output2 (run ligo pretty-print shadow.ligo_output -s pascaligo))) (deps shadow.ligo_output)) +(rule (targets simple_access.ligo_output2) (action (with-stdout-to simple_access.ligo_output2 (run ligo pretty-print simple_access.ligo_output -s pascaligo))) (deps simple_access.ligo_output)) +(rule (targets string_arithmetic.ligo_output2) (action (with-stdout-to string_arithmetic.ligo_output2 (run ligo pretty-print string_arithmetic.ligo_output -s pascaligo))) (deps string_arithmetic.ligo_output)) +(rule (targets string.ligo_output2) (action (with-stdout-to string.ligo_output2 (run ligo pretty-print string.ligo_output -s pascaligo))) (deps string.ligo_output)) +(rule (targets super-counter.ligo_output2) (action (with-stdout-to super-counter.ligo_output2 (run ligo pretty-print super-counter.ligo_output -s pascaligo))) (deps super-counter.ligo_output)) +(rule (targets tez.ligo_output2) (action (with-stdout-to tez.ligo_output2 (run ligo pretty-print tez.ligo_output -s pascaligo))) (deps tez.ligo_output)) +(rule (targets time-lock.ligo_output2) (action (with-stdout-to time-lock.ligo_output2 (run ligo pretty-print time-lock.ligo_output -s pascaligo))) (deps time-lock.ligo_output)) +(rule (targets timestamp.ligo_output2) (action (with-stdout-to timestamp.ligo_output2 (run ligo pretty-print timestamp.ligo_output -s pascaligo))) (deps timestamp.ligo_output)) +(rule (targets toto.ligo_output2) (action (with-stdout-to toto.ligo_output2 (run ligo pretty-print toto.ligo_output -s pascaligo))) (deps toto.ligo_output)) +(rule (targets tuple.ligo_output2) (action (with-stdout-to tuple.ligo_output2 (run ligo pretty-print tuple.ligo_output -s pascaligo))) (deps tuple.ligo_output)) +(rule (targets type-alias.ligo_output2) (action (with-stdout-to type-alias.ligo_output2 (run ligo pretty-print type-alias.ligo_output -s pascaligo))) (deps type-alias.ligo_output)) +(rule (targets unit.ligo_output2) (action (with-stdout-to unit.ligo_output2 (run ligo pretty-print unit.ligo_output -s pascaligo))) (deps unit.ligo_output)) +(rule (targets variant-matching.ligo_output2) (action (with-stdout-to variant-matching.ligo_output2 (run ligo pretty-print variant-matching.ligo_output -s pascaligo))) (deps variant-matching.ligo_output)) +(rule (targets variant.ligo_output2) (action (with-stdout-to variant.ligo_output2 (run ligo pretty-print variant.ligo_output -s pascaligo))) (deps variant.ligo_output)) +(rule (targets website1.ligo_output2) (action (with-stdout-to website1.ligo_output2 (run ligo pretty-print website1.ligo_output -s pascaligo))) (deps website1.ligo_output)) +(rule (targets website2.ligo_output2) (action (with-stdout-to website2.ligo_output2 (run ligo pretty-print website2.ligo_output -s pascaligo))) (deps website2.ligo_output)) + ;; diff the pretty printed contract with the pretty printed pretty printed contract ;; reasonligo (alias (name runtest) (action (diff address.religo_output address.religo_output2)) (deps address.religo_output address.religo_output2)) @@ -427,6 +821,7 @@ (alias (name runtest) (action (diff variant.religo_output variant.religo_output2)) (deps variant.religo_output variant.religo_output2)) (alias (name runtest) (action (diff website2.religo_output website2.religo_output2)) (deps website2.religo_output website2.religo_output2)) +;; cameligo (alias (name runtest) (action (diff assert.mligo_output assert.mligo_output2)) (deps assert.mligo_output assert.mligo_output2)) (alias (name runtest) (action (diff address.mligo_output address.mligo_output2)) (deps address.mligo_output address.mligo_output2)) (alias (name runtest) (action (diff amount_lambda.mligo_output amount_lambda.mligo_output2)) (deps amount_lambda.mligo_output amount_lambda.mligo_output2)) @@ -462,6 +857,106 @@ (alias (name runtest) (action (diff function-shared.mligo_output function-shared.mligo_output2)) (deps function-shared.mligo_output function-shared.mligo_output2)) (alias (name runtest) (action (diff guess_string.mligo_output guess_string.mligo_output2)) (deps guess_string.mligo_output guess_string.mligo_output2)) +;; pascaligo +(alias (name runtest) (action (diff address.ligo_output address.ligo_output2)) (deps address.ligo_output address.ligo_output2)) +(alias (name runtest) (action (diff amount.ligo_output amount.ligo_output2)) (deps amount.ligo_output amount.ligo_output2)) +(alias (name runtest) (action (diff annotation.ligo_output annotation.ligo_output2)) (deps annotation.ligo_output annotation.ligo_output2)) +(alias (name runtest) (action (diff application.ligo_output application.ligo_output2)) (deps application.ligo_output application.ligo_output2)) +(alias (name runtest) (action (diff arithmetic.ligo_output arithmetic.ligo_output2)) (deps arithmetic.ligo_output arithmetic.ligo_output2)) +(alias (name runtest) (action (diff assign.ligo_output assign.ligo_output2)) (deps assign.ligo_output assign.ligo_output2)) +(alias (name runtest) (action (diff attributes.ligo_output attributes.ligo_output2)) (deps attributes.ligo_output attributes.ligo_output2)) +(alias (name runtest) (action (diff bad_timestamp.ligo_output bad_timestamp.ligo_output2)) (deps bad_timestamp.ligo_output bad_timestamp.ligo_output2)) +(alias (name runtest) (action (diff bad_type_operator.ligo_output bad_type_operator.ligo_output2)) (deps bad_type_operator.ligo_output bad_type_operator.ligo_output2)) +(alias (name runtest) (action (diff balance_constant.ligo_output balance_constant.ligo_output2)) (deps balance_constant.ligo_output balance_constant.ligo_output2)) +(alias (name runtest) (action (diff big_map.ligo_output big_map.ligo_output2)) (deps big_map.ligo_output big_map.ligo_output2)) +(alias (name runtest) (action (diff bitwise_arithmetic.ligo_output bitwise_arithmetic.ligo_output2)) (deps bitwise_arithmetic.ligo_output bitwise_arithmetic.ligo_output2)) +(alias (name runtest) (action (diff blockless.ligo_output blockless.ligo_output2)) (deps blockless.ligo_output blockless.ligo_output2)) +(alias (name runtest) (action (diff boolean_operators.ligo_output boolean_operators.ligo_output2)) (deps boolean_operators.ligo_output boolean_operators.ligo_output2)) +(alias (name runtest) (action (diff bytes_arithmetic.ligo_output bytes_arithmetic.ligo_output2)) (deps bytes_arithmetic.ligo_output bytes_arithmetic.ligo_output2)) +(alias (name runtest) (action (diff bytes_unpack.ligo_output bytes_unpack.ligo_output2)) (deps bytes_unpack.ligo_output bytes_unpack.ligo_output2)) +(alias (name runtest) (action (diff chain_id.ligo_output chain_id.ligo_output2)) (deps chain_id.ligo_output chain_id.ligo_output2)) +(alias (name runtest) (action (diff check_signature.ligo_output check_signature.ligo_output2)) (deps check_signature.ligo_output check_signature.ligo_output2)) +(alias (name runtest) (action (diff closure-1.ligo_output closure-1.ligo_output2)) (deps closure-1.ligo_output closure-1.ligo_output2)) +(alias (name runtest) (action (diff closure-2.ligo_output closure-2.ligo_output2)) (deps closure-2.ligo_output closure-2.ligo_output2)) +(alias (name runtest) (action (diff closure-3.ligo_output closure-3.ligo_output2)) (deps closure-3.ligo_output closure-3.ligo_output2)) +(alias (name runtest) (action (diff closure.ligo_output closure.ligo_output2)) (deps closure.ligo_output closure.ligo_output2)) +(alias (name runtest) (action (diff coase.ligo_output coase.ligo_output2)) (deps coase.ligo_output coase.ligo_output2)) +(alias (name runtest) (action (diff condition-simple.ligo_output condition-simple.ligo_output2)) (deps condition-simple.ligo_output condition-simple.ligo_output2)) +(alias (name runtest) (action (diff condition.ligo_output condition.ligo_output2)) (deps condition.ligo_output condition.ligo_output2)) +(alias (name runtest) (action (diff counter.ligo_output counter.ligo_output2)) (deps counter.ligo_output counter.ligo_output2)) +(alias (name runtest) (action (diff crypto.ligo_output crypto.ligo_output2)) (deps crypto.ligo_output crypto.ligo_output2)) +(alias (name runtest) (action (diff declaration-local.ligo_output declaration-local.ligo_output2)) (deps declaration-local.ligo_output declaration-local.ligo_output2)) +(alias (name runtest) (action (diff declarations.ligo_output declarations.ligo_output2)) (deps declarations.ligo_output declarations.ligo_output2)) +(alias (name runtest) (action (diff deep_access.ligo_output deep_access.ligo_output2)) (deps deep_access.ligo_output deep_access.ligo_output2)) +(alias (name runtest) (action (diff dispatch-counter.ligo_output dispatch-counter.ligo_output2)) (deps dispatch-counter.ligo_output dispatch-counter.ligo_output2)) +(alias (name runtest) (action (diff double_main.ligo_output double_main.ligo_output2)) (deps double_main.ligo_output double_main.ligo_output2)) +(alias (name runtest) (action (diff double_michelson_or.ligo_output double_michelson_or.ligo_output2)) (deps double_michelson_or.ligo_output double_michelson_or.ligo_output2)) +(alias (name runtest) (action (diff empty_case.ligo_output empty_case.ligo_output2)) (deps empty_case.ligo_output empty_case.ligo_output2)) +(alias (name runtest) (action (diff entrypoints.ligo_output entrypoints.ligo_output2)) (deps entrypoints.ligo_output entrypoints.ligo_output2)) +(alias (name runtest) (action (diff eq_bool.ligo_output eq_bool.ligo_output2)) (deps eq_bool.ligo_output eq_bool.ligo_output2)) +(alias (name runtest) (action (diff evaluation_tests.ligo_output evaluation_tests.ligo_output2)) (deps evaluation_tests.ligo_output evaluation_tests.ligo_output2)) +(alias (name runtest) (action (diff FA1.2.ligo_output FA1.2.ligo_output2)) (deps FA1.2.ligo_output FA1.2.ligo_output2)) +(alias (name runtest) (action (diff failwith.ligo_output failwith.ligo_output2)) (deps failwith.ligo_output failwith.ligo_output2)) +(alias (name runtest) (action (diff for_fail.ligo_output for_fail.ligo_output2)) (deps for_fail.ligo_output for_fail.ligo_output2)) +(alias (name runtest) (action (diff function-anon.ligo_output function-anon.ligo_output2)) (deps function-anon.ligo_output function-anon.ligo_output2)) +(alias (name runtest) (action (diff function-complex.ligo_output function-complex.ligo_output2)) (deps function-complex.ligo_output function-complex.ligo_output2)) +(alias (name runtest) (action (diff function-shared.ligo_output function-shared.ligo_output2)) (deps function-shared.ligo_output function-shared.ligo_output2)) +(alias (name runtest) (action (diff function.ligo_output function.ligo_output2)) (deps function.ligo_output function.ligo_output2)) +(alias (name runtest) (action (diff get_contract.ligo_output get_contract.ligo_output2)) (deps get_contract.ligo_output get_contract.ligo_output2)) +(alias (name runtest) (action (diff high-order.ligo_output high-order.ligo_output2)) (deps high-order.ligo_output high-order.ligo_output2)) +(alias (name runtest) (action (diff id.ligo_output id.ligo_output2)) (deps id.ligo_output id.ligo_output2)) +(alias (name runtest) (action (diff implicit_account.ligo_output implicit_account.ligo_output2)) (deps implicit_account.ligo_output implicit_account.ligo_output2)) +(alias (name runtest) (action (diff included.ligo_output included.ligo_output2)) (deps included.ligo_output included.ligo_output2)) +(alias (name runtest) (action (diff includer.ligo_output includer.ligo_output2)) (deps includer.ligo_output includer.ligo_output2)) +(alias (name runtest) (action (diff isnat.ligo_output isnat.ligo_output2)) (deps isnat.ligo_output isnat.ligo_output2)) +(alias (name runtest) (action (diff key_hash_comparable.ligo_output key_hash_comparable.ligo_output2)) (deps key_hash_comparable.ligo_output key_hash_comparable.ligo_output2)) +(alias (name runtest) (action (diff key_hash.ligo_output key_hash.ligo_output2)) (deps key_hash.ligo_output key_hash.ligo_output2)) +(alias (name runtest) (action (diff lambda.ligo_output lambda.ligo_output2)) (deps lambda.ligo_output lambda.ligo_output2)) +(alias (name runtest) (action (diff list.ligo_output list.ligo_output2)) (deps list.ligo_output list.ligo_output2)) +(alias (name runtest) (action (diff loop_bugs.ligo_output loop_bugs.ligo_output2)) (deps loop_bugs.ligo_output loop_bugs.ligo_output2)) +(alias (name runtest) (action (diff loop.ligo_output loop.ligo_output2)) (deps loop.ligo_output loop.ligo_output2)) +(alias (name runtest) (action (diff map.ligo_output map.ligo_output2)) (deps map.ligo_output map.ligo_output2)) +(alias (name runtest) (action (diff match.ligo_output match.ligo_output2)) (deps match.ligo_output match.ligo_output2)) +(alias (name runtest) (action (diff michelson_or_tree_intermediary.ligo_output michelson_or_tree_intermediary.ligo_output2)) (deps michelson_or_tree_intermediary.ligo_output michelson_or_tree_intermediary.ligo_output2)) +(alias (name runtest) (action (diff michelson_or_tree.ligo_output michelson_or_tree.ligo_output2)) (deps michelson_or_tree.ligo_output michelson_or_tree.ligo_output2)) +(alias (name runtest) (action (diff michelson_pair_tree_intermediary.ligo_output michelson_pair_tree_intermediary.ligo_output2)) (deps michelson_pair_tree_intermediary.ligo_output michelson_pair_tree_intermediary.ligo_output2)) +(alias (name runtest) (action (diff michelson_pair_tree.ligo_output michelson_pair_tree.ligo_output2)) (deps michelson_pair_tree.ligo_output michelson_pair_tree.ligo_output2)) +(alias (name runtest) (action (diff multiple-parameters.ligo_output multiple-parameters.ligo_output2)) (deps multiple-parameters.ligo_output multiple-parameters.ligo_output2)) +(alias (name runtest) (action (diff multisig-v2.ligo_output multisig-v2.ligo_output2)) (deps multisig-v2.ligo_output multisig-v2.ligo_output2)) +(alias (name runtest) (action (diff multisig.ligo_output multisig.ligo_output2)) (deps multisig.ligo_output multisig.ligo_output2)) +(alias (name runtest) (action (diff option.ligo_output option.ligo_output2)) (deps option.ligo_output option.ligo_output2)) +(alias (name runtest) (action (diff quote-declaration.ligo_output quote-declaration.ligo_output2)) (deps quote-declaration.ligo_output quote-declaration.ligo_output2)) +(alias (name runtest) (action (diff quote-declarations.ligo_output quote-declarations.ligo_output2)) (deps quote-declarations.ligo_output quote-declarations.ligo_output2)) +(alias (name runtest) (action (diff record.ligo_output record.ligo_output2)) (deps record.ligo_output record.ligo_output2)) +(alias (name runtest) (action (diff recursion.ligo_output recursion.ligo_output2)) (deps recursion.ligo_output recursion.ligo_output2)) +(alias (name runtest) (action (diff redeclaration.ligo_output redeclaration.ligo_output2)) (deps redeclaration.ligo_output redeclaration.ligo_output2)) +(alias (name runtest) (action (diff replaceable_id.ligo_output replaceable_id.ligo_output2)) (deps replaceable_id.ligo_output replaceable_id.ligo_output2)) +(alias (name runtest) (action (diff self_address.ligo_output self_address.ligo_output2)) (deps self_address.ligo_output self_address.ligo_output2)) +(alias (name runtest) (action (diff self_type_annotation.ligo_output self_type_annotation.ligo_output2)) (deps self_type_annotation.ligo_output self_type_annotation.ligo_output2)) +(alias (name runtest) (action (diff self_with_entrypoint.ligo_output self_with_entrypoint.ligo_output2)) (deps self_with_entrypoint.ligo_output self_with_entrypoint.ligo_output2)) +(alias (name runtest) (action (diff self_without_entrypoint.ligo_output self_without_entrypoint.ligo_output2)) (deps self_without_entrypoint.ligo_output self_without_entrypoint.ligo_output2)) +(alias (name runtest) (action (diff set_arithmetic-1.ligo_output set_arithmetic-1.ligo_output2)) (deps set_arithmetic-1.ligo_output set_arithmetic-1.ligo_output2)) +(alias (name runtest) (action (diff set_arithmetic.ligo_output set_arithmetic.ligo_output2)) (deps set_arithmetic.ligo_output set_arithmetic.ligo_output2)) +(alias (name runtest) (action (diff set_delegate.ligo_output set_delegate.ligo_output2)) (deps set_delegate.ligo_output set_delegate.ligo_output2)) +(alias (name runtest) (action (diff shadow.ligo_output shadow.ligo_output2)) (deps shadow.ligo_output shadow.ligo_output2)) +(alias (name runtest) (action (diff simple_access.ligo_output simple_access.ligo_output2)) (deps simple_access.ligo_output simple_access.ligo_output2)) +(alias (name runtest) (action (diff string_arithmetic.ligo_output string_arithmetic.ligo_output2)) (deps string_arithmetic.ligo_output string_arithmetic.ligo_output2)) +(alias (name runtest) (action (diff string.ligo_output string.ligo_output2)) (deps string.ligo_output string.ligo_output2)) +(alias (name runtest) (action (diff super-counter.ligo_output super-counter.ligo_output2)) (deps super-counter.ligo_output super-counter.ligo_output2)) +(alias (name runtest) (action (diff tez.ligo_output tez.ligo_output2)) (deps tez.ligo_output tez.ligo_output2)) +(alias (name runtest) (action (diff time-lock.ligo_output time-lock.ligo_output2)) (deps time-lock.ligo_output time-lock.ligo_output2)) +(alias (name runtest) (action (diff timestamp.ligo_output timestamp.ligo_output2)) (deps timestamp.ligo_output timestamp.ligo_output2)) +(alias (name runtest) (action (diff toto.ligo_output toto.ligo_output2)) (deps toto.ligo_output toto.ligo_output2)) +(alias (name runtest) (action (diff tuple.ligo_output tuple.ligo_output2)) (deps tuple.ligo_output tuple.ligo_output2)) +(alias (name runtest) (action (diff type-alias.ligo_output type-alias.ligo_output2)) (deps type-alias.ligo_output type-alias.ligo_output2)) +(alias (name runtest) (action (diff unit.ligo_output unit.ligo_output2)) (deps unit.ligo_output unit.ligo_output2)) +(alias (name runtest) (action (diff variant-matching.ligo_output variant-matching.ligo_output2)) (deps variant-matching.ligo_output variant-matching.ligo_output2)) +(alias (name runtest) (action (diff variant.ligo_output variant.ligo_output2)) (deps variant.ligo_output variant.ligo_output2)) +(alias (name runtest) (action (diff website1.ligo_output website1.ligo_output2)) (deps website1.ligo_output website1.ligo_output2)) +(alias (name runtest) (action (diff website2.ligo_output website2.ligo_output2)) (deps website2.ligo_output website2.ligo_output2)) + +;; check produced ast +;; reasonligo (rule (targets address.religo_ast) (action (with-stdout-to address.religo_ast (run ligo print-ast address.religo -s reasonligo))) (deps address.religo)) (rule (targets amount.religo_ast) (action (with-stdout-to amount.religo_ast (run ligo print-ast amount.religo -s reasonligo))) (deps amount.religo)) (rule (targets arithmetic.religo_ast) (action (with-stdout-to arithmetic.religo_ast (run ligo print-ast arithmetic.religo -s reasonligo))) (deps arithmetic.religo)) @@ -515,6 +1010,7 @@ (rule (targets variant.religo_ast) (action (with-stdout-to variant.religo_ast (run ligo print-ast variant.religo -s reasonligo))) (deps variant.religo)) (rule (targets website2.religo_ast) (action (with-stdout-to website2.religo_ast (run ligo print-ast website2.religo -s reasonligo))) (deps website2.religo)) +;; cameligo (rule (targets assert.mligo_ast) (action (with-stdout-to assert.mligo_ast (run ligo print-ast assert.mligo -s cameligo))) (deps assert.mligo)) (rule (targets address.mligo_ast) (action (with-stdout-to address.mligo_ast (run ligo print-ast address.mligo -s cameligo))) (deps address.mligo)) (rule (targets amount_lambda.mligo_ast) (action (with-stdout-to amount_lambda.mligo_ast (run ligo print-ast amount_lambda.mligo -s cameligo))) (deps amount_lambda.mligo)) @@ -549,8 +1045,105 @@ (rule (targets fibo4.mligo_ast) (action (with-stdout-to fibo4.mligo_ast (run ligo print-ast fibo4.mligo -s cameligo))) (deps fibo4.mligo)) (rule (targets function-shared.mligo_ast) (action (with-stdout-to function-shared.mligo_ast (run ligo print-ast function-shared.mligo -s cameligo))) (deps function-shared.mligo)) (rule (targets guess_string.mligo_ast) (action (with-stdout-to guess_string.mligo_ast (run ligo print-ast guess_string.mligo -s cameligo))) (deps guess_string.mligo)) +;; pascaligo +(rule (targets address.ligo_ast) (action (with-stdout-to address.ligo_ast (run ligo print-ast address.ligo -s pascaligo))) (deps address.ligo)) +(rule (targets amount.ligo_ast) (action (with-stdout-to amount.ligo_ast (run ligo print-ast amount.ligo -s pascaligo))) (deps amount.ligo)) +(rule (targets annotation.ligo_ast) (action (with-stdout-to annotation.ligo_ast (run ligo print-ast annotation.ligo -s pascaligo))) (deps annotation.ligo)) +(rule (targets application.ligo_ast) (action (with-stdout-to application.ligo_ast (run ligo print-ast application.ligo -s pascaligo))) (deps application.ligo)) +(rule (targets arithmetic.ligo_ast) (action (with-stdout-to arithmetic.ligo_ast (run ligo print-ast arithmetic.ligo -s pascaligo))) (deps arithmetic.ligo)) +(rule (targets assign.ligo_ast) (action (with-stdout-to assign.ligo_ast (run ligo print-ast assign.ligo -s pascaligo))) (deps assign.ligo)) +(rule (targets attributes.ligo_ast) (action (with-stdout-to attributes.ligo_ast (run ligo print-ast attributes.ligo -s pascaligo))) (deps attributes.ligo)) +(rule (targets bad_timestamp.ligo_ast) (action (with-stdout-to bad_timestamp.ligo_ast (run ligo print-ast bad_timestamp.ligo -s pascaligo))) (deps bad_timestamp.ligo)) +(rule (targets bad_type_operator.ligo_ast) (action (with-stdout-to bad_type_operator.ligo_ast (run ligo print-ast bad_type_operator.ligo -s pascaligo))) (deps bad_type_operator.ligo)) +(rule (targets balance_constant.ligo_ast) (action (with-stdout-to balance_constant.ligo_ast (run ligo print-ast balance_constant.ligo -s pascaligo))) (deps balance_constant.ligo)) +(rule (targets big_map.ligo_ast) (action (with-stdout-to big_map.ligo_ast (run ligo print-ast big_map.ligo -s pascaligo))) (deps big_map.ligo)) +(rule (targets bitwise_arithmetic.ligo_ast) (action (with-stdout-to bitwise_arithmetic.ligo_ast (run ligo print-ast bitwise_arithmetic.ligo -s pascaligo))) (deps bitwise_arithmetic.ligo)) +(rule (targets blockless.ligo_ast) (action (with-stdout-to blockless.ligo_ast (run ligo print-ast blockless.ligo -s pascaligo))) (deps blockless.ligo)) +(rule (targets boolean_operators.ligo_ast) (action (with-stdout-to boolean_operators.ligo_ast (run ligo print-ast boolean_operators.ligo -s pascaligo))) (deps boolean_operators.ligo)) +(rule (targets bytes_arithmetic.ligo_ast) (action (with-stdout-to bytes_arithmetic.ligo_ast (run ligo print-ast bytes_arithmetic.ligo -s pascaligo))) (deps bytes_arithmetic.ligo)) +(rule (targets bytes_unpack.ligo_ast) (action (with-stdout-to bytes_unpack.ligo_ast (run ligo print-ast bytes_unpack.ligo -s pascaligo))) (deps bytes_unpack.ligo)) +(rule (targets chain_id.ligo_ast) (action (with-stdout-to chain_id.ligo_ast (run ligo print-ast chain_id.ligo -s pascaligo))) (deps chain_id.ligo)) +(rule (targets check_signature.ligo_ast) (action (with-stdout-to check_signature.ligo_ast (run ligo print-ast check_signature.ligo -s pascaligo))) (deps check_signature.ligo)) +(rule (targets closure-1.ligo_ast) (action (with-stdout-to closure-1.ligo_ast (run ligo print-ast closure-1.ligo -s pascaligo))) (deps closure-1.ligo)) +(rule (targets closure-2.ligo_ast) (action (with-stdout-to closure-2.ligo_ast (run ligo print-ast closure-2.ligo -s pascaligo))) (deps closure-2.ligo)) +(rule (targets closure-3.ligo_ast) (action (with-stdout-to closure-3.ligo_ast (run ligo print-ast closure-3.ligo -s pascaligo))) (deps closure-3.ligo)) +(rule (targets closure.ligo_ast) (action (with-stdout-to closure.ligo_ast (run ligo print-ast closure.ligo -s pascaligo))) (deps closure.ligo)) +(rule (targets coase.ligo_ast) (action (with-stdout-to coase.ligo_ast (run ligo print-ast coase.ligo -s pascaligo))) (deps coase.ligo)) +(rule (targets condition-simple.ligo_ast) (action (with-stdout-to condition-simple.ligo_ast (run ligo print-ast condition-simple.ligo -s pascaligo))) (deps condition-simple.ligo)) +(rule (targets condition.ligo_ast) (action (with-stdout-to condition.ligo_ast (run ligo print-ast condition.ligo -s pascaligo))) (deps condition.ligo)) +(rule (targets counter.ligo_ast) (action (with-stdout-to counter.ligo_ast (run ligo print-ast counter.ligo -s pascaligo))) (deps counter.ligo)) +(rule (targets crypto.ligo_ast) (action (with-stdout-to crypto.ligo_ast (run ligo print-ast crypto.ligo -s pascaligo))) (deps crypto.ligo)) +(rule (targets declaration-local.ligo_ast) (action (with-stdout-to declaration-local.ligo_ast (run ligo print-ast declaration-local.ligo -s pascaligo))) (deps declaration-local.ligo)) +(rule (targets declarations.ligo_ast) (action (with-stdout-to declarations.ligo_ast (run ligo print-ast declarations.ligo -s pascaligo))) (deps declarations.ligo)) +(rule (targets deep_access.ligo_ast) (action (with-stdout-to deep_access.ligo_ast (run ligo print-ast deep_access.ligo -s pascaligo))) (deps deep_access.ligo)) +(rule (targets dispatch-counter.ligo_ast) (action (with-stdout-to dispatch-counter.ligo_ast (run ligo print-ast dispatch-counter.ligo -s pascaligo))) (deps dispatch-counter.ligo)) +(rule (targets double_main.ligo_ast) (action (with-stdout-to double_main.ligo_ast (run ligo print-ast double_main.ligo -s pascaligo))) (deps double_main.ligo)) +(rule (targets double_michelson_or.ligo_ast) (action (with-stdout-to double_michelson_or.ligo_ast (run ligo print-ast double_michelson_or.ligo -s pascaligo))) (deps double_michelson_or.ligo)) +(rule (targets empty_case.ligo_ast) (action (with-stdout-to empty_case.ligo_ast (run ligo print-ast empty_case.ligo -s pascaligo))) (deps empty_case.ligo)) +(rule (targets entrypoints.ligo_ast) (action (with-stdout-to entrypoints.ligo_ast (run ligo print-ast entrypoints.ligo -s pascaligo))) (deps entrypoints.ligo)) +(rule (targets eq_bool.ligo_ast) (action (with-stdout-to eq_bool.ligo_ast (run ligo print-ast eq_bool.ligo -s pascaligo))) (deps eq_bool.ligo)) +(rule (targets evaluation_tests.ligo_ast) (action (with-stdout-to evaluation_tests.ligo_ast (run ligo print-ast evaluation_tests.ligo -s pascaligo))) (deps evaluation_tests.ligo)) +(rule (targets FA1.2.ligo_ast) (action (with-stdout-to FA1.2.ligo_ast (run ligo print-ast FA1.2.ligo -s pascaligo))) (deps FA1.2.ligo)) +(rule (targets failwith.ligo_ast) (action (with-stdout-to failwith.ligo_ast (run ligo print-ast failwith.ligo -s pascaligo))) (deps failwith.ligo)) +(rule (targets for_fail.ligo_ast) (action (with-stdout-to for_fail.ligo_ast (run ligo print-ast for_fail.ligo -s pascaligo))) (deps for_fail.ligo)) +(rule (targets function-anon.ligo_ast) (action (with-stdout-to function-anon.ligo_ast (run ligo print-ast function-anon.ligo -s pascaligo))) (deps function-anon.ligo)) +(rule (targets function-complex.ligo_ast) (action (with-stdout-to function-complex.ligo_ast (run ligo print-ast function-complex.ligo -s pascaligo))) (deps function-complex.ligo)) +(rule (targets function-shared.ligo_ast) (action (with-stdout-to function-shared.ligo_ast (run ligo print-ast function-shared.ligo -s pascaligo))) (deps function-shared.ligo)) +(rule (targets function.ligo_ast) (action (with-stdout-to function.ligo_ast (run ligo print-ast function.ligo -s pascaligo))) (deps function.ligo)) +(rule (targets get_contract.ligo_ast) (action (with-stdout-to get_contract.ligo_ast (run ligo print-ast get_contract.ligo -s pascaligo))) (deps get_contract.ligo)) +(rule (targets high-order.ligo_ast) (action (with-stdout-to high-order.ligo_ast (run ligo print-ast high-order.ligo -s pascaligo))) (deps high-order.ligo)) +(rule (targets id.ligo_ast) (action (with-stdout-to id.ligo_ast (run ligo print-ast id.ligo -s pascaligo))) (deps id.ligo)) +(rule (targets implicit_account.ligo_ast) (action (with-stdout-to implicit_account.ligo_ast (run ligo print-ast implicit_account.ligo -s pascaligo))) (deps implicit_account.ligo)) +(rule (targets included.ligo_ast) (action (with-stdout-to included.ligo_ast (run ligo print-ast included.ligo -s pascaligo))) (deps included.ligo)) +(rule (targets includer.ligo_ast) (action (with-stdout-to includer.ligo_ast (run ligo print-ast includer.ligo -s pascaligo))) (deps includer.ligo)) +(rule (targets isnat.ligo_ast) (action (with-stdout-to isnat.ligo_ast (run ligo print-ast isnat.ligo -s pascaligo))) (deps isnat.ligo)) +(rule (targets key_hash_comparable.ligo_ast) (action (with-stdout-to key_hash_comparable.ligo_ast (run ligo print-ast key_hash_comparable.ligo -s pascaligo))) (deps key_hash_comparable.ligo)) +(rule (targets key_hash.ligo_ast) (action (with-stdout-to key_hash.ligo_ast (run ligo print-ast key_hash.ligo -s pascaligo))) (deps key_hash.ligo)) +(rule (targets lambda.ligo_ast) (action (with-stdout-to lambda.ligo_ast (run ligo print-ast lambda.ligo -s pascaligo))) (deps lambda.ligo)) +(rule (targets list.ligo_ast) (action (with-stdout-to list.ligo_ast (run ligo print-ast list.ligo -s pascaligo))) (deps list.ligo)) +(rule (targets loop_bugs.ligo_ast) (action (with-stdout-to loop_bugs.ligo_ast (run ligo print-ast loop_bugs.ligo -s pascaligo))) (deps loop_bugs.ligo)) +(rule (targets loop.ligo_ast) (action (with-stdout-to loop.ligo_ast (run ligo print-ast loop.ligo -s pascaligo))) (deps loop.ligo)) +(rule (targets map.ligo_ast) (action (with-stdout-to map.ligo_ast (run ligo print-ast map.ligo -s pascaligo))) (deps map.ligo)) +(rule (targets match.ligo_ast) (action (with-stdout-to match.ligo_ast (run ligo print-ast match.ligo -s pascaligo))) (deps match.ligo)) +(rule (targets michelson_or_tree_intermediary.ligo_ast) (action (with-stdout-to michelson_or_tree_intermediary.ligo_ast (run ligo print-ast michelson_or_tree_intermediary.ligo -s pascaligo))) (deps michelson_or_tree_intermediary.ligo)) +(rule (targets michelson_or_tree.ligo_ast) (action (with-stdout-to michelson_or_tree.ligo_ast (run ligo print-ast michelson_or_tree.ligo -s pascaligo))) (deps michelson_or_tree.ligo)) +(rule (targets michelson_pair_tree_intermediary.ligo_ast) (action (with-stdout-to michelson_pair_tree_intermediary.ligo_ast (run ligo print-ast michelson_pair_tree_intermediary.ligo -s pascaligo))) (deps michelson_pair_tree_intermediary.ligo)) +(rule (targets michelson_pair_tree.ligo_ast) (action (with-stdout-to michelson_pair_tree.ligo_ast (run ligo print-ast michelson_pair_tree.ligo -s pascaligo))) (deps michelson_pair_tree.ligo)) +(rule (targets multiple-parameters.ligo_ast) (action (with-stdout-to multiple-parameters.ligo_ast (run ligo print-ast multiple-parameters.ligo -s pascaligo))) (deps multiple-parameters.ligo)) +(rule (targets multisig-v2.ligo_ast) (action (with-stdout-to multisig-v2.ligo_ast (run ligo print-ast multisig-v2.ligo -s pascaligo))) (deps multisig-v2.ligo)) +(rule (targets multisig.ligo_ast) (action (with-stdout-to multisig.ligo_ast (run ligo print-ast multisig.ligo -s pascaligo))) (deps multisig.ligo)) +(rule (targets option.ligo_ast) (action (with-stdout-to option.ligo_ast (run ligo print-ast option.ligo -s pascaligo))) (deps option.ligo)) +(rule (targets quote-declaration.ligo_ast) (action (with-stdout-to quote-declaration.ligo_ast (run ligo print-ast quote-declaration.ligo -s pascaligo))) (deps quote-declaration.ligo)) +(rule (targets quote-declarations.ligo_ast) (action (with-stdout-to quote-declarations.ligo_ast (run ligo print-ast quote-declarations.ligo -s pascaligo))) (deps quote-declarations.ligo)) +(rule (targets record.ligo_ast) (action (with-stdout-to record.ligo_ast (run ligo print-ast record.ligo -s pascaligo))) (deps record.ligo)) +(rule (targets recursion.ligo_ast) (action (with-stdout-to recursion.ligo_ast (run ligo print-ast recursion.ligo -s pascaligo))) (deps recursion.ligo)) +(rule (targets redeclaration.ligo_ast) (action (with-stdout-to redeclaration.ligo_ast (run ligo print-ast redeclaration.ligo -s pascaligo))) (deps redeclaration.ligo)) +(rule (targets replaceable_id.ligo_ast) (action (with-stdout-to replaceable_id.ligo_ast (run ligo print-ast replaceable_id.ligo -s pascaligo))) (deps replaceable_id.ligo)) +(rule (targets self_address.ligo_ast) (action (with-stdout-to self_address.ligo_ast (run ligo print-ast self_address.ligo -s pascaligo))) (deps self_address.ligo)) +(rule (targets self_type_annotation.ligo_ast) (action (with-stdout-to self_type_annotation.ligo_ast (run ligo print-ast self_type_annotation.ligo -s pascaligo))) (deps self_type_annotation.ligo)) +(rule (targets self_with_entrypoint.ligo_ast) (action (with-stdout-to self_with_entrypoint.ligo_ast (run ligo print-ast self_with_entrypoint.ligo -s pascaligo))) (deps self_with_entrypoint.ligo)) +(rule (targets self_without_entrypoint.ligo_ast) (action (with-stdout-to self_without_entrypoint.ligo_ast (run ligo print-ast self_without_entrypoint.ligo -s pascaligo))) (deps self_without_entrypoint.ligo)) +(rule (targets set_arithmetic-1.ligo_ast) (action (with-stdout-to set_arithmetic-1.ligo_ast (run ligo print-ast set_arithmetic-1.ligo -s pascaligo))) (deps set_arithmetic-1.ligo)) +(rule (targets set_arithmetic.ligo_ast) (action (with-stdout-to set_arithmetic.ligo_ast (run ligo print-ast set_arithmetic.ligo -s pascaligo))) (deps set_arithmetic.ligo)) +(rule (targets set_delegate.ligo_ast) (action (with-stdout-to set_delegate.ligo_ast (run ligo print-ast set_delegate.ligo -s pascaligo))) (deps set_delegate.ligo)) +(rule (targets shadow.ligo_ast) (action (with-stdout-to shadow.ligo_ast (run ligo print-ast shadow.ligo -s pascaligo))) (deps shadow.ligo)) +(rule (targets simple_access.ligo_ast) (action (with-stdout-to simple_access.ligo_ast (run ligo print-ast simple_access.ligo -s pascaligo))) (deps simple_access.ligo)) +(rule (targets string_arithmetic.ligo_ast) (action (with-stdout-to string_arithmetic.ligo_ast (run ligo print-ast string_arithmetic.ligo -s pascaligo))) (deps string_arithmetic.ligo)) +(rule (targets string.ligo_ast) (action (with-stdout-to string.ligo_ast (run ligo print-ast string.ligo -s pascaligo))) (deps string.ligo)) +(rule (targets super-counter.ligo_ast) (action (with-stdout-to super-counter.ligo_ast (run ligo print-ast super-counter.ligo -s pascaligo))) (deps super-counter.ligo)) +(rule (targets tez.ligo_ast) (action (with-stdout-to tez.ligo_ast (run ligo print-ast tez.ligo -s pascaligo))) (deps tez.ligo)) +(rule (targets time-lock.ligo_ast) (action (with-stdout-to time-lock.ligo_ast (run ligo print-ast time-lock.ligo -s pascaligo))) (deps time-lock.ligo)) +(rule (targets timestamp.ligo_ast) (action (with-stdout-to timestamp.ligo_ast (run ligo print-ast timestamp.ligo -s pascaligo))) (deps timestamp.ligo)) +(rule (targets toto.ligo_ast) (action (with-stdout-to toto.ligo_ast (run ligo print-ast toto.ligo -s pascaligo))) (deps toto.ligo)) +(rule (targets tuple.ligo_ast) (action (with-stdout-to tuple.ligo_ast (run ligo print-ast tuple.ligo -s pascaligo))) (deps tuple.ligo)) +(rule (targets type-alias.ligo_ast) (action (with-stdout-to type-alias.ligo_ast (run ligo print-ast type-alias.ligo -s pascaligo))) (deps type-alias.ligo)) +(rule (targets unit.ligo_ast) (action (with-stdout-to unit.ligo_ast (run ligo print-ast unit.ligo -s pascaligo))) (deps unit.ligo)) +(rule (targets variant-matching.ligo_ast) (action (with-stdout-to variant-matching.ligo_ast (run ligo print-ast variant-matching.ligo -s pascaligo))) (deps variant-matching.ligo)) +(rule (targets variant.ligo_ast) (action (with-stdout-to variant.ligo_ast (run ligo print-ast variant.ligo -s pascaligo))) (deps variant.ligo)) +(rule (targets website1.ligo_ast) (action (with-stdout-to website1.ligo_ast (run ligo print-ast website1.ligo -s pascaligo))) (deps website1.ligo)) +(rule (targets website2.ligo_ast) (action (with-stdout-to website2.ligo_ast (run ligo print-ast website2.ligo -s pascaligo))) (deps website2.ligo)) - +;; reasonligo (rule (targets address.religo_ast_pretty) (action (with-stdout-to address.religo_ast_pretty (run ligo print-ast address.religo_output -s reasonligo))) (deps address.religo_output)) (rule (targets amount.religo_ast_pretty) (action (with-stdout-to amount.religo_ast_pretty (run ligo print-ast amount.religo_output -s reasonligo))) (deps amount.religo_output)) (rule (targets arithmetic.religo_ast_pretty) (action (with-stdout-to arithmetic.religo_ast_pretty (run ligo print-ast arithmetic.religo_output -s reasonligo))) (deps arithmetic.religo_output)) @@ -604,6 +1197,7 @@ (rule (targets variant.religo_ast_pretty) (action (with-stdout-to variant.religo_ast_pretty (run ligo print-ast variant.religo_output -s reasonligo))) (deps variant.religo_output)) (rule (targets website2.religo_ast_pretty) (action (with-stdout-to website2.religo_ast_pretty (run ligo print-ast website2.religo_output -s reasonligo))) (deps website2.religo_output)) +;; cameligo (rule (targets assert.mligo_ast_pretty) (action (with-stdout-to assert.mligo_ast_pretty (run ligo print-ast assert.mligo_output -s cameligo))) (deps assert.mligo_output)) (rule (targets address.mligo_ast_pretty) (action (with-stdout-to address.mligo_ast_pretty (run ligo print-ast address.mligo_output -s cameligo))) (deps address.mligo_output)) (rule (targets amount_lambda.mligo_ast_pretty) (action (with-stdout-to amount_lambda.mligo_ast_pretty (run ligo print-ast amount_lambda.mligo_output -s cameligo))) (deps amount_lambda.mligo_output)) @@ -638,7 +1232,106 @@ (rule (targets fibo4.mligo_ast_pretty) (action (with-stdout-to fibo4.mligo_ast_pretty (run ligo print-ast fibo4.mligo_output -s cameligo))) (deps fibo4.mligo_output)) (rule (targets function-shared.mligo_ast_pretty) (action (with-stdout-to function-shared.mligo_ast_pretty (run ligo print-ast function-shared.mligo_output -s cameligo))) (deps function-shared.mligo_output)) (rule (targets guess_string.mligo_ast_pretty) (action (with-stdout-to guess_string.mligo_ast_pretty (run ligo print-ast guess_string.mligo_output -s cameligo))) (deps guess_string.mligo_output)) +;; pascaligo +(rule (targets address.ligo_ast_pretty) (action (with-stdout-to address.ligo_ast_pretty (run ligo print-ast address.ligo_output -s pascaligo))) (deps address.ligo_output)) +(rule (targets amount.ligo_ast_pretty) (action (with-stdout-to amount.ligo_ast_pretty (run ligo print-ast amount.ligo_output -s pascaligo))) (deps amount.ligo_output)) +(rule (targets annotation.ligo_ast_pretty) (action (with-stdout-to annotation.ligo_ast_pretty (run ligo print-ast annotation.ligo_output -s pascaligo))) (deps annotation.ligo_output)) +(rule (targets application.ligo_ast_pretty) (action (with-stdout-to application.ligo_ast_pretty (run ligo print-ast application.ligo_output -s pascaligo))) (deps application.ligo_output)) +(rule (targets arithmetic.ligo_ast_pretty) (action (with-stdout-to arithmetic.ligo_ast_pretty (run ligo print-ast arithmetic.ligo_output -s pascaligo))) (deps arithmetic.ligo_output)) +(rule (targets assign.ligo_ast_pretty) (action (with-stdout-to assign.ligo_ast_pretty (run ligo print-ast assign.ligo_output -s pascaligo))) (deps assign.ligo_output)) +(rule (targets attributes.ligo_ast_pretty) (action (with-stdout-to attributes.ligo_ast_pretty (run ligo print-ast attributes.ligo_output -s pascaligo))) (deps attributes.ligo_output)) +(rule (targets bad_timestamp.ligo_ast_pretty) (action (with-stdout-to bad_timestamp.ligo_ast_pretty (run ligo print-ast bad_timestamp.ligo_output -s pascaligo))) (deps bad_timestamp.ligo_output)) +(rule (targets bad_type_operator.ligo_ast_pretty) (action (with-stdout-to bad_type_operator.ligo_ast_pretty (run ligo print-ast bad_type_operator.ligo_output -s pascaligo))) (deps bad_type_operator.ligo_output)) +(rule (targets balance_constant.ligo_ast_pretty) (action (with-stdout-to balance_constant.ligo_ast_pretty (run ligo print-ast balance_constant.ligo_output -s pascaligo))) (deps balance_constant.ligo_output)) +(rule (targets big_map.ligo_ast_pretty) (action (with-stdout-to big_map.ligo_ast_pretty (run ligo print-ast big_map.ligo_output -s pascaligo))) (deps big_map.ligo_output)) +(rule (targets bitwise_arithmetic.ligo_ast_pretty) (action (with-stdout-to bitwise_arithmetic.ligo_ast_pretty (run ligo print-ast bitwise_arithmetic.ligo_output -s pascaligo))) (deps bitwise_arithmetic.ligo_output)) +(rule (targets blockless.ligo_ast_pretty) (action (with-stdout-to blockless.ligo_ast_pretty (run ligo print-ast blockless.ligo_output -s pascaligo))) (deps blockless.ligo_output)) +(rule (targets boolean_operators.ligo_ast_pretty) (action (with-stdout-to boolean_operators.ligo_ast_pretty (run ligo print-ast boolean_operators.ligo_output -s pascaligo))) (deps boolean_operators.ligo_output)) +(rule (targets bytes_arithmetic.ligo_ast_pretty) (action (with-stdout-to bytes_arithmetic.ligo_ast_pretty (run ligo print-ast bytes_arithmetic.ligo_output -s pascaligo))) (deps bytes_arithmetic.ligo_output)) +(rule (targets bytes_unpack.ligo_ast_pretty) (action (with-stdout-to bytes_unpack.ligo_ast_pretty (run ligo print-ast bytes_unpack.ligo_output -s pascaligo))) (deps bytes_unpack.ligo_output)) +(rule (targets chain_id.ligo_ast_pretty) (action (with-stdout-to chain_id.ligo_ast_pretty (run ligo print-ast chain_id.ligo_output -s pascaligo))) (deps chain_id.ligo_output)) +(rule (targets check_signature.ligo_ast_pretty) (action (with-stdout-to check_signature.ligo_ast_pretty (run ligo print-ast check_signature.ligo_output -s pascaligo))) (deps check_signature.ligo_output)) +(rule (targets closure-1.ligo_ast_pretty) (action (with-stdout-to closure-1.ligo_ast_pretty (run ligo print-ast closure-1.ligo_output -s pascaligo))) (deps closure-1.ligo_output)) +(rule (targets closure-2.ligo_ast_pretty) (action (with-stdout-to closure-2.ligo_ast_pretty (run ligo print-ast closure-2.ligo_output -s pascaligo))) (deps closure-2.ligo_output)) +(rule (targets closure-3.ligo_ast_pretty) (action (with-stdout-to closure-3.ligo_ast_pretty (run ligo print-ast closure-3.ligo_output -s pascaligo))) (deps closure-3.ligo_output)) +(rule (targets closure.ligo_ast_pretty) (action (with-stdout-to closure.ligo_ast_pretty (run ligo print-ast closure.ligo_output -s pascaligo))) (deps closure.ligo_output)) +(rule (targets coase.ligo_ast_pretty) (action (with-stdout-to coase.ligo_ast_pretty (run ligo print-ast coase.ligo_output -s pascaligo))) (deps coase.ligo_output)) +(rule (targets condition-simple.ligo_ast_pretty) (action (with-stdout-to condition-simple.ligo_ast_pretty (run ligo print-ast condition-simple.ligo_output -s pascaligo))) (deps condition-simple.ligo_output)) +(rule (targets condition.ligo_ast_pretty) (action (with-stdout-to condition.ligo_ast_pretty (run ligo print-ast condition.ligo_output -s pascaligo))) (deps condition.ligo_output)) +(rule (targets counter.ligo_ast_pretty) (action (with-stdout-to counter.ligo_ast_pretty (run ligo print-ast counter.ligo_output -s pascaligo))) (deps counter.ligo_output)) +(rule (targets crypto.ligo_ast_pretty) (action (with-stdout-to crypto.ligo_ast_pretty (run ligo print-ast crypto.ligo_output -s pascaligo))) (deps crypto.ligo_output)) +(rule (targets declaration-local.ligo_ast_pretty) (action (with-stdout-to declaration-local.ligo_ast_pretty (run ligo print-ast declaration-local.ligo_output -s pascaligo))) (deps declaration-local.ligo_output)) +(rule (targets declarations.ligo_ast_pretty) (action (with-stdout-to declarations.ligo_ast_pretty (run ligo print-ast declarations.ligo_output -s pascaligo))) (deps declarations.ligo_output)) +(rule (targets deep_access.ligo_ast_pretty) (action (with-stdout-to deep_access.ligo_ast_pretty (run ligo print-ast deep_access.ligo_output -s pascaligo))) (deps deep_access.ligo_output)) +(rule (targets dispatch-counter.ligo_ast_pretty) (action (with-stdout-to dispatch-counter.ligo_ast_pretty (run ligo print-ast dispatch-counter.ligo_output -s pascaligo))) (deps dispatch-counter.ligo_output)) +(rule (targets double_main.ligo_ast_pretty) (action (with-stdout-to double_main.ligo_ast_pretty (run ligo print-ast double_main.ligo_output -s pascaligo))) (deps double_main.ligo_output)) +(rule (targets double_michelson_or.ligo_ast_pretty) (action (with-stdout-to double_michelson_or.ligo_ast_pretty (run ligo print-ast double_michelson_or.ligo_output -s pascaligo))) (deps double_michelson_or.ligo_output)) +(rule (targets empty_case.ligo_ast_pretty) (action (with-stdout-to empty_case.ligo_ast_pretty (run ligo print-ast empty_case.ligo_output -s pascaligo))) (deps empty_case.ligo_output)) +(rule (targets entrypoints.ligo_ast_pretty) (action (with-stdout-to entrypoints.ligo_ast_pretty (run ligo print-ast entrypoints.ligo_output -s pascaligo))) (deps entrypoints.ligo_output)) +(rule (targets eq_bool.ligo_ast_pretty) (action (with-stdout-to eq_bool.ligo_ast_pretty (run ligo print-ast eq_bool.ligo_output -s pascaligo))) (deps eq_bool.ligo_output)) +(rule (targets evaluation_tests.ligo_ast_pretty) (action (with-stdout-to evaluation_tests.ligo_ast_pretty (run ligo print-ast evaluation_tests.ligo_output -s pascaligo))) (deps evaluation_tests.ligo_output)) +(rule (targets FA1.2.ligo_ast_pretty) (action (with-stdout-to FA1.2.ligo_ast_pretty (run ligo print-ast FA1.2.ligo_output -s pascaligo))) (deps FA1.2.ligo_output)) +(rule (targets failwith.ligo_ast_pretty) (action (with-stdout-to failwith.ligo_ast_pretty (run ligo print-ast failwith.ligo_output -s pascaligo))) (deps failwith.ligo_output)) +(rule (targets for_fail.ligo_ast_pretty) (action (with-stdout-to for_fail.ligo_ast_pretty (run ligo print-ast for_fail.ligo_output -s pascaligo))) (deps for_fail.ligo_output)) +(rule (targets function-anon.ligo_ast_pretty) (action (with-stdout-to function-anon.ligo_ast_pretty (run ligo print-ast function-anon.ligo_output -s pascaligo))) (deps function-anon.ligo_output)) +(rule (targets function-complex.ligo_ast_pretty) (action (with-stdout-to function-complex.ligo_ast_pretty (run ligo print-ast function-complex.ligo_output -s pascaligo))) (deps function-complex.ligo_output)) +(rule (targets function-shared.ligo_ast_pretty) (action (with-stdout-to function-shared.ligo_ast_pretty (run ligo print-ast function-shared.ligo_output -s pascaligo))) (deps function-shared.ligo_output)) +(rule (targets function.ligo_ast_pretty) (action (with-stdout-to function.ligo_ast_pretty (run ligo print-ast function.ligo_output -s pascaligo))) (deps function.ligo_output)) +(rule (targets get_contract.ligo_ast_pretty) (action (with-stdout-to get_contract.ligo_ast_pretty (run ligo print-ast get_contract.ligo_output -s pascaligo))) (deps get_contract.ligo_output)) +(rule (targets high-order.ligo_ast_pretty) (action (with-stdout-to high-order.ligo_ast_pretty (run ligo print-ast high-order.ligo_output -s pascaligo))) (deps high-order.ligo_output)) +(rule (targets id.ligo_ast_pretty) (action (with-stdout-to id.ligo_ast_pretty (run ligo print-ast id.ligo_output -s pascaligo))) (deps id.ligo_output)) +(rule (targets implicit_account.ligo_ast_pretty) (action (with-stdout-to implicit_account.ligo_ast_pretty (run ligo print-ast implicit_account.ligo_output -s pascaligo))) (deps implicit_account.ligo_output)) +(rule (targets included.ligo_ast_pretty) (action (with-stdout-to included.ligo_ast_pretty (run ligo print-ast included.ligo_output -s pascaligo))) (deps included.ligo_output)) +(rule (targets includer.ligo_ast_pretty) (action (with-stdout-to includer.ligo_ast_pretty (run ligo print-ast includer.ligo_output -s pascaligo))) (deps includer.ligo_output)) +(rule (targets isnat.ligo_ast_pretty) (action (with-stdout-to isnat.ligo_ast_pretty (run ligo print-ast isnat.ligo_output -s pascaligo))) (deps isnat.ligo_output)) +(rule (targets key_hash_comparable.ligo_ast_pretty) (action (with-stdout-to key_hash_comparable.ligo_ast_pretty (run ligo print-ast key_hash_comparable.ligo_output -s pascaligo))) (deps key_hash_comparable.ligo_output)) +(rule (targets key_hash.ligo_ast_pretty) (action (with-stdout-to key_hash.ligo_ast_pretty (run ligo print-ast key_hash.ligo_output -s pascaligo))) (deps key_hash.ligo_output)) +(rule (targets lambda.ligo_ast_pretty) (action (with-stdout-to lambda.ligo_ast_pretty (run ligo print-ast lambda.ligo_output -s pascaligo))) (deps lambda.ligo_output)) +(rule (targets list.ligo_ast_pretty) (action (with-stdout-to list.ligo_ast_pretty (run ligo print-ast list.ligo_output -s pascaligo))) (deps list.ligo_output)) +(rule (targets loop_bugs.ligo_ast_pretty) (action (with-stdout-to loop_bugs.ligo_ast_pretty (run ligo print-ast loop_bugs.ligo_output -s pascaligo))) (deps loop_bugs.ligo_output)) +(rule (targets loop.ligo_ast_pretty) (action (with-stdout-to loop.ligo_ast_pretty (run ligo print-ast loop.ligo_output -s pascaligo))) (deps loop.ligo_output)) +(rule (targets map.ligo_ast_pretty) (action (with-stdout-to map.ligo_ast_pretty (run ligo print-ast map.ligo_output -s pascaligo))) (deps map.ligo_output)) +(rule (targets match.ligo_ast_pretty) (action (with-stdout-to match.ligo_ast_pretty (run ligo print-ast match.ligo_output -s pascaligo))) (deps match.ligo_output)) +(rule (targets michelson_or_tree_intermediary.ligo_ast_pretty) (action (with-stdout-to michelson_or_tree_intermediary.ligo_ast_pretty (run ligo print-ast michelson_or_tree_intermediary.ligo_output -s pascaligo))) (deps michelson_or_tree_intermediary.ligo_output)) +(rule (targets michelson_or_tree.ligo_ast_pretty) (action (with-stdout-to michelson_or_tree.ligo_ast_pretty (run ligo print-ast michelson_or_tree.ligo_output -s pascaligo))) (deps michelson_or_tree.ligo_output)) +(rule (targets michelson_pair_tree_intermediary.ligo_ast_pretty) (action (with-stdout-to michelson_pair_tree_intermediary.ligo_ast_pretty (run ligo print-ast michelson_pair_tree_intermediary.ligo_output -s pascaligo))) (deps michelson_pair_tree_intermediary.ligo_output)) +(rule (targets michelson_pair_tree.ligo_ast_pretty) (action (with-stdout-to michelson_pair_tree.ligo_ast_pretty (run ligo print-ast michelson_pair_tree.ligo_output -s pascaligo))) (deps michelson_pair_tree.ligo_output)) +(rule (targets multiple-parameters.ligo_ast_pretty) (action (with-stdout-to multiple-parameters.ligo_ast_pretty (run ligo print-ast multiple-parameters.ligo_output -s pascaligo))) (deps multiple-parameters.ligo_output)) +(rule (targets multisig-v2.ligo_ast_pretty) (action (with-stdout-to multisig-v2.ligo_ast_pretty (run ligo print-ast multisig-v2.ligo_output -s pascaligo))) (deps multisig-v2.ligo_output)) +(rule (targets multisig.ligo_ast_pretty) (action (with-stdout-to multisig.ligo_ast_pretty (run ligo print-ast multisig.ligo_output -s pascaligo))) (deps multisig.ligo_output)) +(rule (targets option.ligo_ast_pretty) (action (with-stdout-to option.ligo_ast_pretty (run ligo print-ast option.ligo_output -s pascaligo))) (deps option.ligo_output)) +(rule (targets quote-declaration.ligo_ast_pretty) (action (with-stdout-to quote-declaration.ligo_ast_pretty (run ligo print-ast quote-declaration.ligo_output -s pascaligo))) (deps quote-declaration.ligo_output)) +(rule (targets quote-declarations.ligo_ast_pretty) (action (with-stdout-to quote-declarations.ligo_ast_pretty (run ligo print-ast quote-declarations.ligo_output -s pascaligo))) (deps quote-declarations.ligo_output)) +(rule (targets record.ligo_ast_pretty) (action (with-stdout-to record.ligo_ast_pretty (run ligo print-ast record.ligo_output -s pascaligo))) (deps record.ligo_output)) +(rule (targets recursion.ligo_ast_pretty) (action (with-stdout-to recursion.ligo_ast_pretty (run ligo print-ast recursion.ligo_output -s pascaligo))) (deps recursion.ligo_output)) +(rule (targets redeclaration.ligo_ast_pretty) (action (with-stdout-to redeclaration.ligo_ast_pretty (run ligo print-ast redeclaration.ligo_output -s pascaligo))) (deps redeclaration.ligo_output)) +(rule (targets replaceable_id.ligo_ast_pretty) (action (with-stdout-to replaceable_id.ligo_ast_pretty (run ligo print-ast replaceable_id.ligo_output -s pascaligo))) (deps replaceable_id.ligo_output)) +(rule (targets self_address.ligo_ast_pretty) (action (with-stdout-to self_address.ligo_ast_pretty (run ligo print-ast self_address.ligo_output -s pascaligo))) (deps self_address.ligo_output)) +(rule (targets self_type_annotation.ligo_ast_pretty) (action (with-stdout-to self_type_annotation.ligo_ast_pretty (run ligo print-ast self_type_annotation.ligo_output -s pascaligo))) (deps self_type_annotation.ligo_output)) +(rule (targets self_with_entrypoint.ligo_ast_pretty) (action (with-stdout-to self_with_entrypoint.ligo_ast_pretty (run ligo print-ast self_with_entrypoint.ligo_output -s pascaligo))) (deps self_with_entrypoint.ligo_output)) +(rule (targets self_without_entrypoint.ligo_ast_pretty) (action (with-stdout-to self_without_entrypoint.ligo_ast_pretty (run ligo print-ast self_without_entrypoint.ligo_output -s pascaligo))) (deps self_without_entrypoint.ligo_output)) +(rule (targets set_arithmetic-1.ligo_ast_pretty) (action (with-stdout-to set_arithmetic-1.ligo_ast_pretty (run ligo print-ast set_arithmetic-1.ligo_output -s pascaligo))) (deps set_arithmetic-1.ligo_output)) +(rule (targets set_arithmetic.ligo_ast_pretty) (action (with-stdout-to set_arithmetic.ligo_ast_pretty (run ligo print-ast set_arithmetic.ligo_output -s pascaligo))) (deps set_arithmetic.ligo_output)) +(rule (targets set_delegate.ligo_ast_pretty) (action (with-stdout-to set_delegate.ligo_ast_pretty (run ligo print-ast set_delegate.ligo_output -s pascaligo))) (deps set_delegate.ligo_output)) +(rule (targets shadow.ligo_ast_pretty) (action (with-stdout-to shadow.ligo_ast_pretty (run ligo print-ast shadow.ligo_output -s pascaligo))) (deps shadow.ligo_output)) +(rule (targets simple_access.ligo_ast_pretty) (action (with-stdout-to simple_access.ligo_ast_pretty (run ligo print-ast simple_access.ligo_output -s pascaligo))) (deps simple_access.ligo_output)) +(rule (targets string_arithmetic.ligo_ast_pretty) (action (with-stdout-to string_arithmetic.ligo_ast_pretty (run ligo print-ast string_arithmetic.ligo_output -s pascaligo))) (deps string_arithmetic.ligo_output)) +(rule (targets string.ligo_ast_pretty) (action (with-stdout-to string.ligo_ast_pretty (run ligo print-ast string.ligo_output -s pascaligo))) (deps string.ligo_output)) +(rule (targets super-counter.ligo_ast_pretty) (action (with-stdout-to super-counter.ligo_ast_pretty (run ligo print-ast super-counter.ligo_output -s pascaligo))) (deps super-counter.ligo_output)) +(rule (targets tez.ligo_ast_pretty) (action (with-stdout-to tez.ligo_ast_pretty (run ligo print-ast tez.ligo_output -s pascaligo))) (deps tez.ligo_output)) +(rule (targets time-lock.ligo_ast_pretty) (action (with-stdout-to time-lock.ligo_ast_pretty (run ligo print-ast time-lock.ligo_output -s pascaligo))) (deps time-lock.ligo_output)) +(rule (targets timestamp.ligo_ast_pretty) (action (with-stdout-to timestamp.ligo_ast_pretty (run ligo print-ast timestamp.ligo_output -s pascaligo))) (deps timestamp.ligo_output)) +(rule (targets toto.ligo_ast_pretty) (action (with-stdout-to toto.ligo_ast_pretty (run ligo print-ast toto.ligo_output -s pascaligo))) (deps toto.ligo_output)) +(rule (targets tuple.ligo_ast_pretty) (action (with-stdout-to tuple.ligo_ast_pretty (run ligo print-ast tuple.ligo_output -s pascaligo))) (deps tuple.ligo_output)) +(rule (targets type-alias.ligo_ast_pretty) (action (with-stdout-to type-alias.ligo_ast_pretty (run ligo print-ast type-alias.ligo_output -s pascaligo))) (deps type-alias.ligo_output)) +(rule (targets unit.ligo_ast_pretty) (action (with-stdout-to unit.ligo_ast_pretty (run ligo print-ast unit.ligo_output -s pascaligo))) (deps unit.ligo_output)) +(rule (targets variant-matching.ligo_ast_pretty) (action (with-stdout-to variant-matching.ligo_ast_pretty (run ligo print-ast variant-matching.ligo_output -s pascaligo))) (deps variant-matching.ligo_output)) +(rule (targets variant.ligo_ast_pretty) (action (with-stdout-to variant.ligo_ast_pretty (run ligo print-ast variant.ligo_output -s pascaligo))) (deps variant.ligo_output)) +(rule (targets website1.ligo_ast_pretty) (action (with-stdout-to website1.ligo_ast_pretty (run ligo print-ast website1.ligo_output -s pascaligo))) (deps website1.ligo_output)) +(rule (targets website2.ligo_ast_pretty) (action (with-stdout-to website2.ligo_ast_pretty (run ligo print-ast website2.ligo_output -s pascaligo))) (deps website2.ligo_output)) + +;; reasonligo (alias (name runtest) (action (diff address.religo_ast address.religo_ast_pretty)) (deps address.religo_ast address.religo_ast_pretty)) (alias (name runtest) (action (diff amount.religo_ast amount.religo_ast_pretty)) (deps amount.religo_ast amount.religo_ast_pretty)) (alias (name runtest) (action (diff arithmetic.religo_ast arithmetic.religo_ast_pretty)) (deps arithmetic.religo_ast arithmetic.religo_ast_pretty)) @@ -691,7 +1384,7 @@ (alias (name runtest) (action (diff tuples_sequences_functions.religo_ast tuples_sequences_functions.religo_ast_pretty)) (deps tuples_sequences_functions.religo_ast tuples_sequences_functions.religo_ast_pretty)) (alias (name runtest) (action (diff variant.religo_ast variant.religo_ast_pretty)) (deps variant.religo_ast variant.religo_ast_pretty)) (alias (name runtest) (action (diff website2.religo_ast website2.religo_ast_pretty)) (deps website2.religo_ast website2.religo_ast_pretty)) - +;; cameligo (alias (name runtest) (action (diff assert.mligo_ast assert.mligo_ast_pretty)) (deps assert.mligo_ast assert.mligo_ast_pretty)) (alias (name runtest) (action (diff address.mligo_ast address.mligo_ast_pretty)) (deps address.mligo_ast address.mligo_ast_pretty)) (alias (name runtest) (action (diff amount_lambda.mligo_ast amount_lambda.mligo_ast_pretty)) (deps amount_lambda.mligo_ast amount_lambda.mligo_ast_pretty)) @@ -725,4 +1418,101 @@ (alias (name runtest) (action (diff fibo3.mligo_ast fibo3.mligo_ast_pretty)) (deps fibo3.mligo_ast fibo3.mligo_ast_pretty)) (alias (name runtest) (action (diff fibo4.mligo_ast fibo4.mligo_ast_pretty)) (deps fibo4.mligo_ast fibo4.mligo_ast_pretty)) (alias (name runtest) (action (diff function-shared.mligo_ast function-shared.mligo_ast_pretty)) (deps function-shared.mligo_ast function-shared.mligo_ast_pretty)) -(alias (name runtest) (action (diff guess_string.mligo_ast guess_string.mligo_ast_pretty)) (deps guess_string.mligo_ast guess_string.mligo_ast_pretty)) \ No newline at end of file +(alias (name runtest) (action (diff guess_string.mligo_ast guess_string.mligo_ast_pretty)) (deps guess_string.mligo_ast guess_string.mligo_ast_pretty)) +;; pascaligo +(alias (name runtest) (action (diff address.ligo_ast address.ligo_ast_pretty)) (deps address.ligo_ast address.ligo_ast_pretty)) +(alias (name runtest) (action (diff amount.ligo_ast amount.ligo_ast_pretty)) (deps amount.ligo_ast amount.ligo_ast_pretty)) +(alias (name runtest) (action (diff annotation.ligo_ast annotation.ligo_ast_pretty)) (deps annotation.ligo_ast annotation.ligo_ast_pretty)) +(alias (name runtest) (action (diff application.ligo_ast application.ligo_ast_pretty)) (deps application.ligo_ast application.ligo_ast_pretty)) +(alias (name runtest) (action (diff arithmetic.ligo_ast arithmetic.ligo_ast_pretty)) (deps arithmetic.ligo_ast arithmetic.ligo_ast_pretty)) +(alias (name runtest) (action (diff assign.ligo_ast assign.ligo_ast_pretty)) (deps assign.ligo_ast assign.ligo_ast_pretty)) +(alias (name runtest) (action (diff attributes.ligo_ast attributes.ligo_ast_pretty)) (deps attributes.ligo_ast attributes.ligo_ast_pretty)) +(alias (name runtest) (action (diff bad_timestamp.ligo_ast bad_timestamp.ligo_ast_pretty)) (deps bad_timestamp.ligo_ast bad_timestamp.ligo_ast_pretty)) +(alias (name runtest) (action (diff bad_type_operator.ligo_ast bad_type_operator.ligo_ast_pretty)) (deps bad_type_operator.ligo_ast bad_type_operator.ligo_ast_pretty)) +(alias (name runtest) (action (diff balance_constant.ligo_ast balance_constant.ligo_ast_pretty)) (deps balance_constant.ligo_ast balance_constant.ligo_ast_pretty)) +(alias (name runtest) (action (diff big_map.ligo_ast big_map.ligo_ast_pretty)) (deps big_map.ligo_ast big_map.ligo_ast_pretty)) +(alias (name runtest) (action (diff bitwise_arithmetic.ligo_ast bitwise_arithmetic.ligo_ast_pretty)) (deps bitwise_arithmetic.ligo_ast bitwise_arithmetic.ligo_ast_pretty)) +(alias (name runtest) (action (diff blockless.ligo_ast blockless.ligo_ast_pretty)) (deps blockless.ligo_ast blockless.ligo_ast_pretty)) +(alias (name runtest) (action (diff boolean_operators.ligo_ast boolean_operators.ligo_ast_pretty)) (deps boolean_operators.ligo_ast boolean_operators.ligo_ast_pretty)) +(alias (name runtest) (action (diff bytes_arithmetic.ligo_ast bytes_arithmetic.ligo_ast_pretty)) (deps bytes_arithmetic.ligo_ast bytes_arithmetic.ligo_ast_pretty)) +(alias (name runtest) (action (diff bytes_unpack.ligo_ast bytes_unpack.ligo_ast_pretty)) (deps bytes_unpack.ligo_ast bytes_unpack.ligo_ast_pretty)) +(alias (name runtest) (action (diff chain_id.ligo_ast chain_id.ligo_ast_pretty)) (deps chain_id.ligo_ast chain_id.ligo_ast_pretty)) +(alias (name runtest) (action (diff check_signature.ligo_ast check_signature.ligo_ast_pretty)) (deps check_signature.ligo_ast check_signature.ligo_ast_pretty)) +(alias (name runtest) (action (diff closure-1.ligo_ast closure-1.ligo_ast_pretty)) (deps closure-1.ligo_ast closure-1.ligo_ast_pretty)) +(alias (name runtest) (action (diff closure-2.ligo_ast closure-2.ligo_ast_pretty)) (deps closure-2.ligo_ast closure-2.ligo_ast_pretty)) +(alias (name runtest) (action (diff closure-3.ligo_ast closure-3.ligo_ast_pretty)) (deps closure-3.ligo_ast closure-3.ligo_ast_pretty)) +(alias (name runtest) (action (diff closure.ligo_ast closure.ligo_ast_pretty)) (deps closure.ligo_ast closure.ligo_ast_pretty)) +(alias (name runtest) (action (diff coase.ligo_ast coase.ligo_ast_pretty)) (deps coase.ligo_ast coase.ligo_ast_pretty)) +(alias (name runtest) (action (diff condition-simple.ligo_ast condition-simple.ligo_ast_pretty)) (deps condition-simple.ligo_ast condition-simple.ligo_ast_pretty)) +(alias (name runtest) (action (diff condition.ligo_ast condition.ligo_ast_pretty)) (deps condition.ligo_ast condition.ligo_ast_pretty)) +(alias (name runtest) (action (diff counter.ligo_ast counter.ligo_ast_pretty)) (deps counter.ligo_ast counter.ligo_ast_pretty)) +(alias (name runtest) (action (diff crypto.ligo_ast crypto.ligo_ast_pretty)) (deps crypto.ligo_ast crypto.ligo_ast_pretty)) +(alias (name runtest) (action (diff declaration-local.ligo_ast declaration-local.ligo_ast_pretty)) (deps declaration-local.ligo_ast declaration-local.ligo_ast_pretty)) +(alias (name runtest) (action (diff declarations.ligo_ast declarations.ligo_ast_pretty)) (deps declarations.ligo_ast declarations.ligo_ast_pretty)) +(alias (name runtest) (action (diff deep_access.ligo_ast deep_access.ligo_ast_pretty)) (deps deep_access.ligo_ast deep_access.ligo_ast_pretty)) +(alias (name runtest) (action (diff dispatch-counter.ligo_ast dispatch-counter.ligo_ast_pretty)) (deps dispatch-counter.ligo_ast dispatch-counter.ligo_ast_pretty)) +(alias (name runtest) (action (diff double_main.ligo_ast double_main.ligo_ast_pretty)) (deps double_main.ligo_ast double_main.ligo_ast_pretty)) +(alias (name runtest) (action (diff double_michelson_or.ligo_ast double_michelson_or.ligo_ast_pretty)) (deps double_michelson_or.ligo_ast double_michelson_or.ligo_ast_pretty)) +(alias (name runtest) (action (diff empty_case.ligo_ast empty_case.ligo_ast_pretty)) (deps empty_case.ligo_ast empty_case.ligo_ast_pretty)) +(alias (name runtest) (action (diff entrypoints.ligo_ast entrypoints.ligo_ast_pretty)) (deps entrypoints.ligo_ast entrypoints.ligo_ast_pretty)) +(alias (name runtest) (action (diff eq_bool.ligo_ast eq_bool.ligo_ast_pretty)) (deps eq_bool.ligo_ast eq_bool.ligo_ast_pretty)) +(alias (name runtest) (action (diff evaluation_tests.ligo_ast evaluation_tests.ligo_ast_pretty)) (deps evaluation_tests.ligo_ast evaluation_tests.ligo_ast_pretty)) +(alias (name runtest) (action (diff FA1.2.ligo_ast FA1.2.ligo_ast_pretty)) (deps FA1.2.ligo_ast FA1.2.ligo_ast_pretty)) +(alias (name runtest) (action (diff failwith.ligo_ast failwith.ligo_ast_pretty)) (deps failwith.ligo_ast failwith.ligo_ast_pretty)) +(alias (name runtest) (action (diff for_fail.ligo_ast for_fail.ligo_ast_pretty)) (deps for_fail.ligo_ast for_fail.ligo_ast_pretty)) +(alias (name runtest) (action (diff function-anon.ligo_ast function-anon.ligo_ast_pretty)) (deps function-anon.ligo_ast function-anon.ligo_ast_pretty)) +(alias (name runtest) (action (diff function-complex.ligo_ast function-complex.ligo_ast_pretty)) (deps function-complex.ligo_ast function-complex.ligo_ast_pretty)) +(alias (name runtest) (action (diff function-shared.ligo_ast function-shared.ligo_ast_pretty)) (deps function-shared.ligo_ast function-shared.ligo_ast_pretty)) +(alias (name runtest) (action (diff function.ligo_ast function.ligo_ast_pretty)) (deps function.ligo_ast function.ligo_ast_pretty)) +(alias (name runtest) (action (diff get_contract.ligo_ast get_contract.ligo_ast_pretty)) (deps get_contract.ligo_ast get_contract.ligo_ast_pretty)) +(alias (name runtest) (action (diff high-order.ligo_ast high-order.ligo_ast_pretty)) (deps high-order.ligo_ast high-order.ligo_ast_pretty)) +(alias (name runtest) (action (diff id.ligo_ast id.ligo_ast_pretty)) (deps id.ligo_ast id.ligo_ast_pretty)) +(alias (name runtest) (action (diff implicit_account.ligo_ast implicit_account.ligo_ast_pretty)) (deps implicit_account.ligo_ast implicit_account.ligo_ast_pretty)) +(alias (name runtest) (action (diff included.ligo_ast included.ligo_ast_pretty)) (deps included.ligo_ast included.ligo_ast_pretty)) +(alias (name runtest) (action (diff includer.ligo_ast includer.ligo_ast_pretty)) (deps includer.ligo_ast includer.ligo_ast_pretty)) +(alias (name runtest) (action (diff isnat.ligo_ast isnat.ligo_ast_pretty)) (deps isnat.ligo_ast isnat.ligo_ast_pretty)) +(alias (name runtest) (action (diff key_hash_comparable.ligo_ast key_hash_comparable.ligo_ast_pretty)) (deps key_hash_comparable.ligo_ast key_hash_comparable.ligo_ast_pretty)) +(alias (name runtest) (action (diff key_hash.ligo_ast key_hash.ligo_ast_pretty)) (deps key_hash.ligo_ast key_hash.ligo_ast_pretty)) +(alias (name runtest) (action (diff lambda.ligo_ast lambda.ligo_ast_pretty)) (deps lambda.ligo_ast lambda.ligo_ast_pretty)) +(alias (name runtest) (action (diff list.ligo_ast list.ligo_ast_pretty)) (deps list.ligo_ast list.ligo_ast_pretty)) +(alias (name runtest) (action (diff loop_bugs.ligo_ast loop_bugs.ligo_ast_pretty)) (deps loop_bugs.ligo_ast loop_bugs.ligo_ast_pretty)) +(alias (name runtest) (action (diff loop.ligo_ast loop.ligo_ast_pretty)) (deps loop.ligo_ast loop.ligo_ast_pretty)) +(alias (name runtest) (action (diff map.ligo_ast map.ligo_ast_pretty)) (deps map.ligo_ast map.ligo_ast_pretty)) +(alias (name runtest) (action (diff match.ligo_ast match.ligo_ast_pretty)) (deps match.ligo_ast match.ligo_ast_pretty)) +(alias (name runtest) (action (diff michelson_or_tree_intermediary.ligo_ast michelson_or_tree_intermediary.ligo_ast_pretty)) (deps michelson_or_tree_intermediary.ligo_ast michelson_or_tree_intermediary.ligo_ast_pretty)) +(alias (name runtest) (action (diff michelson_or_tree.ligo_ast michelson_or_tree.ligo_ast_pretty)) (deps michelson_or_tree.ligo_ast michelson_or_tree.ligo_ast_pretty)) +(alias (name runtest) (action (diff michelson_pair_tree_intermediary.ligo_ast michelson_pair_tree_intermediary.ligo_ast_pretty)) (deps michelson_pair_tree_intermediary.ligo_ast michelson_pair_tree_intermediary.ligo_ast_pretty)) +(alias (name runtest) (action (diff michelson_pair_tree.ligo_ast michelson_pair_tree.ligo_ast_pretty)) (deps michelson_pair_tree.ligo_ast michelson_pair_tree.ligo_ast_pretty)) +(alias (name runtest) (action (diff multiple-parameters.ligo_ast multiple-parameters.ligo_ast_pretty)) (deps multiple-parameters.ligo_ast multiple-parameters.ligo_ast_pretty)) +(alias (name runtest) (action (diff multisig-v2.ligo_ast multisig-v2.ligo_ast_pretty)) (deps multisig-v2.ligo_ast multisig-v2.ligo_ast_pretty)) +(alias (name runtest) (action (diff multisig.ligo_ast multisig.ligo_ast_pretty)) (deps multisig.ligo_ast multisig.ligo_ast_pretty)) +(alias (name runtest) (action (diff option.ligo_ast option.ligo_ast_pretty)) (deps option.ligo_ast option.ligo_ast_pretty)) +(alias (name runtest) (action (diff quote-declaration.ligo_ast quote-declaration.ligo_ast_pretty)) (deps quote-declaration.ligo_ast quote-declaration.ligo_ast_pretty)) +(alias (name runtest) (action (diff quote-declarations.ligo_ast quote-declarations.ligo_ast_pretty)) (deps quote-declarations.ligo_ast quote-declarations.ligo_ast_pretty)) +(alias (name runtest) (action (diff record.ligo_ast record.ligo_ast_pretty)) (deps record.ligo_ast record.ligo_ast_pretty)) +(alias (name runtest) (action (diff recursion.ligo_ast recursion.ligo_ast_pretty)) (deps recursion.ligo_ast recursion.ligo_ast_pretty)) +(alias (name runtest) (action (diff redeclaration.ligo_ast redeclaration.ligo_ast_pretty)) (deps redeclaration.ligo_ast redeclaration.ligo_ast_pretty)) +(alias (name runtest) (action (diff replaceable_id.ligo_ast replaceable_id.ligo_ast_pretty)) (deps replaceable_id.ligo_ast replaceable_id.ligo_ast_pretty)) +(alias (name runtest) (action (diff self_address.ligo_ast self_address.ligo_ast_pretty)) (deps self_address.ligo_ast self_address.ligo_ast_pretty)) +(alias (name runtest) (action (diff self_type_annotation.ligo_ast self_type_annotation.ligo_ast_pretty)) (deps self_type_annotation.ligo_ast self_type_annotation.ligo_ast_pretty)) +(alias (name runtest) (action (diff self_with_entrypoint.ligo_ast self_with_entrypoint.ligo_ast_pretty)) (deps self_with_entrypoint.ligo_ast self_with_entrypoint.ligo_ast_pretty)) +(alias (name runtest) (action (diff self_without_entrypoint.ligo_ast self_without_entrypoint.ligo_ast_pretty)) (deps self_without_entrypoint.ligo_ast self_without_entrypoint.ligo_ast_pretty)) +(alias (name runtest) (action (diff set_arithmetic-1.ligo_ast set_arithmetic-1.ligo_ast_pretty)) (deps set_arithmetic-1.ligo_ast set_arithmetic-1.ligo_ast_pretty)) +(alias (name runtest) (action (diff set_arithmetic.ligo_ast set_arithmetic.ligo_ast_pretty)) (deps set_arithmetic.ligo_ast set_arithmetic.ligo_ast_pretty)) +(alias (name runtest) (action (diff set_delegate.ligo_ast set_delegate.ligo_ast_pretty)) (deps set_delegate.ligo_ast set_delegate.ligo_ast_pretty)) +(alias (name runtest) (action (diff shadow.ligo_ast shadow.ligo_ast_pretty)) (deps shadow.ligo_ast shadow.ligo_ast_pretty)) +(alias (name runtest) (action (diff simple_access.ligo_ast simple_access.ligo_ast_pretty)) (deps simple_access.ligo_ast simple_access.ligo_ast_pretty)) +(alias (name runtest) (action (diff string_arithmetic.ligo_ast string_arithmetic.ligo_ast_pretty)) (deps string_arithmetic.ligo_ast string_arithmetic.ligo_ast_pretty)) +(alias (name runtest) (action (diff string.ligo_ast string.ligo_ast_pretty)) (deps string.ligo_ast string.ligo_ast_pretty)) +(alias (name runtest) (action (diff super-counter.ligo_ast super-counter.ligo_ast_pretty)) (deps super-counter.ligo_ast super-counter.ligo_ast_pretty)) +(alias (name runtest) (action (diff tez.ligo_ast tez.ligo_ast_pretty)) (deps tez.ligo_ast tez.ligo_ast_pretty)) +(alias (name runtest) (action (diff time-lock.ligo_ast time-lock.ligo_ast_pretty)) (deps time-lock.ligo_ast time-lock.ligo_ast_pretty)) +(alias (name runtest) (action (diff timestamp.ligo_ast timestamp.ligo_ast_pretty)) (deps timestamp.ligo_ast timestamp.ligo_ast_pretty)) +(alias (name runtest) (action (diff toto.ligo_ast toto.ligo_ast_pretty)) (deps toto.ligo_ast toto.ligo_ast_pretty)) +(alias (name runtest) (action (diff tuple.ligo_ast tuple.ligo_ast_pretty)) (deps tuple.ligo_ast tuple.ligo_ast_pretty)) +(alias (name runtest) (action (diff type-alias.ligo_ast type-alias.ligo_ast_pretty)) (deps type-alias.ligo_ast type-alias.ligo_ast_pretty)) +(alias (name runtest) (action (diff unit.ligo_ast unit.ligo_ast_pretty)) (deps unit.ligo_ast unit.ligo_ast_pretty)) +(alias (name runtest) (action (diff variant-matching.ligo_ast variant-matching.ligo_ast_pretty)) (deps variant-matching.ligo_ast variant-matching.ligo_ast_pretty)) +(alias (name runtest) (action (diff variant.ligo_ast variant.ligo_ast_pretty)) (deps variant.ligo_ast variant.ligo_ast_pretty)) +(alias (name runtest) (action (diff website1.ligo_ast website1.ligo_ast_pretty)) (deps website1.ligo_ast website1.ligo_ast_pretty)) +(alias (name runtest) (action (diff website2.ligo_ast website2.ligo_ast_pretty)) (deps website2.ligo_ast website2.ligo_ast_pretty)) \ No newline at end of file diff --git a/src/test/contracts/expected/FA1.2.ligo.expected b/src/test/contracts/expected/FA1.2.ligo.expected new file mode 100644 index 000000000..f348fa651 --- /dev/null +++ b/src/test/contracts/expected/FA1.2.ligo.expected @@ -0,0 +1,172 @@ +type tokens is big_map (address, nat) + +type allowances is big_map (address * address, nat) + +type storage is + record [ + tokens : tokens; + allowances : allowances; + total_amount : nat + ] + +type transfer is + record [ + address_from : address; + address_to : address; + value : nat + ] + +type approve is record [spender : address; value : nat] + +type getAllowance is + record [ + owner : address; + spender : address; + callback : contract (nat) + ] + +type getBalance is + record [owner : address; callback : contract (nat)] + +type getTotalSupply is record [callback : contract (nat)] + +type action is + Transfer of transfer + | Approve of approve + | GetAllowance of getAllowance + | GetBalance of getBalance + | GetTotalSupply of getTotalSupply + +function transfer (const p : transfer; const s : storage) + : list (operation) * storage is +block { + var new_allowances : allowances := Big_map.empty; + if Tezos.sender = p.address_from + then { + new_allowances := s.allowances + } + else { + var authorized_value : nat + := case (Big_map.find_opt + ((Tezos.sender, p.address_from), s.allowances)) + of [ + Some (value) -> value + | None -> 0n + ]; + if (authorized_value < p.value) + then { + failwith ("Not Enough Allowance") + } + else { + new_allowances := + Big_map.update + ((Tezos.sender, p.address_from), + (Some (abs (authorized_value - p.value))), + s.allowances) + } + }; + var sender_balance : nat + := case (Big_map.find_opt (p.address_from, s.tokens)) of [ + Some (value) -> value + | None -> 0n + ]; + var new_tokens : tokens := Big_map.empty; + if (sender_balance < p.value) + then { + failwith ("Not Enough Balance") + } + else { + new_tokens := + Big_map.update + (p.address_from, + (Some (abs (sender_balance - p.value))), s.tokens); + var receiver_balance : nat + := case (Big_map.find_opt (p.address_to, s.tokens)) of [ + Some (value) -> value + | None -> 0n + ]; + new_tokens := + Big_map.update + (p.address_to, (Some (receiver_balance + p.value)), + new_tokens) + } +} with + ((nil : list (operation)), + s with + record [ + tokens = new_tokens; + allowances = new_allowances + ]) + +function approve (const p : approve; const s : storage) + : list (operation) * storage is +block { + var previous_value : nat + := case Big_map.find_opt + ((p.spender, Tezos.sender), s.allowances) + of [ + Some (value) -> value + | None -> 0n + ]; + var new_allowances : allowances := Big_map.empty; + if previous_value > 0n and p.value > 0n + then { + failwith ("Unsafe Allowance Change") + } + else { + new_allowances := + Big_map.update + ((p.spender, Tezos.sender), (Some (p.value)), + s.allowances) + } +} with + ((nil : list (operation)), + s with + record [allowances = new_allowances]) + +function getAllowance + (const p : getAllowance; + const s : storage) : list (operation) * storage is +block { + var value : nat + := case Big_map.find_opt + ((p.owner, p.spender), s.allowances) + of [ + Some (value) -> value + | None -> 0n + ]; + var op : operation + := Tezos.transaction (value, 0mutez, p.callback) +} with (list [op], s) + +function getBalance + (const p : getBalance; + const s : storage) : list (operation) * storage is +block { + var value : nat + := case Big_map.find_opt (p.owner, s.tokens) of [ + Some (value) -> value + | None -> 0n + ]; + var op : operation + := Tezos.transaction (value, 0mutez, p.callback) +} with (list [op], s) + +function getTotalSupply + (const p : getTotalSupply; + const s : storage) : list (operation) * storage is +block { + var total : nat := s.total_amount; + var op : operation + := Tezos.transaction (total, 0mutez, p.callback) +} with (list [op], s) + +function main (const a : action; const s : storage) + : list (operation) * storage is + case a of [ + Transfer (p) -> transfer (p, s) + | Approve (p) -> approve (p, s) + | GetAllowance (p) -> getAllowance (p, s) + | GetBalance (p) -> getBalance (p, s) + | GetTotalSupply (p) -> getTotalSupply (p, s) + ] diff --git a/src/test/contracts/expected/address.ligo.expected b/src/test/contracts/expected/address.ligo.expected new file mode 100644 index 000000000..2091d5163 --- /dev/null +++ b/src/test/contracts/expected/address.ligo.expected @@ -0,0 +1,4 @@ +function main (const p : key_hash) : address is +block { + const c : contract (unit) = Tezos.implicit_account (p) +} with Tezos.address (c) diff --git a/src/test/contracts/expected/amount.ligo.expected b/src/test/contracts/expected/amount.ligo.expected new file mode 100644 index 000000000..dfa7db042 --- /dev/null +++ b/src/test/contracts/expected/amount.ligo.expected @@ -0,0 +1,7 @@ +function check (const p : unit) : int is +block { + var result : int := 0; + if amount = 100000000mutez + then result := 42 + else result := 0 +} with result diff --git a/src/test/contracts/expected/annotation.ligo.expected b/src/test/contracts/expected/annotation.ligo.expected new file mode 100644 index 000000000..a904db4e3 --- /dev/null +++ b/src/test/contracts/expected/annotation.ligo.expected @@ -0,0 +1,4 @@ +const lst : list (int) = list [] + +const my_address : address += ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address) diff --git a/src/test/contracts/expected/application.ligo.expected b/src/test/contracts/expected/application.ligo.expected new file mode 100644 index 000000000..4ffa7b48e --- /dev/null +++ b/src/test/contracts/expected/application.ligo.expected @@ -0,0 +1,13 @@ +type foo is record [bar : int -> int] + +function f (const i : int) : int is i + +function g (const i : unit) : int -> int is f + +const r : foo = record [bar = f] + +const x : int = f (42) + +const y : int = r.bar (42) + +const z : int = (g (unit)) (42) diff --git a/src/test/contracts/expected/arithmetic.ligo.expected b/src/test/contracts/expected/arithmetic.ligo.expected new file mode 100644 index 000000000..199e20d9c --- /dev/null +++ b/src/test/contracts/expected/arithmetic.ligo.expected @@ -0,0 +1,16 @@ +function mod_op (const n : int) : nat is n mod 42 + +function plus_op (const n : int) : int is n + 42 + +function minus_op (const n : int) : int is n - 42 + +function times_op (const n : int) : int is n * 42 + +function div_op (const n : int) : int is n / 2 + +function int_op (const n : nat) : int is int (n) + +function neg_op (const n : int) : int is -n + +function ediv_op (const n : int) : option (int * nat) is + ediv (n, 2) diff --git a/src/test/contracts/expected/assign.ligo.expected b/src/test/contracts/expected/assign.ligo.expected new file mode 100644 index 000000000..83e6de109 --- /dev/null +++ b/src/test/contracts/expected/assign.ligo.expected @@ -0,0 +1,4 @@ +function main (const i : int) : int is +block { + i := i + 1 +} with i diff --git a/src/test/contracts/expected/attributes.ligo.expected b/src/test/contracts/expected/attributes.ligo.expected new file mode 100644 index 000000000..1622aa0aa --- /dev/null +++ b/src/test/contracts/expected/attributes.ligo.expected @@ -0,0 +1,24 @@ +const x : int = 1 + +attributes ["inline"] + +function foo (const a : int) : int is +block { + const test : int = 2 + a; + attributes ["inline"] +} with test + +attributes ["inline"] + +const y : int = 1 + +attributes ["inline"; "other"] + +function bar (const b : int) : int is +block { + function test (const z : int) : int is + block { + const r : int = 2 + b + z + } with r; + attributes ["inline"; "foo"; "bar"] +} with test (b) diff --git a/src/test/contracts/expected/bad_timestamp.ligo.expected b/src/test/contracts/expected/bad_timestamp.ligo.expected new file mode 100644 index 000000000..c8231cbc1 --- /dev/null +++ b/src/test/contracts/expected/bad_timestamp.ligo.expected @@ -0,0 +1,11 @@ +type parameter is unit + +type storage is timestamp + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is +block { + var stamp : timestamp := ("badtimestamp" : timestamp) +} with ((nil : list (operation)), stamp) diff --git a/src/test/contracts/expected/bad_type_operator.ligo.expected b/src/test/contracts/expected/bad_type_operator.ligo.expected new file mode 100644 index 000000000..462580154 --- /dev/null +++ b/src/test/contracts/expected/bad_type_operator.ligo.expected @@ -0,0 +1,12 @@ +type parameter is unit + +type binding is nat * nat + +type storage is map (binding) + +type return is list (operation) * storage + +function main + (const param : parameter; + const store : storage) : return is + ((nil : list (operation)), store) diff --git a/src/test/contracts/expected/balance_constant.ligo.expected b/src/test/contracts/expected/balance_constant.ligo.expected new file mode 100644 index 000000000..00c0fe7ca --- /dev/null +++ b/src/test/contracts/expected/balance_constant.ligo.expected @@ -0,0 +1,10 @@ +type parameter is unit + +type storage is tez + +type return is list (operation) * storage + +function main + (const param : parameter; + const store : storage) : return is + ((nil : list (operation)), Tezos.balance) diff --git a/src/test/contracts/expected/big_map.ligo.expected b/src/test/contracts/expected/big_map.ligo.expected new file mode 100644 index 000000000..e6a3da741 --- /dev/null +++ b/src/test/contracts/expected/big_map.ligo.expected @@ -0,0 +1,41 @@ +type parameter is unit + +type storage is big_map (int, int) * unit + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is +block { + var toto : option (int) := Some (0); + toto := s.0 [23]; + s.0 [2] := 444 +} with ((nil : list (operation)), s) + +type foo is big_map (int, int) + +function set_ (var n : int; var m : foo) : foo is +block { + m [23] := n +} with m + +function add (var n : int; var m : foo) : foo is set_ (n, m) + +function rm (var m : foo) : foo is +block { + remove 42 from map m +} with m + +function get (const m : foo) : option (int) is m [42] + +const empty_big_map : big_map (int, int) = big_map [] + +const big_map1 : big_map (int, int) += big_map [23 -> 0; 42 -> 0] + +function mutimaps (const m : foo; const n : foo) : foo is +block { + var bar : foo := m; + bar [42] := 0; + n [42] := get_force (42, bar) +} with n diff --git a/src/test/contracts/expected/bitwise_arithmetic.ligo.expected b/src/test/contracts/expected/bitwise_arithmetic.ligo.expected new file mode 100644 index 000000000..cc3e14013 --- /dev/null +++ b/src/test/contracts/expected/bitwise_arithmetic.ligo.expected @@ -0,0 +1,11 @@ +function or_op (const n : nat) : nat is Bitwise.or (n, 4n) + +function and_op (const n : nat) : nat is Bitwise.and (n, 7n) + +function xor_op (const n : nat) : nat is Bitwise.xor (n, 7n) + +function lsl_op (const n : nat) : nat is + Bitwise.shift_left (n, 7n) + +function lsr_op (const n : nat) : nat is + Bitwise.shift_right (n, 7n) diff --git a/src/test/contracts/expected/blockless.ligo.expected b/src/test/contracts/expected/blockless.ligo.expected new file mode 100644 index 000000000..94dddc8dd --- /dev/null +++ b/src/test/contracts/expected/blockless.ligo.expected @@ -0,0 +1 @@ +function blockless (const n : int) : int is n + 10 diff --git a/src/test/contracts/expected/boolean_operators.ligo.expected b/src/test/contracts/expected/boolean_operators.ligo.expected new file mode 100644 index 000000000..110e856ed --- /dev/null +++ b/src/test/contracts/expected/boolean_operators.ligo.expected @@ -0,0 +1,9 @@ +function or_true (const b : bool) : bool is b or true + +function or_false (const b : bool) : bool is b or false + +function and_true (const b : bool) : bool is b and true + +function and_false (const b : bool) : bool is b and false + +function not_bool (const b : bool) : bool is not b diff --git a/src/test/contracts/expected/bytes_arithmetic.ligo.expected b/src/test/contracts/expected/bytes_arithmetic.ligo.expected new file mode 100644 index 000000000..4c2ff9e62 --- /dev/null +++ b/src/test/contracts/expected/bytes_arithmetic.ligo.expected @@ -0,0 +1,8 @@ +function concat_op (const s : bytes) : bytes is + Bytes.concat (s, 0x7070) + +function slice_op (const s : bytes) : bytes is + Bytes.sub (1n, 2n, s) + +function hasherman (const s : bytes) : bytes is + Crypto.sha256 (s) diff --git a/src/test/contracts/expected/bytes_unpack.ligo.expected b/src/test/contracts/expected/bytes_unpack.ligo.expected new file mode 100644 index 000000000..3aa83c245 --- /dev/null +++ b/src/test/contracts/expected/bytes_unpack.ligo.expected @@ -0,0 +1,15 @@ +function id_string (const p : string) : option (string) is +block { + const packed : bytes = Bytes.pack (p) +} with (Bytes.unpack (packed) : option (string)) + +function id_int (const p : int) : option (int) is +block { + const packed : bytes = Bytes.pack (p) +} with (Bytes.unpack (packed) : option (int)) + +function id_address (const p : address) + : option (address) is +block { + const packed : bytes = Bytes.pack (p) +} with (Bytes.unpack (packed) : option (address)) diff --git a/src/test/contracts/expected/chain_id.ligo.expected b/src/test/contracts/expected/chain_id.ligo.expected new file mode 100644 index 000000000..4bc329a47 --- /dev/null +++ b/src/test/contracts/expected/chain_id.ligo.expected @@ -0,0 +1,2 @@ +function chain_id (const tt : chain_id) : chain_id is + Tezos.chain_id diff --git a/src/test/contracts/expected/check_signature.ligo.expected b/src/test/contracts/expected/check_signature.ligo.expected new file mode 100644 index 000000000..79577cc6b --- /dev/null +++ b/src/test/contracts/expected/check_signature.ligo.expected @@ -0,0 +1,5 @@ +function check_signature + (const pk : key; + const signed : signature; + const msg : bytes) : bool is + Crypto.check (pk, signed, msg) diff --git a/src/test/contracts/expected/closure-1.ligo.expected b/src/test/contracts/expected/closure-1.ligo.expected new file mode 100644 index 000000000..aa27d2afc --- /dev/null +++ b/src/test/contracts/expected/closure-1.ligo.expected @@ -0,0 +1,4 @@ +function foo (const i : int) : int is +block { + function add (const j : int) : int is i + j +} with add (i) diff --git a/src/test/contracts/expected/closure-2.ligo.expected b/src/test/contracts/expected/closure-2.ligo.expected new file mode 100644 index 000000000..296b0b728 --- /dev/null +++ b/src/test/contracts/expected/closure-2.ligo.expected @@ -0,0 +1,5 @@ +function foobar (const i : int) : int is +block { + const j : int = 3; + function add (const k : int) : int is i + j + k +} with add (42) diff --git a/src/test/contracts/expected/closure-3.ligo.expected b/src/test/contracts/expected/closure-3.ligo.expected new file mode 100644 index 000000000..b14351512 --- /dev/null +++ b/src/test/contracts/expected/closure-3.ligo.expected @@ -0,0 +1,6 @@ +function foobar (const i : int) : int is +block { + const j : int = 3; + const k : int = 4; + function add (const l : int) : int is i + j + k + l +} with add (42) diff --git a/src/test/contracts/expected/closure.ligo.expected b/src/test/contracts/expected/closure.ligo.expected new file mode 100644 index 000000000..42a74982a --- /dev/null +++ b/src/test/contracts/expected/closure.ligo.expected @@ -0,0 +1,5 @@ +function toto (const i : int) : int is +block { + function tata (const j : int) : int is i + j; + function titi (const j : int) : int is i + j +} with tata (i) + titi (i) diff --git a/src/test/contracts/expected/coase.ligo.expected b/src/test/contracts/expected/coase.ligo.expected new file mode 100644 index 000000000..cd203db50 --- /dev/null +++ b/src/test/contracts/expected/coase.ligo.expected @@ -0,0 +1,137 @@ +type card_pattern_id is nat + +type card_pattern is + record [coefficient : tez; quantity : nat] + +type card_patterns is map (card_pattern_id, card_pattern) + +type card_id is nat + +type card is + record [ + card_owner : address; + card_pattern : card_pattern_id + ] + +type cards is map (card_id, card) + +type storage is + record [ + cards : cards; + card_patterns : card_patterns; + next_id : nat + ] + +type return is list (operation) * storage + +type action_buy_single is + record [card_to_buy : card_pattern_id] + +type action_sell_single is record [card_to_sell : card_id] + +type action_transfer_single is + record [card_to_transfer : card_id; destination : address] + +type parameter is + Buy_single of action_buy_single + | Sell_single of action_sell_single + | Transfer_single of action_transfer_single + +function transfer_single + (const action : action_transfer_single; + const s : storage) : return is +block { + const cards : cards = s.cards; + const card : card + = case cards [action.card_to_transfer] of [ + Some (card) -> card + | None -> + (failwith ("transfer_single: No card.") : card) + ]; + if card.card_owner =/= sender + then failwith ("This card doesn't belong to you") + else skip; + card.card_owner := action.destination; + cards [action.card_to_transfer] := card; + s.cards := cards +} with ((nil : list (operation)), s) + +function sell_single + (const action : action_sell_single; + const s : storage) : return is +block { + const card : card + = case s.cards [action.card_to_sell] of [ + Some (card) -> card + | None -> (failwith ("sell_single: No card.") : card) + ]; + if card.card_owner =/= sender + then failwith ("This card doesn't belong to you") + else skip; + const card_pattern : card_pattern + = case s.card_patterns [card.card_pattern] of [ + Some (pattern) -> pattern + | None -> + (failwith ("sell_single: No card pattern.") + : card_pattern) + ]; + card_pattern.quantity := abs (card_pattern.quantity - 1n); + const card_patterns : card_patterns = s.card_patterns; + card_patterns [card.card_pattern] := card_pattern; + s.card_patterns := card_patterns; + const cards : cards = s.cards; + remove action.card_to_sell from map cards; + s.cards := cards; + const price : tez + = card_pattern.coefficient * card_pattern.quantity; + const receiver : contract (unit) + = case (Tezos.get_contract_opt (Tezos.sender) + : option (contract (unit))) + of [ + Some (contract) -> contract + | None -> + (failwith ("sell_single: No contract.") + : contract (unit)) + ]; + const op : operation + = Tezos.transaction (unit, price, receiver); + const operations : list (operation) = list [op] +} with (operations, s) + +function buy_single + (const action : action_buy_single; + const s : storage) : return is +block { + const card_pattern : card_pattern + = case s.card_patterns [action.card_to_buy] of [ + Some (pattern) -> pattern + | None -> + (failwith ("buy_single: No card pattern.") + : card_pattern) + ]; + const price : tez + = card_pattern.coefficient * (card_pattern.quantity + 1n); + if price > amount + then failwith ("Not enough money") + else skip; + card_pattern.quantity := card_pattern.quantity + 1n; + const card_patterns : card_patterns = s.card_patterns; + card_patterns [action.card_to_buy] := card_pattern; + s.card_patterns := card_patterns; + const cards : cards = s.cards; + cards [s.next_id] := + record [ + card_owner = sender; + card_pattern = action.card_to_buy + ]; + s.cards := cards; + s.next_id := s.next_id + 1n +} with ((nil : list (operation)), s) + +function main (const action : parameter; const s : storage) + : return is + case action of [ + Buy_single (bs) -> buy_single (bs, s) + | Sell_single (as) -> sell_single (as, s) + | Transfer_single (at) -> transfer_single (at, s) + ] diff --git a/src/test/contracts/expected/condition-simple.ligo.expected b/src/test/contracts/expected/condition-simple.ligo.expected new file mode 100644 index 000000000..420e30f9f --- /dev/null +++ b/src/test/contracts/expected/condition-simple.ligo.expected @@ -0,0 +1,2 @@ +function main (const i : int) : int is + if 1 = 1 then 42 else 0 diff --git a/src/test/contracts/expected/condition.ligo.expected b/src/test/contracts/expected/condition.ligo.expected new file mode 100644 index 000000000..7c8f809ef --- /dev/null +++ b/src/test/contracts/expected/condition.ligo.expected @@ -0,0 +1,10 @@ +function main (const i : int) : int is +block { + var result : int := 23; + if i = 2 then result := 42 else result := 0 +} with result + +function foo (const b : bool) : int is +block { + const x : int = 41 +} with 1 + (if b then x else main (x)) diff --git a/src/test/contracts/expected/counter.ligo.expected b/src/test/contracts/expected/counter.ligo.expected new file mode 100644 index 000000000..7a4985c5d --- /dev/null +++ b/src/test/contracts/expected/counter.ligo.expected @@ -0,0 +1,7 @@ +type t is int + +function main (const p : int; const s : t) + : list (operation) * int is +block { + skip +} with ((nil : list (operation)), p + s) diff --git a/src/test/contracts/expected/crypto.ligo.expected b/src/test/contracts/expected/crypto.ligo.expected new file mode 100644 index 000000000..26560e6a0 --- /dev/null +++ b/src/test/contracts/expected/crypto.ligo.expected @@ -0,0 +1,5 @@ +function hasherman512 (const s : bytes) : bytes is + Crypto.sha512 (s) + +function hasherman_blake (const s : bytes) : bytes is + Crypto.blake2b (s) diff --git a/src/test/contracts/expected/declaration-local.ligo.expected b/src/test/contracts/expected/declaration-local.ligo.expected new file mode 100644 index 000000000..38e8d61dc --- /dev/null +++ b/src/test/contracts/expected/declaration-local.ligo.expected @@ -0,0 +1,4 @@ +function main (const i : int) : int is +block { + const j : int = 42 +} with j diff --git a/src/test/contracts/expected/declarations.ligo.expected b/src/test/contracts/expected/declarations.ligo.expected new file mode 100644 index 000000000..b41c36819 --- /dev/null +++ b/src/test/contracts/expected/declarations.ligo.expected @@ -0,0 +1,3 @@ +const foo : int = 42 + +function main (const i : int) : int is i + foo diff --git a/src/test/contracts/expected/deep_access.ligo.expected b/src/test/contracts/expected/deep_access.ligo.expected new file mode 100644 index 000000000..7e7b46eca --- /dev/null +++ b/src/test/contracts/expected/deep_access.ligo.expected @@ -0,0 +1,31 @@ +type pii is int * int + +type ppi is record [x : pii; y : pii] + +type ppp is ppi * ppi + +function main (const toto : unit) : int is +block { + var a : ppp + := (record [x = (0, 1); y = (10, 11)], + record [x = (100, 101); y = (110, 111)]); + a.0.x.0 := 2 +} with a.0.x.0 + +function asymetric_tuple_access (const foo : unit) : int is +block { + var tuple : int * (int * (int * int)) := (0, (1, (2, 3))) +} with tuple.0 + tuple.1.0 + tuple.1.1.0 + tuple.1.1.1 + +type nested_record_t is + record [nesty : record [mymap : map (int, string)]] + +function nested_record (var nee : nested_record_t) + : string is +block { + nee.nesty.mymap [1] := "one" +} with + case nee.nesty.mymap [1] of [ + Some (s) -> s + | None -> (failwith ("Should not happen.") : string) + ] diff --git a/src/test/contracts/expected/dispatch-counter.ligo.expected b/src/test/contracts/expected/dispatch-counter.ligo.expected new file mode 100644 index 000000000..ccd84ff3b --- /dev/null +++ b/src/test/contracts/expected/dispatch-counter.ligo.expected @@ -0,0 +1,21 @@ +type parameter is Increment of int | Decrement of int + +type storage is int + +type return is list (operation) * storage + +function increment (const i : int; const n : int) : int is + i + n + +function decrement (const i : int; const n : int) : int is + i - n + +const nop : list (operation) = nil + +function main + (const action : parameter; + const store : storage) : return is + case action of [ + Increment (n) -> (nop, increment (store, n)) + | Decrement (n) -> (nop, decrement (store, n)) + ] diff --git a/src/test/contracts/expected/double_main.ligo.expected b/src/test/contracts/expected/double_main.ligo.expected new file mode 100644 index 000000000..8dcacb108 --- /dev/null +++ b/src/test/contracts/expected/double_main.ligo.expected @@ -0,0 +1,14 @@ +type parameter is unit + +type storage is int + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is ((nil : list (operation)), s + 1) + +function main (const p : parameter; const s : storage) + : return is +block { + const ret : return = main (p, s) +} with (ret.0, ret.1 + 1) diff --git a/src/test/contracts/expected/double_michelson_or.ligo.expected b/src/test/contracts/expected/double_michelson_or.ligo.expected new file mode 100644 index 000000000..d006d32a8 --- /dev/null +++ b/src/test/contracts/expected/double_michelson_or.ligo.expected @@ -0,0 +1,12 @@ +type storage is michelson_or (int, "foo", string, "bar") + +type foobar is michelson_or (int, "baz", int, "fooo") + +type return is list (operation) * storage + +function main (const action : unit; const store : storage) + : return is +block { + const foo : storage = (M_right ("one") : storage); + const bar : foobar = (M_right (1) : foobar) +} with ((nil : list (operation)), (foo : storage)) diff --git a/src/test/contracts/expected/empty_case.ligo.expected b/src/test/contracts/expected/empty_case.ligo.expected new file mode 100644 index 000000000..653f86f13 --- /dev/null +++ b/src/test/contracts/expected/empty_case.ligo.expected @@ -0,0 +1,7 @@ +type t is Bar of int | Baz + +function main (const x : t) : int is + case x of [ + Bar (n) -> n + | Baz -> -1 + ] diff --git a/src/test/contracts/expected/entrypoints.ligo.expected b/src/test/contracts/expected/entrypoints.ligo.expected new file mode 100644 index 000000000..04eb400a0 --- /dev/null +++ b/src/test/contracts/expected/entrypoints.ligo.expected @@ -0,0 +1,23 @@ +type storage is unit + +type return is list (operation) * storage + +function cb (const a : address; const s : storage) + : return is +block { + const c : contract (unit) = get_entrypoint ("%cb", a) +} with (list [Tezos.transaction (unit, 0mutez, c)], s) + +function cbo (const a : address; const s : storage) + : return is +block { + const c : contract (unit) + = case (get_entrypoint_opt ("%cbo", a) + : option (contract (unit))) + of [ + Some (c) -> c + | None -> + (failwith ("cbo: Entrypoint not found.") + : contract (unit)) + ] +} with (list [Tezos.transaction (unit, 0mutez, c)], s) diff --git a/src/test/contracts/expected/eq_bool.ligo.expected b/src/test/contracts/expected/eq_bool.ligo.expected new file mode 100644 index 000000000..9d7199fec --- /dev/null +++ b/src/test/contracts/expected/eq_bool.ligo.expected @@ -0,0 +1,5 @@ +function main (const a : bool; const b : bool) : int is +block { + var result : int := 27; + if a = b then result := 999 else result := 1 +} with result diff --git a/src/test/contracts/expected/evaluation_tests.ligo.expected b/src/test/contracts/expected/evaluation_tests.ligo.expected new file mode 100644 index 000000000..7eef1067f --- /dev/null +++ b/src/test/contracts/expected/evaluation_tests.ligo.expected @@ -0,0 +1,5 @@ +type t is record [foo : nat; bar : string] + +const a : t = record [foo = 0n; bar = "bar"] + +const b : int = 2 diff --git a/src/test/contracts/expected/failwith.ligo.expected b/src/test/contracts/expected/failwith.ligo.expected new file mode 100644 index 000000000..e1729b39d --- /dev/null +++ b/src/test/contracts/expected/failwith.ligo.expected @@ -0,0 +1,44 @@ +type parameter is Zero of nat | Pos of nat + +type storage is unit + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is +block { + case p of [ + Zero (n) -> if n > 0n then failwith ("fail") else skip + | Pos (n) -> if n > 0n then skip else failwith ("fail") + ] +} with ((nil : list (operation)), s) + +function foobar (const i : int) : int is +block { + var p : parameter := Zero (42n); + if i > 0 + then { + i := i + 1; + if i > 10 + then { + i := 20; + failwith ("who knows"); + i := 30 + } + else skip + } + else + case p of [ + Zero (n) -> failwith (42n) + | Pos (n) -> skip + ] +} with + case p of [ + Zero (n) -> i + | Pos (n) -> (failwith ("waaaa") : int) + ] + +function failer (const p : int) : int is +block { + if p = 1 then failwith (42) else skip +} with p diff --git a/src/test/contracts/expected/for_fail.ligo.expected b/src/test/contracts/expected/for_fail.ligo.expected new file mode 100644 index 000000000..7e1266a04 --- /dev/null +++ b/src/test/contracts/expected/for_fail.ligo.expected @@ -0,0 +1,7 @@ +function main (const a : int) : int is +block { + for i := 0 to 100 + block { + skip + } +} with i diff --git a/src/test/contracts/expected/function-anon.ligo.expected b/src/test/contracts/expected/function-anon.ligo.expected new file mode 100644 index 000000000..067023b21 --- /dev/null +++ b/src/test/contracts/expected/function-anon.ligo.expected @@ -0,0 +1,2 @@ +const x : int += (function (const i : int) : int is i + 1) (41) diff --git a/src/test/contracts/expected/function-complex.ligo.expected b/src/test/contracts/expected/function-complex.ligo.expected new file mode 100644 index 000000000..bdefb9850 --- /dev/null +++ b/src/test/contracts/expected/function-complex.ligo.expected @@ -0,0 +1,7 @@ +function main (const i : int) : int is +block { + var j : int := 0; + var k : int := 1; + j := k + i; + k := i + j +} with k + j diff --git a/src/test/contracts/expected/function-shared.ligo.expected b/src/test/contracts/expected/function-shared.ligo.expected new file mode 100644 index 000000000..d698ed742 --- /dev/null +++ b/src/test/contracts/expected/function-shared.ligo.expected @@ -0,0 +1,6 @@ +function inc (const i : int) : int is i + 1 + +function double_inc (const i : int) : int is inc (i + 1) + +function foo (const i : int) : int is + inc (i) + double_inc (i) diff --git a/src/test/contracts/expected/function.ligo.expected b/src/test/contracts/expected/function.ligo.expected new file mode 100644 index 000000000..441d668a3 --- /dev/null +++ b/src/test/contracts/expected/function.ligo.expected @@ -0,0 +1 @@ +function main (const i : int) : int is i diff --git a/src/test/contracts/expected/get_contract.ligo.expected b/src/test/contracts/expected/get_contract.ligo.expected new file mode 100644 index 000000000..cf8137394 --- /dev/null +++ b/src/test/contracts/expected/get_contract.ligo.expected @@ -0,0 +1,20 @@ +type storage is unit + +type return is list (operation) * storage + +function cb (const s : storage) : return is +block { + const c : contract (unit) = get_contract (Tezos.sender) +} with (list [Tezos.transaction (unit, 0mutez, c)], s) + +function cbo (const s : unit) : return is +block { + const c : contract (unit) + = case (Tezos.get_contract_opt (Tezos.sender) + : option (contract (unit))) + of [ + Some (contract) -> contract + | None -> + (failwith ("contract not found") : contract (unit)) + ] +} with (list [Tezos.transaction (unit, 0mutez, c)], s) diff --git a/src/test/contracts/expected/heap-instance.ligo.expected b/src/test/contracts/expected/heap-instance.ligo.expected new file mode 100644 index 000000000..11b1c58de --- /dev/null +++ b/src/test/contracts/expected/heap-instance.ligo.expected @@ -0,0 +1,6 @@ +type heap_elt is int * string + +function heap_elt_lt (const x : heap_elt; + const y : heap_elt) : bool is x.0 < y.0 + +#include "heap.ligo" diff --git a/src/test/contracts/expected/heap.ligo.expected b/src/test/contracts/expected/heap.ligo.expected new file mode 100644 index 000000000..9ff8f8154 --- /dev/null +++ b/src/test/contracts/expected/heap.ligo.expected @@ -0,0 +1,103 @@ +// Implementation of the heap data structure in PascaLIGO +// See: https://en.wikipedia.org/wiki/Heap_%28data_structure%29 + +type heap is map (nat, heap_elt) + +function is_empty (const h : heap) : bool is size (h) = 0n + +function get_top (const h : heap) : heap_elt is get_force (1n, h) + +function pop_switch (const h : heap) : heap is + block { + const result : heap_elt = get_top (h); + const s : nat = Map.size (h); + const last : heap_elt = + case h[s] of + Some (e) -> e + | None -> (failwith ("No element.") : heap_elt) + end; + remove 1n from map h; + h[1n] := last + } with h + +function pop_ (const h : heap) : nat is + block { + const result : heap_elt = get_top (h); + const s : nat = Map.size (h); + var current : heap_elt := + case h[s] of + Some (e) -> e + | None -> (failwith ("No element.") : heap_elt) + end; + const i : nat = 1n; + const left : nat = 2n * i; + const right : nat = left + 1n; + remove 1n from map h; + h[1n] := current; + var largest : nat := i; + const tmp : heap_elt = get_force (s, h); + if left <= s and heap_elt_lt (tmp, get_force (left,h)) + then largest := left + else + if right <= s and heap_elt_lt (tmp, get_force (right,h)) + then largest := right + else skip + } with largest + +function insert (const h : heap ; const e : heap_elt) : heap is + block { + var i : nat := size (h) + 1n; + h[i] := e; + var largest : nat := i; + var parent : nat := 0n; + while largest =/= i block { + parent := i/2n; + largest := i; + if parent >= 1n then { + if heap_elt_lt (get_force (parent,h), get_force(i,h))) then { + largest := parent; + const tmp : heap_elt = get_force (i,h); + h[i] := get_force(parent, h); + h[parent] := tmp + } else skip + } else skip + } + } with h + +function pop (const h : heap) : heap * heap_elt * nat is + block { + const result : heap_elt = get_top (h); + var s : nat := size (h); + const last : heap_elt = get_force (s,h); + remove s from map h; + h[1n] := last; + s := size (h); + var i : nat := 0n; + var largest : nat := 1n; + var left : nat := 0n; + var right : nat := 0n; + var c : nat := 0n; + while largest =/= i block { + c := c + 1n; + i := largest; + left := 2n * i; + right := left + 1n; + if left <= s then { + if heap_elt_lt (get_force (left,h), get_force(i,h)) then { + largest := left; + const tmp : heap_elt = get_force(i,h); + h[i] := get_force (left, h); + h[left] := tmp + } else skip + } + else + if right <= s then { + if heap_elt_lt (get_force (right, h), get_force (i,h)) then { + largest := right; + const tmp : heap_elt = get_force (i,h); + h[i] := get_force (right, h); + h[left] := tmp + } else skip + } else skip + } + } with (h, result, c) diff --git a/src/test/contracts/expected/high-order.ligo.expected b/src/test/contracts/expected/high-order.ligo.expected new file mode 100644 index 000000000..4a33fd6dd --- /dev/null +++ b/src/test/contracts/expected/high-order.ligo.expected @@ -0,0 +1,40 @@ +function foobar (const i : int) : int is +block { + function foo (const i : int) : int is i; + function bar (const f : int -> int) : int is f (i) +} with bar (foo) + +function higher2 (const i : int; const f : int -> int) + : int is f (i) + +function foobar2 (const i : int) : int is +block { + function foo2 (const i : int) : int is i +} with higher2 (i, foo2) + +const a : int = 0 + +function foobar3 (const i : int) : int is +block { + function foo2 (const i : int) : int is a + i +} with higher2 (i, foo2) + +function f (const i : int) : int is i + +function g (const i : int) : int is f (i) + +function foobar4 (const i : int) : int is g (g (i)) + +function higher3 + (const i : int; + const f : int -> int; + const g : int -> int) : int is f (g (i)) + +function foobar5 (const i : int) : int is +block { + const a : int = 0; + function foo (const i : int) : int is a + i; + function goo (const i : int) : int is foo (i) +} with higher3 (i, foo, goo) + +function foobar6 (const i : int) : int -> int is f diff --git a/src/test/contracts/expected/id.ligo.expected b/src/test/contracts/expected/id.ligo.expected new file mode 100644 index 000000000..d5a8b2b39 --- /dev/null +++ b/src/test/contracts/expected/id.ligo.expected @@ -0,0 +1,164 @@ +type id is int + +type id_details is + record [ + owner : address; + controller : address; + profile : bytes + ] + +type buy is + record [ + profile : bytes; + initial_controller : option (address) + ] + +type update_owner is record [id : id; new_owner : address] + +type update_details is + record [ + id : id; + new_profile : option (bytes); + new_controller : option (address) + ] + +type action is + Buy of buy + | Update_owner of update_owner + | Update_details of update_details + | Skip of unit + +type storage is + record [ + identities : big_map (id, id_details); + next_id : int; + name_price : tez; + skip_price : tez + ] + +function buy + (const parameter : buy; + const storage : storage) : list (operation) * storage is +block { + if amount = storage.name_price + then skip + else failwith ("Incorrect amount paid."); + const profile : bytes = parameter.profile; + const initial_controller : option (address) + = parameter.initial_controller; + var identities : big_map (id, id_details) + := storage.identities; + const new_id : int = storage.next_id; + const controller : address + = case initial_controller of [ + Some (addr) -> addr + | None -> sender + ]; + const new_id_details : id_details + = record [ + owner = sender; + controller = controller; + profile = profile + ]; + identities [new_id] := new_id_details +} with + ((nil : list (operation)), + storage with + record [identities = identities; next_id = new_id + 1 + ]) + +function update_owner + (const parameter : update_owner; + const storage : storage) : list (operation) * storage is +block { + if (amount =/= 0mutez) + then + block { + failwith ("Updating owner doesn't cost anything.") + } + else skip; + const id : int = parameter.id; + const new_owner : address = parameter.new_owner; + var identities : big_map (id, id_details) + := storage.identities; + const id_details : id_details + = case identities [id] of [ + Some (id_details) -> id_details + | None -> + (failwith ("This ID does not exist.") : id_details) + ]; + if sender = id_details.owner + then skip + else failwith ("You are not the owner of this ID."); + id_details.owner := new_owner; + identities [id] := id_details +} with + ((nil : list (operation)), + storage with + record [identities = identities]) + +function update_details + (const parameter : update_details; + const storage : storage) : list (operation) * storage is +block { + if (amount =/= 0mutez) + then failwith ("Updating details doesn't cost anything.") + else skip; + const id : int = parameter.id; + const new_profile : option (bytes) = parameter.new_profile; + const new_controller : option (address) + = parameter.new_controller; + const identities : big_map (id, id_details) + = storage.identities; + const id_details : id_details + = case identities [id] of [ + Some (id_details) -> id_details + | None -> + (failwith ("This ID does not exist.") : id_details) + ]; + if (sender = id_details.controller) + or (sender = id_details.owner) + then skip + else + failwith + ("You are not the owner or controller of this ID."); + const owner : address = id_details.owner; + const profile : bytes + = case new_profile of [ + None -> id_details.profile + | Some (new_profile) -> new_profile + ]; + const controller : address + = case new_controller of [ + None -> id_details.controller + | Some (new_controller) -> new_controller + ]; + id_details.owner := owner; + id_details.controller := controller; + id_details.profile := profile; + identities [id] := id_details +} with + ((nil : list (operation)), + storage with + record [identities = identities]) + +function skip_ (const p : unit; const storage : storage) + : list (operation) * storage is +block { + if amount = storage.skip_price + then skip + else failwith ("Incorrect amount paid.") +} with + ((nil : list (operation)), + storage with + record [next_id = storage.next_id + 1]) + +function main + (const action : action; + const storage : storage) : list (operation) * storage is + case action of [ + Buy (b) -> buy (b, storage) + | Update_owner (uo) -> update_owner (uo, storage) + | Update_details (ud) -> update_details (ud, storage) + | Skip (s) -> skip_ (unit, storage) + ] diff --git a/src/test/contracts/expected/implicit_account.ligo.expected b/src/test/contracts/expected/implicit_account.ligo.expected new file mode 100644 index 000000000..cf8f0eaae --- /dev/null +++ b/src/test/contracts/expected/implicit_account.ligo.expected @@ -0,0 +1,2 @@ +function main (const kh : key_hash) : contract (unit) is + Tezos.implicit_account (kh) diff --git a/src/test/contracts/expected/included.ligo.expected b/src/test/contracts/expected/included.ligo.expected new file mode 100644 index 000000000..3f0a2d1ca --- /dev/null +++ b/src/test/contracts/expected/included.ligo.expected @@ -0,0 +1 @@ +const foo : int = 144 diff --git a/src/test/contracts/expected/includer.ligo.expected b/src/test/contracts/expected/includer.ligo.expected new file mode 100644 index 000000000..30f7ae052 --- /dev/null +++ b/src/test/contracts/expected/includer.ligo.expected @@ -0,0 +1,3 @@ +const foo : int = 144 + +const bar : int = foo diff --git a/src/test/contracts/expected/isnat.ligo.expected b/src/test/contracts/expected/isnat.ligo.expected new file mode 100644 index 000000000..1d2a4dfda --- /dev/null +++ b/src/test/contracts/expected/isnat.ligo.expected @@ -0,0 +1 @@ +function main (const i : int) : option (nat) is is_nat (i) diff --git a/src/test/contracts/expected/key_hash.ligo.expected b/src/test/contracts/expected/key_hash.ligo.expected new file mode 100644 index 000000000..f1d1219be --- /dev/null +++ b/src/test/contracts/expected/key_hash.ligo.expected @@ -0,0 +1,6 @@ +function check_hash_key + (const kh1 : key_hash; + const k2 : key) : bool * key_hash is +block { + var kh2 : key_hash := Crypto.hash_key (k2) +} with ((kh1 = kh2), kh2) diff --git a/src/test/contracts/expected/key_hash_comparable.ligo.expected b/src/test/contracts/expected/key_hash_comparable.ligo.expected new file mode 100644 index 000000000..1238ee547 --- /dev/null +++ b/src/test/contracts/expected/key_hash_comparable.ligo.expected @@ -0,0 +1,10 @@ +type storage is + record [ + one : map (key_hash, nat); + two : big_map (key_hash, bool) + ] + +type return is list (operation) * storage + +function main (const a : int; const store : storage) + : return is ((nil : list (operation)), store) diff --git a/src/test/contracts/expected/lambda.ligo.expected b/src/test/contracts/expected/lambda.ligo.expected new file mode 100644 index 000000000..f796dff08 --- /dev/null +++ b/src/test/contracts/expected/lambda.ligo.expected @@ -0,0 +1,4 @@ +function f (const x : unit) : unit is Unit + +function main (const p : unit; const s : unit) : unit is + f (Unit) diff --git a/src/test/contracts/expected/list.ligo.expected b/src/test/contracts/expected/list.ligo.expected new file mode 100644 index 000000000..037ea9069 --- /dev/null +++ b/src/test/contracts/expected/list.ligo.expected @@ -0,0 +1,32 @@ +type foobar is list (int) + +const fb : foobar = list [23; 42] + +const fb2 : foobar = 144 # fb + +const fb3 : foobar = cons (688, fb2) + +function size_ (const m : foobar) : nat is size (m) + +const bl : foobar = list [144; 51; 42; 120; 421] + +function fold_op (const s : list (int)) : int is +block { + function aggregate (const prec : int; const cur : int) + : int is prec + cur +} with List.fold (aggregate, s, 10) + +function iter_op (const s : list (int)) : int is +block { + var r : int := 0; + function aggregate (const i : int) : unit is + block { + r := r + i + } with unit; + List.iter (aggregate, s) +} with r + +function map_op (const s : list (int)) : list (int) is +block { + function increment (const i : int) : int is i + 1 +} with List.map (increment, s) diff --git a/src/test/contracts/expected/loop.ligo.expected b/src/test/contracts/expected/loop.ligo.expected new file mode 100644 index 000000000..d6b3df0b0 --- /dev/null +++ b/src/test/contracts/expected/loop.ligo.expected @@ -0,0 +1,231 @@ +function counter (var n : nat) : nat is +block { + var i : nat := 0n; + while i < n + block { + i := i + 1n + } +} with i + +function while_sum (var n : nat) : nat is +block { + var i : nat := 0n; + var r : nat := 0n; + while i < n + block { + i := i + 1n; + r := r + i + } +} with r + +function for_sum (var n : nat) : int is +block { + var acc : int := 0; + for i := 1 to int (n) + block { + acc := acc + i + } +} with acc + +function for_sum_step (var n : nat) : int is +block { + var acc : int := 0; + for i := 1 to int (2n * n) step 2 + block { + acc := acc + i + } +} with acc + +function for_collection_list (var nee : unit) + : (int * string) is +block { + var acc : int := 0; + var st : string := "to"; + var mylist : list (int) := list [1; 1; 1]; + for x in list mylist + block { + acc := acc + x; + st := st ^ "to" + } +} with (acc, st) + +function for_collection_set (var nee : unit) + : int * string is +block { + var acc : int := 0; + var st : string := "to"; + var myset : set (int) := set [1; 2; 3]; + for x in set myset + block { + acc := acc + x; + st := st ^ "to" + } +} with (acc, st) + +function for_collection_if_and_local_var (var nee : unit) + : int is +block { + var acc : int := 0; + const theone : int = 1; + const thetwo : int = 2; + var myset : set (int) := set [1; 2; 3]; + for x in set myset + block { + if x = theone + then acc := acc + x + else + if x = thetwo + then acc := acc + thetwo + else acc := acc + 10 + } +} with acc + +function for_collection_rhs_capture (var nee : unit) + : int is +block { + var acc : int := 0; + const mybigint : int = 1000; + var myset : set (int) := set [1; 2; 3]; + for x in set myset + block { + if x = 1 then acc := acc + mybigint else acc := acc + 10 + } +} with acc + +function for_collection_proc_call (var nee : unit) : int is +block { + var acc : int := 0; + var myset : set (int) := set [1; 2; 3]; + for x in set myset + block { + if x = 1 + then acc := acc + for_collection_rhs_capture (unit) + else acc := acc + 10 + } +} with acc + +function for_collection_comp_with_acc (var nee : unit) + : int is +block { + var myint : int := 0; + var mylist : list (int) := list [1; 10; 15]; + for x in list mylist + block { + if x < myint then skip else myint := myint + 10 + } +} with myint + +function for_collection_with_patches (var nee : unit) + : map (string, int) is +block { + var myint : int := 12; + var mylist : list (string) := list ["I"; "am"; "foo"]; + var mymap : map (string, int) := map []; + for x in list mylist + block { + patch mymap with map [x -> myint] + } +} with mymap + +function for_collection_empty (var nee : unit) : int is +block { + var acc : int := 0; + var myset : set (int) := set [1; 2; 3]; + for x in set myset + block { + skip + } +} with acc + +function for_collection_map_kv (var nee : unit) + : int * string is +block { + var acc : int := 0; + var st : string := ""; + var mymap : map (string, int) + := map ["1" -> 1; "2" -> 2; "3" -> 3]; + for k -> v in map mymap + block { + acc := acc + v; + st := st ^ k + } +} with (acc, st) + +function for_collection_map_k (var nee : unit) : string is +block { + var st : string := ""; + var mymap : map (string, int) + := map ["1" -> 1; "2" -> 2; "3" -> 3]; + for k in map mymap + block { + st := st ^ k + } +} with st + +function nested_for_collection (var nee : unit) + : int * string is +block { + var myint : int := 0; + var mystoo : string := ""; + var mylist : list (int) := list [1; 2; 3]; + var mymap : map (string, string) + := map [" one" -> ","; "two" -> " "]; + for i in list mylist + block { + myint := myint + i; + var myset : set (string) := set ["1"; "2"; "3"]; + for st in set myset + block { + myint := myint + i; + mystoo := mystoo ^ st; + for k -> v in map mymap + block { + mystoo := mystoo ^ k ^ v + } + } + } +} with (myint, mystoo) + +function nested_for_collection_local_var (var nee : unit) + : int * string is +block { + var myint : int := 0; + var myst : string := ""; + var mylist : list (int) := list [1; 2; 3]; + for i in list mylist + block { + var myst_loc : string := ""; + myint := myint + i; + var myset : set (string) := set ["1"; "2"; "3"]; + for st in set myset + block { + myint := myint + i; + myst_loc := myst_loc ^ st + }; + myst := myst_loc ^ myst + } +} with (myint, myst) + +function dummy (const n : nat) : nat is +block { + while false + block { + skip + } +} with n + +function inner_capture_in_conditional_block (var nee : unit) + : bool * int is +block { + var count : int := 1; + var ret : bool := false; + var mylist : list (int) := list [1; 2; 3]; + for it1 in list mylist + block { + for it2 in list mylist + block { + if count = it2 then ret := not (ret) else skip + }; + count := count + 1 + } +} with (ret, count) diff --git a/src/test/contracts/expected/loop_bugs.ligo.expected b/src/test/contracts/expected/loop_bugs.ligo.expected new file mode 100644 index 000000000..4687969d7 --- /dev/null +++ b/src/test/contracts/expected/loop_bugs.ligo.expected @@ -0,0 +1,23 @@ +function shadowing_in_body (var nee : unit) : string is +block { + var st : string := ""; + var list1 : list (string) := list ["to"; "to"]; + for x in list list1 + block { + const x : string = "ta"; + st := st ^ x + } +} with st + +function shadowing_assigned_in_body (var nee : unit) + : string is +block { + var st : string := ""; + var list1 : list (string) := list ["to"; "to"]; + for x in list list1 + block { + st := st ^ x; + var st : string := "ta"; + st := st ^ x + } +} with st diff --git a/src/test/contracts/expected/map.ligo.expected b/src/test/contracts/expected/map.ligo.expected new file mode 100644 index 000000000..2f52f4e84 --- /dev/null +++ b/src/test/contracts/expected/map.ligo.expected @@ -0,0 +1,66 @@ +type foobar is map (int, int) + +const empty_map : foobar = map [] + +const map1 : foobar += map [144 -> 23; 51 -> 23; 42 -> 23; 120 -> 23; 421 -> 23] + +const map2 : foobar = map [23 -> 0; 42 -> 0] + +function set_ (var n : int; var m : foobar) : foobar is +block { + m [23] := n +} with m + +function add (var n : int; var m : foobar) : foobar is + set_ (n, m) + +function rm (var m : foobar) : foobar is +block { + remove 42 from map m +} with m + +function patch_ (var m : foobar) : foobar is +block { + patch m with map [0 -> 5; 1 -> 6; 2 -> 7] +} with m + +function patch_deep (var m : foobar * nat) : foobar * nat is +block { + patch m.0 with map [1 -> 9] +} with m + +function size_ (const m : foobar) : nat is Map.size (m) + +function get (const m : foobar) : option (int) is m [42] + +function mem (const k : int; const m : foobar) : bool is + Map.mem (k, m) + +function iter_op (const m : foobar) : unit is +block { + function aggregate (const i : int; const j : int) + : unit is + block { + if i = j then skip else failwith ("fail") + } with unit +} with Map.iter (aggregate, m) + +function map_op (const m : foobar) : foobar is +block { + function increment (const i : int; const j : int) : int is + j + 1 +} with Map.map (increment, m) + +function fold_op (const m : foobar) : int is +block { + function aggregate (const i : int; const j : int * int) + : int is i + j.0 + j.1 +} with Map.fold (aggregate, m, 10) + +function deep_op (var m : foobar) : foobar is +block { + var coco : int * foobar := (0, m); + remove 42 from map coco.1; + coco.1 [32] := 16 +} with coco.1 diff --git a/src/test/contracts/expected/match.ligo.expected b/src/test/contracts/expected/match.ligo.expected new file mode 100644 index 000000000..1aca68682 --- /dev/null +++ b/src/test/contracts/expected/match.ligo.expected @@ -0,0 +1,36 @@ +function match_bool (const i : int) : int is +block { + var result : int := 23; + case i = 2 of [ + True -> result := 42 + | False -> result := 0 + ] +} with result + +function match_option (const o : option (int)) : int is +block { + var result : int := 23; + case o of [ + None -> skip + | Some (s) -> result := s + ] +} with result + +function match_expr_bool (const i : int) : int is + case i = 2 of [ + True -> 42 + | False -> 0 + ] + +function match_expr_option (const o : option (int)) : int is + case o of [ + None -> 42 + | Some (s) -> s + ] + +function match_expr_list (const l : list (int)) : int is + case l of [ + nil -> -1 + | hd # + tl -> hd + ] diff --git a/src/test/contracts/expected/michelson_or_tree.ligo.expected b/src/test/contracts/expected/michelson_or_tree.ligo.expected new file mode 100644 index 000000000..61754f7bb --- /dev/null +++ b/src/test/contracts/expected/michelson_or_tree.ligo.expected @@ -0,0 +1,13 @@ +type inner_storage is michelson_or (int, "one", nat, "two") + +type storage is + michelson_or (int, "three", inner_storage, "four") + +type return is list (operation) * storage + +function main (const action : unit; const store : storage) + : return is +block { + const foo : storage + = (M_right ((M_left (1) : inner_storage)) : storage) +} with ((nil : list (operation)), (foo : storage)) diff --git a/src/test/contracts/expected/michelson_or_tree_intermediary.ligo.expected b/src/test/contracts/expected/michelson_or_tree_intermediary.ligo.expected new file mode 100644 index 000000000..3864b02ae --- /dev/null +++ b/src/test/contracts/expected/michelson_or_tree_intermediary.ligo.expected @@ -0,0 +1,13 @@ +type inner_storage is michelson_or (int, "one", nat, "two") + +type storage is + michelson_or (int, "three", inner_storage, "") + +type return is list (operation) * storage + +function main (const action : unit; const store : storage) + : return is +block { + const foo : storage + = (M_right ((M_left (1) : inner_storage)) : storage) +} with ((nil : list (operation)), (foo : storage)) diff --git a/src/test/contracts/expected/michelson_pair_tree.ligo.expected b/src/test/contracts/expected/michelson_pair_tree.ligo.expected new file mode 100644 index 000000000..10a2ae985 --- /dev/null +++ b/src/test/contracts/expected/michelson_pair_tree.ligo.expected @@ -0,0 +1,13 @@ +type inner_storage is + michelson_pair (int, "one", nat, "two") + +type storage is + michelson_pair (string, "three", inner_storage, "four") + +type return is list (operation) * storage + +function main (const action : unit; const store : storage) + : return is +block { + const foo : storage = ("foo", (1, 2n)) +} with ((nil : list (operation)), (foo : storage)) diff --git a/src/test/contracts/expected/michelson_pair_tree_intermediary.ligo.expected b/src/test/contracts/expected/michelson_pair_tree_intermediary.ligo.expected new file mode 100644 index 000000000..848388bc2 --- /dev/null +++ b/src/test/contracts/expected/michelson_pair_tree_intermediary.ligo.expected @@ -0,0 +1,13 @@ +type inner_storage is + michelson_pair (int, "one", nat, "two") + +type storage is + michelson_pair (string, "three", inner_storage, "") + +type return is list (operation) * storage + +function main (const action : unit; const store : storage) + : return is +block { + const foo : storage = ("foo", (1, 2n)) +} with ((nil : list (operation)), (foo : storage)) diff --git a/src/test/contracts/expected/multiple-parameters.ligo.expected b/src/test/contracts/expected/multiple-parameters.ligo.expected new file mode 100644 index 000000000..1788ec658 --- /dev/null +++ b/src/test/contracts/expected/multiple-parameters.ligo.expected @@ -0,0 +1,14 @@ +function ab (const a : int; const b : int) : int is a + b + +function abcd + (const a : int; + const b : int; + const c : int; + const d : int) : int is a + b + c + d + 2 + +function abcde + (const a : int; + const b : int; + const c : int; + const d : int; + const e : int) : int is c + e + 3 diff --git a/src/test/contracts/expected/multisig-v2.ligo.expected b/src/test/contracts/expected/multisig-v2.ligo.expected new file mode 100644 index 000000000..3690c90a7 --- /dev/null +++ b/src/test/contracts/expected/multisig-v2.ligo.expected @@ -0,0 +1,129 @@ +type threshold is nat + +type max_proposal is nat + +type max_message_size is nat + +type state_hash is bytes + +type addr_set is set (address) + +type message_store is map (bytes, addr_set) + +type proposal_counters is map (address, nat) + +type storage is + record [ + state_hash : state_hash; + threshold : threshold; + max_proposal : max_proposal; + max_message_size : max_message_size; + authorized_addresses : addr_set; + message_store : message_store; + proposal_counters : proposal_counters + ] + +type message is bytes -> list (operation) + +type send_pt is message + +type withdraw_pt is message + +type default_pt is unit + +type return is list (operation) * storage + +type parameter is + Send of send_pt + | Withdraw of withdraw_pt + | Default of default_pt + +function send (const param : send_pt; const s : storage) + : return is +block { + if not Set.mem (Tezos.sender, s.authorized_addresses) + then failwith ("Unauthorized address") + else skip; + var message : message := param; + const packed_msg : bytes = Bytes.pack (message); + if Bytes.length (packed_msg) > s.max_message_size + then failwith ("Message size exceed maximum limit") + else skip; + var new_store : addr_set := set []; + case map_get (packed_msg, s.message_store) of [ + Some (voters) -> + block { + if Set.mem (Tezos.sender, voters) + then skip + else + s.proposal_counters [Tezos.sender] := + get_force (Tezos.sender, s.proposal_counters) + + 1n; + new_store := Set.add (Tezos.sender, voters) + } + | None -> + block { + s.proposal_counters [sender] := + get_force (Tezos.sender, s.proposal_counters) + 1n; + new_store := set [Tezos.sender] + } + ]; + var sender_proposal_counter : nat + := get_force (Tezos.sender, s.proposal_counters); + if sender_proposal_counter > s.max_proposal + then failwith ("Maximum number of proposal reached") + else skip; + var ret_ops : list (operation) := nil; + if Set.cardinal (new_store) >= s.threshold + then { + remove packed_msg from map s.message_store; + ret_ops := message (s.state_hash); + s.state_hash := + Crypto.sha256 + (Bytes.concat (s.state_hash, packed_msg)); + for addr -> ctr in map s.proposal_counters + block { + if Set.mem (addr, new_store) + then s.proposal_counters [addr] := abs (ctr - 1n) + else skip + } + } + else s.message_store [packed_msg] := new_store +} with (ret_ops, s) + +function withdraw + (const param : withdraw_pt; + const s : storage) : return is +block { + var message : message := param; + const packed_msg : bytes = Bytes.pack (message); + case s.message_store [packed_msg] of [ + Some (voters) -> + block { + const new_set : addr_set + = Set.remove (Tezos.sender, voters); + if Set.cardinal (voters) =/= Set.cardinal (new_set) + then + s.proposal_counters [Tezos.sender] := + abs + (get_force (Tezos.sender, s.proposal_counters) + - 1n) + else skip; + if Set.cardinal (new_set) = 0n + then remove packed_msg from map s.message_store + else s.message_store [packed_msg] := new_set + } + | None -> skip + ] +} with ((nil : list (operation)), s) + +function default (const p : default_pt; const s : storage) + : return is ((nil : list (operation)), s) + +function main (const param : parameter; const s : storage) + : return is + case param of [ + Send (p) -> send (p, s) + | Withdraw (p) -> withdraw (p, s) + | Default (p) -> default (p, s) + ] diff --git a/src/test/contracts/expected/multisig.ligo.expected b/src/test/contracts/expected/multisig.ligo.expected new file mode 100644 index 000000000..a1dd67ccf --- /dev/null +++ b/src/test/contracts/expected/multisig.ligo.expected @@ -0,0 +1,73 @@ +type counter is nat + +type threshold is nat + +type authorized_keys is list (key) + +type id is string + +type storage is + record [ + id : id; + counter : counter; + threshold : threshold; + auth : authorized_keys + ] + +type message is unit -> list (operation) + +type signatures is list (key_hash * signature) + +type check_message_pt is + record [ + counter : counter; + message : message; + signatures : signatures + ] + +type return is list (operation) * storage + +type parameter is CheckMessage of check_message_pt + +function check_message + (const param : check_message_pt; + const s : storage) : return is +block { + var message : message := param.message; + if param.counter =/= s.counter + then failwith ("Counters does not match") + else { + const packed_payload : bytes + = Bytes.pack + ((message, param.counter, s.id, Tezos.chain_id)); + var valid : nat := 0n; + var keys : authorized_keys := s.auth; + for pkh_sig in list param.signatures + block { + case keys of [ + nil -> skip + | key # + tl -> + block { + keys := tl; + if pkh_sig.0 = Crypto.hash_key (key) + then + if Crypto.check + (key, pkh_sig.1, packed_payload) + then valid := valid + 1n + else failwith ("Invalid signature") + else skip + } + ] + }; + if valid < s.threshold + then failwith ("Not enough signatures passed the check") + else s.counter := s.counter + 1n + } +} with (message (unit), s) + +function main (const param : parameter; const s : storage) + : return is + case param of [ + CheckMessage (p) -> check_message (p, s) + ] diff --git a/src/test/contracts/expected/option.ligo.expected b/src/test/contracts/expected/option.ligo.expected new file mode 100644 index 000000000..7d14ffd57 --- /dev/null +++ b/src/test/contracts/expected/option.ligo.expected @@ -0,0 +1,12 @@ +type foobar is option (int) + +const s : foobar = Some (42) + +const n : foobar = None + +function assign (var m : int) : foobar is +block { + var coco : foobar := None; + coco := Some (m); + coco := (None : foobar) +} with coco diff --git a/src/test/contracts/expected/quote-declaration.ligo.expected b/src/test/contracts/expected/quote-declaration.ligo.expected new file mode 100644 index 000000000..d11fa919b --- /dev/null +++ b/src/test/contracts/expected/quote-declaration.ligo.expected @@ -0,0 +1,3 @@ +function foo (const input : int) : int is input + 42 + +function main (const i : int) : int is i + foo (i) diff --git a/src/test/contracts/expected/quote-declarations.ligo.expected b/src/test/contracts/expected/quote-declarations.ligo.expected new file mode 100644 index 000000000..d98fbe15a --- /dev/null +++ b/src/test/contracts/expected/quote-declarations.ligo.expected @@ -0,0 +1,5 @@ +function foo (const input : int) : int is input + 23 + +function bar (const input : int) : int is input + 51 + +function main (const i : int) : int is foo (i) + bar (i) diff --git a/src/test/contracts/expected/record.ligo.expected b/src/test/contracts/expected/record.ligo.expected new file mode 100644 index 000000000..42bed16b0 --- /dev/null +++ b/src/test/contracts/expected/record.ligo.expected @@ -0,0 +1,41 @@ +type foobar is record [foo : int; bar : int] + +const fb : foobar = record [foo = 0; bar = 0] + +type abc is record [a : int; b : int; c : int] + +const abc : abc = record [a = 42; b = 142; c = 242] + +const a : int = abc.a + +const b : int = abc.b + +const c : int = abc.c + +function projection (const r : foobar) : int is + r.foo + r.bar + +function modify (var r : foobar) : foobar is +block { + r.foo := 256 +} with r + +function modify_abc (const r : abc) : abc is +block { + const c : int = 42; + r := r with record [b = 2048; c = c] +} with r + +type big_record is + record [a : int; b : int; c : int; d : int; e : int] + +const br : big_record += record [a = 23; b = 23; c = 23; d = 23; e = 23] + +type double_record is record [inner : abc] + +function modify_inner (const r : double_record) + : double_record is +block { + r := r with record [inner.b = 2048] +} with r diff --git a/src/test/contracts/expected/recursion.ligo.expected b/src/test/contracts/expected/recursion.ligo.expected new file mode 100644 index 000000000..e314beac4 --- /dev/null +++ b/src/test/contracts/expected/recursion.ligo.expected @@ -0,0 +1,9 @@ +recursive function sum (const n : int; const acc : int) + : int is if n < 1 then acc else sum (n - 1, acc + n) + +recursive +function fibo + (const n : int; + const n_1 : int; + const n_0 : int) : int is + if n < 2 then n_1 else fibo (n - 1, n_1 + n_0, n_1) diff --git a/src/test/contracts/expected/redeclaration.ligo.expected b/src/test/contracts/expected/redeclaration.ligo.expected new file mode 100644 index 000000000..5a22cbe79 --- /dev/null +++ b/src/test/contracts/expected/redeclaration.ligo.expected @@ -0,0 +1,7 @@ +function foo (const p : unit) : int is 0 + +function main (const p : unit; const s : int) + : list (operation) * int is + ((nil : list (operation)), foo (unit)) + +function foo (const p : unit) : int is 1 diff --git a/src/test/contracts/expected/replaceable_id.ligo.expected b/src/test/contracts/expected/replaceable_id.ligo.expected new file mode 100644 index 000000000..770be4682 --- /dev/null +++ b/src/test/contracts/expected/replaceable_id.ligo.expected @@ -0,0 +1,40 @@ +type storage_t is address + +type change_addr_pt is address + +type message_t is list (operation) + +type pass_message_pt is unit -> message_t + +type contract_return_t is list (operation) * storage_t + +type entry_point_t is + Change_address of change_addr_pt + | Pass_message of pass_message_pt + +function change_address + (const param : change_addr_pt; + const s : storage_t) : contract_return_t is +block { + if sender =/= s + then failwith ("Unauthorized sender") + else skip +} with ((nil : list (operation)), param) + +function pass_message + (const param : pass_message_pt; + const s : storage_t) : contract_return_t is +block { + if sender =/= s + then failwith ("Unauthorized sender") + else skip; + var message : pass_message_pt := param +} with (param (unit), s) + +function main + (const param : entry_point_t; + const s : storage_t) : contract_return_t is + case param of [ + Change_address (p) -> change_address (p, s) + | Pass_message (p) -> pass_message (p, s) + ] diff --git a/src/test/contracts/expected/self_address.ligo.expected b/src/test/contracts/expected/self_address.ligo.expected new file mode 100644 index 000000000..fe2f4bb47 --- /dev/null +++ b/src/test/contracts/expected/self_address.ligo.expected @@ -0,0 +1,2 @@ +function main (const p : unit) : address is + Tezos.self_address diff --git a/src/test/contracts/expected/self_type_annotation.ligo.expected b/src/test/contracts/expected/self_type_annotation.ligo.expected new file mode 100644 index 000000000..97bcefb75 --- /dev/null +++ b/src/test/contracts/expected/self_type_annotation.ligo.expected @@ -0,0 +1,12 @@ +type parameter is nat + +type storage is int + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is +block { + const self_contract : contract (parameter) + = Tezos.self ("%default") +} with ((nil : list (operation)), s) diff --git a/src/test/contracts/expected/self_with_entrypoint.ligo.expected b/src/test/contracts/expected/self_with_entrypoint.ligo.expected new file mode 100644 index 000000000..afea653ae --- /dev/null +++ b/src/test/contracts/expected/self_with_entrypoint.ligo.expected @@ -0,0 +1,14 @@ +type parameter is Default | Toto of int + +type storage is nat + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is +block { + const self_contract : contract (int) + = Tezos.self ("%toto"); + const op : operation + = Tezos.transaction (2, 300000000mutez, self_contract) +} with (list [op], s) diff --git a/src/test/contracts/expected/self_without_entrypoint.ligo.expected b/src/test/contracts/expected/self_without_entrypoint.ligo.expected new file mode 100644 index 000000000..7ad2b11c8 --- /dev/null +++ b/src/test/contracts/expected/self_without_entrypoint.ligo.expected @@ -0,0 +1,14 @@ +type parameter is int + +type storage is nat + +type return is list (operation) * storage + +function main (const p : parameter; const s : storage) + : return is +block { + const self_contract : contract (int) + = Tezos.self ("%default"); + const op : operation + = Tezos.transaction (2, 300000000mutez, self_contract) +} with (list [op], s) diff --git a/src/test/contracts/expected/set_arithmetic-1.ligo.expected b/src/test/contracts/expected/set_arithmetic-1.ligo.expected new file mode 100644 index 000000000..45037792b --- /dev/null +++ b/src/test/contracts/expected/set_arithmetic-1.ligo.expected @@ -0,0 +1,15 @@ +function iter_op (const s : set (int)) : int is +block { + var r : int := 0; + function aggregate (const i : int) : unit is + block { + r := r + i + } with unit; + set_iter (aggregate, s) +} with r + +function fold_op (const s : set (int)) : int is +block { + function aggregate (const i : int; const j : int) : int is + i + j +} with set_fold (aggregate, s, 15) diff --git a/src/test/contracts/expected/set_arithmetic.ligo.expected b/src/test/contracts/expected/set_arithmetic.ligo.expected new file mode 100644 index 000000000..28118588b --- /dev/null +++ b/src/test/contracts/expected/set_arithmetic.ligo.expected @@ -0,0 +1,35 @@ +const s_e : set (string) = set_empty + +const s_fb : set (string) = set ["foo"; "bar"] + +function add_op (const s : set (string)) : set (string) is + set_add ("foobar", s) + +function remove_op (const s : set (string)) + : set (string) is set_remove ("foobar", s) + +function remove_syntax (var s : set (string)) + : set (string) is +block { + remove "foobar" from set s +} with s + +function remove_deep (var s : set (string) * nat) + : set (string) * nat is +block { + remove "foobar" from set s.0 +} with s + +function patch_op (var s : set (string)) : set (string) is +block { + patch s with set ["foobar"] +} with s + +function patch_op_deep (var s : set (string) * nat) + : set (string) * nat is +block { + patch s.0 with set ["foobar"] +} with s + +function mem_op (const s : set (string)) : bool is + set_mem ("foobar", s) diff --git a/src/test/contracts/expected/set_delegate.ligo.expected b/src/test/contracts/expected/set_delegate.ligo.expected new file mode 100644 index 000000000..f26cf195a --- /dev/null +++ b/src/test/contracts/expected/set_delegate.ligo.expected @@ -0,0 +1,5 @@ +function main (const p : key_hash) : list (operation) is +block { + const unused : operation = set_delegate (Some (p)); + const dummy : list (operation) = nil +} with dummy diff --git a/src/test/contracts/expected/shadow.ligo.expected b/src/test/contracts/expected/shadow.ligo.expected new file mode 100644 index 000000000..9e94f0f6c --- /dev/null +++ b/src/test/contracts/expected/shadow.ligo.expected @@ -0,0 +1,4 @@ +function foo (const i : int) : int is +block { + function bar (const i : int) : int is i +} with bar (0) diff --git a/src/test/contracts/expected/simple_access.ligo.expected b/src/test/contracts/expected/simple_access.ligo.expected new file mode 100644 index 000000000..e761e1c5b --- /dev/null +++ b/src/test/contracts/expected/simple_access.ligo.expected @@ -0,0 +1,19 @@ +type tpi is int * int + +type rpi is record [x : int; y : int] + +type mpi is map (string, int) + +function main (const toto : tpi) : int is +block { + var a : tpi := toto; + var b : rpi := record [x = 0; y = 1]; + var m : mpi := map ["y" -> 1]; + a.0 := 2; + b.x := a.0; + m ["x"] := b.x +} with + case m ["x"] of [ + Some (s) -> s + | None -> 42 + ] diff --git a/src/test/contracts/expected/string.ligo.expected b/src/test/contracts/expected/string.ligo.expected new file mode 100644 index 000000000..7dd9377be --- /dev/null +++ b/src/test/contracts/expected/string.ligo.expected @@ -0,0 +1,7 @@ +const s : string = "toto" + +const x : string = s ^ "bar" + +const y : string = "foo" ^ x + +const v : string = {|deadbeef|} diff --git a/src/test/contracts/expected/string_arithmetic.ligo.expected b/src/test/contracts/expected/string_arithmetic.ligo.expected new file mode 100644 index 000000000..d76fd041d --- /dev/null +++ b/src/test/contracts/expected/string_arithmetic.ligo.expected @@ -0,0 +1,5 @@ +function concat_op (const s : string) : string is + string_concat (s, "toto") + +function slice_op (const s : string) : string is + string_slice (1n, 2n, s) diff --git a/src/test/contracts/expected/super-counter.ligo.expected b/src/test/contracts/expected/super-counter.ligo.expected new file mode 100644 index 000000000..e10a7ba04 --- /dev/null +++ b/src/test/contracts/expected/super-counter.ligo.expected @@ -0,0 +1,12 @@ +type action is Increment of int | Decrement of int + +type storage is int + +type return is list (operation) * storage + +function main (const p : action; const s : int) : return is + ((nil : list (operation)), + case p of [ + Increment (n) -> s + n + | Decrement (n) -> s - n + ]) diff --git a/src/test/contracts/expected/tez.ligo.expected b/src/test/contracts/expected/tez.ligo.expected new file mode 100644 index 000000000..15573508a --- /dev/null +++ b/src/test/contracts/expected/tez.ligo.expected @@ -0,0 +1,21 @@ +const add_tez : tez = 21mutez + 21mutez + +const sub_tez : tez = 21mutez - 20mutez + +const not_enough_tez : tez = 4611686018427387903mutez + +const nat_mul_tez : tez = 1n * 100mutez + +const tez_mul_nat : tez = 100mutez * 10n + +const tez_div_tez1 : nat = 100mutez / 1mutez + +const tez_div_tez2 : nat = 100mutez / 90mutez + +const tez_div_tez3 : nat = 100mutez / 110mutez + +const tez_mod_tez1 : tez = 100mutez mod 1mutez + +const tez_mod_tez2 : tez = 100mutez mod 90mutez + +const tez_mod_tez3 : tez = 100mutez mod 110mutez diff --git a/src/test/contracts/expected/time-lock.ligo.expected b/src/test/contracts/expected/time-lock.ligo.expected new file mode 100644 index 000000000..96f6c1c4d --- /dev/null +++ b/src/test/contracts/expected/time-lock.ligo.expected @@ -0,0 +1,34 @@ +type storage_t is timestamp + +type message_t is unit -> list (operation) + +type default_pt is unit + +type call_pt is message_t + +type contract_return_t is list (operation) * storage_t + +type entry_point_t is + Call of call_pt + | Default of default_pt + +function call (const p : call_pt; const s : storage_t) + : contract_return_t is +block { + if s >= now + then failwith ("Contract is still time locked") + else skip; + const message : message_t = p; + const ret_ops : list (operation) = message (unit) +} with (ret_ops, s) + +function default (const p : default_pt; const s : storage_t) + : contract_return_t is ((nil : list (operation)), s) + +function main + (const param : entry_point_t; + const s : storage_t) : contract_return_t is + case param of [ + Call (p) -> call (p, s) + | Default (p) -> default (p, s) + ] diff --git a/src/test/contracts/expected/timestamp.ligo.expected b/src/test/contracts/expected/timestamp.ligo.expected new file mode 100644 index 000000000..2156b166d --- /dev/null +++ b/src/test/contracts/expected/timestamp.ligo.expected @@ -0,0 +1,5 @@ +type storage_ is timestamp + +function main (const p : unit; const s : storage_) + : list (operation) * storage_ is + ((nil : list (operation)), now) diff --git a/src/test/contracts/expected/toto.ligo.expected b/src/test/contracts/expected/toto.ligo.expected new file mode 100644 index 000000000..6fd888e1c --- /dev/null +++ b/src/test/contracts/expected/toto.ligo.expected @@ -0,0 +1,3 @@ +type toto is record [a : nat; b : nat] + +const foo : int = 3 diff --git a/src/test/contracts/expected/tuple.ligo.expected b/src/test/contracts/expected/tuple.ligo.expected new file mode 100644 index 000000000..13bd93377 --- /dev/null +++ b/src/test/contracts/expected/tuple.ligo.expected @@ -0,0 +1,27 @@ +type abc is int * int * int + +function projection_abc (const tpl : abc) : int is tpl.1 + +function modify_abc (const tpl : abc) : abc is +block { + tpl.1 := 2048 +} with tpl + +type foobar is int * int + +const fb : foobar = (0, 0) + +function projection (const tpl : foobar) : int is + tpl.0 + tpl.1 + +type big_tuple is + int * int * int * int * int * int * int * int * int * + int * int * int + +const br : big_tuple += (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) + +function update (const tpl : big_tuple) : big_tuple is +block { + tpl.11 := 2048 +} with tpl diff --git a/src/test/contracts/expected/type-alias.ligo.expected b/src/test/contracts/expected/type-alias.ligo.expected new file mode 100644 index 000000000..3fcbc5379 --- /dev/null +++ b/src/test/contracts/expected/type-alias.ligo.expected @@ -0,0 +1,3 @@ +type toto is int + +const foo : toto = 23 diff --git a/src/test/contracts/expected/unit.ligo.expected b/src/test/contracts/expected/unit.ligo.expected new file mode 100644 index 000000000..5b05cb2b7 --- /dev/null +++ b/src/test/contracts/expected/unit.ligo.expected @@ -0,0 +1 @@ +const u : unit = unit diff --git a/src/test/contracts/expected/variant-matching.ligo.expected b/src/test/contracts/expected/variant-matching.ligo.expected new file mode 100644 index 000000000..14b8841f1 --- /dev/null +++ b/src/test/contracts/expected/variant-matching.ligo.expected @@ -0,0 +1,8 @@ +type foobar is Foo of int | Bar of bool | Kee of nat + +function fb (const p : foobar) : int is + case p of [ + Foo (n) -> n + | Bar (t) -> 42 + | Kee (n) -> 23 + ] diff --git a/src/test/contracts/expected/variant.ligo.expected b/src/test/contracts/expected/variant.ligo.expected new file mode 100644 index 000000000..cd06f7ec3 --- /dev/null +++ b/src/test/contracts/expected/variant.ligo.expected @@ -0,0 +1,7 @@ +type foobar is Foo of int | Bar of bool | Kee of nat + +const foo : foobar = Foo (42) + +const bar : foobar = Bar (true) + +const kee : foobar = Kee (23n) diff --git a/src/test/contracts/expected/website1.ligo.expected b/src/test/contracts/expected/website1.ligo.expected new file mode 100644 index 000000000..50e4a0851 --- /dev/null +++ b/src/test/contracts/expected/website1.ligo.expected @@ -0,0 +1,3 @@ +function main (const p : int; const s : int) + : list (operation) * int is + ((nil : list (operation)), s + 1) diff --git a/src/test/contracts/expected/website2.ligo.expected b/src/test/contracts/expected/website2.ligo.expected new file mode 100644 index 000000000..c7fb8fa6f --- /dev/null +++ b/src/test/contracts/expected/website2.ligo.expected @@ -0,0 +1,15 @@ +type action is Increment of int | Decrement of int + +type return is list (operation) * int + +function add (const a : int; const b : int) : int is a + b + +function subtract (const a : int; const b : int) : int is + a - b + +function main (const p : action; const s : int) : return is + ((nil : list (operation)), + case p of [ + Increment (n) -> add (s, n) + | Decrement (n) -> subtract (s, n) + ]) From cee9cc841eb1dfb8fbe63bbfc2e126434db15ea0 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Mon, 8 Jun 2020 15:07:20 +0200 Subject: [PATCH 57/67] More fixes for PascaLIGO. --- src/passes/01-parser/pascaligo/Pretty.ml | 4 ++-- src/test/contracts/dune | 3 --- .../contracts/expected/boolean_operators.ligo.expected | 8 ++++---- src/test/contracts/expected/loop.ligo.expected | 4 ++-- src/test/contracts/expected/variant.ligo.expected | 2 +- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index b65c3d6d8..e2a5b4cfd 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -411,8 +411,8 @@ and pp_bool_expr = function Or e -> pp_bin_op "or" e | And e -> pp_bin_op "and" e | Not e -> pp_un_op "not" e -| True _ -> string "true" -| False _ -> string "false" +| True _ -> string "True" +| False _ -> string "False" and pp_bin_op op {value; _} = let {arg1; arg2; _} = value diff --git a/src/test/contracts/dune b/src/test/contracts/dune index 7068bb793..0f59f8b84 100644 --- a/src/test/contracts/dune +++ b/src/test/contracts/dune @@ -1053,7 +1053,6 @@ (rule (targets arithmetic.ligo_ast) (action (with-stdout-to arithmetic.ligo_ast (run ligo print-ast arithmetic.ligo -s pascaligo))) (deps arithmetic.ligo)) (rule (targets assign.ligo_ast) (action (with-stdout-to assign.ligo_ast (run ligo print-ast assign.ligo -s pascaligo))) (deps assign.ligo)) (rule (targets attributes.ligo_ast) (action (with-stdout-to attributes.ligo_ast (run ligo print-ast attributes.ligo -s pascaligo))) (deps attributes.ligo)) -(rule (targets bad_timestamp.ligo_ast) (action (with-stdout-to bad_timestamp.ligo_ast (run ligo print-ast bad_timestamp.ligo -s pascaligo))) (deps bad_timestamp.ligo)) (rule (targets bad_type_operator.ligo_ast) (action (with-stdout-to bad_type_operator.ligo_ast (run ligo print-ast bad_type_operator.ligo -s pascaligo))) (deps bad_type_operator.ligo)) (rule (targets balance_constant.ligo_ast) (action (with-stdout-to balance_constant.ligo_ast (run ligo print-ast balance_constant.ligo -s pascaligo))) (deps balance_constant.ligo)) (rule (targets big_map.ligo_ast) (action (with-stdout-to big_map.ligo_ast (run ligo print-ast big_map.ligo -s pascaligo))) (deps big_map.ligo)) @@ -1240,7 +1239,6 @@ (rule (targets arithmetic.ligo_ast_pretty) (action (with-stdout-to arithmetic.ligo_ast_pretty (run ligo print-ast arithmetic.ligo_output -s pascaligo))) (deps arithmetic.ligo_output)) (rule (targets assign.ligo_ast_pretty) (action (with-stdout-to assign.ligo_ast_pretty (run ligo print-ast assign.ligo_output -s pascaligo))) (deps assign.ligo_output)) (rule (targets attributes.ligo_ast_pretty) (action (with-stdout-to attributes.ligo_ast_pretty (run ligo print-ast attributes.ligo_output -s pascaligo))) (deps attributes.ligo_output)) -(rule (targets bad_timestamp.ligo_ast_pretty) (action (with-stdout-to bad_timestamp.ligo_ast_pretty (run ligo print-ast bad_timestamp.ligo_output -s pascaligo))) (deps bad_timestamp.ligo_output)) (rule (targets bad_type_operator.ligo_ast_pretty) (action (with-stdout-to bad_type_operator.ligo_ast_pretty (run ligo print-ast bad_type_operator.ligo_output -s pascaligo))) (deps bad_type_operator.ligo_output)) (rule (targets balance_constant.ligo_ast_pretty) (action (with-stdout-to balance_constant.ligo_ast_pretty (run ligo print-ast balance_constant.ligo_output -s pascaligo))) (deps balance_constant.ligo_output)) (rule (targets big_map.ligo_ast_pretty) (action (with-stdout-to big_map.ligo_ast_pretty (run ligo print-ast big_map.ligo_output -s pascaligo))) (deps big_map.ligo_output)) @@ -1427,7 +1425,6 @@ (alias (name runtest) (action (diff arithmetic.ligo_ast arithmetic.ligo_ast_pretty)) (deps arithmetic.ligo_ast arithmetic.ligo_ast_pretty)) (alias (name runtest) (action (diff assign.ligo_ast assign.ligo_ast_pretty)) (deps assign.ligo_ast assign.ligo_ast_pretty)) (alias (name runtest) (action (diff attributes.ligo_ast attributes.ligo_ast_pretty)) (deps attributes.ligo_ast attributes.ligo_ast_pretty)) -(alias (name runtest) (action (diff bad_timestamp.ligo_ast bad_timestamp.ligo_ast_pretty)) (deps bad_timestamp.ligo_ast bad_timestamp.ligo_ast_pretty)) (alias (name runtest) (action (diff bad_type_operator.ligo_ast bad_type_operator.ligo_ast_pretty)) (deps bad_type_operator.ligo_ast bad_type_operator.ligo_ast_pretty)) (alias (name runtest) (action (diff balance_constant.ligo_ast balance_constant.ligo_ast_pretty)) (deps balance_constant.ligo_ast balance_constant.ligo_ast_pretty)) (alias (name runtest) (action (diff big_map.ligo_ast big_map.ligo_ast_pretty)) (deps big_map.ligo_ast big_map.ligo_ast_pretty)) diff --git a/src/test/contracts/expected/boolean_operators.ligo.expected b/src/test/contracts/expected/boolean_operators.ligo.expected index 110e856ed..499947dc2 100644 --- a/src/test/contracts/expected/boolean_operators.ligo.expected +++ b/src/test/contracts/expected/boolean_operators.ligo.expected @@ -1,9 +1,9 @@ -function or_true (const b : bool) : bool is b or true +function or_true (const b : bool) : bool is b or True -function or_false (const b : bool) : bool is b or false +function or_false (const b : bool) : bool is b or False -function and_true (const b : bool) : bool is b and true +function and_true (const b : bool) : bool is b and True -function and_false (const b : bool) : bool is b and false +function and_false (const b : bool) : bool is b and False function not_bool (const b : bool) : bool is not b diff --git a/src/test/contracts/expected/loop.ligo.expected b/src/test/contracts/expected/loop.ligo.expected index d6b3df0b0..7a8e40b8a 100644 --- a/src/test/contracts/expected/loop.ligo.expected +++ b/src/test/contracts/expected/loop.ligo.expected @@ -208,7 +208,7 @@ block { function dummy (const n : nat) : nat is block { - while false + while False block { skip } @@ -218,7 +218,7 @@ function inner_capture_in_conditional_block (var nee : unit) : bool * int is block { var count : int := 1; - var ret : bool := false; + var ret : bool := False; var mylist : list (int) := list [1; 2; 3]; for it1 in list mylist block { diff --git a/src/test/contracts/expected/variant.ligo.expected b/src/test/contracts/expected/variant.ligo.expected index cd06f7ec3..aae742d50 100644 --- a/src/test/contracts/expected/variant.ligo.expected +++ b/src/test/contracts/expected/variant.ligo.expected @@ -2,6 +2,6 @@ type foobar is Foo of int | Bar of bool | Kee of nat const foo : foobar = Foo (42) -const bar : foobar = Bar (true) +const bar : foobar = Bar (True) const kee : foobar = Kee (23n) From a688a1afe470458a12cbaccc09a5e22666316b99 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Mon, 8 Jun 2020 15:24:36 +0200 Subject: [PATCH 58/67] ReasonLIGO improvements. --- src/passes/01-parser/reasonligo/Pretty.ml | 22 +++++++++---------- .../contracts/expected/amount.religo.expected | 2 +- .../condition-shadowing.religo.expected | 2 +- .../expected/condition.religo.expected | 2 +- .../expected/eq_bool.religo.expected | 2 +- .../expected/failwith.religo.expected | 2 +- .../contracts/expected/loop.religo.expected | 6 ++--- .../expected/multisig.religo.expected | 10 ++++----- .../expected/no_semicolon.religo.expected | 2 +- .../contracts/expected/pledge.religo.expected | 4 ++-- .../expected/recursion.religo.expected | 4 ++-- ...tuples_sequences_functions.religo.expected | 2 +- 12 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/passes/01-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml index e925388e1..f1e1c834a 100644 --- a/src/passes/01-parser/reasonligo/Pretty.ml +++ b/src/passes/01-parser/reasonligo/Pretty.ml @@ -120,8 +120,8 @@ and pp_ptuple {value; _} = | p::items -> group (break 1 ^^ pp_pattern p ^^ string ",") ^^ app items in if tail = [] - then string "(" ^^ pp_pattern head ^^ string ")" - else string "(" ^^ pp_pattern head ^^ string "," ^^ app (List.map snd tail) ^^ string ")" + then string "(" ^^ nest 1 (pp_pattern head) ^^ string ")" + else string "(" ^^ nest 1 (pp_pattern head ^^ string "," ^^ app (List.map snd tail)) ^^ string ")" and pp_precord fields = pp_ne_injection pp_field_pattern fields @@ -162,7 +162,7 @@ and pp_expr = function and pp_case_expr {value; _} = let {expr; cases; _} = value in - group (string "switch" ^^ string "(" ^^ pp_expr expr ^^ (string ") " ^^ string "{") + group (string "switch" ^^ string "(" ^^ nest 1 (pp_expr expr) ^^ (string ") " ^^ string "{") ^^ (pp_cases cases) ^^ hardline ^^ string "}" ) and pp_cases {value; _} = @@ -178,7 +178,7 @@ and pp_clause {value; _} = and pp_cond_expr {value; _} = let {test; ifso; kwd_else; ifnot; _} = value in let if_then = - string "if" ^^ string "(" ^^ pp_expr test ^^ string ")" ^^ string " {" ^^ break 0 + string "if" ^^ string " (" ^^ pp_expr test ^^ string ")" ^^ string " {" ^^ break 0 ^^ group (nest 2 (break 2 ^^ pp_expr ifso)) ^^ hardline ^^ string "}" in if kwd_else#is_ghost then if_then @@ -350,8 +350,8 @@ and pp_tuple_expr {value; _} = | e::items -> group (break 1 ^^ pp_expr e ^^ string ",") ^^ app items in if tail = [] - then string "(" ^^ pp_expr head ^^ string ")" - else string "(" ^^ pp_expr head ^^ string "," ^^ app (List.map snd tail) ^^ string ")" + then string "(" ^^ nest 1 (pp_expr head) ^^ string ")" + else string "(" ^^ nest 1 (pp_expr head ^^ string "," ^^ app (List.map snd tail)) ^^ string ")" and pp_par_expr {value; _} = string "(" ^^ nest 1 (pp_expr value.inside ^^ string ")") @@ -378,8 +378,8 @@ and pp_fun {value; _} = group (break 0 ^^ string ": " ^^ nest 2 (pp_type_expr e)) in match body with - | ESeq _ -> string "(" ^^ binders ^^ string ")" ^^ annot ^^ string " => " ^^ pp_expr body - | _ -> (prefix 2 0 (string "(" ^^ binders ^^ string ")" ^^ annot + | ESeq _ -> string "(" ^^ nest 1 binders ^^ string ")" ^^ annot ^^ string " => " ^^ pp_expr body + | _ -> (prefix 2 0 (string "(" ^^ nest 1 binders ^^ string ")" ^^ annot ^^ string " => ") (pp_expr body)) and pp_seq {value; _} = @@ -412,7 +412,7 @@ and pp_cartesian {value; _} = | e::items -> group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items in - string "(" ^^ pp_type_expr head ^^ (if tail <> [] then string "," else empty) ^^ app (List.map snd tail) ^^ string ")" + string "(" ^^ nest 1 (pp_type_expr head ^^ (if tail <> [] then string "," else empty) ^^ app (List.map snd tail)) ^^ string ")" and pp_variants {value; _} = let head, tail = value in @@ -445,7 +445,7 @@ and pp_field_decl {value; _} = and pp_type_app {value; _} = let ctor, tuple = value in - prefix 2 0 (pp_type_constr ctor) (string "(" ^^ pp_type_tuple tuple ^^ string ")") + prefix 2 0 (pp_type_constr ctor) (string "(" ^^ nest 1 (pp_type_tuple tuple) ^^ string ")") and pp_type_tuple {value; _} = let head, tail = value.inside in @@ -474,7 +474,7 @@ and pp_fun_type {value; _} = match lhs, rhs with | _, TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf | TVar _ , _ -> group (pp_type_expr lhs ^^ string " =>" ^/^ pp_type_expr rhs) - | _ -> group (string "(" ^^ pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) + | _ -> group (string "(" ^^ nest 1 (pp_type_expr lhs) ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) and pp_type_par {value; _} = string "(" ^^ nest 1 (pp_type_expr value.inside ^^ string ")") diff --git a/src/test/contracts/expected/amount.religo.expected b/src/test/contracts/expected/amount.religo.expected index 7f4dac3d6..f1082701d 100644 --- a/src/test/contracts/expected/amount.religo.expected +++ b/src/test/contracts/expected/amount.religo.expected @@ -1,5 +1,5 @@ let check_ = (p: unit): int => - if(Tezos.amount == 100000000mutez) { + if (Tezos.amount == 100000000mutez) { 42 } else { 0 diff --git a/src/test/contracts/expected/condition-shadowing.religo.expected b/src/test/contracts/expected/condition-shadowing.religo.expected index d77219f4b..9f66ae5f2 100644 --- a/src/test/contracts/expected/condition-shadowing.religo.expected +++ b/src/test/contracts/expected/condition-shadowing.religo.expected @@ -1,6 +1,6 @@ let main = (i: int) => { let result = 0; - if(i == 2) { + if (i == 2) { let result = 42; result diff --git a/src/test/contracts/expected/condition.religo.expected b/src/test/contracts/expected/condition.religo.expected index 8049192f8..9e4ec2c65 100644 --- a/src/test/contracts/expected/condition.religo.expected +++ b/src/test/contracts/expected/condition.religo.expected @@ -1,5 +1,5 @@ let main = (i: int) => - if(i == 2) { + if (i == 2) { 42 } else { 0 diff --git a/src/test/contracts/expected/eq_bool.religo.expected b/src/test/contracts/expected/eq_bool.religo.expected index 73671f764..35ac77780 100644 --- a/src/test/contracts/expected/eq_bool.religo.expected +++ b/src/test/contracts/expected/eq_bool.religo.expected @@ -1,5 +1,5 @@ let main = ((a, b): (bool, bool)) => - if(a == b) { + if (a == b) { 999 } else { 1 diff --git a/src/test/contracts/expected/failwith.religo.expected b/src/test/contracts/expected/failwith.religo.expected index 8f29675a1..1c0ca2203 100644 --- a/src/test/contracts/expected/failwith.religo.expected +++ b/src/test/contracts/expected/failwith.religo.expected @@ -1,6 +1,6 @@ type storage = unit; let main = (p: unit, storage) => - if(true) { + if (true) { failwith("This contract always fails") }; diff --git a/src/test/contracts/expected/loop.religo.expected b/src/test/contracts/expected/loop.religo.expected index 130c2cd06..18fa276e6 100644 --- a/src/test/contracts/expected/loop.religo.expected +++ b/src/test/contracts/expected/loop.religo.expected @@ -1,5 +1,5 @@ let rec aux_simple = (i: int): int => - if(i < 100) { + if (i < 100) { aux_simple(i + 1) } else { i @@ -15,7 +15,7 @@ let counter = (n: int): int => { sum: 0 }; let rec aggregate = (prev: sum_aggregator): int => - if(prev.counter <= n) { + if (prev.counter <= n) { aggregate({ @@ -29,7 +29,7 @@ let counter = (n: int): int => { }; let rec aux_nest = (prev: sum_aggregator): sum_aggregator => - if(prev.counter < 100) { + if (prev.counter < 100) { let sum: int = prev.sum + aux_simple(prev.counter); aux_nest({counter: prev.counter + 1, sum: sum }) diff --git a/src/test/contracts/expected/multisig.religo.expected b/src/test/contracts/expected/multisig.religo.expected index ddb7b981c..0161e9fe2 100644 --- a/src/test/contracts/expected/multisig.religo.expected +++ b/src/test/contracts/expected/multisig.religo.expected @@ -33,7 +33,7 @@ let check_message = ((param, s): (check_message_pt, storage)) : return => { let message: message = param.message; let s = - if(param.counter != s.counter) { + if (param.counter != s.counter) { (failwith("Counters does not match") : storage) } else { @@ -42,15 +42,15 @@ let check_message = ((param, s): (check_message_pt, storage)) let valid: nat = 0n; let keys: authorized_keys = s.auth; let aux = ((vk, pkh_sig): ((nat, authorized_keys), - (key_hash, signature))): (nat, authorized_keys) => { + (key_hash, signature))): (nat, authorized_keys) => { let (valid, keys) = vk; switch(keys) { | [] => vk | [key, ...keys] => - if(pkh_sig[0] == Crypto.hash_key(key)) { + if (pkh_sig[0] == Crypto.hash_key(key)) { let valid = - if( + if ( Crypto.check(key, pkh_sig[1], packed_payload)) { valid + 1n } else { @@ -64,7 +64,7 @@ let check_message = ((param, s): (check_message_pt, storage)) }; let (valid, keys) = List.fold(aux, param.signatures, (valid, keys)); - if(valid < s.threshold) { + if (valid < s.threshold) { (failwith("Not enough signatures passed the check") : storage) diff --git a/src/test/contracts/expected/no_semicolon.religo.expected b/src/test/contracts/expected/no_semicolon.religo.expected index ea3b13c2c..01c4b5a96 100644 --- a/src/test/contracts/expected/no_semicolon.religo.expected +++ b/src/test/contracts/expected/no_semicolon.religo.expected @@ -1,7 +1,7 @@ type f = int; let a = (b: f) => { - if(b == 2) { + if (b == 2) { 3 } else { 4 diff --git a/src/test/contracts/expected/pledge.religo.expected b/src/test/contracts/expected/pledge.religo.expected index 9c8044a9c..8df47dc01 100644 --- a/src/test/contracts/expected/pledge.religo.expected +++ b/src/test/contracts/expected/pledge.religo.expected @@ -10,8 +10,8 @@ let donate = ((p, s): (unit, storage)) }; let distribute = ((p, s): ((unit => list(operation)), - storage)): (list(operation), storage) => { - if(Tezos.sender == s) { + storage)): (list(operation), storage) => { + if (Tezos.sender == s) { (p(()), s) } else { diff --git a/src/test/contracts/expected/recursion.religo.expected b/src/test/contracts/expected/recursion.religo.expected index 70cf03318..9c598e4a3 100644 --- a/src/test/contracts/expected/recursion.religo.expected +++ b/src/test/contracts/expected/recursion.religo.expected @@ -1,12 +1,12 @@ let rec sum = ((n, acc): (int, int)): int => - if(n < 1) { + if (n < 1) { acc } else { sum((n - 1, acc + n)) }; let rec fibo = ((n, n_1, n_0): (int, int, int)): int => - if(n < 2) { + if (n < 2) { n_1 } else { fibo((n - 1, n_1 + n_0, n_1)) diff --git a/src/test/contracts/expected/tuples_sequences_functions.religo.expected b/src/test/contracts/expected/tuples_sequences_functions.religo.expected index ee569df68..e4277334e 100644 --- a/src/test/contracts/expected/tuples_sequences_functions.religo.expected +++ b/src/test/contracts/expected/tuples_sequences_functions.religo.expected @@ -54,7 +54,7 @@ let s = { let t = (((((((2))))))); let u = - if(true) { + if (true) { 1 } else { 2 From 5470893f684c59bc4c20ac51e15a8cbf4a739254 Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Tue, 9 Jun 2020 13:15:24 +0200 Subject: [PATCH 59/67] Bitwise pseudomodule documentation. --- gitlab-pages/docs/reference/bitwise.md | 119 ++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 3 deletions(-) diff --git a/gitlab-pages/docs/reference/bitwise.md b/gitlab-pages/docs/reference/bitwise.md index 9d4df471a..3b3e76c8c 100644 --- a/gitlab-pages/docs/reference/bitwise.md +++ b/gitlab-pages/docs/reference/bitwise.md @@ -9,17 +9,42 @@ import Syntax from '@theme/Syntax'; import SyntaxTitle from '@theme/SyntaxTitle'; -function and : nat -> nat -> nat +function and : 'a -> nat -> nat -val and : nat -> nat -> nat +val and : 'a -> nat -> nat -let and: (nat, nat) => nat +let and: ('a, nat) => nat +`'a` can either be an `int` or `nat`. + A bitwise `and` operation. + + +```pascaligo +const zero: nat = Bitwise.and(2n, 1n) +``` + + + + +```cameligo +let zero: nat = Bitwise.and 2n 1n +``` + + + + +```reasonligo +let zero: nat = Bitwise.and(2n, 1n); +``` + + + + function or : nat -> nat -> nat @@ -32,6 +57,28 @@ let or: (nat, nat) => nat A bitwise `or` operation. + + +```pascaligo +const three: nat = Bitwise.or(2n, 1n) +``` + + + + +```cameligo +let three: nat = Bitwise.or 2n 1n +``` + + + + +```reasonligo +let three: nat = Bitwise.or(2n, 1n); +``` + + + function xor : nat -> nat -> nat @@ -44,6 +91,28 @@ let xor: (nat, nat) => nat A bitwise `xor` operation. + + +```pascaligo +const two: nat = Bitwise.xor(2n, 1n) +``` + + + + +```cameligo +let two: nat = Bitwise.xor 2n 1n +``` + + + + +```reasonligo +let two: nat = Bitwise.xor(2n, 1n); +``` + + + function shift_left : nat -> nat -> nat @@ -56,6 +125,28 @@ let shift_left: (nat, nat) => nat A bitwise shift left operation. + + +```pascaligo +const four: nat = Bitwise.shift_left(2n, 1n) +``` + + + + +```cameligo +let four: nat = Bitwise.shift_left 2n 1n +``` + + + + +```reasonligo +let four: nat = Bitwise.shift_left(2n, 1n); +``` + + + function shift_right : nat -> nat -> nat @@ -67,3 +158,25 @@ let shift_right: (nat, nat) => nat A bitwise shift right operation. + + + +```pascaligo +const one: nat = Bitwise.shift_right(2n, 1n) +``` + + + + +```cameligo +let one: nat = Bitwise.shift_right 2n 1n +``` + + + + +```reasonligo +let one: nat = Bitwise.shift_right(2n, 1n); +``` + + \ No newline at end of file From 816afdd1b80da29aae4fc71863abef07c4332a2e Mon Sep 17 00:00:00 2001 From: Sander Date: Tue, 9 Jun 2020 14:32:07 +0000 Subject: [PATCH 60/67] Apply 1 suggestion(s) to 1 file(s) --- gitlab-pages/docs/reference/bitwise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitlab-pages/docs/reference/bitwise.md b/gitlab-pages/docs/reference/bitwise.md index 3b3e76c8c..8f564493c 100644 --- a/gitlab-pages/docs/reference/bitwise.md +++ b/gitlab-pages/docs/reference/bitwise.md @@ -94,7 +94,7 @@ A bitwise `xor` operation. ```pascaligo -const two: nat = Bitwise.xor(2n, 1n) +const three: nat = Bitwise.xor(2n, 1n) ``` From d810ccc9218660acc2cbb25cb4d41a8d93486c19 Mon Sep 17 00:00:00 2001 From: Sander Date: Tue, 9 Jun 2020 14:32:14 +0000 Subject: [PATCH 61/67] Apply 1 suggestion(s) to 1 file(s) --- gitlab-pages/docs/reference/bitwise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitlab-pages/docs/reference/bitwise.md b/gitlab-pages/docs/reference/bitwise.md index 8f564493c..3e4176cae 100644 --- a/gitlab-pages/docs/reference/bitwise.md +++ b/gitlab-pages/docs/reference/bitwise.md @@ -108,7 +108,7 @@ let two: nat = Bitwise.xor 2n 1n ```reasonligo -let two: nat = Bitwise.xor(2n, 1n); +let three: nat = Bitwise.xor(2n, 1n); ``` From 34d726c2f38864a49c297d05c1f9b4ccfa0e9283 Mon Sep 17 00:00:00 2001 From: Sander Date: Tue, 9 Jun 2020 14:32:17 +0000 Subject: [PATCH 62/67] Apply 1 suggestion(s) to 1 file(s) --- gitlab-pages/docs/reference/bitwise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gitlab-pages/docs/reference/bitwise.md b/gitlab-pages/docs/reference/bitwise.md index 3e4176cae..7796e94c6 100644 --- a/gitlab-pages/docs/reference/bitwise.md +++ b/gitlab-pages/docs/reference/bitwise.md @@ -101,7 +101,7 @@ const three: nat = Bitwise.xor(2n, 1n) ```cameligo -let two: nat = Bitwise.xor 2n 1n +let three: nat = Bitwise.xor 2n 1n ``` From 86a30b1e6f4eb62e3c4c6393e0d22246f230b391 Mon Sep 17 00:00:00 2001 From: Edmond Lee Date: Tue, 9 Jun 2020 22:39:33 +0000 Subject: [PATCH 63/67] add getLanguageHighlight function to determine the language highlight, and added custom syntax highlighting rules to ligosnippets editor --- gitlab-pages/docs/demo/ligo-snippet.md | 170 + gitlab-pages/website/package-lock.json | 86 +- gitlab-pages/website/package.json | 6 +- .../website/src/theme/CodeBlock/index.js | 33 +- tools/ligo-snippets/.babelrc | 8 + tools/ligo-snippets/.gitignore | 6 + tools/ligo-snippets/.npmignore | 9 + tools/ligo-snippets/README.md | 131 + tools/ligo-snippets/package-lock.json | 9096 +++++++++++++++++ tools/ligo-snippets/package.json | 48 + tools/ligo-snippets/src/components/editor.tsx | 225 + .../src/components/ligo-prism.css | 76 + tools/ligo-snippets/src/index.tsx | 1 + tools/ligo-snippets/tsconfig.json | 19 + tools/ligo-snippets/webpack.config.js | 28 + tools/ligo-snippets/yarn.lock | 6593 ++++++++++++ 16 files changed, 16520 insertions(+), 15 deletions(-) create mode 100644 gitlab-pages/docs/demo/ligo-snippet.md create mode 100644 tools/ligo-snippets/.babelrc create mode 100644 tools/ligo-snippets/.gitignore create mode 100644 tools/ligo-snippets/.npmignore create mode 100644 tools/ligo-snippets/README.md create mode 100644 tools/ligo-snippets/package-lock.json create mode 100644 tools/ligo-snippets/package.json create mode 100644 tools/ligo-snippets/src/components/editor.tsx create mode 100644 tools/ligo-snippets/src/components/ligo-prism.css create mode 100644 tools/ligo-snippets/src/index.tsx create mode 100644 tools/ligo-snippets/tsconfig.json create mode 100644 tools/ligo-snippets/webpack.config.js create mode 100644 tools/ligo-snippets/yarn.lock diff --git a/gitlab-pages/docs/demo/ligo-snippet.md b/gitlab-pages/docs/demo/ligo-snippet.md new file mode 100644 index 000000000..68a75249f --- /dev/null +++ b/gitlab-pages/docs/demo/ligo-snippet.md @@ -0,0 +1,170 @@ +--- +id: ligo-snippets-demo +title: Ligo-Snippets Demo +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +“ligo-snippets” (https://www.npmjs.com/package/@ligolang/ligo-snippets) is a React component that can be included on any webpage to display Ligo source code to users. + +The user will see Ligo code with syntax highlighting, and an action button allowing the user to open the source code in the Ligo Web IDE (https://ide.ligolang.org). + +Each code snippet can have preset Ligo Web IDE configurations (e.g. entrypoint, parameters or storage). These configurations are optional and will be passed onto the Ligo Web IDE when present. This will allow examples to provide the proper configurations for the reader to experiment with. + +The “ligo-snippets” React component uses the CodeJar editor (https://github.com/antonmedv/codejar), which is extremely lightweight (only 2kB). It currently supports syntax highlighting for PascaLigo, CameLigo and ReasonLigo. Additionally, it has both a light and dark theme mode. + + + + + + +```pascaligo {"name": "Ligo Introduction Example", "editor": true} +(*_* + name: PascaLIGO Contract + language: pascaligo + compile: + entrypoint: main + dryRun: + entrypoint: main + parameters: Increment (1) + storage: 999 + deploy: + entrypoint: main + storage: 999 + evaluateValue: + entrypoint: "" + evaluateFunction: + entrypoint: add + parameters: (5, 6) + generateDeployScript: + entrypoint: main + storage: 999 +*_*) +// variant defining pseudo multi-entrypoint actions +type action is +| Increment of int +| Decrement of int + +function add (const a : int ; const b : int) : int is + block { skip } with a + b + +function subtract (const a : int ; const b : int) : int is + block { skip } with a - b + +// real entrypoint that re-routes the flow based +// on the action provided +function main (const p : action ; const s : int) : + (list(operation) * int) is + block { skip } with ((nil : list(operation)), + case p of + | Increment(n) -> add(s, n) + | Decrement(n) -> subtract(s, n) + end) + +``` + + + + +```cameligo {"name": "Ligo Introduction Example", "editor": true} +(*_* + name: CameLIGO Contract + language: cameligo + compile: + entrypoint: main + dryRun: + entrypoint: main + parameters: Increment 1 + storage: 999 + deploy: + entrypoint: main + storage: 999 + evaluateValue: + entrypoint: "" + evaluateFunction: + entrypoint: add + parameters: 5, 6 + generateDeployScript: + entrypoint: main + storage: 999 +*_*) +type storage = int + +(* variant defining pseudo multi-entrypoint actions *) + +type action = +| Increment of int +| Decrement of int + +let add (a,b: int * int) : int = a + b +let sub (a,b: int * int) : int = a - b + +(* real entrypoint that re-routes the flow based on the action provided *) + +let main (p,s: action * storage) = + let storage = + match p with + | Increment n -> add (s, n) + | Decrement n -> sub (s, n) + in ([] : operation list), storage + +``` + + + + +```reasonligo {"name": "Ligo Introduction Example", "editor": true} +(*_* + name: ReasonLIGO Contract + language: reasonligo + compile: + entrypoint: main + dryRun: + entrypoint: main + parameters: Increment (1) + storage: 999 + deploy: + entrypoint: main + storage: 999 + evaluateValue: + entrypoint: "" + evaluateFunction: + entrypoint: add + parameters: (5, 6) + generateDeployScript: + entrypoint: main + storage: 999 +*_*) +type storage = int; + +/* variant defining pseudo multi-entrypoint actions */ + +type action = + | Increment(int) + | Decrement(int); + +let add = ((a,b): (int, int)): int => a + b; +let sub = ((a,b): (int, int)): int => a - b; + +/* real entrypoint that re-routes the flow based on the action provided */ + +let main = ((p,storage): (action, storage)) => { + let storage = + switch (p) { + | Increment(n) => add((storage, n)) + | Decrement(n) => sub((storage, n)) + }; + ([]: list(operation), storage); +}; + +``` + + diff --git a/gitlab-pages/website/package-lock.json b/gitlab-pages/website/package-lock.json index bed04a355..879ba3827 100644 --- a/gitlab-pages/website/package-lock.json +++ b/gitlab-pages/website/package-lock.json @@ -1535,6 +1535,20 @@ "@ligo/syntax": { "version": "file:src/@ligo/syntax" }, + "@ligolang/ligo-snippets": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ligolang/ligo-snippets/-/ligo-snippets-1.0.0.tgz", + "integrity": "sha512-2RCf7G+4sMF+O9I3ArJtVPJ5Eub2pdzGwBN13ANha/7v/Fnll4YnSXQBnsi922EmVouQi1Tqw3TP2E7mSoKlBA==", + "requires": { + "@types/prismjs": "^1.16.1", + "axios": "^0.19.2", + "ligo-snippets-css": "0.0.1", + "prism-react-renderer": "^1.1.1", + "prismjs": "^1.20.0", + "react-codejar": "^1.0.1", + "yaml": "^1.9.2" + } + }, "@mdx-js/mdx": { "version": "1.6.5", "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.5.tgz", @@ -1621,6 +1635,11 @@ "integrity": "sha512-ljr9hGQYW3kZY1NmQbmSe4yXvgq3KDRt0FMBOB5OaDWqi4X2WzEsp6SZ02KmVrieNW1cjWlj13pgvcf0towZPw==", "dev": true }, + "@medv/codejar": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@medv/codejar/-/codejar-1.0.9.tgz", + "integrity": "sha512-TxcSsq+TFcCvbsTDbVT5h4y9g86yBpEk+Da6tyIyd2OTJKWK0o7U5Olva4XMG4i+ExW5A9MfZAGFClwYokacIQ==" + }, "@mrmlnc/readdir-enhanced": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", @@ -1859,6 +1878,11 @@ "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", "dev": true }, + "@types/prismjs": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.16.1.tgz", + "integrity": "sha512-RNgcK3FEc1GpeOkamGDq42EYkb6yZW5OWQwTS56NJIB8WL0QGISQglA7En7NUx9RGP8AC52DOe+squqbAckXlA==" + }, "@types/q": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", @@ -2516,6 +2540,37 @@ "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", "dev": true }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -3418,7 +3473,6 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", - "dev": true, "requires": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -4419,8 +4473,7 @@ "delegate": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", - "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", - "dev": true + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" }, "depd": { "version": "1.1.2", @@ -5961,7 +6014,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", - "dev": true, "requires": { "delegate": "^3.1.2" } @@ -7367,6 +7419,11 @@ "leven": "^3.1.0" } }, + "ligo-snippets-css": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ligo-snippets-css/-/ligo-snippets-css-0.0.1.tgz", + "integrity": "sha512-8qZ3TO198MX03HJw5YzTe5am63hacUtYzZEt2DlLtLP22Iri2UvLnckVXisZEVt0w18kM6aDhtMarAz127/z4g==" + }, "lines-and-columns": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", @@ -10042,14 +10099,12 @@ "prism-react-renderer": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz", - "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==", - "dev": true + "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==" }, "prismjs": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", - "dev": true, "requires": { "clipboard": "^2.0.0" } @@ -10267,6 +10322,14 @@ "prop-types": "^15.6.2" } }, + "react-codejar": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-codejar/-/react-codejar-1.0.1.tgz", + "integrity": "sha512-t58v/YF4qV8w1yHi8Ylkte5tOU5ziYd5/4EIyyuJ6g/rS73ccaV113HhQBwvtoofSKTqOdKv3Rc4K5iMZ10IGg==", + "requires": { + "@medv/codejar": "^1.0.0" + } + }, "react-dev-utils": { "version": "10.2.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", @@ -11452,8 +11515,7 @@ "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", - "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", - "dev": true + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" }, "select-hose": { "version": "2.0.0", @@ -12678,8 +12740,7 @@ "tiny-emitter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", - "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", - "dev": true + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "tiny-invariant": { "version": "1.1.0", @@ -14516,8 +14577,7 @@ "yaml": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" }, "yargs": { "version": "13.3.2", diff --git a/gitlab-pages/website/package.json b/gitlab-pages/website/package.json index 02dec3f10..3109c6327 100644 --- a/gitlab-pages/website/package.json +++ b/gitlab-pages/website/package.json @@ -29,6 +29,10 @@ }, "dependencies": { "@docusaurus/plugin-sitemap": "^2.0.0-alpha.56", - "@ligo/syntax": "file:src/@ligo/syntax" + "@ligo/syntax": "file:src/@ligo/syntax", + "@ligolang/ligo-snippets": "^1.0.0", + "axios": "^0.19.2", + "react-codejar": "^1.0.1", + "yaml": "^1.10.0" } } diff --git a/gitlab-pages/website/src/theme/CodeBlock/index.js b/gitlab-pages/website/src/theme/CodeBlock/index.js index f9120f21d..fa3ad282b 100644 --- a/gitlab-pages/website/src/theme/CodeBlock/index.js +++ b/gitlab-pages/website/src/theme/CodeBlock/index.js @@ -81,11 +81,13 @@ Prism.languages = { ] } }; + import defaultTheme from 'prism-react-renderer/themes/palenight'; import Clipboard from 'clipboard'; import rangeParser from 'parse-numeric-range'; import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; import useThemeContext from '@theme/hooks/useThemeContext'; +import { LigoSnippet } from '@ligolang/ligo-snippets' import styles from './styles.module.css'; @@ -159,7 +161,8 @@ const highlightDirectiveRegex = (lang) => { }; const codeBlockTitleRegex = /title=".*"/; -export default ({children, className: languageClassName, metastring}) => { +export default ({ children, className: languageClassName, metastring }) => { + const { siteConfig: { themeConfig: {prism = {}}, @@ -277,6 +280,34 @@ export default ({children, className: languageClassName, metastring}) => { setTimeout(() => setShowCopied(false), 2000); }; + // ligo-snippets - begin + if (metastring) { + const theme = isDarkTheme ? 'dark' : 'light'; + let isObject = true + let metadata + + try { + metadata = JSON.parse(metastring) + } catch (e) { + isObject = false + } + + if (isObject) { + const snippetData = { + "language": language, + "name": metadata.name, + "code": children, + "theme": theme, + "height": "" // Optional + } + + if (metadata.editor) { + return + } + } + } + // ligo-snippets - end + return ( { + const code = `type storage is int +type parameter is + Increment of int +| Decrement of int +| Reset +type return is list (operation) * storage +// Two entrypoints +function add (const store : storage; const delta : int) : storage is + store + delta +function sub (const store : storage; const delta : int) : storage is + store - delta +(* Main access point that dispatches to the entrypoints according to + the smart contract parameter. *) +function main (const action : parameter; const store : storage) : return is + ((nil : list (operation)), // No operations + case action of + Increment (n) -> add (store, n) + | Decrement (n) -> sub (store, n) + | Reset -> 0 + end)` + + const snippetData = { + "language": "pascaligo", // Required - Takes a string value of a Ligo language (e.g. "pascaligo", "reasonligo" or "cameligo"). + "code": code, // Required - Takes a string value of your code snippet. + "name": "PascaLigo Code Snippet Example", // Optional - Takes a string value to display as your snippet's title on the Ligo Web IDE. + "theme": "dark", // Optional - Takes a string value of either "dark" or "light". + "height": "" // Optional - Takes a string value of a CSS height (e.g. "100px"). + } + + return +} + +render(, document.getElementById("root")); + +``` + +The `snippetData` values of `language` and `code` are required. These values determine the code displayed and the syntax highlighting. The `name` value is optional and will be used as the title of your code when sent to the Ligo Web IDE. + + +# Ligo Web IDE + +Ligo Snippets can be opened in the Ligo Web IDE [(https://ide.ligolang.org/)](https://ide.ligolang.org/) by clicking the IDE button at the bottom of the snippet. The Ligo Web IDE can take in preset configurations for the available features. + +## Available Configurations + +```json +"name": string, +"language": string, +"compile": { + "entrypoint": string +}, +"dryRun": { + "entrypoint": string, + "parameters": string, + "storage": string, +}, +"deploy": { + "entrypoint": string, + "storage": string, +}, +"evaluateValue": { + "entrypoint": string +}, +"evaluateFunction": { + "entrypoint": string, + "parameters": string +}, +"generateDeployScript": { + "entrypoint": string, + "storage": string +} +``` +## Setting Configurations + +When using the configurations to set preset default values for the Ligo Web IDE, please note that the `name` and `language` values are required. When present, these values will replace the `name` and `language` values from your `snippetData`. Everything else is optional. + +Add the configuration in a yaml format at the top of your the code you are trying to display. + +```js +(*_* + name: PascaLIGO Contract + language: pascaligo + compile: + entrypoint: main + dryRun: + entrypoint: main + parameters: Increment (1) + storage: 0 + deploy: + entrypoint: main + storage: 0 + evaluateValue: + entrypoint: "" + evaluateFunction: + entrypoint: add + parameters: (5, 6) + generateDeployScript: + entrypoint: main + storage: 0 +*_*) + +type action is +| Increment of int +| Decrement of int + +function add (const a : int ; const b : int) : int is + block { skip } with a + b + +function subtract (const a : int ; const b : int) : int is + block { skip } with a - b + +function main (const p : action ; const s : int) : + (list(operation) * int) is + block { skip } with ((nil : list(operation)), + case p of + | Increment(n) -> add(s, n) + | Decrement(n) -> subtract(s, n) + end) +``` diff --git a/tools/ligo-snippets/package-lock.json b/tools/ligo-snippets/package-lock.json new file mode 100644 index 000000000..4dda6e783 --- /dev/null +++ b/tools/ligo-snippets/package-lock.json @@ -0,0 +1,9096 @@ +{ + "name": "ligosnippetz", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/cli": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.10.1.tgz", + "integrity": "sha512-cVB+dXeGhMOqViIaZs3A9OUAe4pKw4SBNdMw6yHJMYR7s4TB+Cei7ThquV/84O19PdIFWuwe03vxxES0BHUm5g==", + "dev": true, + "requires": { + "chokidar": "^2.1.8", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.0.0", + "lodash": "^4.17.13", + "make-dir": "^2.1.0", + "slash": "^2.0.0", + "source-map": "^0.5.0" + } + }, + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/compat-data": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", + "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + } + }, + "@babel/core": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.10.2.tgz", + "integrity": "sha512-KQmV9yguEjQsXqyOUGKjS4+3K8/DlOCE2pZcq4augdQmtTy5iv5EHtmMSJ7V4c1BIPjuwtZYqYLCq9Ga+hGBRQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.2", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helpers": "^7.10.1", + "@babel/parser": "^7.10.2", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.2", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", + "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", + "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-module-imports": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helpers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", + "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", + "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", + "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.10.1.tgz", + "integrity": "sha512-i4o0YwiJBIsIx7/liVCZ3Q2WkWr1/Yu39PksBOnh/khW2SwIFsGa5Ze+MSon5KbDfrEHP9NeyefAgvUSXzaEkw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-flow": "^7.10.1" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.1.tgz", + "integrity": "sha512-rBjKcVwjk26H3VX8pavMxGf33LNlbocMHdSeldIEswtQ/hrjyTG8fKKILW1cSkODyRovckN/uZlGb2+sAV9JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", + "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.1", + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz", + "integrity": "sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz", + "integrity": "sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz", + "integrity": "sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.1.tgz", + "integrity": "sha512-mfhoiai083AkeewsBHUpaS/FM1dmUENHBMpS/tugSJ7VXqXO5dCN1Gkint2YvM1Cdv1uhmAKt1ZOuAjceKmlLA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.1.tgz", + "integrity": "sha512-v+QWKlmCnsaimLeqq9vyCsVRMViZG1k2SZTlcZvB+TqyH570Zsij8nvVUZzOASCRiQFUxkLrn9Wg/kH0zgy5OQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-typescript": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/preset-env": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", + "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-proposal-async-generator-functions": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.1", + "@babel/plugin-transform-computed-properties": "^7.10.1", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.1", + "@babel/plugin-transform-modules-umd": "^7.10.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.1", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.1", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.2", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.1.tgz", + "integrity": "sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-transform-react-display-name": "^7.10.1", + "@babel/plugin-transform-react-jsx": "^7.10.1", + "@babel/plugin-transform-react-jsx-development": "^7.10.1", + "@babel/plugin-transform-react-jsx-self": "^7.10.1", + "@babel/plugin-transform-react-jsx-source": "^7.10.1", + "@babel/plugin-transform-react-pure-annotations": "^7.10.1" + } + }, + "@babel/preset-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.10.1.tgz", + "integrity": "sha512-m6GV3y1ShiqxnyQj10600ZVOFrSSAa8HQ3qIUk2r+gcGtHTIRw0dJnFLt1WNXpKjtVw7yw1DAPU/6ma2ZvgJuA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-transform-typescript": "^7.10.1" + } + }, + "@babel/runtime": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, + "@medv/codejar": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@medv/codejar/-/codejar-1.0.9.tgz", + "integrity": "sha512-TxcSsq+TFcCvbsTDbVT5h4y9g86yBpEk+Da6tyIyd2OTJKWK0o7U5Olva4XMG4i+ExW5A9MfZAGFClwYokacIQ==" + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@parcel/fs": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/fs/-/fs-1.11.0.tgz", + "integrity": "sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.2" + } + }, + "@parcel/logger": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@parcel/logger/-/logger-1.11.1.tgz", + "integrity": "sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA==", + "dev": true, + "requires": { + "@parcel/workers": "^1.11.0", + "chalk": "^2.1.0", + "grapheme-breaker": "^0.3.2", + "ora": "^2.1.0", + "strip-ansi": "^4.0.0" + } + }, + "@parcel/utils": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/utils/-/utils-1.11.0.tgz", + "integrity": "sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ==", + "dev": true + }, + "@parcel/watcher": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-1.12.1.tgz", + "integrity": "sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "chokidar": "^2.1.5" + } + }, + "@parcel/workers": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@parcel/workers/-/workers-1.11.0.tgz", + "integrity": "sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ==", + "dev": true, + "requires": { + "@parcel/utils": "^1.11.0", + "physical-cpu-count": "^2.0.0" + } + }, + "@types/hoist-non-react-statics": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz", + "integrity": "sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==", + "dev": true, + "requires": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, + "@types/node": { + "version": "13.13.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.9.tgz", + "integrity": "sha512-EPZBIGed5gNnfWCiwEIwTE2Jdg4813odnG8iNPMQGrqVxrI+wL68SPtPeCX+ZxGBaA6pKAVc6jaKgP/Q0QzfdQ==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/react": { + "version": "16.9.35", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.35.tgz", + "integrity": "sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.9.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", + "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-native": { + "version": "0.62.12", + "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.62.12.tgz", + "integrity": "sha512-EuM2QOx0LGwY3mKQ313+QcTYOwJhw5eggmE42GO4ElIKIfNK+zxxM6Pe9dT1Eq8eCJXY0oG327L7gUBWniwNNA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/styled-components": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.0.tgz", + "integrity": "sha512-ZFlLCuwF5r+4Vb7JUmd+Yr2S0UBdBGmI7ctFTgJMypIp3xOHI4LCFVn2dKMvpk6xDB2hLRykrEWMBwJEpUAUIQ==", + "dev": true, + "requires": { + "@types/hoist-non-react-statics": "*", + "@types/react": "*", + "@types/react-native": "*", + "csstype": "^2.2.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-to-html": { + "version": "0.6.14", + "resolved": "https://registry.npmjs.org/ansi-to-html/-/ansi-to-html-0.6.14.tgz", + "integrity": "sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA==", + "dev": true, + "requires": { + "entities": "^1.1.2" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + } + }, + "babel-loader": { + "version": "8.0.6", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz", + "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.0.0", + "loader-utils": "^1.0.2", + "mkdirp": "^0.5.1", + "pify": "^4.0.1" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + } + } + }, + "babylon-walk": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/babylon-walk/-/babylon-walk-1.0.2.tgz", + "integrity": "sha1-OxWl3btIKni0zpwByLoYFwLZ1s4=", + "dev": true, + "requires": { + "babel-runtime": "^6.11.6", + "babel-types": "^6.15.0", + "lodash.clone": "^4.5.0" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brfs": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-1.6.1.tgz", + "integrity": "sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ==", + "dev": true, + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^2.2.0", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + }, + "dependencies": { + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + } + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001066", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz", + "integrity": "sha512-Gfj/WAastBtfxLws0RCh2sDbTK/8rJuSeZMecrSkNGYxPcv7EzblmDGfWQCFEQcSqYE2BRgQiJh8HOD07N5hIw==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "clipboard": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", + "optional": true, + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.5.3.tgz", + "integrity": "sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.27", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.3", + "schema-utils": "^2.6.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha1-WQhmgpShvs0mGuCkziGwtVHyHRY=", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha1-AA29H47vIXqjaLmiEsX8QLKo8/I=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz", + "integrity": "sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2", + "regexpu-core": "^4.6.0" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "deasync": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.20.tgz", + "integrity": "sha512-E1GI7jMI57hL30OX6Ht/hfQU8DO4AuB9m72WFm4c38GNbUD4Q03//XZaOIHZiY+H1xUaomcot5yk2q/qIZQkGQ==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + }, + "entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.2.tgz", + "integrity": "sha512-dmD3AvJQBUjKpcNkoqr+x+IF0SdRtPz9Vk0uTy4yWqga9ibB6s4v++QFWNohjiUGoMlF552ZvNyXDxz5iW0qmw==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", + "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dev": true, + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.455", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.455.tgz", + "integrity": "sha512-4lwnxp+ArqOX9hiLwLpwhfqvwzUHFuDgLz4NTiU3lhygUzWtocIJ/5Vix+mWVNE2HQ9aI1k2ncGe5H/0OktMvA==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + } + } + }, + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "envinfo": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.5.1.tgz", + "integrity": "sha512-hQBkDf2iO4Nv0CNHpCuSBeaSrveU6nThVxFGTrq/eDlV716UQk09zChaJae4mZRsos1x4YLY2TaH3LHUae3ZmQ==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + }, + "dependencies": { + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.9.1.tgz", + "integrity": "sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q==", + "dev": true, + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "falafel": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.4.tgz", + "integrity": "sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "foreach": "^2.0.5", + "isarray": "^2.0.1", + "object-keys": "^1.0.6" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + }, + "dependencies": { + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + } + } + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "requires": { + "delegate": "^3.1.2" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "grapheme-breaker": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz", + "integrity": "sha1-W55reMODJFLSuiuxy4MPlidkEKw=", + "dev": true, + "requires": { + "brfs": "^1.2.0", + "unicode-trie": "^0.3.1" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "dev": true, + "requires": { + "react-is": "^16.7.0" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-tags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-1.2.0.tgz", + "integrity": "sha1-x43mW1Zjqll5id0rerSSANfk25g=", + "dev": true + }, + "htmlnano": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/htmlnano/-/htmlnano-0.2.5.tgz", + "integrity": "sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "normalize-html-whitespace": "^1.0.0", + "posthtml": "^0.12.0", + "posthtml-render": "^1.1.5", + "purgecss": "^1.4.0", + "svgo": "^1.3.2", + "terser": "^4.3.9", + "uncss": "^0.17.2" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "posthtml": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.12.3.tgz", + "integrity": "sha512-Fbpi95+JJyR0tqU7pUy1zTSQFjAsluuwB9pJ1h0jtnGk7n/O2TBtP5nDl9rV0JVACjQ1Lm5wSp4ppChr8u3MhA==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.2", + "posthtml-render": "^1.2.2" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-html": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-html/-/is-html-1.1.0.tgz", + "integrity": "sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ=", + "dev": true, + "requires": { + "html-tags": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.1.tgz", + "integrity": "sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ==", + "dev": true + }, + "node-forge": { + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.6.tgz", + "integrity": "sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.57", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.57.tgz", + "integrity": "sha512-ZQmnWS7adi61A9JsllJ2gdj2PauElcjnOwTp2O011iGzoakTxUsDGSe+6vD7wXbKdqhSFymC0OSx35aAMhrSdw==", + "dev": true + }, + "normalize-html-whitespace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz", + "integrity": "sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.4.1.tgz", + "integrity": "sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parcel-bundler": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/parcel-bundler/-/parcel-bundler-1.12.4.tgz", + "integrity": "sha512-G+iZGGiPEXcRzw0fiRxWYCKxdt/F7l9a0xkiU4XbcVRJCSlBnioWEwJMutOCCpoQmaQtjB4RBHDGIHN85AIhLQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/core": "^7.4.4", + "@babel/generator": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/plugin-transform-flow-strip-types": "^7.4.4", + "@babel/plugin-transform-modules-commonjs": "^7.4.4", + "@babel/plugin-transform-react-jsx": "^7.0.0", + "@babel/preset-env": "^7.4.4", + "@babel/runtime": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "@iarna/toml": "^2.2.0", + "@parcel/fs": "^1.11.0", + "@parcel/logger": "^1.11.1", + "@parcel/utils": "^1.11.0", + "@parcel/watcher": "^1.12.1", + "@parcel/workers": "^1.11.0", + "ansi-to-html": "^0.6.4", + "babylon-walk": "^1.0.2", + "browserslist": "^4.1.0", + "chalk": "^2.1.0", + "clone": "^2.1.1", + "command-exists": "^1.2.6", + "commander": "^2.11.0", + "core-js": "^2.6.5", + "cross-spawn": "^6.0.4", + "css-modules-loader-core": "^1.1.0", + "cssnano": "^4.0.0", + "deasync": "^0.1.14", + "dotenv": "^5.0.0", + "dotenv-expand": "^5.1.0", + "envinfo": "^7.3.1", + "fast-glob": "^2.2.2", + "filesize": "^3.6.0", + "get-port": "^3.2.0", + "htmlnano": "^0.2.2", + "is-glob": "^4.0.0", + "is-url": "^1.2.2", + "js-yaml": "^3.10.0", + "json5": "^1.0.1", + "micromatch": "^3.0.4", + "mkdirp": "^0.5.1", + "node-forge": "^0.7.1", + "node-libs-browser": "^2.0.0", + "opn": "^5.1.0", + "postcss": "^7.0.11", + "postcss-value-parser": "^3.3.1", + "posthtml": "^0.11.2", + "posthtml-parser": "^0.4.0", + "posthtml-render": "^1.1.3", + "resolve": "^1.4.0", + "semver": "^5.4.1", + "serialize-to-js": "^3.0.0", + "serve-static": "^1.12.4", + "source-map": "0.6.1", + "terser": "^3.7.3", + "v8-compile-cache": "^2.0.0", + "ws": "^5.1.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=", + "dev": true, + "requires": { + "process": "^0.11.1", + "util": "^0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "physical-cpu-count": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz", + "integrity": "sha1-GN4vl+S/epVRrXURlCtUlverpmA=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.31.tgz", + "integrity": "sha512-a937VDHE1ftkjk+8/7nj/mrjtmkn69xxzJgRETXdAUU+IgOYPQNJF17haGWbeDxSyk++HA14UA98FurvPyBJOA==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "posthtml": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/posthtml/-/posthtml-0.11.6.tgz", + "integrity": "sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw==", + "dev": true, + "requires": { + "posthtml-parser": "^0.4.1", + "posthtml-render": "^1.1.5" + } + }, + "posthtml-parser": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/posthtml-parser/-/posthtml-parser-0.4.2.tgz", + "integrity": "sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg==", + "dev": true, + "requires": { + "htmlparser2": "^3.9.2" + } + }, + "posthtml-render": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/posthtml-render/-/posthtml-render-1.2.2.tgz", + "integrity": "sha512-MbIXTWwAfJ9qET6Zl29UNwJcDJEEz9Zkr5oDhiujitJa7YBJwEpbkX2cmuklCDxubTMoRWpid3q8DrSyGnUUzQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prismjs": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", + "integrity": "sha512-AEDjSrVNkynnw6A+B1DsFkd6AVdTnp+/WoUixFRULlCLZVRZlVQMVWio/16jv7G1FscUxQxOQhWwApgbnxr6kQ==", + "requires": { + "clipboard": "^2.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "purgecss": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-1.4.2.tgz", + "integrity": "sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "postcss": "^7.0.14", + "postcss-selector-parser": "^6.0.0", + "yargs": "^14.0.0" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dev": true, + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-codejar": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/react-codejar/-/react-codejar-1.0.1.tgz", + "integrity": "sha512-t58v/YF4qV8w1yHi8Ylkte5tOU5ziYd5/4EIyyuJ6g/rS73ccaV113HhQBwvtoofSKTqOdKv3Rc4K5iMZ10IGg==", + "requires": { + "@medv/codejar": "^1.0.0" + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + } + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "serialize-to-js": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.1.tgz", + "integrity": "sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA==", + "dev": true + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-eval": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.0.5.tgz", + "integrity": "sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA==", + "dev": true, + "requires": { + "escodegen": "^1.11.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.1.tgz", + "integrity": "sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "static-module": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-2.2.5.tgz", + "integrity": "sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ==", + "dev": true, + "requires": { + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "~1.9.0", + "falafel": "^2.1.0", + "has": "^1.0.1", + "magic-string": "^0.22.4", + "merge-source-map": "1.0.4", + "object-inspect": "~1.4.0", + "quote-stream": "~1.0.2", + "readable-stream": "~2.3.3", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.0", + "through2": "~2.0.3" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz", + "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.10" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz", + "integrity": "sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + } + } + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "optional": true + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.3.tgz", + "integrity": "sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==", + "dev": true + }, + "uncss": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/uncss/-/uncss-0.17.3.tgz", + "integrity": "sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "glob": "^7.1.4", + "is-absolute-url": "^3.0.1", + "is-html": "^1.1.0", + "jsdom": "^14.1.0", + "lodash": "^4.17.15", + "postcss": "^7.0.17", + "postcss-selector-parser": "6.0.2", + "request": "^2.88.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + } + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "unicode-trie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-0.3.1.tgz", + "integrity": "sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU=", + "dev": true, + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "dev": true, + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "optional": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true, + "optional": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "optional": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "optional": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "optional": true + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "optional": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "optional": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.41.5", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.5.tgz", + "integrity": "sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "webpack-cli": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", + "dev": true, + "requires": { + "chalk": "2.4.2", + "cross-spawn": "6.0.5", + "enhanced-resolve": "4.1.0", + "findup-sync": "3.0.0", + "global-modules": "2.0.0", + "import-local": "2.0.0", + "interpret": "1.2.0", + "loader-utils": "1.2.3", + "supports-color": "6.1.0", + "v8-compile-cache": "2.0.3", + "yargs": "13.2.4" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "v8-compile-cache": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz", + "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==", + "dev": true + }, + "yargs": { + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", + "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-node-externals": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz", + "integrity": "sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg==", + "dev": true + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" + }, + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } +} diff --git a/tools/ligo-snippets/package.json b/tools/ligo-snippets/package.json new file mode 100644 index 000000000..13b074800 --- /dev/null +++ b/tools/ligo-snippets/package.json @@ -0,0 +1,48 @@ +{ + "name": "@ligolang/ligo-snippets", + "version": "1.0.0", + "main": "./lib/index.js", + "scripts": { + "build": "webpack" + }, + "files": [ + "lib" + ], + "license": "ISC", + "peerDependencies": { + "react": "^16.13.1", + "react-dom": "^16.13.1" + }, + "devDependencies": { + "@babel/cli": "^7.8.4", + "@babel/core": "^7.8.7", + "@babel/plugin-transform-react-jsx": "^7.8.3", + "@babel/preset-env": "^7.8.7", + "@babel/preset-react": "^7.8.3", + "@babel/preset-typescript": "^7.8.3", + "@types/node": "^13.9.5", + "@types/react": "^16.9.23", + "@types/react-dom": "^16.9.5", + "@types/styled-components": "^5.0.1", + "babel-loader": "8.0.6", + "css-loader": "^3.4.2", + "parcel-bundler": "^1.12.4", + "path": "^0.12.7", + "react": "^16.13.1", + "react-dom": "^16.13.1", + "style-loader": "^1.1.3", + "typescript": "^3.8.3", + "webpack": "4.41.5", + "webpack-cli": "^3.3.11", + "webpack-node-externals": "^1.7.2" + }, + "dependencies": { + "@types/prismjs": "^1.16.1", + "axios": "^0.19.2", + "ligo-snippets-css": "0.0.1", + "prism-react-renderer": "^1.1.1", + "prismjs": "^1.20.0", + "react-codejar": "^1.0.1", + "yaml": "^1.9.2" + } +} diff --git a/tools/ligo-snippets/src/components/editor.tsx b/tools/ligo-snippets/src/components/editor.tsx new file mode 100644 index 000000000..971cdb4ce --- /dev/null +++ b/tools/ligo-snippets/src/components/editor.tsx @@ -0,0 +1,225 @@ +import React from 'react'; +import PrismJS from 'prismjs'; +import { ReactCodeJar } from "react-codejar"; +import axios from 'axios'; +import YAML from 'yaml'; + +require('ligo-snippets-css/css/ligo-prism.css') + +const { Prism } = require("prism-react-renderer"); + +Prism.languages = { + ...Prism.languages, + pascaligo: { + 'comment': [ + /\(\*[\s\S]+?\*\)/, + // /\{[\s\S]+?\}/, + /\/\/.*/ + ], + 'string': { + pattern: /(?:'(?:''|[^'\r\n])*'|#[&$%]?[a-f\d]+)+|\^[a-z]/i, + greedy: true + }, + 'keyword': [ + { + // Turbo Pascal + pattern: /(^|[^&])\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\b/i, + lookbehind: true + }, + { + // Free Pascal + pattern: /(^|[^&])\b(?:dispose|exit|false|new|true)\b/i, + lookbehind: true + }, + { + // Object Pascal + pattern: /(^|[^&])\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\b/i, + lookbehind: true + }, + { + // Modifiers + pattern: /(^|[^&])\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\b/i, + lookbehind: true + } + ], + 'number': [ + // Hexadecimal, octal and binary + /(?:[&%]\d+|\$[a-f\d]+)/i, + // Decimal + /\b\d+(?:\.\d+)?(?:e[+-]?\d+)?/i + ], + 'operator': [ + /\.\.|\*\*|:=|<[<=>]?|>[>=]?|[+\-*\/]=?|[@^=]/i, + { + pattern: /(^|[^&])\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\b/, + lookbehind: true + } + ], + 'punctuation': /\(\.|\.\)|[()\[\]:;,.]/ + }, + reasonligo: + { + ...Prism.languages.reason, + 'comment': [ + /(^|[^\\])\/\*[\s\S]*?\*\//, + /\(\*[\s\S]*?\*\)/, + /\/\/.*/ + ] + + }, + cameligo: { + ...Prism.languages.ocaml, + 'comment': [ + /(^|[^\\])\/\*[\s\S]*?\*\//, + /\(\*[\s\S]*?\*\)/, + /\/\/.*/ + ] + } +}; + +async function openInIde(editorParams, snippetCode) { + editorParams.editor.code = snippetCode + let webIdeUrl = 'https://ide.ligolang.org' + const response = await axios.post(`${webIdeUrl}/api/share`, editorParams); + const { hash } = await response.data; + window.open(`${webIdeUrl}/p/${hash}`, "_blank"); +} + +function parseEditorConfigs(data) { + const CONFIG_REGEX = /\(\*_\*([^]*?)\*_\*\)\s*/; + const match = data.code.match(CONFIG_REGEX); + + if (!match || !match[1]) { + return { + "editor": { + "title": data.name, + "language": data.language, + "code": data.code, + "dirty": false + } + }; + } + + try { + const config = YAML.parse(match[1]); + data.code = data.code.replace(CONFIG_REGEX, '') + + return { + "editor": { + "title": config.name, + "language": config.language, + "code": data.code, + "dirty": false + }, + "compile": { + "entrypoint": config.compile.entrypoint + }, + "dryRun": { + "entrypoint": config.dryRun.entrypoint, + "parameters": config.dryRun.parameters, + "storage": config.dryRun.storage + }, + "deploy": { + "entrypoint": config.deploy.entrypoint, + "storage": config.deploy.storage + }, + "evaluateValue": { + "entrypoint": config.evaluateValue.entrypoint + }, + "evaluateFunction": { + "entrypoint": config.evaluateFunction.entrypoint, + "parameters": config.evaluateFunction.parameters + } + } + } catch (ex) { + throw new Error(`Unable to parse configuration.`); + } +} + +function getTheme(data) { + let theme = { + editorStyle: { + borderRadius: "25px 25px 25px 0", + boxShadow: "0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2)", + fontFamily: "'Source Code Pro', monospace", + fontSize: "14px", + fontWeight: "400", + color:"black", + height: "350px", + letterSpacing: "normal", + lineHeight: "20px", + padding: "20px", + tabSize: "4", + overflow: "hidden", + background: "#3A444C" + }, + buttonStyle: { + margin: "10px", + fontWeight: "bold", + color: "white", + border: "none", + background: "#0F60CF" + }, + buttonContainer: { + textAlign: "right", + background: "#0F60CF", + borderRadius: "0 0 0 25px" + } + } + + if (data.height != "") { + theme.editorStyle.height = data.height + } + + if (data.theme === 'light') { + theme.editorStyle.background = "#f7fcff" + theme.editorStyle.color = "black" + theme.buttonStyle.background = "#3F90FF" + theme.buttonContainer.background = "#3F90FF" + } else { + theme.editorStyle.background = "#3A444C" + theme.editorStyle.color = "white" + theme.buttonStyle.background = "#0F60CF" + theme.buttonContainer.background = "#0F60CF" + } + + return theme +} + +function getLanguageHighlight(language) { + switch (language) { + case 'cameligo': + return Prism.languages.cameligo + case 'reasonligo': + return Prism.languages.reasonligo + default: + return Prism.languages.pascaligo + } +} + +export const LigoSnippet = (props) => { + const data = props.data + const editorParams = parseEditorConfigs(data) + let theme = getTheme(data) + const [snippetCode, onUpdate] = React.useState(editorParams.editor.code); + + const highlight = editor => { + const text = editor.textContent; + + editor.innerHTML = PrismJS.highlight( + text, + getLanguageHighlight(data.language), + data.language + ); + }; + + return ( +
+ +
+ +
+
+ ); +} + diff --git a/tools/ligo-snippets/src/components/ligo-prism.css b/tools/ligo-snippets/src/components/ligo-prism.css new file mode 100644 index 000000000..4ba4f447b --- /dev/null +++ b/tools/ligo-snippets/src/components/ligo-prism.css @@ -0,0 +1,76 @@ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + + .token.comment, + .token.prolog, + .token.doctype, + .token.cdata { + color: slategray; + } + + .token.punctuation { + color: #999; + } + + .token.namespace { + opacity: .7; + } + + .token.property, + .token.tag, + .token.boolean, + .token.number, + .token.constant, + .token.symbol, + .token.deleted { + color: #B5CEA8; + } + + .token.selector, + .token.attr-name, + .token.string, + .token.char, + .token.builtin, + .token.inserted { + color: #690; + } + + .token.operator, + .token.entity, + .token.url, + .language-css .token.string, + .style .token.string { + color: #9a6e3a; + } + + .token.atrule, + .token.attr-value, + .token.keyword { + color: #07a; + } + + .token.function, + .token.class-name { + color: #DD4A68; + } + + .token.regex, + .token.important, + .token.variable { + color: #e90; + } + + .token.important, + .token.bold { + font-weight: bold; + } + .token.italic { + font-style: italic; + } + + .token.entity { + cursor: help; + } \ No newline at end of file diff --git a/tools/ligo-snippets/src/index.tsx b/tools/ligo-snippets/src/index.tsx new file mode 100644 index 000000000..59a613cc1 --- /dev/null +++ b/tools/ligo-snippets/src/index.tsx @@ -0,0 +1 @@ +export { LigoSnippet } from './components/editor' diff --git a/tools/ligo-snippets/tsconfig.json b/tools/ligo-snippets/tsconfig.json new file mode 100644 index 000000000..af10394b4 --- /dev/null +++ b/tools/ligo-snippets/tsconfig.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": ["src"] +} diff --git a/tools/ligo-snippets/webpack.config.js b/tools/ligo-snippets/webpack.config.js new file mode 100644 index 000000000..95a21fbcb --- /dev/null +++ b/tools/ligo-snippets/webpack.config.js @@ -0,0 +1,28 @@ +const path = require('path'); +const nodeExternals = require("webpack-node-externals"); + +module.exports = { + mode: 'production', + entry: './src/index.tsx', + output: { + path: path.resolve('lib'), + filename: 'index.js', + libraryTarget: 'commonjs2' + }, + module: { + rules: [{ + test: /\.(t|j)sx?$/, + exclude: /(node_modules)/, + use: 'babel-loader' + }, + { + test: /\.css/, + use: ["style-loader", "css-loader"], + }, + ] + }, + externals: [nodeExternals()], + resolve: { + extensions: ['.ts', '.tsx', '.js', '.jsx'] + }, +} \ No newline at end of file diff --git a/tools/ligo-snippets/yarn.lock b/tools/ligo-snippets/yarn.lock new file mode 100644 index 000000000..f9bdf71d7 --- /dev/null +++ b/tools/ligo-snippets/yarn.lock @@ -0,0 +1,6593 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/cli@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.4.tgz#505fb053721a98777b2b175323ea4f090b7d3c1c" + integrity sha512-XXLgAm6LBbaNxaGhMAznXXaxtCWfuv6PIDJ9Alsy9JYTOh+j2jJz+L/162kkfU1j/pTSxK1xGmlwI4pdIMkoag== + dependencies: + commander "^4.0.1" + convert-source-map "^1.1.0" + fs-readdir-recursive "^1.1.0" + glob "^7.0.0" + lodash "^4.17.13" + make-dir "^2.1.0" + slash "^2.0.0" + source-map "^0.5.0" + optionalDependencies: + chokidar "^2.1.8" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" + integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== + dependencies: + "@babel/highlight" "^7.8.3" + +"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" + integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== + dependencies: + browserslist "^4.9.1" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.4.4", "@babel/core@^7.8.7": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" + integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helpers" "^7.9.0" + "@babel/parser" "^7.9.0" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.4.4", "@babel/generator@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.4.tgz#12441e90c3b3c4159cdecf312075bf1a8ce2dbce" + integrity sha512-rjP8ahaDy/ouhrvCoU1E5mqaitWrxwuNGU+dy1EpaoK48jZay4MdkskKGIMHLZNewg8sAsqpGSREJwP0zH3YQA== + dependencies: + "@babel/types" "^7.9.0" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" + integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.8.3.tgz#c84097a427a061ac56a1c30ebf54b7b22d241503" + integrity sha512-5eFOm2SyFPK4Rh3XMMRDjN7lBH0orh3ss0g3rTYZnBQ+r6YPj7lgDyCvPphynHvUrobJmeMignBr6Acw9mAPlw== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-builder-react-jsx-experimental@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.9.0.tgz#066d80262ade488f9c1b1823ce5db88a4cedaa43" + integrity sha512-3xJEiyuYU4Q/Ar9BsHisgdxZsRlsShMe90URZ0e6przL26CCs8NJbDoxH94kKT17PcxlMhsCAwZd90evCo26VQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-module-imports" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-builder-react-jsx@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.9.0.tgz#16bf391990b57732700a3278d4d9a81231ea8d32" + integrity sha512-weiIo4gaoGgnhff54GQ3P5wsUQmnSwpkvU0r6ZHq6TzoSzKy4JxHEgnxNytaKbov2a9z/CVNyzliuCOUPEX3Jw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/types" "^7.9.0" + +"@babel/helper-compilation-targets@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" + integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== + dependencies: + "@babel/compat-data" "^7.8.6" + browserslist "^4.9.1" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.8.3": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + +"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" + integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.8.3.tgz#a0655cad5451c3760b726eba875f1cd8faa02c15" + integrity sha512-PoeBYtxoZGtct3md6xZOCWPcKuMuk3IHhgxsRRNtnNShebf4C8YonTSblsK4tvDbm+eJAw2HAPOfCr+Q/YRG/g== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/types" "^7.8.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.8.3.tgz#a728dc5b4e89e30fc2dfc7d04fa28a930653f982" + integrity sha512-N+8eW86/Kj147bO9G2uclsg5pwfs/fqqY5rwgIL7eTBklgXjcOJ3btzS5iM6AitJcftnY7pm2lGsrJVYLGjzIw== + dependencies: + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.8.3.tgz#eeeb665a01b1f11068e9fb86ad56a1cb1a824cca" + integrity sha512-BCxgX1BC2hD/oBlIFUgOCQDOPV8nSINxCwM3o93xP4P9Fq6aV5sgv2cOOITDMtCfQ+3PvHp3l689XZvAM9QyOA== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-get-function-arity@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" + integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-hoist-variables@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.8.3.tgz#1dbe9b6b55d78c9b4183fc8cdc6e30ceb83b7134" + integrity sha512-ky1JLOjcDUtSc+xkt0xhYff7Z6ILTAHKmZLHPxAhOP0Nd77O+3nCsd6uSVYur6nJnCI029CrNbYlc0LoPfAPQg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-member-expression-to-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" + integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" + integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-module-transforms@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" + integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-simple-access" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.9.0" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" + integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" + integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== + +"@babel/helper-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" + integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.8.3.tgz#273c600d8b9bf5006142c1e35887d555c12edd86" + integrity sha512-kgwDmw4fCg7AVgS4DukQR/roGp+jP+XluJE5hsRZwxCYGg+Rv9wSGErDWhlI90FODdYfd4xG4AQRiMDjjN0GzA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-wrap-function" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/helper-simple-access@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" + integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== + dependencies: + "@babel/template" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helper-split-export-declaration@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" + integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== + dependencies: + "@babel/types" "^7.8.3" + +"@babel/helper-validator-identifier@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz#ad53562a7fc29b3b9a91bbf7d10397fd146346ed" + integrity sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw== + +"@babel/helper-wrap-function@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.8.3.tgz#9dbdb2bb55ef14aaa01fe8c99b629bd5352d8610" + integrity sha512-LACJrbUET9cQDzb6kG7EeD7+7doC3JNvUgTEQOx2qaO1fKlzE/Bf05qs9w1oXQMmXlPO65lC3Tq9S6gZpTErEQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.8.3" + "@babel/types" "^7.8.3" + +"@babel/helpers@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" + integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== + dependencies: + "@babel/template" "^7.8.3" + "@babel/traverse" "^7.9.0" + "@babel/types" "^7.9.0" + +"@babel/highlight@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" + integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.4.4", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" + integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== + +"@babel/plugin-proposal-async-generator-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.8.3.tgz#bad329c670b382589721b27540c7d288601c6e6f" + integrity sha512-NZ9zLv848JsV3hs8ryEh7Uaz/0KsmPLqv0+PdkDJL1cJy0K4kOCFa8zc1E3mp+RHPQcpdfb/6GovEsW4VDrOMw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.8.3.tgz#38c4fe555744826e97e2ae930b0fb4cc07e66054" + integrity sha512-NyaBbyLFXFLT9FP+zk0kYlUlA8XtCUbehs67F0nnEg7KICgMc2mNkIeu9TYhKzyXMkrapZFwAhXLdnt4IYHy1w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.8.3.tgz#da5216b238a98b58a1e05d6852104b10f9a70d6b" + integrity sha512-KGhQNZ3TVCQG/MjRbAUwuH+14y9q0tpxs1nWWs3pbSleRdDro9SAMMDyye8HhY1gqZ7/NqIc8SKhya0wRDgP1Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz#e4572253fdeed65cddeecfdab3f928afeb2fd5d2" + integrity sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz#5d6769409699ec9b3b68684cd8116cedff93bad8" + integrity sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + +"@babel/plugin-proposal-object-rest-spread@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.0.tgz#a28993699fc13df165995362693962ba6b061d6f" + integrity sha512-UgqBv6bjq4fDb8uku9f+wcm1J7YxJ5nT7WO/jBr0cl0PLKb7t1O6RNR1kZbjgx2LQtsDI9hwoQVmn0yhXeQyow== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + +"@babel/plugin-proposal-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.8.3.tgz#9dee96ab1650eed88646ae9734ca167ac4a9c5c9" + integrity sha512-0gkX7J7E+AtAw9fcwlVQj8peP61qhdg/89D5swOkjYbkboA2CVckn3kiyum1DE0wskGb7KJJxBdyEBApDLLVdw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz#31db16b154c39d6b8a645292472b98394c292a58" + integrity sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-unicode-property-regex@^7.4.4", "@babel/plugin-proposal-unicode-property-regex@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" + integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.8" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-flow@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.8.3.tgz#f2c883bd61a6316f2c89380ae5122f923ba4527f" + integrity sha512-innAx3bUbA0KSYj2E2MNFSn9hiCeowOFLxlsuhXzw8hMQnzkDomUr9QCD7E9VF60NmnG1sNTuuv6Qf4f8INYsg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-jsx@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.8.3.tgz#521b06c83c40480f1e58b4fd33b92eceb1d6ea94" + integrity sha512-WxdW9xyLgBdefoo0Ynn3MRSkhe5tFVxxKNVdnZSh318WrG2e2jH+E9wd/++JsqcLJZPfz87njQJ8j2Upjm0M0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.8.0", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" + integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" + integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-typescript@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.8.3.tgz#c1f659dda97711a569cef75275f7e15dcaa6cabc" + integrity sha512-GO1MQ/SGGGoiEXY0e0bSpHimJvxqB7lktLLIq2pv8xG7WZ8IMEle74jIe1FhprHBWjwjZtXHkycDLZXIWM5Wfg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-arrow-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.8.3.tgz#82776c2ed0cd9e1a49956daeb896024c9473b8b6" + integrity sha512-0MRF+KC8EqH4dbuITCWwPSzsyO3HIWWlm30v8BbbpOrS1B++isGxPnnuq/IZvOX5J2D/p7DQalQm+/2PnlKGxg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-async-to-generator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.8.3.tgz#4308fad0d9409d71eafb9b1a6ee35f9d64b64086" + integrity sha512-imt9tFLD9ogt56Dd5CI/6XgpukMwd/fLGSrix2httihVe7LOGVPhyhMh1BU5kDM7iHD08i8uUtmV2sWaBFlHVQ== + dependencies: + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-remap-async-to-generator" "^7.8.3" + +"@babel/plugin-transform-block-scoped-functions@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.8.3.tgz#437eec5b799b5852072084b3ae5ef66e8349e8a3" + integrity sha512-vo4F2OewqjbB1+yaJ7k2EJFHlTP3jR634Z9Cj9itpqNjuLXvhlVxgnjsHsdRgASR8xYDrx6onw4vW5H6We0Jmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-block-scoping@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.8.3.tgz#97d35dab66857a437c166358b91d09050c868f3a" + integrity sha512-pGnYfm7RNRgYRi7bids5bHluENHqJhrV4bCZRwc5GamaWIIs07N4rZECcmJL6ZClwjDz1GbdMZFtPs27hTB06w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.9.0": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.9.2.tgz#8603fc3cc449e31fdbdbc257f67717536a11af8d" + integrity sha512-TC2p3bPzsfvSsqBZo0kJnuelnoK9O3welkUpqSqBQuBF6R5MN2rysopri8kNvtlGIb2jmUO7i15IooAZJjZuMQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-define-map" "^7.8.3" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-optimise-call-expression" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" + "@babel/helper-split-export-declaration" "^7.8.3" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.8.3.tgz#96d0d28b7f7ce4eb5b120bb2e0e943343c86f81b" + integrity sha512-O5hiIpSyOGdrQZRQ2ccwtTVkgUDBBiCuK//4RJ6UfePllUTCENOzKxfh6ulckXKc0DixTFLCfb2HVkNA7aDpzA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-destructuring@^7.8.3": + version "7.8.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz#fadb2bc8e90ccaf5658de6f8d4d22ff6272a2f4b" + integrity sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-dotall-regex@^7.4.4", "@babel/plugin-transform-dotall-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" + integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-duplicate-keys@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.8.3.tgz#8d12df309aa537f272899c565ea1768e286e21f1" + integrity sha512-s8dHiBUbcbSgipS4SMFuWGqCvyge5V2ZeAWzR6INTVC3Ltjig/Vw1G2Gztv0vU/hRG9X8IvKvYdoksnUfgXOEQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-exponentiation-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.8.3.tgz#581a6d7f56970e06bf51560cd64f5e947b70d7b7" + integrity sha512-zwIpuIymb3ACcInbksHaNcR12S++0MDLKkiqXHl3AzpgdKlFNhog+z/K0+TGW+b0w5pgTq4H6IwV/WhxbGYSjQ== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-flow-strip-types@^7.4.4": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz#8a3538aa40434e000b8f44a3c5c9ac7229bd2392" + integrity sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-flow" "^7.8.3" + +"@babel/plugin-transform-for-of@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.9.0.tgz#0f260e27d3e29cd1bb3128da5e76c761aa6c108e" + integrity sha512-lTAnWOpMwOXpyDx06N+ywmF3jNbafZEqZ96CGYabxHrxNX8l5ny7dt4bK/rGwAh9utyP2b2Hv7PlZh1AAS54FQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-function-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.8.3.tgz#279373cb27322aaad67c2683e776dfc47196ed8b" + integrity sha512-rO/OnDS78Eifbjn5Py9v8y0aR+aSYhDhqAwVfsTl0ERuMZyr05L1aFSCJnbv2mmsLkit/4ReeQ9N2BgLnOcPCQ== + dependencies: + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.8.3.tgz#aef239823d91994ec7b68e55193525d76dbd5dc1" + integrity sha512-3Tqf8JJ/qB7TeldGl+TT55+uQei9JfYaregDcEAyBZ7akutriFrt6C/wLYIer6OYhleVQvH/ntEhjE/xMmy10A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-member-expression-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.8.3.tgz#963fed4b620ac7cbf6029c755424029fa3a40410" + integrity sha512-3Wk2EXhnw+rP+IDkK6BdtPKsUE5IeZ6QOGrPYvw52NwBStw9V1ZVzxgK6fSKSxqUvH9eQPR3tm3cOq79HlsKYA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-modules-amd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" + integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-commonjs@^7.4.4", "@babel/plugin-transform-modules-commonjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" + integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-simple-access" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-systemjs@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" + integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== + dependencies: + "@babel/helper-hoist-variables" "^7.8.3" + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + babel-plugin-dynamic-import-node "^2.3.0" + +"@babel/plugin-transform-modules-umd@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.9.0.tgz#e909acae276fec280f9b821a5f38e1f08b480697" + integrity sha512-uTWkXkIVtg/JGRSIABdBoMsoIeoHQHPTL0Y2E7xf5Oj7sLqwVsNXOkNk0VJc7vF0IMBsPeikHxFjGe+qmwPtTQ== + dependencies: + "@babel/helper-module-transforms" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz#a2a72bffa202ac0e2d0506afd0939c5ecbc48c6c" + integrity sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.8.3.tgz#60cc2ae66d85c95ab540eb34babb6434d4c70c43" + integrity sha512-QuSGysibQpyxexRyui2vca+Cmbljo8bcRckgzYV4kRIsHpVeyeC3JDO63pY+xFZ6bWOBn7pfKZTqV4o/ix9sFw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-object-super@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.8.3.tgz#ebb6a1e7a86ffa96858bd6ac0102d65944261725" + integrity sha512-57FXk+gItG/GejofIyLIgBKTas4+pEU47IXKDBWFTxdPd7F80H8zybyAY7UoblVfBhBGs2EKM+bJUu2+iUYPDQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.3" + +"@babel/plugin-transform-parameters@^7.8.7": + version "7.9.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.9.3.tgz#3028d0cc20ddc733166c6e9c8534559cee09f54a" + integrity sha512-fzrQFQhp7mIhOzmOtPiKffvCYQSK10NR8t6BBz2yPbeUHb9OLW8RZGtgDRBn8z2hGcwvKDL3vC7ojPTLNxmqEg== + dependencies: + "@babel/helper-get-function-arity" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-property-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.8.3.tgz#33194300d8539c1ed28c62ad5087ba3807b98263" + integrity sha512-uGiiXAZMqEoQhRWMK17VospMZh5sXWg+dlh2soffpkAl96KAm+WZuJfa6lcELotSRmooLqg0MWdH6UUq85nmmg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-display-name@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz#70ded987c91609f78353dd76d2fb2a0bb991e8e5" + integrity sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-react-jsx-development@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.9.0.tgz#3c2a130727caf00c2a293f0aed24520825dbf754" + integrity sha512-tK8hWKrQncVvrhvtOiPpKrQjfNX3DtkNLSX4ObuGcpS9p0QrGetKmlySIGR07y48Zft8WVgPakqd/bk46JrMSw== + dependencies: + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-self@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.9.0.tgz#f4f26a325820205239bb915bad8e06fcadabb49b" + integrity sha512-K2ObbWPKT7KUTAoyjCsFilOkEgMvFG+y0FqOl6Lezd0/13kMkkjHskVsZvblRPj1PHA44PrToaZANrryppzTvQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx-source@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.9.0.tgz#89ef93025240dd5d17d3122294a093e5e0183de0" + integrity sha512-K6m3LlSnTSfRkM6FcRk8saNEeaeyG5k7AVkBU2bZK3+1zdkSED3qNdsWrUgQBeTVD2Tp3VMmerxVO2yM5iITmw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-react-jsx@^7.0.0", "@babel/plugin-transform-react-jsx@^7.8.3", "@babel/plugin-transform-react-jsx@^7.9.4": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.9.4.tgz#86f576c8540bd06d0e95e0b61ea76d55f6cbd03f" + integrity sha512-Mjqf3pZBNLt854CK0C/kRuXAnE6H/bo7xYojP+WGtX8glDGSibcwnsWwhwoSuRg0+EBnxPC1ouVnuetUIlPSAw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.9.0" + "@babel/helper-builder-react-jsx-experimental" "^7.9.0" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-jsx" "^7.8.3" + +"@babel/plugin-transform-regenerator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.8.3.tgz#9a0635ac4e665d29b162837dd3cc50745dfdf1f5" + integrity sha512-mwMxcycN3omKFDjDQUl+8zyMsBfjRFr0Zn/64I41pmjv4NJuqcYlEtezwYtw9TFd9WR1vN5kiM+O0gMZzO6L0A== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-shorthand-properties@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.8.3.tgz#28545216e023a832d4d3a1185ed492bcfeac08c8" + integrity sha512-I9DI6Odg0JJwxCHzbzW08ggMdCezoWcuQRz3ptdudgwaHxTjxw5HgdFJmZIkIMlRymL6YiZcped4TTCB0JcC8w== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.8.3.tgz#9c8ffe8170fdfb88b114ecb920b82fb6e95fe5e8" + integrity sha512-CkuTU9mbmAoFOI1tklFWYYbzX5qCIZVXPVy0jpXgGwkplCndQAa58s2jr66fTeQnA64bDox0HL4U56CFYoyC7g== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-sticky-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.8.3.tgz#be7a1290f81dae767475452199e1f76d6175b100" + integrity sha512-9Spq0vGCD5Bb4Z/ZXXSK5wbbLFMG085qd2vhL1JYu1WcQ5bXqZBAYRzU1d+p79GcHs2szYv5pVQCX13QgldaWw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-regex" "^7.8.3" + +"@babel/plugin-transform-template-literals@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.8.3.tgz#7bfa4732b455ea6a43130adc0ba767ec0e402a80" + integrity sha512-820QBtykIQOLFT8NZOcTRJ1UNuztIELe4p9DCgvj4NK+PwluSJ49we7s9FB1HIGNIYT7wFUJ0ar2QpCDj0escQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typeof-symbol@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.8.4.tgz#ede4062315ce0aaf8a657a920858f1a2f35fc412" + integrity sha512-2QKyfjGdvuNfHsb7qnBBlKclbD4CfshH2KvDabiijLMGXPHJXGxtDzwIF7bQP+T0ysw8fYTtxPafgfs/c1Lrqg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-transform-typescript@^7.9.0": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.9.4.tgz#4bb4dde4f10bbf2d787fce9707fb09b483e33359" + integrity sha512-yeWeUkKx2auDbSxRe8MusAG+n4m9BFY/v+lPjmQDgOFX5qnySkUY5oXzkp6FwPdsYqnKay6lorXYdC0n3bZO7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-syntax-typescript" "^7.8.3" + +"@babel/plugin-transform-unicode-regex@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.8.3.tgz#0cef36e3ba73e5c57273effb182f46b91a1ecaad" + integrity sha512-+ufgJjYdmWfSQ+6NS9VGUR2ns8cjJjYbrbi11mZBTaWm+Fui/ncTLFF28Ei1okavY+xkojGr1eJxNsWYeA5aZw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/preset-env@^7.4.4", "@babel/preset-env@^7.8.7": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.0.tgz#a5fc42480e950ae8f5d9f8f2bbc03f52722df3a8" + integrity sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ== + dependencies: + "@babel/compat-data" "^7.9.0" + "@babel/helper-compilation-targets" "^7.8.7" + "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-proposal-async-generator-functions" "^7.8.3" + "@babel/plugin-proposal-dynamic-import" "^7.8.3" + "@babel/plugin-proposal-json-strings" "^7.8.3" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-proposal-numeric-separator" "^7.8.3" + "@babel/plugin-proposal-object-rest-spread" "^7.9.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" + "@babel/plugin-proposal-optional-chaining" "^7.9.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.8.0" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.8.3" + "@babel/plugin-transform-async-to-generator" "^7.8.3" + "@babel/plugin-transform-block-scoped-functions" "^7.8.3" + "@babel/plugin-transform-block-scoping" "^7.8.3" + "@babel/plugin-transform-classes" "^7.9.0" + "@babel/plugin-transform-computed-properties" "^7.8.3" + "@babel/plugin-transform-destructuring" "^7.8.3" + "@babel/plugin-transform-dotall-regex" "^7.8.3" + "@babel/plugin-transform-duplicate-keys" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator" "^7.8.3" + "@babel/plugin-transform-for-of" "^7.9.0" + "@babel/plugin-transform-function-name" "^7.8.3" + "@babel/plugin-transform-literals" "^7.8.3" + "@babel/plugin-transform-member-expression-literals" "^7.8.3" + "@babel/plugin-transform-modules-amd" "^7.9.0" + "@babel/plugin-transform-modules-commonjs" "^7.9.0" + "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-umd" "^7.9.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" + "@babel/plugin-transform-new-target" "^7.8.3" + "@babel/plugin-transform-object-super" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.8.7" + "@babel/plugin-transform-property-literals" "^7.8.3" + "@babel/plugin-transform-regenerator" "^7.8.7" + "@babel/plugin-transform-reserved-words" "^7.8.3" + "@babel/plugin-transform-shorthand-properties" "^7.8.3" + "@babel/plugin-transform-spread" "^7.8.3" + "@babel/plugin-transform-sticky-regex" "^7.8.3" + "@babel/plugin-transform-template-literals" "^7.8.3" + "@babel/plugin-transform-typeof-symbol" "^7.8.4" + "@babel/plugin-transform-unicode-regex" "^7.8.3" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.9.0" + browserslist "^4.9.1" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/preset-react@^7.8.3": + version "7.9.4" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.9.4.tgz#c6c97693ac65b6b9c0b4f25b948a8f665463014d" + integrity sha512-AxylVB3FXeOTQXNXyiuAQJSvss62FEotbX2Pzx3K/7c+MKJMdSg6Ose6QYllkdCFA8EInCJVw7M/o5QbLuA4ZQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-react-display-name" "^7.8.3" + "@babel/plugin-transform-react-jsx" "^7.9.4" + "@babel/plugin-transform-react-jsx-development" "^7.9.0" + "@babel/plugin-transform-react-jsx-self" "^7.9.0" + "@babel/plugin-transform-react-jsx-source" "^7.9.0" + +"@babel/preset-typescript@^7.8.3": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz#87705a72b1f0d59df21c179f7c3d2ef4b16ce192" + integrity sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + "@babel/plugin-transform-typescript" "^7.9.0" + +"@babel/runtime@^7.4.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.9.2" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" + integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.4.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" + +"@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.0.tgz#d3882c2830e513f4fe4cec9fe76ea1cc78747892" + integrity sha512-jAZQj0+kn4WTHO5dUZkZKhbFrqZE7K5LAQ5JysMnmvGij+wOdr+8lWqPeW0BcF4wFwrEXXtdGO7wcV6YPJcf3w== + dependencies: + "@babel/code-frame" "^7.8.3" + "@babel/generator" "^7.9.0" + "@babel/helper-function-name" "^7.8.3" + "@babel/helper-split-export-declaration" "^7.8.3" + "@babel/parser" "^7.9.0" + "@babel/types" "^7.9.0" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0": + version "7.9.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.0.tgz#00b064c3df83ad32b2dbf5ff07312b15c7f1efb5" + integrity sha512-BS9JKfXkzzJl8RluW4JGknzpiUV7ZrvTayM6yfqLTVBEnFtyowVIOu6rqxRd5cVO6yGoWf4T8u8dgK9oB+GCng== + dependencies: + "@babel/helper-validator-identifier" "^7.9.0" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@emotion/is-prop-valid@^0.8.3": + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== + dependencies: + "@emotion/memoize" "0.7.4" + +"@emotion/memoize@0.7.4": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== + +"@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== + +"@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== + +"@fortawesome/fontawesome-common-types@^0.2.28": + version "0.2.28" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.28.tgz#1091bdfe63b3f139441e9cba27aa022bff97d8b2" + integrity sha512-gtis2/5yLdfI6n0ia0jH7NJs5i/Z/8M/ZbQL6jXQhCthEOe5Cr5NcQPhgTvFxNOtURE03/ZqUcEskdn2M+QaBg== + +"@fortawesome/fontawesome-svg-core@^1.2.28": + version "1.2.28" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz#e5b8c8814ef375f01f5d7c132d3c3a2f83a3abf9" + integrity sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.28" + +"@fortawesome/free-solid-svg-icons@^5.13.0": + version "5.13.0" + resolved "https://registry.yarnpkg.com/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.13.0.tgz#44d9118668ad96b4fd5c9434a43efc5903525739" + integrity sha512-IHUgDJdomv6YtG4p3zl1B5wWf9ffinHIvebqQOmV3U+3SLw4fC+LUCCgwfETkbTtjy5/Qws2VoVf6z/ETQpFpg== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.2.28" + +"@fortawesome/react-fontawesome@^0.1.9": + version "0.1.9" + resolved "https://registry.yarnpkg.com/@fortawesome/react-fontawesome/-/react-fontawesome-0.1.9.tgz#c865b9286c707407effcec99958043711367cd02" + integrity sha512-49V3WNysLZU5fZ3sqSuys4nGRytsrxJktbv3vuaXkEoxv22C6T7TEG0TW6+nqVjMnkfCQd5xOnmJoZHMF78tOw== + dependencies: + prop-types "^15.7.2" + +"@iarna/toml@^2.2.0": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.3.tgz#f060bf6eaafae4d56a7dac618980838b0696e2ab" + integrity sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg== + +"@mrmlnc/readdir-enhanced@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@parcel/fs@^1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-1.11.0.tgz#fb8a2be038c454ad46a50dc0554c1805f13535cd" + integrity sha512-86RyEqULbbVoeo8OLcv+LQ1Vq2PKBAvWTU9fCgALxuCTbbs5Ppcvll4Vr+Ko1AnmMzja/k++SzNAwJfeQXVlpA== + dependencies: + "@parcel/utils" "^1.11.0" + mkdirp "^0.5.1" + rimraf "^2.6.2" + +"@parcel/logger@^1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-1.11.1.tgz#c55b0744bcbe84ebc291155627f0ec406a23e2e6" + integrity sha512-9NF3M6UVeP2udOBDILuoEHd8VrF4vQqoWHEafymO1pfSoOMfxrSJZw1MfyAAIUN/IFp9qjcpDCUbDZB+ioVevA== + dependencies: + "@parcel/workers" "^1.11.0" + chalk "^2.1.0" + grapheme-breaker "^0.3.2" + ora "^2.1.0" + strip-ansi "^4.0.0" + +"@parcel/utils@^1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-1.11.0.tgz#539e08fff8af3b26eca11302be80b522674b51ea" + integrity sha512-cA3p4jTlaMeOtAKR/6AadanOPvKeg8VwgnHhOyfi0yClD0TZS/hi9xu12w4EzA/8NtHu0g6o4RDfcNjqN8l1AQ== + +"@parcel/watcher@^1.12.1": + version "1.12.1" + resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-1.12.1.tgz#b98b3df309fcab93451b5583fc38e40826696dad" + integrity sha512-od+uCtCxC/KoNQAIE1vWx1YTyKYY+7CTrxBJPRh3cDWw/C0tCtlBMVlrbplscGoEpt6B27KhJDCv82PBxOERNA== + dependencies: + "@parcel/utils" "^1.11.0" + chokidar "^2.1.5" + +"@parcel/workers@^1.11.0": + version "1.11.0" + resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-1.11.0.tgz#7b8dcf992806f4ad2b6cecf629839c41c2336c59" + integrity sha512-USSjRAAQYsZFlv43FUPdD+jEGML5/8oLF0rUzPQTtK4q9kvaXr49F5ZplyLz5lox78cLZ0TxN2bIDQ1xhOkulQ== + dependencies: + "@parcel/utils" "^1.11.0" + physical-cpu-count "^2.0.0" + +"@types/hoist-non-react-statics@*": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + +"@types/node@^13.9.5": + version "13.9.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.5.tgz#59738bf30b31aea1faa2df7f4a5f55613750cf00" + integrity sha512-hkzMMD3xu6BrJpGVLeQ3htQQNAcOrJjX7WFmtK8zWQpz2UJf13LCFF2ALA7c9OVdvc2vQJeDdjfR35M0sBCxvw== + +"@types/prop-types@*": + version "15.7.3" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7" + integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw== + +"@types/q@^1.5.1": + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8" + integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw== + +"@types/react-dom@^16.9.5": + version "16.9.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.5.tgz#5de610b04a35d07ffd8f44edad93a71032d9aaa7" + integrity sha512-BX6RQ8s9D+2/gDhxrj8OW+YD4R+8hj7FEM/OJHGNR0KipE1h1mSsf39YeyC81qafkq+N3rU3h3RFbLSwE5VqUg== + dependencies: + "@types/react" "*" + +"@types/react-helmet@^5.0.15": + version "5.0.15" + resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-5.0.15.tgz#af0370617307e9f062c6aee0f1f5588224ce646e" + integrity sha512-CCjqvecDJTXRrHG8aTc2YECcQCl26za/q+NaBRvy/wtm0Uh38koM2dpv2bG1xJV4ckz3t1lm2/5KU6nt2s9BWg== + dependencies: + "@types/react" "*" + +"@types/react-native@*": + version "0.62.0" + resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.62.0.tgz#d3e69ea279cd3452616933672dcaa389ca1fb15a" + integrity sha512-EOuX8I9XGeVOl9f9wvSGF97dwi8sOhj6fsXUsvyG3H+QW3FlOIeKwSsFyJF8KrdCOQf6idECtDRK6+AHgWKs+w== + dependencies: + "@types/react" "*" + +"@types/react@*", "@types/react@^16.9.23": + version "16.9.26" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.26.tgz#1e55803e468f5393413e29033538cc9aaed6cec9" + integrity sha512-dGuSM+B0Pq1MKXYUMlUQWeS6Jj9IhSAUf9v8Ikaimj+YhkBcQrihWBkmyEhK/1fzkJTwZQkhZp5YhmWa2CH+Rw== + dependencies: + "@types/prop-types" "*" + csstype "^2.2.0" + +"@types/styled-components@*", "@types/styled-components@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.0.1.tgz#44d210b0a0218a70df998d1a8e1f69c82d9cc68b" + integrity sha512-1yRYO1dAE2MGEuYKF1yQFeMdoyerIQn6ZDnFFkxZamcs3rn8RQVn98edPsTROAxbTz81tqnVN4BJ3Qs1cm/tKg== + dependencies: + "@types/hoist-non-react-statics" "*" + "@types/react" "*" + "@types/react-native" "*" + csstype "^2.2.0" + +"@types/styled-theming@^2.2.2": + version "2.2.2" + resolved "https://registry.yarnpkg.com/@types/styled-theming/-/styled-theming-2.2.2.tgz#e9cd824be4d6bcdb95315c5a86ae3ae0a46ba731" + integrity sha512-O8h8DFtY8IfxIOt2fDZqlqNk3aTbOsvdwU7gaFa4o7OfRRE5bBsehHZMxI1aSawq8AuISQJP4xOoz9P2imx/FQ== + dependencies: + "@types/styled-components" "*" + csstype "^2.2.0" + +"@webassemblyjs/ast@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.8.5.tgz#51b1c5fe6576a34953bf4b253df9f0d490d9e359" + integrity sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ== + dependencies: + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + +"@webassemblyjs/floating-point-hex-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz#1ba926a2923613edce496fd5b02e8ce8a5f49721" + integrity sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ== + +"@webassemblyjs/helper-api-error@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz#c49dad22f645227c5edb610bdb9697f1aab721f7" + integrity sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA== + +"@webassemblyjs/helper-buffer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz#fea93e429863dd5e4338555f42292385a653f204" + integrity sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q== + +"@webassemblyjs/helper-code-frame@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz#9a740ff48e3faa3022b1dff54423df9aa293c25e" + integrity sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ== + dependencies: + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/helper-fsm@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz#ba0b7d3b3f7e4733da6059c9332275d860702452" + integrity sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow== + +"@webassemblyjs/helper-module-context@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz#def4b9927b0101dc8cbbd8d1edb5b7b9c82eb245" + integrity sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g== + dependencies: + "@webassemblyjs/ast" "1.8.5" + mamacro "^0.0.3" + +"@webassemblyjs/helper-wasm-bytecode@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz#537a750eddf5c1e932f3744206551c91c1b93e61" + integrity sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ== + +"@webassemblyjs/helper-wasm-section@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz#74ca6a6bcbe19e50a3b6b462847e69503e6bfcbf" + integrity sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + +"@webassemblyjs/ieee754@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz#712329dbef240f36bf57bd2f7b8fb9bf4154421e" + integrity sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.8.5.tgz#044edeb34ea679f3e04cd4fd9824d5e35767ae10" + integrity sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.8.5.tgz#a8bf3b5d8ffe986c7c1e373ccbdc2a0915f0cedc" + integrity sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw== + +"@webassemblyjs/wasm-edit@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz#962da12aa5acc1c131c81c4232991c82ce56e01a" + integrity sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/helper-wasm-section" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-opt" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + "@webassemblyjs/wast-printer" "1.8.5" + +"@webassemblyjs/wasm-gen@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz#54840766c2c1002eb64ed1abe720aded714f98bc" + integrity sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wasm-opt@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz#b24d9f6ba50394af1349f510afa8ffcb8a63d264" + integrity sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-buffer" "1.8.5" + "@webassemblyjs/wasm-gen" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + +"@webassemblyjs/wasm-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz#21576f0ec88b91427357b8536383668ef7c66b8d" + integrity sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-wasm-bytecode" "1.8.5" + "@webassemblyjs/ieee754" "1.8.5" + "@webassemblyjs/leb128" "1.8.5" + "@webassemblyjs/utf8" "1.8.5" + +"@webassemblyjs/wast-parser@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz#e10eecd542d0e7bd394f6827c49f3df6d4eefb8c" + integrity sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/floating-point-hex-parser" "1.8.5" + "@webassemblyjs/helper-api-error" "1.8.5" + "@webassemblyjs/helper-code-frame" "1.8.5" + "@webassemblyjs/helper-fsm" "1.8.5" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/wast-printer@1.8.5": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz#114bbc481fd10ca0e23b3560fa812748b0bae5bc" + integrity sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/wast-parser" "1.8.5" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +abab@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" + integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== + +acorn-globals@^4.3.0: + version "4.3.4" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" + integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== + dependencies: + acorn "^6.0.1" + acorn-walk "^6.0.1" + +acorn-walk@^6.0.1: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^6.0.1, acorn@^6.0.4, acorn@^6.2.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" + integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== + +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" + integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +alphanum-sort@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" + integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-to-html@^0.6.4: + version "0.6.14" + resolved "https://registry.yarnpkg.com/ansi-to-html/-/ansi-to-html-0.6.14.tgz#65fe6d08bba5dd9db33f44a20aec331e0010dad8" + integrity sha512-7ZslfB1+EnFSDO5Ju+ue5Y6It19DRnZXWv8jrGHgIlPna5Mh4jz7BV5jCbQneXNFurQcKoolaaAjHtgSBfOIuA== + dependencies: + entities "^1.1.2" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +aproba@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" + integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.0.tgz#55c109aaf6e0aefdb3dc4b71240c70bf574b18eb" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" + integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + +axios@^0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-loader@8.0.6: + version "8.0.6" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.0.6.tgz#e33bdb6f362b03f4bb141a0c21ab87c501b70dfb" + integrity sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw== + dependencies: + find-cache-dir "^2.0.0" + loader-utils "^1.0.2" + mkdirp "^0.5.1" + pify "^4.0.1" + +babel-plugin-dynamic-import-node@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" + integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== + dependencies: + object.assign "^4.1.0" + +"babel-plugin-styled-components@>= 1": + version "1.10.7" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz#3494e77914e9989b33cc2d7b3b29527a949d635c" + integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.0.0" + "@babel/helper-module-imports" "^7.0.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-runtime@^6.11.6, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-types@^6.15.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon-walk@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/babylon-walk/-/babylon-walk-1.0.2.tgz#3b15a5ddbb482a78b4ce9c01c8ba181702d9d6ce" + integrity sha1-OxWl3btIKni0zpwByLoYFwLZ1s4= + dependencies: + babel-runtime "^6.11.6" + babel-types "^6.15.0" + lodash.clone "^4.5.0" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^3.5.5: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: + version "4.11.8" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" + integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +boolbase@^1.0.0, boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +brfs@^1.2.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/brfs/-/brfs-1.6.1.tgz#b78ce2336d818e25eea04a0947cba6d4fb8849c3" + integrity sha512-OfZpABRQQf+Xsmju8XE9bDjs+uU4vLREGolP7bDgcpsI17QREyZ4Bl+2KLxxx1kCgA0fAIhKQBaBYh+PEcCqYQ== + dependencies: + quote-stream "^1.0.1" + resolve "^1.1.5" + static-module "^2.2.0" + through2 "^2.0.0" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" + integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= + dependencies: + bn.js "^4.1.1" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.2" + elliptic "^6.0.0" + inherits "^2.0.1" + parse-asn1 "^5.0.0" + +browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@^4.0.0, browserslist@^4.1.0, browserslist@^4.8.3, browserslist@^4.9.1: + version "4.11.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.0.tgz#aef4357b10a8abda00f97aac7cd587b2082ba1ad" + integrity sha512-WqEC7Yr5wUH5sg6ruR++v2SGOQYpyUdYYd4tZoAq1F7y+QXoLoYGXVbxhtaIqWmAJjtNTRjVD3HuJc1OXTel2A== + dependencies: + caniuse-lite "^1.0.30001035" + electron-to-chromium "^1.3.380" + node-releases "^1.1.52" + pkg-up "^3.1.0" + +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.2.tgz#230ead344002988644841ab0244af8c44bbe3ef8" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +cacache@^12.0.2: + version "12.0.4" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" + integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== + dependencies: + bluebird "^3.5.5" + chownr "^1.1.1" + figgy-pudding "^3.5.1" + glob "^7.1.4" + graceful-fs "^4.1.15" + infer-owner "^1.0.3" + lru-cache "^5.1.1" + mississippi "^3.0.0" + mkdirp "^0.5.1" + move-concurrently "^1.0.1" + promise-inflight "^1.0.1" + rimraf "^2.6.3" + ssri "^6.0.1" + unique-filename "^1.1.1" + y18n "^4.0.0" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" + integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= + dependencies: + callsites "^2.0.0" + +caller-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" + integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= + dependencies: + caller-callsite "^2.0.0" + +callsites@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" + integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/camelize/-/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001035: + version "1.0.30001038" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001038.tgz#44da3cbca2ab6cb6aa83d1be5d324e17f141caff" + integrity sha512-zii9quPo96XfOiRD4TrfYGs+QsGZpb2cGiMAzPjtf/hpFgB6zCPZgJb7I1+EATeMw/o+lG8FyRAnI+CWStHcaQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chokidar@^2.1.5, chokidar@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" + integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== + dependencies: + tslib "^1.9.0" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +coa@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" + integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA== + dependencies: + "@types/q" "^1.5.1" + chalk "^2.4.1" + q "^1.1.2" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0, color-convert@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-string@^1.5.2: + version "1.5.3" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc" + integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10" + integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg== + dependencies: + color-convert "^1.9.1" + color-string "^1.5.2" + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.8.tgz#715acefdd1223b9c9b37110a149c6392c2852291" + integrity sha512-PM54PkseWbiiD/mMsbvW351/u+dafwTJ0ye2qB60G1aGQP9j3xK2gmMDc+R34L3nDtx4qMCitXT75mkbkGJDLw== + +commander@^2.11.0, commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.0, concat-stream@~1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +convert-source-map@^1.1.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-concurrently@^1.0.0: + version "1.0.5" + resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" + integrity sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A== + dependencies: + aproba "^1.1.1" + fs-write-stream-atomic "^1.0.8" + iferr "^0.1.5" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.0" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-js-compat@^3.6.2: + version "3.6.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" + integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + dependencies: + browserslist "^4.8.3" + semver "7.0.0" + +core-js@^2.4.0, core-js@^2.6.5: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a" + integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA== + dependencies: + import-fresh "^2.0.0" + is-directory "^0.3.1" + js-yaml "^3.13.1" + parse-json "^4.0.0" + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@6.0.5, cross-spawn@^6.0.0, cross-spawn@^6.0.4: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-color-names@0.0.4, css-color-names@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" + integrity sha1-gIrcLnnPhHOAabZGyyDsJ762KeA= + +css-declaration-sorter@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz#c198940f63a76d7e36c1e71018b001721054cb22" + integrity sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA== + dependencies: + postcss "^7.0.1" + timsort "^0.3.0" + +css-loader@^3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.4.2.tgz#d3fdb3358b43f233b78501c5ed7b1c6da6133202" + integrity sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA== + dependencies: + camelcase "^5.3.1" + cssesc "^3.0.0" + icss-utils "^4.1.1" + loader-utils "^1.2.3" + normalize-path "^3.0.0" + postcss "^7.0.23" + postcss-modules-extract-imports "^2.0.0" + postcss-modules-local-by-default "^3.0.2" + postcss-modules-scope "^2.1.1" + postcss-modules-values "^3.0.0" + postcss-value-parser "^4.0.2" + schema-utils "^2.6.0" + +css-modules-loader-core@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz#5908668294a1becd261ae0a4ce21b0b551f21d16" + integrity sha1-WQhmgpShvs0mGuCkziGwtVHyHRY= + dependencies: + icss-replace-symbols "1.1.0" + postcss "6.0.1" + postcss-modules-extract-imports "1.1.0" + postcss-modules-local-by-default "1.2.0" + postcss-modules-scope "1.1.0" + postcss-modules-values "1.3.0" + +css-select-base-adapter@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7" + integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w== + +css-select@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" + integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== + dependencies: + boolbase "^1.0.0" + css-what "^3.2.1" + domutils "^1.7.0" + nth-check "^1.0.2" + +css-selector-tokenizer@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz#11e5e27c9a48d90284f22d45061c303d7a25ad87" + integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + regexpu-core "^4.6.0" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.0.0.tgz#62dbe678072a824a689bcfee011fc96e02a7d756" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-tree@1.0.0-alpha.37: + version "1.0.0-alpha.37" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22" + integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg== + dependencies: + mdn-data "2.0.4" + source-map "^0.6.1" + +css-tree@1.0.0-alpha.39: + version "1.0.0-alpha.39" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" + integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== + dependencies: + mdn-data "2.0.6" + source-map "^0.6.1" + +css-what@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" + integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz#51ec662ccfca0f88b396dcd9679cdb931be17f76" + integrity sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA== + dependencies: + css-declaration-sorter "^4.0.1" + cssnano-util-raw-cache "^4.0.1" + postcss "^7.0.0" + postcss-calc "^7.0.1" + postcss-colormin "^4.0.3" + postcss-convert-values "^4.0.1" + postcss-discard-comments "^4.0.2" + postcss-discard-duplicates "^4.0.2" + postcss-discard-empty "^4.0.1" + postcss-discard-overridden "^4.0.1" + postcss-merge-longhand "^4.0.11" + postcss-merge-rules "^4.0.3" + postcss-minify-font-values "^4.0.2" + postcss-minify-gradients "^4.0.2" + postcss-minify-params "^4.0.2" + postcss-minify-selectors "^4.0.2" + postcss-normalize-charset "^4.0.1" + postcss-normalize-display-values "^4.0.2" + postcss-normalize-positions "^4.0.2" + postcss-normalize-repeat-style "^4.0.2" + postcss-normalize-string "^4.0.2" + postcss-normalize-timing-functions "^4.0.2" + postcss-normalize-unicode "^4.0.1" + postcss-normalize-url "^4.0.1" + postcss-normalize-whitespace "^4.0.2" + postcss-ordered-values "^4.1.2" + postcss-reduce-initial "^4.0.3" + postcss-reduce-transforms "^4.0.2" + postcss-svgo "^4.0.2" + postcss-unique-selectors "^4.0.1" + +cssnano-util-get-arguments@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz#ed3a08299f21d75741b20f3b81f194ed49cc150f" + integrity sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8= + +cssnano-util-get-match@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz#c0e4ca07f5386bb17ec5e52250b4f5961365156d" + integrity sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0= + +cssnano-util-raw-cache@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz#b26d5fd5f72a11dfe7a7846fb4c67260f96bf282" + integrity sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA== + dependencies: + postcss "^7.0.0" + +cssnano-util-same-parent@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz#574082fb2859d2db433855835d9a8456ea18bbf3" + integrity sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q== + +cssnano@^4.0.0, cssnano@^4.1.10: + version "4.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-4.1.10.tgz#0ac41f0b13d13d465487e111b778d42da631b8b2" + integrity sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ== + dependencies: + cosmiconfig "^5.0.0" + cssnano-preset-default "^4.0.7" + is-resolvable "^1.0.0" + postcss "^7.0.0" + +csso@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.0.3.tgz#0d9985dc852c7cc2b2cacfbbe1079014d1a8e903" + integrity sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ== + dependencies: + css-tree "1.0.0-alpha.39" + +cssom@0.3.x, cssom@^0.3.4: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^1.1.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-1.4.0.tgz#9d31328229d3c565c61e586b02041a28fccdccf1" + integrity sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA== + dependencies: + cssom "0.3.x" + +csstype@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.9.tgz#05141d0cd557a56b8891394c1911c40c8a98d098" + integrity sha512-xz39Sb4+OaTsULgUERcCk+TJj8ylkL4aSVDQiX/ksxbELSqwkgt4d4RD7fovIdgJGSuNYqwZEiVjYY5l0ask+Q== + +cyclist@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" + integrity sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk= + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +data-urls@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" + integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== + dependencies: + abab "^2.0.0" + whatwg-mimetype "^2.2.0" + whatwg-url "^7.0.0" + +deasync@^0.1.14: + version "0.1.19" + resolved "https://registry.yarnpkg.com/deasync/-/deasync-0.1.19.tgz#e7ea89fcc9ad483367e8a48fe78f508ca86286e8" + integrity sha512-oh3MRktfnPlLysCPpBpKZZzb4cUC/p0aA3SyRGp15lN30juJBTo/CiD0d4fR+f1kBtUQoJj1NE9RPNWQ7BQ9Mg== + dependencies: + bindings "^1.5.0" + node-addon-api "^1.7.1" + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domexception@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" + integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== + dependencies: + webidl-conversions "^4.0.2" + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@^1.5.1, domutils@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +dot-prop@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" + integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + dependencies: + is-obj "^2.0.0" + +dotenv-expand@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" + integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== + +dotenv@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-5.0.1.tgz#a5317459bd3d79ab88cff6e44057a6a3fbb1fcef" + integrity sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow== + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + +duplexify@^3.4.2, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-to-chromium@^1.3.380: + version "1.3.388" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.388.tgz#d3be2b7afc42c64c81f204755975b78547775301" + integrity sha512-/FNHDmNmI4IR/qY+uuAVq8OET5S9J7d5QfQUnAz0edkhl02BjtOflF2H0RXKapVtJfMgaFthKBzeYJAzOaW8PA== + +elliptic@^6.0.0: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz#41c7e0bfdfe74ac1ffe1e57ad6a5c6c9f3742a7f" + integrity sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.4.0" + tapable "^1.0.0" + +enhanced-resolve@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz#2937e2b8066cd0fe7ce0990a98f0d71a35189f66" + integrity sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA== + dependencies: + graceful-fs "^4.1.2" + memory-fs "^0.5.0" + tapable "^1.0.0" + +entities@^1.1.1, entities@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" + integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== + +envinfo@^7.3.1: + version "7.5.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.5.0.tgz#91410bb6db262fb4f1409bd506e9ff57e91023f4" + integrity sha512-jDgnJaF/Btomk+m3PZDTTCb5XIIIX3zYItnCRfF73zVgvinLoRomuhi75Y4su0PtQxWz4v66XnLLckyvyJTOIQ== + +errno@^0.1.3, errno@~0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0-next.1, es-abstract@^1.17.2: + version "1.17.5" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" + integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.1.5" + is-regex "^1.0.5" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimleft "^2.1.1" + string.prototype.trimright "^2.1.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.11.0, escodegen@^1.11.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" + integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +escodegen@~1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.9.1.tgz#dbae17ef96c8e4bedb1356f4504fa4cc2f7cb7e2" + integrity sha512-6hTjO1NAWkHnDk3OqQ4YrCuwwmGHL9S3nPlzBOUG/R44rda3wLNrfvQ5fkSGjyhHFKM7ALPKcKGrwvCLe0lC7Q== + dependencies: + esprima "^3.1.3" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +esprima@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" + integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +events@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +falafel@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.2.4.tgz#b5d86c060c2412a43166243cb1bce44d1abd2819" + integrity sha512-0HXjo8XASWRmsS0X1EkhwEMZaD3Qvp7FfURwjLKjG1ghfRm/MGZl2r4cWUTv41KdNghTw4OUMmVtdGQp3+H+uQ== + dependencies: + acorn "^7.1.1" + foreach "^2.0.5" + isarray "^2.0.1" + object-keys "^1.0.6" + +fast-deep-equal@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" + integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + +fast-glob@^2.2.2: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +figgy-pudding@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filesize@^3.6.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" + integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +find-cache-dir@^2.0.0, find-cache-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" + integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== + dependencies: + commondir "^1.0.1" + make-dir "^2.0.0" + pkg-dir "^3.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +findup-sync@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +flush-write-stream@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +from2@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs-write-stream-atomic@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz#b47df53493ef911df75731e70a9ded0189db40c9" + integrity sha1-tH31NJPvkR33VzHnCp3tAYnbQMk= + dependencies: + graceful-fs "^4.1.2" + iferr "^0.1.5" + imurmurhash "^0.1.4" + readable-stream "1 || 2" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.2.7: + version "1.2.12" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" + integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-caller-file@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-port@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.1.3, glob@^7.1.4: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-modules@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2: + version "4.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" + integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + +grapheme-breaker@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/grapheme-breaker/-/grapheme-breaker-0.3.2.tgz#5b9e6b78c3832452d2ba2bb1cb830f96276410ac" + integrity sha1-W55reMODJFLSuiuxy4MPlidkEKw= + dependencies: + brfs "^1.2.0" + unicode-trie "^0.3.1" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" + integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hex-color-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e" + integrity sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.0.0, hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hsl-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsl-regex/-/hsl-regex-1.0.0.tgz#d49330c789ed819e276a4c0d272dffa30b18fe6e" + integrity sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4= + +hsla-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/hsla-regex/-/hsla-regex-1.0.0.tgz#c1ce7a3168c8c6614033a4b5f7877f3b225f9c38" + integrity sha1-wc56MWjIxmFAM6S194d/OyJfnDg= + +html-comment-regex@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7" + integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ== + +html-encoding-sniffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" + integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== + dependencies: + whatwg-encoding "^1.0.1" + +html-tags@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.2.0.tgz#c78de65b5663aa597989dd2b7ab49200d7e4db98" + integrity sha1-x43mW1Zjqll5id0rerSSANfk25g= + +htmlnano@^0.2.2: + version "0.2.5" + resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-0.2.5.tgz#134fd9548c7cbe51c8508ce434a3f9488cff1b0b" + integrity sha512-X1iPSwXG/iF9bVs+/obt2n6F64uH0ETkA8zp7qFDmLW9/+A6ueHGeb/+qD67T21qUY22owZPMdawljN50ajkqA== + dependencies: + cssnano "^4.1.10" + normalize-html-whitespace "^1.0.0" + posthtml "^0.12.0" + posthtml-render "^1.1.5" + purgecss "^1.4.0" + svgo "^1.3.2" + terser "^4.3.9" + uncss "^0.17.2" + +htmlparser2@^3.9.2: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@1.1.0, icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +icss-utils@^4.0.0, icss-utils@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" + integrity sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA== + dependencies: + postcss "^7.0.14" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +iferr@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501" + integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE= + +import-fresh@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" + integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= + dependencies: + caller-path "^2.0.0" + resolve-from "^3.0.0" + +import-local@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" + integrity sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ== + dependencies: + pkg-dir "^3.0.0" + resolve-cwd "^2.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +infer-owner@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4, ini@^1.3.5: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +interpret@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" + integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +is-absolute-url@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6" + integrity sha1-UFMN+4T8yap9vnhS6Do3uTufKqY= + +is-absolute-url@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz#96c6a22b6a23929b11ea0afb1836c36ad4a5d698" + integrity sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab" + integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q== + +is-color-stop@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345" + integrity sha1-z/9HGu5N1cnhWFmPvhKWe1za00U= + dependencies: + css-color-names "^0.0.4" + hex-color-regex "^1.1.0" + hsl-regex "^1.0.0" + hsla-regex "^1.0.0" + rgb-regex "^1.0.1" + rgba-regex "^1.0.0" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-directory@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" + integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-html@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-html/-/is-html-1.1.0.tgz#e04f1c18d39485111396f9a0273eab51af218464" + integrity sha1-4E8cGNOUhRETlvmgJz6rUa8hhGQ= + dependencies: + html-tags "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.5.tgz#39d589a358bf18967f726967120b8fc1aed74eae" + integrity sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ== + dependencies: + has "^1.0.3" + +is-resolvable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-svg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-3.0.0.tgz#9321dbd29c212e5ca99c4fa9794c714bcafa2f75" + integrity sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ== + dependencies: + html-comment-regex "^1.1.0" + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-url@^1.2.2: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" + integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.10.0, js-yaml@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^14.1.0: + version "14.1.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-14.1.0.tgz#916463b6094956b0a6c1782c94e380cd30e1981b" + integrity sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng== + dependencies: + abab "^2.0.0" + acorn "^6.0.4" + acorn-globals "^4.3.0" + array-equal "^1.0.0" + cssom "^0.3.4" + cssstyle "^1.1.1" + data-urls "^1.1.0" + domexception "^1.0.1" + escodegen "^1.11.0" + html-encoding-sniffer "^1.0.2" + nwsapi "^2.1.3" + parse5 "5.1.0" + pn "^1.1.0" + request "^2.88.0" + request-promise-native "^1.0.5" + saxes "^3.1.9" + symbol-tree "^3.2.2" + tough-cookie "^2.5.0" + w3c-hr-time "^1.0.1" + w3c-xmlserializer "^1.1.2" + webidl-conversions "^4.0.2" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^7.0.0" + ws "^6.1.2" + xml-name-validator "^3.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.2.tgz#43ef1f0af9835dd624751a6b7fa48874fb2d608e" + integrity sha512-MoUOQ4WdiN3yxhm7NEVJSJrieAo5hNSLQ5sj05OTRHPL9HOBy8u4Bu88jsC1jvqAdN+E1bJmsUcZH+1HQxliqQ== + dependencies: + minimist "^1.2.5" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +loader-runner@^2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" + integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.0.2, loader-utils@^1.2.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== + dependencies: + chalk "^2.0.1" + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +magic-string@^0.22.4: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== + dependencies: + vlq "^0.2.2" + +make-dir@^2.0.0, make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +mamacro@^0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4" + integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA== + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +mdn-data@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" + integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== + +mdn-data@2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" + integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memory-fs@^0.4.0, memory-fs@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" + integrity sha1-OpoguEYlI+RHz7x+i7gO1me/xVI= + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +memory-fs@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.5.0.tgz#324c01288b88652966d161db77838720845a8e3c" + integrity sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA== + dependencies: + errno "^0.1.3" + readable-stream "^2.0.1" + +merge-source-map@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.0.4.tgz#a5de46538dae84d4114cc5ea02b4772a6346701f" + integrity sha1-pd5GU42uhNQRTMXqArR3KmNGcB8= + dependencies: + source-map "^0.5.6" + +merge2@^1.2.3: + version "1.3.0" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.3.0.tgz#5b366ee83b2f1582c48f87e47cf1a9352103ca81" + integrity sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw== + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.43.0: + version "1.43.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" + integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.26" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" + integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + dependencies: + mime-db "1.43.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mississippi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mississippi/-/mississippi-3.0.0.tgz#ea0a3291f97e0b5e8776b363d5f0a12d94c67022" + integrity sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA== + dependencies: + concat-stream "^1.5.0" + duplexify "^3.4.2" + end-of-stream "^1.1.0" + flush-write-stream "^1.0.0" + from2 "^2.1.0" + parallel-transform "^1.1.0" + pump "^3.0.0" + pumpify "^1.3.3" + stream-each "^1.1.0" + through2 "^2.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp@^0.5.1, mkdirp@~0.5.1: + version "0.5.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" + integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== + dependencies: + minimist "^1.2.5" + +"monaco-editor@npm:@ligolang/monaco-editor@0.18.1": + version "0.18.1" + resolved "https://registry.yarnpkg.com/@ligolang/monaco-editor/-/monaco-editor-0.18.1.tgz#b0e9522d2b5d6daa77448c867538ea46907fa16c" + integrity sha512-1JEjF5w7AbD8zqoak9Bf8RnGqGCU4OgcKn3hFHPhYQ2TrO+Ufv0Co0oU53pyv+QeGwSgEEQf5YhUqyyUAjG8Rg== + +move-concurrently@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" + integrity sha1-viwAX9oy4LKa8fBdfEszIUxwH5I= + dependencies: + aproba "^1.1.1" + copy-concurrently "^1.0.0" + fs-write-stream-atomic "^1.0.8" + mkdirp "^0.5.1" + rimraf "^2.5.4" + run-queue "^1.0.3" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nan@^2.12.1: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +neo-async@^2.5.0, neo-async@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-addon-api@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.1.tgz#cf813cd69bb8d9100f6bdca6755fc268f54ac492" + integrity sha512-2+DuKodWvwRTrCfKOeR24KIc5unKjOh8mz17NCzVnHWfjAdDqbfbjqh7gUT+BkXBRQM52+xCHciKWonJ3CbJMQ== + +node-forge@^0.7.1: + version "0.7.6" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.7.6.tgz#fdf3b418aee1f94f0ef642cd63486c77ca9724ac" + integrity sha512-sol30LUpz1jQFBjOKwbjxijiE3b6pjd74YwfD0fJOKPjF+fONKb2Yg8rYgS6+bK6VDl+/wfr4IYpC7jDzLUIfw== + +node-libs-browser@^2.0.0, node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.2.1.tgz#b64f513d18338625f90346d27b0d235e631f6425" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.52: + version "1.1.52" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.52.tgz#bcffee3e0a758e92e44ecfaecd0a47554b0bcba9" + integrity sha512-snSiT1UypkgGt2wxPqS6ImEUICbNCMb31yaxWrOLXjhlt2z2/IBpaOxzONExqSm4y5oLnAqjjRWu+wsDzK5yNQ== + dependencies: + semver "^6.3.0" + +normalize-html-whitespace@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/normalize-html-whitespace/-/normalize-html-whitespace-1.0.0.tgz#5e3c8e192f1b06c3b9eee4b7e7f28854c7601e34" + integrity sha512-9ui7CGtOOlehQu0t/OhhlmDyc71mKVlv+4vF+me4iZLPrNtRL2xoquEdfZxasC/bdQi/Hr3iTrpyRKIG+ocabA== + +normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +normalize-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +nth-check@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +nwsapi@^2.1.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.7.0.tgz#f4f6bd181ad77f006b5ece60bd0b6f398ff74a67" + integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== + +object-inspect@~1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.4.1.tgz#37ffb10e71adaf3748d05f713b4c9452f402cbc4" + integrity sha512-wqdhLpfCUbEsoEwl3FXwGyv8ief1k/1aUdIPCqVnupM6e8l63BEJdiF/0swtn04/8p05tG/T0FrpTlfwvljOdw== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.0.6, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.getownpropertydescriptors@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" + integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.values@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +opn@^5.1.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/opn/-/opn-5.5.0.tgz#fc7164fab56d235904c51c3b27da6758ca3b9bfc" + integrity sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA== + dependencies: + is-wsl "^1.1.0" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ora@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" + integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA== + dependencies: + chalk "^2.3.1" + cli-cursor "^2.1.0" + cli-spinners "^1.1.0" + log-symbols "^2.2.0" + strip-ansi "^4.0.0" + wcwidth "^1.0.1" + +os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.2.tgz#61279b67721f5287aa1c13a9a7fbbc48c9291b1e" + integrity sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ== + dependencies: + p-try "^2.0.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@^0.2.5: + version "0.2.9" + resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" + integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parallel-transform@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/parallel-transform/-/parallel-transform-1.2.0.tgz#9049ca37d6cb2182c3b1d2c720be94d14a5814fc" + integrity sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg== + dependencies: + cyclist "^1.0.1" + inherits "^2.0.3" + readable-stream "^2.1.5" + +parcel-bundler@^1.12.4: + version "1.12.4" + resolved "https://registry.yarnpkg.com/parcel-bundler/-/parcel-bundler-1.12.4.tgz#31223f4ab4d00323a109fce28d5e46775409a9ee" + integrity sha512-G+iZGGiPEXcRzw0fiRxWYCKxdt/F7l9a0xkiU4XbcVRJCSlBnioWEwJMutOCCpoQmaQtjB4RBHDGIHN85AIhLQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/core" "^7.4.4" + "@babel/generator" "^7.4.4" + "@babel/parser" "^7.4.4" + "@babel/plugin-transform-flow-strip-types" "^7.4.4" + "@babel/plugin-transform-modules-commonjs" "^7.4.4" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/preset-env" "^7.4.4" + "@babel/runtime" "^7.4.4" + "@babel/template" "^7.4.4" + "@babel/traverse" "^7.4.4" + "@babel/types" "^7.4.4" + "@iarna/toml" "^2.2.0" + "@parcel/fs" "^1.11.0" + "@parcel/logger" "^1.11.1" + "@parcel/utils" "^1.11.0" + "@parcel/watcher" "^1.12.1" + "@parcel/workers" "^1.11.0" + ansi-to-html "^0.6.4" + babylon-walk "^1.0.2" + browserslist "^4.1.0" + chalk "^2.1.0" + clone "^2.1.1" + command-exists "^1.2.6" + commander "^2.11.0" + core-js "^2.6.5" + cross-spawn "^6.0.4" + css-modules-loader-core "^1.1.0" + cssnano "^4.0.0" + deasync "^0.1.14" + dotenv "^5.0.0" + dotenv-expand "^5.1.0" + envinfo "^7.3.1" + fast-glob "^2.2.2" + filesize "^3.6.0" + get-port "^3.2.0" + htmlnano "^0.2.2" + is-glob "^4.0.0" + is-url "^1.2.2" + js-yaml "^3.10.0" + json5 "^1.0.1" + micromatch "^3.0.4" + mkdirp "^0.5.1" + node-forge "^0.7.1" + node-libs-browser "^2.0.0" + opn "^5.1.0" + postcss "^7.0.11" + postcss-value-parser "^3.3.1" + posthtml "^0.11.2" + posthtml-parser "^0.4.0" + posthtml-render "^1.1.3" + resolve "^1.4.0" + semver "^5.4.1" + serialize-to-js "^3.0.0" + serve-static "^1.12.4" + source-map "0.6.1" + terser "^3.7.3" + v8-compile-cache "^2.0.0" + ws "^5.1.1" + +parse-asn1@^5.0.0: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parse5@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" + integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path@^0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= + dependencies: + process "^0.11.1" + util "^0.10.3" + +pbkdf2@^3.0.3: + version "3.0.17" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" + integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +physical-cpu-count@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/physical-cpu-count/-/physical-cpu-count-2.0.0.tgz#18de2f97e4bf7a9551ad7511942b5496f7aba660" + integrity sha1-GN4vl+S/epVRrXURlCtUlverpmA= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-dir@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" + integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== + dependencies: + find-up "^3.0.0" + +pkg-up@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" + integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== + dependencies: + find-up "^3.0.0" + +pn@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" + integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-calc@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.2.tgz#504efcd008ca0273120568b0792b16cdcde8aac1" + integrity sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ== + dependencies: + postcss "^7.0.27" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.2" + +postcss-colormin@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-4.0.3.tgz#ae060bce93ed794ac71264f08132d550956bd381" + integrity sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw== + dependencies: + browserslist "^4.0.0" + color "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-convert-values@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz#ca3813ed4da0f812f9d43703584e449ebe189a7f" + integrity sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-discard-comments@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz#1fbabd2c246bff6aaad7997b2b0918f4d7af4033" + integrity sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg== + dependencies: + postcss "^7.0.0" + +postcss-discard-duplicates@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz#3fe133cd3c82282e550fc9b239176a9207b784eb" + integrity sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ== + dependencies: + postcss "^7.0.0" + +postcss-discard-empty@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz#c8c951e9f73ed9428019458444a02ad90bb9f765" + integrity sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w== + dependencies: + postcss "^7.0.0" + +postcss-discard-overridden@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz#652aef8a96726f029f5e3e00146ee7a4e755ff57" + integrity sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg== + dependencies: + postcss "^7.0.0" + +postcss-merge-longhand@^4.0.11: + version "4.0.11" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24" + integrity sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw== + dependencies: + css-color-names "0.0.4" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + stylehacks "^4.0.0" + +postcss-merge-rules@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz#362bea4ff5a1f98e4075a713c6cb25aefef9a650" + integrity sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + cssnano-util-same-parent "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + vendors "^1.0.0" + +postcss-minify-font-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz#cd4c344cce474343fac5d82206ab2cbcb8afd5a6" + integrity sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-gradients@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz#93b29c2ff5099c535eecda56c4aa6e665a663471" + integrity sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + is-color-stop "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-minify-params@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz#6b9cef030c11e35261f95f618c90036d680db874" + integrity sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg== + dependencies: + alphanum-sort "^1.0.0" + browserslist "^4.0.0" + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + uniqs "^2.0.0" + +postcss-minify-selectors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz#e2e5eb40bfee500d0cd9243500f5f8ea4262fbd8" + integrity sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g== + dependencies: + alphanum-sort "^1.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +postcss-modules-extract-imports@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz#b614c9720be6816eaee35fb3a5faa1dba6a05ddb" + integrity sha1-thTJcgvmgW6u41+zpfqh26agXds= + dependencies: + postcss "^6.0.1" + +postcss-modules-extract-imports@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz#818719a1ae1da325f9832446b01136eeb493cd7e" + integrity sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ== + dependencies: + postcss "^7.0.5" + +postcss-modules-local-by-default@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-local-by-default@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz#e8a6561be914aaf3c052876377524ca90dbb7915" + integrity sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ== + dependencies: + icss-utils "^4.1.1" + postcss "^7.0.16" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.0.0" + +postcss-modules-scope@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz#385cae013cc7743f5a7d7602d1073a89eaae62ee" + integrity sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ== + dependencies: + postcss "^7.0.6" + postcss-selector-parser "^6.0.0" + +postcss-modules-values@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz#ecffa9d7e192518389f42ad0e83f72aec456ea20" + integrity sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA= + dependencies: + icss-replace-symbols "^1.1.0" + postcss "^6.0.1" + +postcss-modules-values@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz#5b5000d6ebae29b4255301b4a3a54574423e7f10" + integrity sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg== + dependencies: + icss-utils "^4.0.0" + postcss "^7.0.6" + +postcss-normalize-charset@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz#8b35add3aee83a136b0471e0d59be58a50285dd4" + integrity sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g== + dependencies: + postcss "^7.0.0" + +postcss-normalize-display-values@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz#0dbe04a4ce9063d4667ed2be476bb830c825935a" + integrity sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-positions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz#05f757f84f260437378368a91f8932d4b102917f" + integrity sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA== + dependencies: + cssnano-util-get-arguments "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-repeat-style@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz#c4ebbc289f3991a028d44751cbdd11918b17910c" + integrity sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q== + dependencies: + cssnano-util-get-arguments "^4.0.0" + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-string@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz#cd44c40ab07a0c7a36dc5e99aace1eca4ec2690c" + integrity sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA== + dependencies: + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-timing-functions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz#8e009ca2a3949cdaf8ad23e6b6ab99cb5e7d28d9" + integrity sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A== + dependencies: + cssnano-util-get-match "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-unicode@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz#841bd48fdcf3019ad4baa7493a3d363b52ae1cfb" + integrity sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-url@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz#10e437f86bc7c7e58f7b9652ed878daaa95faae1" + integrity sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA== + dependencies: + is-absolute-url "^2.0.0" + normalize-url "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-normalize-whitespace@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz#bf1d4070fe4fcea87d1348e825d8cc0c5faa7d82" + integrity sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA== + dependencies: + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-ordered-values@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz#0cf75c820ec7d5c4d280189559e0b571ebac0eee" + integrity sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw== + dependencies: + cssnano-util-get-arguments "^4.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-reduce-initial@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz#7fd42ebea5e9c814609639e2c2e84ae270ba48df" + integrity sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA== + dependencies: + browserslist "^4.0.0" + caniuse-api "^3.0.0" + has "^1.0.0" + postcss "^7.0.0" + +postcss-reduce-transforms@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz#17efa405eacc6e07be3414a5ca2d1074681d4e29" + integrity sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg== + dependencies: + cssnano-util-get-match "^4.0.0" + has "^1.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + +postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz#b310f5c4c0fdaf76f94902bbaa30db6aa84f5270" + integrity sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA== + dependencies: + dot-prop "^5.2.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-svgo@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-4.0.2.tgz#17b997bc711b333bab143aaed3b8d3d6e3d38258" + integrity sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw== + dependencies: + is-svg "^3.0.0" + postcss "^7.0.0" + postcss-value-parser "^3.0.0" + svgo "^1.0.0" + +postcss-unique-selectors@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" + integrity sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg== + dependencies: + alphanum-sort "^1.0.0" + postcss "^7.0.0" + uniqs "^2.0.0" + +postcss-value-parser@^3.0.0, postcss-value-parser@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz#9ff822547e2893213cf1c30efa51ac5fd1ba8281" + integrity sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ== + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2: + version "4.0.3" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" + integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + +postcss@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.1.tgz#000dbd1f8eef217aa368b9a212c5fc40b2a8f3f2" + integrity sha1-AA29H47vIXqjaLmiEsX8QLKo8/I= + dependencies: + chalk "^1.1.3" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.11, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.23, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: + version "7.0.27" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" + integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +posthtml-parser@^0.4.0, posthtml-parser@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.4.2.tgz#a132bbdf0cd4bc199d34f322f5c1599385d7c6c1" + integrity sha512-BUIorsYJTvS9UhXxPTzupIztOMVNPa/HtAm9KHni9z6qEfiJ1bpOBL5DfUOL9XAc3XkLIEzBzpph+Zbm4AdRAg== + dependencies: + htmlparser2 "^3.9.2" + +posthtml-render@^1.1.3, posthtml-render@^1.1.5: + version "1.2.0" + resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-1.2.0.tgz#3df0c800a8bbb95af583a94748520469477addf4" + integrity sha512-dQB+hoAKDtnI94RZm/wxBUH9My8OJcXd0uhWmGh2c7tVtQ85A+OS3yCN3LNbFtPz3bViwBJXAeoi+CBGMXM0DA== + +posthtml@^0.11.2: + version "0.11.6" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.11.6.tgz#e349d51af7929d0683b9d8c3abd8166beecc90a8" + integrity sha512-C2hrAPzmRdpuL3iH0TDdQ6XCc9M7Dcc3zEW5BLerY65G4tWWszwv6nG/ksi6ul5i2mx22ubdljgktXCtNkydkw== + dependencies: + posthtml-parser "^0.4.1" + posthtml-render "^1.1.5" + +posthtml@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.12.0.tgz#6e2a2fcd774eaed1a419a95c5cc3a92b676a40a6" + integrity sha512-aNUEP/SfKUXAt+ghG51LC5MmafChBZeslVe/SSdfKIgLGUVRE68mrMF4V8XbH07ZifM91tCSuxY3eHIFLlecQw== + dependencies: + posthtml-parser "^0.4.1" + posthtml-render "^1.1.5" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.1, process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +prop-types@^15.5.4, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.3: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +purgecss@^1.4.0: + version "1.4.2" + resolved "https://registry.yarnpkg.com/purgecss/-/purgecss-1.4.2.tgz#67ab50cb4f5c163fcefde56002467c974e577f41" + integrity sha512-hkOreFTgiyMHMmC2BxzdIw5DuC6kxAbP/gGOGd3MEsF3+5m69rIvUEPaxrnoUtfODTFKe9hcXjGwC6jcjoyhOw== + dependencies: + glob "^7.1.3" + postcss "^7.0.14" + postcss-selector-parser "^6.0.0" + yargs "^14.0.0" + +q@^1.1.2: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +quote-stream@^1.0.1, quote-stream@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/quote-stream/-/quote-stream-1.0.2.tgz#84963f8c9c26b942e153feeb53aae74652b7e0b2" + integrity sha1-hJY/jJwmuULhU/7rU6rnRlK34LI= + dependencies: + buffer-equal "0.0.1" + minimist "^1.1.3" + through2 "^2.0.0" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +react-dom@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f" + integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + scheduler "^0.19.1" + +react-fast-compare@^2.0.2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9" + integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw== + +react-helmet@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/react-helmet/-/react-helmet-5.2.1.tgz#16a7192fdd09951f8e0fe22ffccbf9bb3e591ffa" + integrity sha512-CnwD822LU8NDBnjCpZ4ySh8L6HYyngViTZLfBBb3NjtrpN8m49clH8hidHouq20I51Y6TpCTISCBbqiY5GamwA== + dependencies: + object-assign "^4.1.1" + prop-types "^15.5.4" + react-fast-compare "^2.0.2" + react-side-effect "^1.1.0" + +react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-side-effect@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-1.2.0.tgz#0e940c78faba0c73b9b0eba9cd3dda8dfb7e7dae" + integrity sha512-v1ht1aHg5k/thv56DRcjw+WtojuuDHFUgGfc+bFHOWsF4ZK6C2V57DO0Or0GPsg6+LSTE0M6Ry/gfzhzSwbc5w== + dependencies: + shallowequal "^1.0.1" + +react@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e" + integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + prop-types "^15.6.2" + +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" + integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexpu-core@^4.6.0, regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" + integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +remove-trailing-separator@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request-promise-core@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" + integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== + dependencies: + lodash "^4.17.15" + +request-promise-native@^1.0.5: + version "1.0.8" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" + integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== + dependencies: + request-promise-core "1.1.3" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.88.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + integrity sha1-AKn3OHVW4nA46uIyyqNypqWbZlo= + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0: + version "1.15.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" + integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rgb-regex@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" + integrity sha1-wODWiC3w4jviVKR16O3UGRX+rrE= + +rgba-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" + integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= + +rimraf@^2.5.4, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +run-queue@^1.0.0, run-queue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/run-queue/-/run-queue-1.0.3.tgz#e848396f057d223f24386924618e25694161ec47" + integrity sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec= + dependencies: + aproba "^1.1.1" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +saxes@^3.1.9: + version "3.1.11" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" + integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== + dependencies: + xmlchars "^2.1.1" + +scheduler@^0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" + integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== + dependencies: + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" + +schema-utils@^2.6.0, schema-utils@^2.6.4: + version "2.6.5" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" + integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== + dependencies: + ajv "^6.12.0" + ajv-keywords "^3.4.1" + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^5.4.1, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +serialize-to-js@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/serialize-to-js/-/serialize-to-js-3.1.1.tgz#b3e77d0568ee4a60bfe66287f991e104d3a1a4ac" + integrity sha512-F+NGU0UHMBO4Q965tjw7rvieNVjlH6Lqi2emq/Lc9LUURYJbiCzmpi4Cy1OOjjVPtxu0c+NE85LU6968Wko5ZA== + +serve-static@^1.12.4: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallow-copy@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170" + integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA= + +shallowequal@^1.0.1, shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/shallowequal/-/shallowequal-1.1.0.tgz#188d521de95b9087404fd4dcb68b13df0ae4e7f8" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo= + dependencies: + is-arrayish "^0.3.1" + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +source-list-map@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" + integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.10, source-map-support@~0.5.12: + version "0.5.16" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" + integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.5.0, source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +ssri@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-6.0.1.tgz#2a3c41b28dd45b62b63676ecb74001265ae9edd8" + integrity sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA== + dependencies: + figgy-pudding "^3.5.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +static-eval@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/static-eval/-/static-eval-2.0.5.tgz#f0782e66999c4b3651cda99d9ce59c507d188f71" + integrity sha512-nNbV6LbGtMBgv7e9LFkt5JV8RVlRsyJrphfAt9tOtBBW/SfnzZDf2KnS72an8e434A+9e/BmJuTxeGPvrAK7KA== + dependencies: + escodegen "^1.11.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +static-module@^2.2.0: + version "2.2.5" + resolved "https://registry.yarnpkg.com/static-module/-/static-module-2.2.5.tgz#bd40abceae33da6b7afb84a0e4329ff8852bfbbf" + integrity sha512-D8vv82E/Kpmz3TXHKG8PPsCPg+RAX6cbCOyvjM6x04qZtQ47EtJFVwRsdov3n5d6/6ynrOY9XB4JkaZwB2xoRQ== + dependencies: + concat-stream "~1.6.0" + convert-source-map "^1.5.1" + duplexer2 "~0.1.4" + escodegen "~1.9.0" + falafel "^2.1.0" + has "^1.0.1" + magic-string "^0.22.4" + merge-source-map "1.0.4" + object-inspect "~1.4.0" + quote-stream "~1.0.2" + readable-stream "~2.3.3" + shallow-copy "~0.0.1" + static-eval "^2.0.0" + through2 "~2.0.3" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-each@^1.1.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/stream-each/-/stream-each-1.2.3.tgz#ebe27a0c389b04fbcc233642952e10731afa9bae" + integrity sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw== + dependencies: + end-of-stream "^1.1.0" + stream-shift "^1.0.0" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string.prototype.trimleft@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz#9bdb8ac6abd6d602b17a4ed321870d2f8dcefc74" + integrity sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string.prototype.trimright@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz#440314b15996c866ce8a0341894d45186200c5d9" + integrity sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g== + dependencies: + define-properties "^1.1.3" + function-bind "^1.1.1" + +string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +style-loader@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" + integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== + dependencies: + loader-utils "^1.2.3" + schema-utils "^2.6.4" + +styled-components@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.0.1.tgz#57782a6471031abefb2db5820a1876ae853bc619" + integrity sha512-E0xKTRIjTs4DyvC1MHu/EcCXIj6+ENCP8hP01koyoADF++WdBUOrSGwU1scJRw7/YaYOhDvvoad6VlMG+0j53A== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + "@babel/traverse" "^7.4.5" + "@emotion/is-prop-valid" "^0.8.3" + "@emotion/stylis" "^0.8.4" + "@emotion/unitless" "^0.7.4" + babel-plugin-styled-components ">= 1" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" + +styled-theming@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/styled-theming/-/styled-theming-2.2.0.tgz#3084e43d40eaab4bc11ebafd3de04e3622fee37e" + integrity sha1-MITkPUDqq0vBHrr9PeBONiL+434= + +stylehacks@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-4.0.3.tgz#6718fcaf4d1e07d8a1318690881e8d96726a71d5" + integrity sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g== + dependencies: + browserslist "^4.0.0" + postcss "^7.0.0" + postcss-selector-parser "^3.0.0" + +supports-color@6.1.0, supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +svgo@^1.0.0, svgo@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167" + integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw== + dependencies: + chalk "^2.4.1" + coa "^2.0.2" + css-select "^2.0.0" + css-select-base-adapter "^0.1.1" + css-tree "1.0.0-alpha.37" + csso "^4.0.2" + js-yaml "^3.13.1" + mkdirp "~0.5.1" + object.values "^1.1.0" + sax "~1.2.4" + stable "^0.1.8" + unquote "~1.1.1" + util.promisify "~1.0.0" + +symbol-tree@^3.2.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tapable@^1.0.0, tapable@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" + integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== + +terser-webpack-plugin@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-1.4.3.tgz#5ecaf2dbdc5fb99745fd06791f46fc9ddb1c9a7c" + integrity sha512-QMxecFz/gHQwteWwSo5nTc6UaICqN1bMedC5sMtUc7y3Ha3Q8y6ZO0iCR8pq4RJC8Hjf0FEPEHZqcMB/+DFCrA== + dependencies: + cacache "^12.0.2" + find-cache-dir "^2.1.0" + is-wsl "^1.1.0" + schema-utils "^1.0.0" + serialize-javascript "^2.1.2" + source-map "^0.6.1" + terser "^4.1.2" + webpack-sources "^1.4.0" + worker-farm "^1.7.0" + +terser@^3.7.3: + version "3.17.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-3.17.0.tgz#f88ffbeda0deb5637f9d24b0da66f4e15ab10cb2" + integrity sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ== + dependencies: + commander "^2.19.0" + source-map "~0.6.1" + source-map-support "~0.5.10" + +terser@^4.1.2, terser@^4.3.9: + version "4.6.7" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.7.tgz#478d7f9394ec1907f0e488c5f6a6a9a2bad55e72" + integrity sha512-fmr7M1f7DBly5cX2+rFDvmGBAaaZyPrHYK4mMdHEDAdNTqXSZgSOfqsfGq2HqPGT/1V0foZZuCZFx8CHKgAk3g== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +through2@^2.0.0, through2@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +timers-browserify@^2.0.4: + version "2.0.11" + resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.11.tgz#800b1f3eee272e5bc53ee465a04d0e804c31211f" + integrity sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ== + dependencies: + setimmediate "^1.0.4" + +timsort@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + +tiny-inflate@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tough-cookie@^2.3.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +tslib@^1.9.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061" + integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w== + +uncss@^0.17.2: + version "0.17.3" + resolved "https://registry.yarnpkg.com/uncss/-/uncss-0.17.3.tgz#50fc1eb4ed573ffff763458d801cd86e4d69ea11" + integrity sha512-ksdDWl81YWvF/X14fOSw4iu8tESDHFIeyKIeDrK6GEVTQvqJc1WlOEXqostNwOCi3qAj++4EaLsdAgPmUbEyog== + dependencies: + commander "^2.20.0" + glob "^7.1.4" + is-absolute-url "^3.0.1" + is-html "^1.1.0" + jsdom "^14.1.0" + lodash "^4.17.15" + postcss "^7.0.17" + postcss-selector-parser "6.0.2" + request "^2.88.0" + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +unicode-trie@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085" + integrity sha1-1nHd3YkQGgi6w3tqUWEBBgIFIIU= + dependencies: + pako "^0.2.5" + tiny-inflate "^1.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uniqs@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" + integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unquote@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544" + integrity sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util.promisify@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" + integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.2" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.0" + +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= + dependencies: + inherits "2.0.1" + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== + dependencies: + inherits "2.0.3" + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz#00f7494d2ae2b688cfe2899df6ed2c54bef91dbe" + integrity sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w== + +v8-compile-cache@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" + integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== + +vendors@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.4.tgz#e2b800a53e7a29b93506c3cf41100d16c4c4ad8e" + integrity sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + +vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +w3c-hr-time@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" + integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== + dependencies: + domexception "^1.0.1" + webidl-conversions "^4.0.2" + xml-name-validator "^3.0.0" + +watchpack@^1.6.0: + version "1.6.1" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" + integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== + dependencies: + chokidar "^2.1.8" + graceful-fs "^4.1.2" + neo-async "^2.5.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +webpack-cli@^3.3.11: + version "3.3.11" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-3.3.11.tgz#3bf21889bf597b5d82c38f215135a411edfdc631" + integrity sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g== + dependencies: + chalk "2.4.2" + cross-spawn "6.0.5" + enhanced-resolve "4.1.0" + findup-sync "3.0.0" + global-modules "2.0.0" + import-local "2.0.0" + interpret "1.2.0" + loader-utils "1.2.3" + supports-color "6.1.0" + v8-compile-cache "2.0.3" + yargs "13.2.4" + +webpack-node-externals@^1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/webpack-node-externals/-/webpack-node-externals-1.7.2.tgz#6e1ee79ac67c070402ba700ef033a9b8d52ac4e3" + integrity sha512-ajerHZ+BJKeCLviLUUmnyd5B4RavLF76uv3cs6KNuO8W+HuQaEs0y0L7o40NQxdPy5w0pcv8Ew7yPUAQG0UdCg== + +webpack-sources@^1.4.0, webpack-sources@^1.4.1: + version "1.4.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933" + integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ== + dependencies: + source-list-map "^2.0.0" + source-map "~0.6.1" + +webpack@4.41.5: + version "4.41.5" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-4.41.5.tgz#3210f1886bce5310e62bb97204d18c263341b77c" + integrity sha512-wp0Co4vpyumnp3KlkmpM5LWuzvZYayDwM2n17EHFr4qxBBbRokC7DJawPJC7TfSFZ9HZ6GsdH40EBj4UV0nmpw== + dependencies: + "@webassemblyjs/ast" "1.8.5" + "@webassemblyjs/helper-module-context" "1.8.5" + "@webassemblyjs/wasm-edit" "1.8.5" + "@webassemblyjs/wasm-parser" "1.8.5" + acorn "^6.2.1" + ajv "^6.10.2" + ajv-keywords "^3.4.1" + chrome-trace-event "^1.0.2" + enhanced-resolve "^4.1.0" + eslint-scope "^4.0.3" + json-parse-better-errors "^1.0.2" + loader-runner "^2.4.0" + loader-utils "^1.2.3" + memory-fs "^0.4.1" + micromatch "^3.1.10" + mkdirp "^0.5.1" + neo-async "^2.6.1" + node-libs-browser "^2.2.1" + schema-utils "^1.0.0" + tapable "^1.1.3" + terser-webpack-plugin "^1.4.3" + watchpack "^1.6.0" + webpack-sources "^1.4.1" + +whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.14, which@^1.2.9, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +worker-farm@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/worker-farm/-/worker-farm-1.7.0.tgz#26a94c5391bbca926152002f69b84a4bf772e5a8" + integrity sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw== + dependencies: + errno "~0.1.7" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^5.1.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.2.tgz#dffef14866b8e8dc9133582514d1befaf96e980f" + integrity sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA== + dependencies: + async-limiter "~1.0.0" + +ws@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" + integrity sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA== + dependencies: + async-limiter "~1.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xtend@^4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" + integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yaml@^1.9.2: + version "1.9.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.9.2.tgz#f0cfa865f003ab707663e4f04b3956957ea564ed" + integrity sha512-HPT7cGGI0DuRcsO51qC1j9O16Dh1mZ2bnXwsi0jrSpsLz0WxOLSLXfkABVl6bZO629py3CU+OMJtpNHDLB97kg== + dependencies: + "@babel/runtime" "^7.9.2" + +yargs-parser@^13.1.0: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" + integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs@13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" + +yargs@^14.0.0: + version "14.2.3" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" + integrity sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg== + dependencies: + cliui "^5.0.0" + decamelize "^1.2.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^15.0.1" From 582dacf5d55dba8be3b845bb95627c677e671716 Mon Sep 17 00:00:00 2001 From: Edmond Lee Date: Tue, 9 Jun 2020 16:33:19 -0700 Subject: [PATCH 64/67] add @babel/plugin-transform-runtime to ligo-snippets --- tools/ligo-snippets/.babelrc | 2 +- tools/ligo-snippets/package-lock.json | 26 ++++++++++++++++++++++++-- tools/ligo-snippets/package.json | 3 ++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/tools/ligo-snippets/.babelrc b/tools/ligo-snippets/.babelrc index 40a90b458..3495931f8 100644 --- a/tools/ligo-snippets/.babelrc +++ b/tools/ligo-snippets/.babelrc @@ -4,5 +4,5 @@ "@babel/preset-env", "@babel/preset-typescript" ], - "plugins": ["@babel/plugin-transform-react-jsx"] + "plugins": ["@babel/plugin-transform-react-jsx", "@babel/plugin-transform-runtime"] } diff --git a/tools/ligo-snippets/package-lock.json b/tools/ligo-snippets/package-lock.json index 4dda6e783..d2bfdd86c 100644 --- a/tools/ligo-snippets/package-lock.json +++ b/tools/ligo-snippets/package-lock.json @@ -1,6 +1,6 @@ { - "name": "ligosnippetz", - "version": "1.0.0", + "name": "@ligolang/ligo-snippets", + "version": "1.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -919,6 +919,18 @@ "@babel/helper-plugin-utils": "^7.10.1" } }, + "@babel/plugin-transform-runtime": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.1.tgz", + "integrity": "sha512-4w2tcglDVEwXJ5qxsY++DgWQdNJcCCsPxfT34wCUwIf2E7dI7pMpH8JczkMBbgBTNzBX62SZlNJ9H+De6Zebaw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "resolve": "^1.8.1", + "semver": "^5.5.1" + } + }, "@babel/plugin-transform-shorthand-properties": { "version": "7.10.1", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", @@ -5046,6 +5058,11 @@ "type-check": "~0.3.2" } }, + "ligo-snippets-css": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/ligo-snippets-css/-/ligo-snippets-css-0.0.1.tgz", + "integrity": "sha512-8qZ3TO198MX03HJw5YzTe5am63hacUtYzZEt2DlLtLP22Iri2UvLnckVXisZEVt0w18kM6aDhtMarAz127/z4g==" + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -6695,6 +6712,11 @@ "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, + "prism-react-renderer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-1.1.1.tgz", + "integrity": "sha512-MgMhSdHuHymNRqD6KM3eGS0PNqgK9q4QF5P0yoQQvpB6jNjeSAi3jcSAz0Sua/t9fa4xDOMar9HJbLa08gl9ug==" + }, "prismjs": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.20.0.tgz", diff --git a/tools/ligo-snippets/package.json b/tools/ligo-snippets/package.json index 13b074800..99fbc34c3 100644 --- a/tools/ligo-snippets/package.json +++ b/tools/ligo-snippets/package.json @@ -1,6 +1,6 @@ { "name": "@ligolang/ligo-snippets", - "version": "1.0.0", + "version": "1.0.1", "main": "./lib/index.js", "scripts": { "build": "webpack" @@ -17,6 +17,7 @@ "@babel/cli": "^7.8.4", "@babel/core": "^7.8.7", "@babel/plugin-transform-react-jsx": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.10.1", "@babel/preset-env": "^7.8.7", "@babel/preset-react": "^7.8.3", "@babel/preset-typescript": "^7.8.3", From eb2facfc11d553dd8f216701980096d526cc65da Mon Sep 17 00:00:00 2001 From: Edmond Lee Date: Tue, 9 Jun 2020 17:33:50 -0700 Subject: [PATCH 65/67] update to use @ligolang/ligo-snippets@1.0.1 --- gitlab-pages/website/package-lock.json | 6 +++--- gitlab-pages/website/package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gitlab-pages/website/package-lock.json b/gitlab-pages/website/package-lock.json index 879ba3827..e9f32f8ce 100644 --- a/gitlab-pages/website/package-lock.json +++ b/gitlab-pages/website/package-lock.json @@ -1536,9 +1536,9 @@ "version": "file:src/@ligo/syntax" }, "@ligolang/ligo-snippets": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@ligolang/ligo-snippets/-/ligo-snippets-1.0.0.tgz", - "integrity": "sha512-2RCf7G+4sMF+O9I3ArJtVPJ5Eub2pdzGwBN13ANha/7v/Fnll4YnSXQBnsi922EmVouQi1Tqw3TP2E7mSoKlBA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@ligolang/ligo-snippets/-/ligo-snippets-1.0.1.tgz", + "integrity": "sha512-JJa69veCkdwOS+u7iUngRNHFlXBJ+3Wx5l+EfrQyhBXMGzH4Ii4onZPxghDQEiL6RzqRbhCIsOE+A8OX7NCYMA==", "requires": { "@types/prismjs": "^1.16.1", "axios": "^0.19.2", diff --git a/gitlab-pages/website/package.json b/gitlab-pages/website/package.json index 3109c6327..bb1eceb68 100644 --- a/gitlab-pages/website/package.json +++ b/gitlab-pages/website/package.json @@ -30,7 +30,7 @@ "dependencies": { "@docusaurus/plugin-sitemap": "^2.0.0-alpha.56", "@ligo/syntax": "file:src/@ligo/syntax", - "@ligolang/ligo-snippets": "^1.0.0", + "@ligolang/ligo-snippets": "^1.0.1", "axios": "^0.19.2", "react-codejar": "^1.0.1", "yaml": "^1.10.0" From a0d2eb733d61de8e95ccef5b7e0d343d912918fb Mon Sep 17 00:00:00 2001 From: Sander Spies Date: Wed, 10 Jun 2020 09:20:19 +0200 Subject: [PATCH 66/67] Remove ghost selection on tabs. --- gitlab-pages/website/static/css/custom.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gitlab-pages/website/static/css/custom.css b/gitlab-pages/website/static/css/custom.css index 98a487597..77da5a42a 100644 --- a/gitlab-pages/website/static/css/custom.css +++ b/gitlab-pages/website/static/css/custom.css @@ -242,6 +242,10 @@ p { border-top: none; } +.tabs .tabs__item { + outline: 0; +} + .tabs .nav-tabs > div { font-size: 1em; font-weight: normal; From c57f499feaa9561f4e11579c2900dd8a2a3e685a Mon Sep 17 00:00:00 2001 From: Christian Rinderknecht Date: Wed, 10 Jun 2020 16:58:59 +0200 Subject: [PATCH 67/67] Final touches to the pretty printers. Fixed the syntaxes for field_assignment and field_path_assignment. --- src/passes/01-parser/cameligo/.links | 2 - src/passes/01-parser/cameligo/AST.ml | 6 +- src/passes/01-parser/cameligo/Parser.mly | 26 +- src/passes/01-parser/cameligo/ParserLog.ml | 12 +- src/passes/01-parser/cameligo/ParserMain.ml | 2 +- src/passes/01-parser/cameligo/Pretty.ml | 12 +- .../cameligo/error.messages.checked-in | 111 +- src/passes/01-parser/pascaligo/.links | 2 - src/passes/01-parser/pascaligo/AST.ml | 10 +- src/passes/01-parser/pascaligo/Parser.mly | 14 +- src/passes/01-parser/pascaligo/ParserLog.ml | 32 +- src/passes/01-parser/pascaligo/ParserMain.ml | 2 +- src/passes/01-parser/pascaligo/Pretty.ml | 6 +- .../pascaligo/error.messages.checked-in | 1296 +++++++-------- src/passes/01-parser/reasonligo/.links | 3 - src/passes/01-parser/reasonligo/Parser.mly | 62 +- src/passes/01-parser/reasonligo/ParserMain.ml | 4 +- src/passes/01-parser/reasonligo/Pretty.ml | 61 +- .../reasonligo/error.messages.checked-in | 1423 ++++++++--------- .../02-concrete_to_imperative/cameligo.ml | 58 +- .../02-concrete_to_imperative/pascaligo.ml | 138 +- 21 files changed, 1601 insertions(+), 1681 deletions(-) diff --git a/src/passes/01-parser/cameligo/.links b/src/passes/01-parser/cameligo/.links index fc8466c8e..8dcc06146 100644 --- a/src/passes/01-parser/cameligo/.links +++ b/src/passes/01-parser/cameligo/.links @@ -19,5 +19,3 @@ $HOME/git/OCaml-build/Makefile ../shared/LexerUnit.ml ../shared/ParserUnit.mli ../shared/ParserUnit.ml - -$HOME/git/ligo/_build/default/src/passes/1-parser/cameligo/ParErr.ml \ No newline at end of file diff --git a/src/passes/01-parser/cameligo/AST.ml b/src/passes/01-parser/cameligo/AST.ml index 6b80d434c..db425d540 100644 --- a/src/passes/01-parser/cameligo/AST.ml +++ b/src/passes/01-parser/cameligo/AST.ml @@ -344,12 +344,12 @@ and update = { lbrace : lbrace; record : path; kwd_with : kwd_with; - updates : field_path_assign reg ne_injection reg; + updates : field_path_assignment reg ne_injection reg; rbrace : rbrace } -and field_path_assign = { - field_path : (selection, dot) nsepseq; +and field_path_assignment = { + field_path : path; assignment : equal; field_expr : expr } diff --git a/src/passes/01-parser/cameligo/Parser.mly b/src/passes/01-parser/cameligo/Parser.mly index 01ebbc195..cf4c0494b 100644 --- a/src/passes/01-parser/cameligo/Parser.mly +++ b/src/passes/01-parser/cameligo/Parser.mly @@ -524,8 +524,7 @@ mult_expr_level: | unary_expr_level { $1 } unary_expr_level: - call_expr_level { $1 } -| "-" call_expr_level { + "-" call_expr_level { let start = $1 in let stop = expr_to_region $2 in let region = cover start stop @@ -537,7 +536,9 @@ unary_expr_level: let stop = expr_to_region $2 in let region = cover start stop and value = {op=$1; arg=$2} in - ELogic (BoolExpr (Not ({region; value}))) } + ELogic (BoolExpr (Not ({region; value}))) + } +| call_expr_level { $1 } call_expr_level: call_expr | constr_expr | core_expr { $1 } @@ -595,7 +596,7 @@ module_field: module_fun: field_name { $1 } -| "or" { {value="or"; region=$1} } +| "or" { {value="or"; region=$1} } projection: struct_name "." nsepseq(selection,".") { @@ -643,20 +644,15 @@ update_record: in {region; value} } field_path_assignment : - nsepseq(selection,".") "=" expr { - let start = nsepseq_to_region selection_to_region $1 in - let region = cover start (expr_to_region $3) in - let value = {field_path = $1; - assignment = $2; - field_expr = $3} - in {region; value}} + path "=" expr { + let region = cover (path_to_region $1) (expr_to_region $3) + and value = {field_path=$1; assignment=$2; field_expr=$3} + in {region; value} } field_assignment: field_name "=" expr { - let start = $1.region in - let stop = expr_to_region $3 in - let region = cover start stop in - let value = {field_name = $1; + let region = cover $1.region (expr_to_region $3) + and value = {field_name = $1; assignment = $2; field_expr = $3} in {region; value} } diff --git a/src/passes/01-parser/cameligo/ParserLog.ml b/src/passes/01-parser/cameligo/ParserLog.ml index a23a77b56..49d9b2562 100644 --- a/src/passes/01-parser/cameligo/ParserLog.ml +++ b/src/passes/01-parser/cameligo/ParserLog.ml @@ -526,7 +526,7 @@ and print_field_assign state {value; _} = and print_field_path_assign state {value; _} = let {field_path; assignment; field_expr} = value in - print_nsepseq state "." print_selection field_path; + print_path state field_path; print_token state assignment "="; print_expr state field_expr @@ -945,7 +945,7 @@ and pp_projection state proj = List.iteri (apply len) selections and pp_update state update = - pp_path state update.record; + pp_path (state#pad 2 0) update.record; pp_ne_injection pp_field_path_assign state update.updates.value and pp_path state = function @@ -970,10 +970,10 @@ and pp_field_assign state {value; _} = pp_expr (state#pad 2 1) value.field_expr and pp_field_path_assign state {value; _} = - pp_node state ""; - let path = Utils.nsepseq_to_list value.field_path in - List.iter (pp_selection (state#pad 2 0)) path; - pp_expr (state#pad 2 1) value.field_expr + let {field_path; field_expr; _} = value in + pp_node state ""; + pp_path (state#pad 2 0) field_path; + pp_expr (state#pad 2 1) field_expr and pp_constr_expr state = function ENone region -> diff --git a/src/passes/01-parser/cameligo/ParserMain.ml b/src/passes/01-parser/cameligo/ParserMain.ml index 47462302d..0ccb71a01 100644 --- a/src/passes/01-parser/cameligo/ParserMain.ml +++ b/src/passes/01-parser/cameligo/ParserMain.ml @@ -70,7 +70,7 @@ module ParserLog = module Lexer = Lexer.Make (LexToken) module Unit = - ParserUnit.Make (Lexer)(AST)(Parser)(ParErr)(ParserLog)(SubIO) + ParserUnit.Make (Lexer)(AST)(Parser)(Parser_msg)(ParserLog)(SubIO) (* Main *) diff --git a/src/passes/01-parser/cameligo/Pretty.ml b/src/passes/01-parser/cameligo/Pretty.ml index ba8451d52..780d05e29 100644 --- a/src/passes/01-parser/cameligo/Pretty.ml +++ b/src/passes/01-parser/cameligo/Pretty.ml @@ -286,18 +286,14 @@ and pp_ne_injection : string opening ^^ nest 1 elements ^^ string closing and pp_nsepseq : - 'a.string -> - ('a -> document) -> - ('a, t) Utils.nsepseq -> - document = + 'a.string -> ('a -> document) -> ('a, t) Utils.nsepseq -> document = fun sep printer elements -> let elems = Utils.nsepseq_to_list elements and sep = string sep ^^ break 1 in separate_map sep printer elems and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = - fun printer (head, tail) -> - separate_map (break 1) printer (head::tail) + fun printer (head, tail) -> separate_map (break 1) printer (head::tail) and pp_projection {value; _} = let {struct_name; field_path; _} = value in @@ -319,9 +315,7 @@ and pp_update {value; _} = and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in - let fields = Utils.nsepseq_to_list field_path - and sep = string "." ^^ break 0 in - let path = separate_map sep pp_ident fields in + let path = pp_path field_path in prefix 2 1 (path ^^ string " =") (pp_expr field_expr) and pp_path = function diff --git a/src/passes/01-parser/cameligo/error.messages.checked-in b/src/passes/01-parser/cameligo/error.messages.checked-in index 4a1fe3a5b..14c31bc5f 100644 --- a/src/passes/01-parser/cameligo/error.messages.checked-in +++ b/src/passes/01-parser/cameligo/error.messages.checked-in @@ -1948,7 +1948,7 @@ interactive_expr: LBRACE Constr DOT Ident With ## ## Ends in an error in state: 523. ## -## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With ] +## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With EQ ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident @@ -1960,7 +1960,7 @@ interactive_expr: LBRACE Constr DOT With ## ## Ends in an error in state: 522. ## -## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With ] +## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With EQ ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -1972,7 +1972,7 @@ interactive_expr: LBRACE Constr With ## ## Ends in an error in state: 521. ## -## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With ] +## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With EQ ] ## ## The known suffix of the stack is as follows: ## Constr @@ -2002,7 +2002,7 @@ interactive_expr: LBRACE Ident DOT Ident Verbatim interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 551. +## Ends in an error in state: 552. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2015,7 +2015,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With ## -## Ends in an error in state: 550. +## Ends in an error in state: 551. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2047,7 +2047,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With ## -## Ends in an error in state: 547. +## Ends in an error in state: 548. ## ## field_assignment -> Ident . EQ expr [ SEMI RBRACE ] ## @@ -2059,7 +2059,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With interactive_expr: LBRACE Ident EQ Bytes SEMI With ## -## Ends in an error in state: 546. +## Ends in an error in state: 547. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ] @@ -2072,7 +2072,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With interactive_expr: LBRACE Ident EQ Bytes With ## -## Ends in an error in state: 545. +## Ends in an error in state: 546. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ] @@ -2128,9 +2128,9 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes SEMI With +interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes SEMI With ## -## Ends in an error in state: 541. +## Ends in an error in state: 542. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -2141,9 +2141,9 @@ interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes With +interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI Ident DOT Ident EQ Bytes With ## -## Ends in an error in state: 540. +## Ends in an error in state: 541. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2168,14 +2168,14 @@ interactive_expr: LBRACE Ident With Int EQ Bytes SEMI Int EQ Bytes With ## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level ## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) ## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 534, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 534, spurious reduction of production field_path_assignment -> path EQ expr ## -interactive_expr: LBRACE Ident With Int EQ Bytes SEMI With +interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes SEMI With ## -## Ends in an error in state: 537. +## Ends in an error in state: 538. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ] @@ -2186,9 +2186,9 @@ interactive_expr: LBRACE Ident With Int EQ Bytes SEMI With -interactive_expr: LBRACE Ident With Int EQ Bytes With +interactive_expr: LBRACE Ident With Ident DOT Ident EQ Bytes With ## -## Ends in an error in state: 536. +## Ends in an error in state: 537. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ] @@ -2213,37 +2213,52 @@ interactive_expr: LBRACE Ident With Int EQ Bytes With ## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level ## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr) ## In state 371, spurious reduction of production expr -> base_cond__open(expr) -## In state 534, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 534, spurious reduction of production field_path_assignment -> path EQ expr ## -interactive_expr: LBRACE Ident With Int EQ With +interactive_expr: LBRACE Ident With Ident DOT Ident EQ With ## ## Ends in an error in state: 533. ## -## field_path_assignment -> nsepseq(selection,DOT) EQ . expr [ SEMI RBRACE ] +## field_path_assignment -> path EQ . expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## nsepseq(selection,DOT) EQ +## path EQ ## -interactive_expr: LBRACE Ident With Int With +interactive_expr: LBRACE Ident With Ident DOT Ident With ## ## Ends in an error in state: 532. ## -## field_path_assignment -> nsepseq(selection,DOT) . EQ expr [ SEMI RBRACE ] +## field_path_assignment -> path . EQ expr [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## nsepseq(selection,DOT) +## path ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 187, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 190, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 526, spurious reduction of production path -> projection +## + + + +interactive_expr: LBRACE Ident With Ident With +## +## Ends in an error in state: 529. +## +## path -> Ident . [ EQ ] +## projection -> Ident . DOT nsepseq(selection,DOT) [ EQ ] +## +## The known suffix of the stack is as follows: +## Ident ## @@ -2275,7 +2290,7 @@ interactive_expr: LBRACE With interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 566. +## Ends in an error in state: 567. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2288,7 +2303,7 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With interactive_expr: LBRACKET Verbatim SEMI Verbatim With ## -## Ends in an error in state: 565. +## Ends in an error in state: 566. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2319,7 +2334,7 @@ interactive_expr: LBRACKET Verbatim SEMI Verbatim With interactive_expr: LBRACKET Verbatim SEMI With ## -## Ends in an error in state: 562. +## Ends in an error in state: 563. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -2332,7 +2347,7 @@ interactive_expr: LBRACKET Verbatim SEMI With interactive_expr: LBRACKET Verbatim With ## -## Ends in an error in state: 561. +## Ends in an error in state: 562. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -2375,7 +2390,7 @@ interactive_expr: LBRACKET With interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 580. +## Ends in an error in state: 581. ## ## par(annot_expr) -> LPAR annot_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] ## @@ -2389,14 +2404,14 @@ interactive_expr: LPAR Verbatim COLON Ident VBAR ## In state 28, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type -## In state 579, spurious reduction of production annot_expr -> expr COLON type_expr +## In state 580, spurious reduction of production annot_expr -> expr COLON type_expr ## interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 578. +## Ends in an error in state: 579. ## ## annot_expr -> expr COLON . type_expr [ RPAR ] ## @@ -2408,7 +2423,7 @@ interactive_expr: LPAR Verbatim COLON With interactive_expr: LPAR Verbatim With ## -## Ends in an error in state: 576. +## Ends in an error in state: 577. ## ## annot_expr -> expr . COLON type_expr [ RPAR ] ## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ] @@ -2525,7 +2540,7 @@ interactive_expr: Let Rec With interactive_expr: Let WILD EQ Bytes Attr Type ## -## Ends in an error in state: 554. +## Ends in an error in state: 555. ## ## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2544,7 +2559,7 @@ interactive_expr: Let WILD EQ Bytes Attr Type interactive_expr: Let WILD EQ Bytes In With ## -## Ends in an error in state: 555. +## Ends in an error in state: 556. ## ## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2556,7 +2571,7 @@ interactive_expr: Let WILD EQ Bytes In With interactive_expr: Let WILD EQ Bytes With ## -## Ends in an error in state: 553. +## Ends in an error in state: 554. ## ## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2611,7 +2626,7 @@ interactive_expr: MINUS With interactive_expr: Match Verbatim Type ## -## Ends in an error in state: 569. +## Ends in an error in state: 570. ## ## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2653,7 +2668,7 @@ interactive_expr: Match Verbatim With LPAR Bytes RPAR With interactive_expr: Match Verbatim With VBAR Begin ## -## Ends in an error in state: 571. +## Ends in an error in state: 572. ## ## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -2665,7 +2680,7 @@ interactive_expr: Match Verbatim With VBAR Begin interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 575. +## Ends in an error in state: 576. ## ## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3200,7 +3215,7 @@ interactive_expr: Match Verbatim With WILD ARROW Let With interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else ## -## Ends in an error in state: 574. +## Ends in an error in state: 575. ## ## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] @@ -3264,7 +3279,7 @@ interactive_expr: Match Verbatim With WILD ARROW Verbatim End interactive_expr: Match Verbatim With WILD ARROW With ## -## Ends in an error in state: 573. +## Ends in an error in state: 574. ## ## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3313,7 +3328,7 @@ interactive_expr: Match Verbatim With WILD COMMA With interactive_expr: Match Verbatim With WILD CONS Bytes SEMI ## -## Ends in an error in state: 572. +## Ends in an error in state: 573. ## ## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3357,7 +3372,7 @@ interactive_expr: Match Verbatim With WILD With interactive_expr: Match Verbatim With With ## -## Ends in an error in state: 570. +## Ends in an error in state: 571. ## ## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ] ## @@ -3747,7 +3762,7 @@ interactive_expr: Verbatim WILD interactive_expr: Verbatim With ## -## Ends in an error in state: 597. +## Ends in an error in state: 598. ## ## interactive_expr -> expr . EOF [ # ] ## @@ -3776,7 +3791,7 @@ interactive_expr: Verbatim With interactive_expr: With ## -## Ends in an error in state: 595. +## Ends in an error in state: 596. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -4222,7 +4237,7 @@ contract: Let LPAR With contract: Let Rec WILD EQ Bytes With ## -## Ends in an error in state: 584. +## Ends in an error in state: 585. ## ## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4347,7 +4362,7 @@ contract: Let WILD EQ Bytes Attr With contract: Let WILD EQ Bytes With ## -## Ends in an error in state: 586. +## Ends in an error in state: 587. ## ## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ] ## @@ -4483,7 +4498,7 @@ contract: Type Ident EQ Constr With contract: Type Ident EQ Ident VBAR ## -## Ends in an error in state: 592. +## Ends in an error in state: 593. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4499,7 +4514,7 @@ contract: Type Ident EQ Ident VBAR ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 27, spurious reduction of production type_expr -> fun_type ## In state 61, spurious reduction of production type_decl -> Type Ident EQ type_expr -## In state 588, spurious reduction of production declaration -> type_decl +## In state 589, spurious reduction of production declaration -> type_decl ## diff --git a/src/passes/01-parser/pascaligo/.links b/src/passes/01-parser/pascaligo/.links index 45c9a4602..aca47d8ff 100644 --- a/src/passes/01-parser/pascaligo/.links +++ b/src/passes/01-parser/pascaligo/.links @@ -21,5 +21,3 @@ $HOME/git/OCaml-build/Makefile ../shared/ParserUnit.mli ../shared/ParserUnit.ml ../shared/LexerLib.ml - -$HOME/git/ligo/_build/default/src/passes/1-parser/pascaligo/ParErr.ml diff --git a/src/passes/01-parser/pascaligo/AST.ml b/src/passes/01-parser/pascaligo/AST.ml index cd2dd70bb..ad5e8be7e 100644 --- a/src/passes/01-parser/pascaligo/AST.ml +++ b/src/passes/01-parser/pascaligo/AST.ml @@ -541,13 +541,13 @@ and constr_expr = | NoneExpr of c_None | ConstrApp of (constr * arguments option) reg -and field_assign = { +and field_assignment = { field_name : field_name; assignment : equal; field_expr : expr } -and record = field_assign reg ne_injection +and record = field_assignment reg ne_injection and projection = { struct_name : variable; @@ -558,11 +558,11 @@ and projection = { and update = { record : path; kwd_with : kwd_with; - updates : field_path_assign reg ne_injection reg + updates : field_path_assignment reg ne_injection reg } -and field_path_assign = { - field_path : (selection, dot) nsepseq; +and field_path_assignment = { + field_path : path; assignment : equal; field_expr : expr } diff --git a/src/passes/01-parser/pascaligo/Parser.mly b/src/passes/01-parser/pascaligo/Parser.mly index 199f689ba..8052be9fc 100644 --- a/src/passes/01-parser/pascaligo/Parser.mly +++ b/src/passes/01-parser/pascaligo/Parser.mly @@ -949,7 +949,7 @@ record_expr: "record" sep_or_term_list(field_assignment,";") "end" { let ne_elements, terminator = $2 in let region = cover $1 $3 - and value : field_assign AST.reg ne_injection = { + and value : field_assignment AST.reg ne_injection = { kind = NEInjRecord $1; enclosing = End $3; ne_elements; @@ -959,7 +959,7 @@ record_expr: | "record" "[" sep_or_term_list(field_assignment,";") "]" { let ne_elements, terminator = $3 in let region = cover $1 $4 - and value : field_assign AST.reg ne_injection = { + and value : field_assignment AST.reg ne_injection = { kind = NEInjRecord $1; enclosing = Brackets ($2,$4); ne_elements; @@ -969,8 +969,8 @@ record_expr: update_record: path "with" ne_injection("record",field_path_assignment) { let updates = $3 (fun region -> NEInjRecord region) in - let region = cover (path_to_region $1) updates.region in - let value = {record=$1; kwd_with=$2; updates} + let region = cover (path_to_region $1) updates.region in + let value = {record=$1; kwd_with=$2; updates} in {region; value} } field_assignment: @@ -980,10 +980,8 @@ field_assignment: in {region; value} } field_path_assignment: - nsepseq(selection,".") "=" expr { - let start = nsepseq_to_region selection_to_region $1 - and stop = expr_to_region $3 in - let region = cover start stop + path "=" expr { + let region = cover (path_to_region $1) (expr_to_region $3) and value = {field_path=$1; assignment=$2; field_expr=$3} in {region; value} } diff --git a/src/passes/01-parser/pascaligo/ParserLog.ml b/src/passes/01-parser/pascaligo/ParserLog.ml index bec03ffe1..3ae039e8e 100644 --- a/src/passes/01-parser/pascaligo/ParserLog.ml +++ b/src/passes/01-parser/pascaligo/ParserLog.ml @@ -616,25 +616,25 @@ and print_constr_expr state = function | ConstrApp e -> print_constr_app state e and print_record_expr state = - print_ne_injection state print_field_assign + print_ne_injection state print_field_assignment -and print_field_assign state {value; _} = +and print_field_assignment state {value; _} = let {field_name; assignment; field_expr} = value in print_var state field_name; print_token state assignment "="; print_expr state field_expr -and print_field_path_assign state {value; _} = +and print_field_path_assignment state {value; _} = let {field_path; assignment; field_expr} = value in - print_nsepseq state "field_path" print_selection field_path; - print_token state assignment "="; - print_expr state field_expr + print_path state field_path; + print_token state assignment "="; + print_expr state field_expr and print_update_expr state {value; _} = let {record; kwd_with; updates} = value in print_path state record; print_token state kwd_with "with"; - print_ne_injection state print_field_path_assign updates + print_ne_injection state print_field_path_assignment updates and print_projection state {value; _} = let {struct_name; selector; field_path} = value in @@ -654,7 +654,7 @@ and print_record_patch state node = print_token state kwd_patch "patch"; print_path state path; print_token state kwd_with "with"; - print_ne_injection state print_field_assign record_inj + print_ne_injection state print_field_assignment record_inj and print_set_patch state node = let {kwd_patch; path; kwd_with; set_inj} = node in @@ -1272,7 +1272,7 @@ and pp_projection state proj = and pp_update state update = pp_path (state#pad 2 0) update.record; - pp_ne_injection pp_field_path_assign state update.updates.value + pp_ne_injection pp_field_path_assignment state update.updates.value and pp_selection state = function FieldName name -> @@ -1380,18 +1380,18 @@ and pp_fun_call state (expr, args) = and pp_record_patch state patch = pp_path (state#pad 2 0) patch.path; - pp_ne_injection pp_field_assign state patch.record_inj.value + pp_ne_injection pp_field_assignment state patch.record_inj.value -and pp_field_assign state {value; _} = +and pp_field_assignment state {value; _} = pp_node state ""; pp_ident (state#pad 2 0) value.field_name; pp_expr (state#pad 2 1) value.field_expr -and pp_field_path_assign state {value; _} = +and pp_field_path_assignment state {value; _} = + let {field_path; field_expr; _} = value in pp_node state ""; - let path = Utils.nsepseq_to_list value.field_path in - List.iter (pp_selection (state#pad 2 0)) path; - pp_expr (state#pad 2 1) value.field_expr + pp_path (state#pad 2 0) field_path; + pp_expr (state#pad 2 1) field_expr and pp_map_patch state patch = pp_path (state#pad 2 0) patch.path; @@ -1461,7 +1461,7 @@ and pp_expr state = function pp_constr_expr (state#pad 1 0) e_constr | ERecord {value; region} -> pp_loc_node state "ERecord" region; - pp_ne_injection pp_field_assign state value + pp_ne_injection pp_field_assignment state value | EProj {value; region} -> pp_loc_node state "EProj" region; pp_projection state value diff --git a/src/passes/01-parser/pascaligo/ParserMain.ml b/src/passes/01-parser/pascaligo/ParserMain.ml index 65533dc14..6158dc5da 100644 --- a/src/passes/01-parser/pascaligo/ParserMain.ml +++ b/src/passes/01-parser/pascaligo/ParserMain.ml @@ -70,7 +70,7 @@ module ParserLog = module Lexer = Lexer.Make (LexToken) module Unit = - ParserUnit.Make (Lexer)(AST)(Parser)(ParErr)(ParserLog)(SubIO) + ParserUnit.Make (Lexer)(AST)(Parser)(Parser_msg)(ParserLog)(SubIO) (* Main *) diff --git a/src/passes/01-parser/pascaligo/Pretty.ml b/src/passes/01-parser/pascaligo/Pretty.ml index e2a5b4cfd..4c52d071a 100644 --- a/src/passes/01-parser/pascaligo/Pretty.ml +++ b/src/passes/01-parser/pascaligo/Pretty.ml @@ -497,10 +497,8 @@ and pp_update {value; _} = and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in - let fields = Utils.nsepseq_to_list field_path - and sep = string "." ^^ break 0 in - let fields = separate_map sep pp_ident fields in - group (fields ^^ nest 2 (break 1 ^^ string "= " ^^ pp_expr field_expr)) + let path = pp_path field_path in + prefix 2 1 (path ^^ string " =") (pp_expr field_expr) and pp_selection = function FieldName v -> string v.value diff --git a/src/passes/01-parser/pascaligo/error.messages.checked-in b/src/passes/01-parser/pascaligo/error.messages.checked-in index 2b97451b5..3cad43084 100644 --- a/src/passes/01-parser/pascaligo/error.messages.checked-in +++ b/src/passes/01-parser/pascaligo/error.messages.checked-in @@ -11,19 +11,19 @@ interactive_expr: BigMap LBRACKET Verbatim ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## @@ -43,7 +43,7 @@ interactive_expr: BigMap LBRACKET With interactive_expr: BigMap Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 250. +## Ends in an error in state: 257. ## ## injection(BigMap,binding) -> BigMap sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -54,19 +54,19 @@ interactive_expr: BigMap Verbatim ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## @@ -100,7 +100,7 @@ interactive_expr: C_Some With interactive_expr: Case Verbatim Of C_Some LPAR WILD With ## -## Ends in an error in state: 278. +## Ends in an error in state: 285. ## ## par(core_pattern) -> LPAR core_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -112,7 +112,7 @@ interactive_expr: Case Verbatim Of C_Some LPAR WILD With interactive_expr: Case Verbatim Of C_Some LPAR With ## -## Ends in an error in state: 270. +## Ends in an error in state: 277. ## ## par(core_pattern) -> LPAR . core_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -124,7 +124,7 @@ interactive_expr: Case Verbatim Of C_Some LPAR With interactive_expr: Case Verbatim Of C_Some With ## -## Ends in an error in state: 269. +## Ends in an error in state: 276. ## ## constr_pattern -> C_Some . par(core_pattern) [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -136,7 +136,7 @@ interactive_expr: Case Verbatim Of C_Some With interactive_expr: Case Verbatim Of Constr LPAR WILD With ## -## Ends in an error in state: 284. +## Ends in an error in state: 291. ## ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . COMMA nsepseq(core_pattern,COMMA) [ RPAR ] @@ -149,7 +149,7 @@ interactive_expr: Case Verbatim Of Constr LPAR WILD With interactive_expr: Case Verbatim Of Constr LPAR With ## -## Ends in an error in state: 268. +## Ends in an error in state: 275. ## ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -161,7 +161,7 @@ interactive_expr: Case Verbatim Of Constr LPAR With interactive_expr: Case Verbatim Of Constr With ## -## Ends in an error in state: 267. +## Ends in an error in state: 274. ## ## constr_pattern -> Constr . tuple_pattern [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -174,7 +174,7 @@ interactive_expr: Case Verbatim Of Constr With interactive_expr: Case Verbatim Of LBRACKET VBAR Block ## -## Ends in an error in state: 255. +## Ends in an error in state: 262. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) . cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -186,7 +186,7 @@ interactive_expr: Case Verbatim Of LBRACKET VBAR Block interactive_expr: Case Verbatim Of LBRACKET WILD ARROW Bytes End ## -## Ends in an error in state: 319. +## Ends in an error in state: 326. ## ## case(expr) -> Case expr Of LBRACKET option(VBAR) cases(expr) . RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -197,26 +197,26 @@ interactive_expr: Case Verbatim Of LBRACKET WILD ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 317, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 321, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 318, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## interactive_expr: Case Verbatim Of LBRACKET With ## -## Ends in an error in state: 254. +## Ends in an error in state: 261. ## ## case(expr) -> Case expr Of LBRACKET . option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -228,7 +228,7 @@ interactive_expr: Case Verbatim Of LBRACKET With interactive_expr: Case Verbatim Of LPAR WILD COMMA With ## -## Ends in an error in state: 285. +## Ends in an error in state: 292. ## ## nsepseq(core_pattern,COMMA) -> core_pattern COMMA . nsepseq(core_pattern,COMMA) [ RPAR ] ## @@ -240,7 +240,7 @@ interactive_expr: Case Verbatim Of LPAR WILD COMMA With interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## -## Ends in an error in state: 297. +## Ends in an error in state: 304. ## ## par(cons_pattern) -> LPAR cons_pattern . RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -251,15 +251,15 @@ interactive_expr: Case Verbatim Of LPAR WILD CONS Bytes ARROW ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 291, spurious reduction of production pattern -> core_pattern -## In state 290, spurious reduction of production cons_pattern -> core_pattern CONS pattern +## In state 298, spurious reduction of production pattern -> core_pattern +## In state 297, spurious reduction of production cons_pattern -> core_pattern CONS pattern ## interactive_expr: Case Verbatim Of LPAR WILD CONS With ## -## Ends in an error in state: 289. +## Ends in an error in state: 296. ## ## cons_pattern -> core_pattern CONS . pattern [ RPAR ] ## @@ -271,7 +271,7 @@ interactive_expr: Case Verbatim Of LPAR WILD CONS With interactive_expr: Case Verbatim Of LPAR WILD With ## -## Ends in an error in state: 288. +## Ends in an error in state: 295. ## ## cons_pattern -> core_pattern . CONS pattern [ RPAR ] ## nsepseq(core_pattern,COMMA) -> core_pattern . [ RPAR ] @@ -285,7 +285,7 @@ interactive_expr: Case Verbatim Of LPAR WILD With interactive_expr: Case Verbatim Of LPAR With ## -## Ends in an error in state: 263. +## Ends in an error in state: 270. ## ## par(cons_pattern) -> LPAR . cons_pattern RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## par(nsepseq(core_pattern,COMMA)) -> LPAR . nsepseq(core_pattern,COMMA) RPAR [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -298,7 +298,7 @@ interactive_expr: Case Verbatim Of LPAR With interactive_expr: Case Verbatim Of List LBRACKET WILD End ## -## Ends in an error in state: 301. +## Ends in an error in state: 308. ## ## injection(List,core_pattern) -> List LBRACKET sep_or_term_list(core_pattern,SEMI) . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -309,15 +309,15 @@ interactive_expr: Case Verbatim Of List LBRACKET WILD End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 305, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 304, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## interactive_expr: Case Verbatim Of List LBRACKET With ## -## Ends in an error in state: 299. +## Ends in an error in state: 306. ## ## injection(List,core_pattern) -> List LBRACKET . sep_or_term_list(core_pattern,SEMI) RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List LBRACKET . RBRACKET [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -330,7 +330,7 @@ interactive_expr: Case Verbatim Of List LBRACKET With interactive_expr: Case Verbatim Of List WILD RBRACKET ## -## Ends in an error in state: 313. +## Ends in an error in state: 320. ## ## injection(List,core_pattern) -> List sep_or_term_list(core_pattern,SEMI) . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## @@ -341,15 +341,15 @@ interactive_expr: Case Verbatim Of List WILD RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 305, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern -## In state 304, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) +## In state 312, spurious reduction of production nsepseq(core_pattern,SEMI) -> core_pattern +## In state 311, spurious reduction of production sep_or_term_list(core_pattern,SEMI) -> nsepseq(core_pattern,SEMI) ## interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With ## -## Ends in an error in state: 310. +## Ends in an error in state: 317. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -362,7 +362,7 @@ interactive_expr: Case Verbatim Of List WILD SEMI WILD SEMI With interactive_expr: Case Verbatim Of List WILD SEMI WILD With ## -## Ends in an error in state: 309. +## Ends in an error in state: 316. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -376,7 +376,7 @@ interactive_expr: Case Verbatim Of List WILD SEMI WILD With interactive_expr: Case Verbatim Of List WILD SEMI With ## -## Ends in an error in state: 306. +## Ends in an error in state: 313. ## ## nsepseq(core_pattern,SEMI) -> core_pattern SEMI . nsepseq(core_pattern,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(core_pattern,SEMI)) -> core_pattern SEMI . seq(__anonymous_0(core_pattern,SEMI)) [ RBRACKET End ] @@ -389,7 +389,7 @@ interactive_expr: Case Verbatim Of List WILD SEMI With interactive_expr: Case Verbatim Of List WILD With ## -## Ends in an error in state: 305. +## Ends in an error in state: 312. ## ## nsepseq(core_pattern,SEMI) -> core_pattern . [ RBRACKET End ] ## nsepseq(core_pattern,SEMI) -> core_pattern . SEMI nsepseq(core_pattern,SEMI) [ RBRACKET End ] @@ -403,7 +403,7 @@ interactive_expr: Case Verbatim Of List WILD With interactive_expr: Case Verbatim Of List With ## -## Ends in an error in state: 262. +## Ends in an error in state: 269. ## ## injection(List,core_pattern) -> List . sep_or_term_list(core_pattern,SEMI) End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] ## injection(List,core_pattern) -> List . End [ SEMI RPAR RBRACKET End CONS COMMA ARROW ] @@ -418,7 +418,7 @@ interactive_expr: Case Verbatim Of List With interactive_expr: Case Verbatim Of VBAR Block ## -## Ends in an error in state: 324. +## Ends in an error in state: 331. ## ## case(expr) -> Case expr Of option(VBAR) . cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -430,7 +430,7 @@ interactive_expr: Case Verbatim Of VBAR Block interactive_expr: Case Verbatim Of WILD ARROW Bytes RBRACKET ## -## Ends in an error in state: 325. +## Ends in an error in state: 332. ## ## case(expr) -> Case expr Of option(VBAR) cases(expr) . End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -441,26 +441,26 @@ interactive_expr: Case Verbatim Of WILD ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 317, spurious reduction of production case_clause(expr) -> pattern ARROW expr -## In state 321, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) -## In state 318, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 328, spurious reduction of production nsepseq(case_clause(expr),VBAR) -> case_clause(expr) +## In state 325, spurious reduction of production cases(expr) -> nsepseq(case_clause(expr),VBAR) ## interactive_expr: Case Verbatim Of WILD ARROW Bytes Type ## -## Ends in an error in state: 321. +## Ends in an error in state: 328. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . [ RBRACKET End ] ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) . VBAR nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] @@ -472,24 +472,24 @@ interactive_expr: Case Verbatim Of WILD ARROW Bytes Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 317, spurious reduction of production case_clause(expr) -> pattern ARROW expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 324, spurious reduction of production case_clause(expr) -> pattern ARROW expr ## interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With ## -## Ends in an error in state: 322. +## Ends in an error in state: 329. ## ## nsepseq(case_clause(expr),VBAR) -> case_clause(expr) VBAR . nsepseq(case_clause(expr),VBAR) [ RBRACKET End ] ## @@ -501,7 +501,7 @@ interactive_expr: Case Verbatim Of WILD ARROW Bytes VBAR With interactive_expr: Case Verbatim Of WILD ARROW With ## -## Ends in an error in state: 316. +## Ends in an error in state: 323. ## ## case_clause(expr) -> pattern ARROW . expr [ VBAR RBRACKET End ] ## @@ -513,7 +513,7 @@ interactive_expr: Case Verbatim Of WILD ARROW With interactive_expr: Case Verbatim Of WILD CONS WILD CONS With ## -## Ends in an error in state: 295. +## Ends in an error in state: 302. ## ## nsepseq(core_pattern,CONS) -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -525,7 +525,7 @@ interactive_expr: Case Verbatim Of WILD CONS WILD CONS With interactive_expr: Case Verbatim Of WILD CONS WILD With ## -## Ends in an error in state: 294. +## Ends in an error in state: 301. ## ## nsepseq(core_pattern,CONS) -> core_pattern . [ RPAR ARROW ] ## nsepseq(core_pattern,CONS) -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -538,7 +538,7 @@ interactive_expr: Case Verbatim Of WILD CONS WILD With interactive_expr: Case Verbatim Of WILD CONS With ## -## Ends in an error in state: 292. +## Ends in an error in state: 299. ## ## pattern -> core_pattern CONS . nsepseq(core_pattern,CONS) [ RPAR ARROW ] ## @@ -550,7 +550,7 @@ interactive_expr: Case Verbatim Of WILD CONS With interactive_expr: Case Verbatim Of WILD RPAR ## -## Ends in an error in state: 315. +## Ends in an error in state: 322. ## ## case_clause(expr) -> pattern . ARROW expr [ VBAR RBRACKET End ] ## @@ -561,14 +561,14 @@ interactive_expr: Case Verbatim Of WILD RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 291, spurious reduction of production pattern -> core_pattern +## In state 298, spurious reduction of production pattern -> core_pattern ## interactive_expr: Case Verbatim Of WILD With ## -## Ends in an error in state: 291. +## Ends in an error in state: 298. ## ## pattern -> core_pattern . [ RPAR ARROW ] ## pattern -> core_pattern . CONS nsepseq(core_pattern,CONS) [ RPAR ARROW ] @@ -581,7 +581,7 @@ interactive_expr: Case Verbatim Of WILD With interactive_expr: Case Verbatim Of With ## -## Ends in an error in state: 253. +## Ends in an error in state: 260. ## ## case(expr) -> Case expr Of . option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr Of . LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -594,7 +594,7 @@ interactive_expr: Case Verbatim Of With interactive_expr: Case Verbatim VBAR ## -## Ends in an error in state: 252. +## Ends in an error in state: 259. ## ## case(expr) -> Case expr . Of option(VBAR) cases(expr) End [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## case(expr) -> Case expr . Of LBRACKET option(VBAR) cases(expr) RBRACKET [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -606,16 +606,16 @@ interactive_expr: Case Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -635,7 +635,7 @@ interactive_expr: Case With interactive_expr: Constr DOT And With ## -## Ends in an error in state: 169. +## Ends in an error in state: 175. ## ## core_expr -> module_field . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## fun_call -> module_field . arguments [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -901,7 +901,7 @@ interactive_expr: Ident DOT Ident ASS ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 126, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 335, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 159, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) ## @@ -933,7 +933,7 @@ interactive_expr: Ident DOT Int While interactive_expr: Ident DOT With ## -## Ends in an error in state: 334. +## Ends in an error in state: 158. ## ## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE LBRACKET GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -945,7 +945,7 @@ interactive_expr: Ident DOT With interactive_expr: Ident LBRACKET Verbatim VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 241. ## ## brackets(expr) -> LBRACKET expr . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -956,23 +956,23 @@ interactive_expr: Ident LBRACKET Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Ident LBRACKET With ## -## Ends in an error in state: 233. +## Ends in an error in state: 240. ## ## brackets(expr) -> LBRACKET . expr RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ASS ARROW ] ## @@ -984,7 +984,7 @@ interactive_expr: Ident LBRACKET With interactive_expr: Ident LPAR Verbatim COMMA With ## -## Ends in an error in state: 332. +## Ends in an error in state: 339. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -996,7 +996,7 @@ interactive_expr: Ident LPAR Verbatim COMMA With interactive_expr: Ident LPAR Verbatim VBAR ## -## Ends in an error in state: 331. +## Ends in an error in state: 338. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1008,16 +1008,16 @@ interactive_expr: Ident LPAR Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -1049,9 +1049,45 @@ interactive_expr: Ident While -interactive_expr: Ident With Record Int EQ Bytes RBRACKET +interactive_expr: Ident With Record Constr DOT Ident With ## -## Ends in an error in state: 230. +## Ends in an error in state: 162. +## +## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] +## +## The known suffix of the stack is as follows: +## Constr DOT Ident +## + + + +interactive_expr: Ident With Record Constr DOT With +## +## Ends in an error in state: 161. +## +## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] +## +## The known suffix of the stack is as follows: +## Constr DOT +## + + + +interactive_expr: Ident With Record Constr With +## +## Ends in an error in state: 160. +## +## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] +## +## The known suffix of the stack is as follows: +## Constr +## + + + +interactive_expr: Ident With Record Ident EQ Bytes RBRACKET +## +## Ends in an error in state: 237. ## ## ne_injection(Record,field_path_assignment) -> Record sep_or_term_list(field_path_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1062,26 +1098,26 @@ interactive_expr: Ident With Record Int EQ Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 186, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr -## In state 223, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 222, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> path EQ expr +## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 229, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## -interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes SEMI With +interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 228. +## Ends in an error in state: 235. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1092,9 +1128,9 @@ interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes SEMI With -interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes VBAR +interactive_expr: Ident With Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## -## Ends in an error in state: 227. +## Ends in an error in state: 234. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1107,24 +1143,24 @@ interactive_expr: Ident With Record Int EQ Bytes SEMI Int EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 186, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> path EQ expr ## -interactive_expr: Ident With Record Int EQ Bytes SEMI With +interactive_expr: Ident With Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 224. +## Ends in an error in state: 231. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACKET End ] @@ -1135,9 +1171,9 @@ interactive_expr: Ident With Record Int EQ Bytes SEMI With -interactive_expr: Ident With Record Int EQ Bytes VBAR +interactive_expr: Ident With Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 223. +## Ends in an error in state: 230. ## ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACKET End ] ## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACKET End ] @@ -1150,54 +1186,67 @@ interactive_expr: Ident With Record Int EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 186, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> path EQ expr ## -interactive_expr: Ident With Record Int EQ With +interactive_expr: Ident With Record Ident EQ With ## -## Ends in an error in state: 161. +## Ends in an error in state: 167. ## -## field_path_assignment -> nsepseq(selection,DOT) EQ . expr [ SEMI RBRACKET End ] +## field_path_assignment -> path EQ . expr [ SEMI RBRACKET End ] ## ## The known suffix of the stack is as follows: -## nsepseq(selection,DOT) EQ +## path EQ ## -interactive_expr: Ident With Record Int With +interactive_expr: Ident With Record Ident While ## -## Ends in an error in state: 160. +## Ends in an error in state: 157. ## -## field_path_assignment -> nsepseq(selection,DOT) . EQ expr [ SEMI RBRACKET End ] +## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] +## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else EQ ] ## ## The known suffix of the stack is as follows: -## nsepseq(selection,DOT) +## Ident +## + + + +interactive_expr: Ident With Record Ident With +## +## Ends in an error in state: 166. +## +## field_path_assignment -> path . EQ expr [ SEMI RBRACKET End ] +## +## The known suffix of the stack is as follows: +## path ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 126, spurious reduction of production nsepseq(selection,DOT) -> selection +## In state 157, spurious reduction of production path -> Ident ## -interactive_expr: Ident With Record LBRACKET Int EQ Bytes End +interactive_expr: Ident With Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 157. +## Ends in an error in state: 163. ## ## ne_injection(Record,field_path_assignment) -> Record LBRACKET sep_or_term_list(field_path_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1208,19 +1257,19 @@ interactive_expr: Ident With Record LBRACKET Int EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 186, spurious reduction of production field_path_assignment -> nsepseq(selection,DOT) EQ expr -## In state 223, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment -## In state 222, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 192, spurious reduction of production field_path_assignment -> path EQ expr +## In state 230, spurious reduction of production nsepseq(field_path_assignment,SEMI) -> field_path_assignment +## In state 229, spurious reduction of production sep_or_term_list(field_path_assignment,SEMI) -> nsepseq(field_path_assignment,SEMI) ## @@ -1264,7 +1313,7 @@ interactive_expr: Ident With With interactive_expr: If Verbatim Then Verbatim Else With ## -## Ends in an error in state: 341. +## Ends in an error in state: 346. ## ## cond_expr -> If expr Then expr option(SEMI) Else . expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1276,7 +1325,7 @@ interactive_expr: If Verbatim Then Verbatim Else With interactive_expr: If Verbatim Then Verbatim SEMI EQ ## -## Ends in an error in state: 340. +## Ends in an error in state: 345. ## ## cond_expr -> If expr Then expr option(SEMI) . Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1288,7 +1337,7 @@ interactive_expr: If Verbatim Then Verbatim SEMI EQ interactive_expr: If Verbatim Then Verbatim VBAR ## -## Ends in an error in state: 339. +## Ends in an error in state: 344. ## ## cond_expr -> If expr Then expr . option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1299,23 +1348,23 @@ interactive_expr: If Verbatim Then Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: If Verbatim Then With ## -## Ends in an error in state: 338. +## Ends in an error in state: 343. ## ## cond_expr -> If expr Then . expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1327,7 +1376,7 @@ interactive_expr: If Verbatim Then With interactive_expr: If Verbatim VBAR ## -## Ends in an error in state: 337. +## Ends in an error in state: 342. ## ## cond_expr -> If expr . Then expr option(SEMI) Else expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## @@ -1338,16 +1387,16 @@ interactive_expr: If Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -1366,7 +1415,7 @@ interactive_expr: If With interactive_expr: LPAR Bytes RPAR With ## -## Ends in an error in state: 163. +## Ends in an error in state: 169. ## ## fun_call_or_par_or_projection -> par(expr) . option(arguments) [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1378,7 +1427,7 @@ interactive_expr: LPAR Bytes RPAR With interactive_expr: LPAR If Verbatim Then Bytes Else Bytes VBAR ## -## Ends in an error in state: 345. +## Ends in an error in state: 350. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LPAR LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## tuple_comp -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -1390,25 +1439,25 @@ interactive_expr: LPAR If Verbatim Then Bytes Else Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 342, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr -## In state 220, spurious reduction of production expr -> cond_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 347, spurious reduction of production cond_expr -> If expr Then expr option(SEMI) Else expr +## In state 226, spurious reduction of production expr -> cond_expr ## interactive_expr: LPAR Verbatim COLON Ident VBAR ## -## Ends in an error in state: 352. +## Ends in an error in state: 357. ## ## par(annot_expr) -> LPAR annot_expr . RPAR [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1423,14 +1472,14 @@ interactive_expr: LPAR Verbatim COLON Ident VBAR ## In state 30, spurious reduction of production cartesian -> core_type ## In state 36, spurious reduction of production fun_type -> cartesian ## In state 44, spurious reduction of production type_expr -> fun_type -## In state 351, spurious reduction of production annot_expr -> disj_expr COLON type_expr +## In state 356, spurious reduction of production annot_expr -> disj_expr COLON type_expr ## interactive_expr: LPAR Verbatim COLON With ## -## Ends in an error in state: 350. +## Ends in an error in state: 355. ## ## annot_expr -> disj_expr COLON . type_expr [ RPAR ] ## @@ -1442,7 +1491,7 @@ interactive_expr: LPAR Verbatim COLON With interactive_expr: LPAR Verbatim COMMA With ## -## Ends in an error in state: 347. +## Ends in an error in state: 352. ## ## tuple_comp -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -1454,7 +1503,7 @@ interactive_expr: LPAR Verbatim COMMA With interactive_expr: LPAR Verbatim VBAR ## -## Ends in an error in state: 349. +## Ends in an error in state: 354. ## ## annot_expr -> disj_expr . COLON type_expr [ RPAR ] ## disj_expr -> disj_expr . Or conj_expr [ RPAR Or COMMA COLON ] @@ -1467,15 +1516,15 @@ interactive_expr: LPAR Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr ## @@ -1496,7 +1545,7 @@ interactive_expr: LPAR With interactive_expr: List LBRACKET Verbatim End ## -## Ends in an error in state: 356. +## Ends in an error in state: 361. ## ## injection(List,expr) -> List LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1507,25 +1556,25 @@ interactive_expr: List LBRACKET Verbatim End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 360, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 359, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: List LBRACKET With ## -## Ends in an error in state: 354. +## Ends in an error in state: 359. ## ## injection(List,expr) -> List LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(List,expr) -> List LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1538,7 +1587,7 @@ interactive_expr: List LBRACKET With interactive_expr: List Verbatim RBRACKET ## -## Ends in an error in state: 368. +## Ends in an error in state: 373. ## ## injection(List,expr) -> List sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1549,18 +1598,18 @@ interactive_expr: List Verbatim RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 360, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 359, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## @@ -1594,7 +1643,7 @@ interactive_expr: MINUS With interactive_expr: Map LBRACKET Verbatim ARROW Bytes End ## -## Ends in an error in state: 373. +## Ends in an error in state: 378. ## ## injection(Map,binding) -> Map LBRACKET sep_or_term_list(binding,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1605,26 +1654,26 @@ interactive_expr: Map LBRACKET Verbatim ARROW Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map LBRACKET With ## -## Ends in an error in state: 371. +## Ends in an error in state: 376. ## ## injection(Map,binding) -> Map LBRACKET . sep_or_term_list(binding,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Map,binding) -> Map LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1637,7 +1686,7 @@ interactive_expr: Map LBRACKET With interactive_expr: Map Verbatim ARROW Bytes RBRACKET ## -## Ends in an error in state: 376. +## Ends in an error in state: 381. ## ## injection(Map,binding) -> Map sep_or_term_list(binding,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1648,26 +1697,26 @@ interactive_expr: Map Verbatim ARROW Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 247. +## Ends in an error in state: 254. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1680,7 +1729,7 @@ interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes SEMI With interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 246. +## Ends in an error in state: 253. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1693,24 +1742,24 @@ interactive_expr: Map Verbatim ARROW Bytes SEMI Verbatim ARROW Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr ## interactive_expr: Map Verbatim ARROW Bytes SEMI With ## -## Ends in an error in state: 243. +## Ends in an error in state: 250. ## ## nsepseq(binding,SEMI) -> binding SEMI . nsepseq(binding,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(binding,SEMI)) -> binding SEMI . seq(__anonymous_0(binding,SEMI)) [ RBRACKET End ] @@ -1723,7 +1772,7 @@ interactive_expr: Map Verbatim ARROW Bytes SEMI With interactive_expr: Map Verbatim ARROW Bytes VBAR ## -## Ends in an error in state: 242. +## Ends in an error in state: 249. ## ## nsepseq(binding,SEMI) -> binding . [ RBRACKET End ] ## nsepseq(binding,SEMI) -> binding . SEMI nsepseq(binding,SEMI) [ RBRACKET End ] @@ -1736,24 +1785,24 @@ interactive_expr: Map Verbatim ARROW Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr ## interactive_expr: Map Verbatim ARROW With ## -## Ends in an error in state: 240. +## Ends in an error in state: 247. ## ## binding -> expr ARROW . expr [ SEMI RBRACKET End ] ## @@ -1765,7 +1814,7 @@ interactive_expr: Map Verbatim ARROW With interactive_expr: Map Verbatim VBAR ## -## Ends in an error in state: 239. +## Ends in an error in state: 246. ## ## binding -> expr . ARROW expr [ SEMI RBRACKET End ] ## @@ -1776,16 +1825,16 @@ interactive_expr: Map Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -1807,7 +1856,7 @@ interactive_expr: Map With interactive_expr: Not Bytes With ## -## Ends in an error in state: 166. +## Ends in an error in state: 172. ## ## add_expr -> mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -1834,7 +1883,7 @@ interactive_expr: Not With interactive_expr: Record Ident EQ Bytes RBRACKET ## -## Ends in an error in state: 391. +## Ends in an error in state: 396. ## ## record_expr -> Record sep_or_term_list(field_assignment,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1845,26 +1894,26 @@ interactive_expr: Record Ident EQ Bytes RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 379, spurious reduction of production field_assignment -> Ident EQ expr -## In state 384, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 383, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With ## -## Ends in an error in state: 389. +## Ends in an error in state: 394. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1877,7 +1926,7 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## -## Ends in an error in state: 388. +## Ends in an error in state: 393. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1890,24 +1939,24 @@ interactive_expr: Record Ident EQ Bytes SEMI Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 379, spurious reduction of production field_assignment -> Ident EQ expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr ## interactive_expr: Record Ident EQ Bytes SEMI With ## -## Ends in an error in state: 385. +## Ends in an error in state: 390. ## ## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACKET End ] @@ -1920,7 +1969,7 @@ interactive_expr: Record Ident EQ Bytes SEMI With interactive_expr: Record Ident EQ Bytes VBAR ## -## Ends in an error in state: 384. +## Ends in an error in state: 389. ## ## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACKET End ] ## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACKET End ] @@ -1933,17 +1982,17 @@ interactive_expr: Record Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 379, spurious reduction of production field_assignment -> Ident EQ expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr ## @@ -1974,7 +2023,7 @@ interactive_expr: Record Ident With interactive_expr: Record LBRACKET Ident EQ Bytes End ## -## Ends in an error in state: 380. +## Ends in an error in state: 385. ## ## record_expr -> Record LBRACKET sep_or_term_list(field_assignment,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -1985,19 +2034,19 @@ interactive_expr: Record LBRACKET Ident EQ Bytes End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 379, spurious reduction of production field_assignment -> Ident EQ expr -## In state 384, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 383, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## @@ -2029,7 +2078,7 @@ interactive_expr: Record With interactive_expr: Set LBRACKET Verbatim End ## -## Ends in an error in state: 395. +## Ends in an error in state: 400. ## ## injection(Set,expr) -> Set LBRACKET sep_or_term_list(expr,SEMI) . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2040,25 +2089,25 @@ interactive_expr: Set LBRACKET Verbatim End ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 360, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 359, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set LBRACKET With ## -## Ends in an error in state: 393. +## Ends in an error in state: 398. ## ## injection(Set,expr) -> Set LBRACKET . sep_or_term_list(expr,SEMI) RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## injection(Set,expr) -> Set LBRACKET . RBRACKET [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2071,7 +2120,7 @@ interactive_expr: Set LBRACKET With interactive_expr: Set Verbatim RBRACKET ## -## Ends in an error in state: 398. +## Ends in an error in state: 403. ## ## injection(Set,expr) -> Set sep_or_term_list(expr,SEMI) . End [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Contains Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2082,25 +2131,25 @@ interactive_expr: Set Verbatim RBRACKET ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 360, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 359, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## interactive_expr: Set Verbatim SEMI Verbatim SEMI With ## -## Ends in an error in state: 365. +## Ends in an error in state: 370. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2113,7 +2162,7 @@ interactive_expr: Set Verbatim SEMI Verbatim SEMI With interactive_expr: Set Verbatim SEMI Verbatim VBAR ## -## Ends in an error in state: 364. +## Ends in an error in state: 369. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2126,23 +2175,23 @@ interactive_expr: Set Verbatim SEMI Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Set Verbatim SEMI With ## -## Ends in an error in state: 361. +## Ends in an error in state: 366. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ] @@ -2155,7 +2204,7 @@ interactive_expr: Set Verbatim SEMI With interactive_expr: Set Verbatim VBAR ## -## Ends in an error in state: 360. +## Ends in an error in state: 365. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ] @@ -2168,16 +2217,16 @@ interactive_expr: Set Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -2199,7 +2248,7 @@ interactive_expr: Set With interactive_expr: Verbatim And With ## -## Ends in an error in state: 217. +## Ends in an error in state: 223. ## ## conj_expr -> conj_expr And . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2211,7 +2260,7 @@ interactive_expr: Verbatim And With interactive_expr: Verbatim CAT With ## -## Ends in an error in state: 193. +## Ends in an error in state: 199. ## ## cat_expr -> cons_expr CAT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2223,7 +2272,7 @@ interactive_expr: Verbatim CAT With interactive_expr: Verbatim COLON ## -## Ends in an error in state: 187. +## Ends in an error in state: 193. ## ## disj_expr -> disj_expr . Or conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] ## expr -> disj_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Of Function From End Else EOF Const COMMA Block Begin Attributes ARROW ] @@ -2235,22 +2284,22 @@ interactive_expr: Verbatim COLON ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr ## interactive_expr: Verbatim CONS With ## -## Ends in an error in state: 200. +## Ends in an error in state: 206. ## ## cons_expr -> add_expr CONS . cons_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2262,7 +2311,7 @@ interactive_expr: Verbatim CONS With interactive_expr: Verbatim Contains With ## -## Ends in an error in state: 190. +## Ends in an error in state: 196. ## ## set_membership -> core_expr Contains . set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2274,7 +2323,7 @@ interactive_expr: Verbatim Contains With interactive_expr: Verbatim EQ With ## -## Ends in an error in state: 213. +## Ends in an error in state: 219. ## ## comp_expr -> comp_expr EQ . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2286,7 +2335,7 @@ interactive_expr: Verbatim EQ With interactive_expr: Verbatim GE With ## -## Ends in an error in state: 211. +## Ends in an error in state: 217. ## ## comp_expr -> comp_expr GE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2298,7 +2347,7 @@ interactive_expr: Verbatim GE With interactive_expr: Verbatim GT With ## -## Ends in an error in state: 209. +## Ends in an error in state: 215. ## ## comp_expr -> comp_expr GT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2310,7 +2359,7 @@ interactive_expr: Verbatim GT With interactive_expr: Verbatim LE With ## -## Ends in an error in state: 207. +## Ends in an error in state: 213. ## ## comp_expr -> comp_expr LE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2322,7 +2371,7 @@ interactive_expr: Verbatim LE With interactive_expr: Verbatim LT With ## -## Ends in an error in state: 205. +## Ends in an error in state: 211. ## ## comp_expr -> comp_expr LT . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2334,7 +2383,7 @@ interactive_expr: Verbatim LT With interactive_expr: Verbatim MINUS Verbatim With ## -## Ends in an error in state: 199. +## Ends in an error in state: 205. ## ## add_expr -> add_expr MINUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2349,7 +2398,7 @@ interactive_expr: Verbatim MINUS Verbatim With interactive_expr: Verbatim MINUS With ## -## Ends in an error in state: 198. +## Ends in an error in state: 204. ## ## add_expr -> add_expr MINUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2361,7 +2410,7 @@ interactive_expr: Verbatim MINUS With interactive_expr: Verbatim Mod With ## -## Ends in an error in state: 183. +## Ends in an error in state: 189. ## ## mult_expr -> mult_expr Mod . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2373,7 +2422,7 @@ interactive_expr: Verbatim Mod With interactive_expr: Verbatim NE With ## -## Ends in an error in state: 203. +## Ends in an error in state: 209. ## ## comp_expr -> comp_expr NE . cat_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of NE LT LE GT GE Function From End Else EQ EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## @@ -2385,7 +2434,7 @@ interactive_expr: Verbatim NE With interactive_expr: Verbatim Or With ## -## Ends in an error in state: 188. +## Ends in an error in state: 194. ## ## disj_expr -> disj_expr Or . conj_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes ARROW ] ## @@ -2397,7 +2446,7 @@ interactive_expr: Verbatim Or With interactive_expr: Verbatim PLUS Verbatim With ## -## Ends in an error in state: 197. +## Ends in an error in state: 203. ## ## add_expr -> add_expr PLUS mult_expr . [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## mult_expr -> mult_expr . TIMES unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2412,7 +2461,7 @@ interactive_expr: Verbatim PLUS Verbatim With interactive_expr: Verbatim PLUS With ## -## Ends in an error in state: 196. +## Ends in an error in state: 202. ## ## add_expr -> add_expr PLUS . mult_expr [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2424,7 +2473,7 @@ interactive_expr: Verbatim PLUS With interactive_expr: Verbatim SLASH With ## -## Ends in an error in state: 181. +## Ends in an error in state: 187. ## ## mult_expr -> mult_expr SLASH . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2436,7 +2485,7 @@ interactive_expr: Verbatim SLASH With interactive_expr: Verbatim TIMES With ## -## Ends in an error in state: 167. +## Ends in an error in state: 173. ## ## mult_expr -> mult_expr TIMES . unary_expr [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] ## @@ -2459,23 +2508,23 @@ interactive_expr: Verbatim VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## interactive_expr: Verbatim With ## -## Ends in an error in state: 189. +## Ends in an error in state: 195. ## ## set_membership -> core_expr . Contains set_membership [ VBAR Type To Then Step SEMI Recursive RPAR RBRACKET RBRACE Or Of Function From End Else EOF Const COMMA COLON Block Begin Attributes And ARROW ] ## unary_expr -> core_expr . [ VBAR Type To Then TIMES Step SLASH SEMI Recursive RPAR RBRACKET RBRACE PLUS Or Of NE Mod MINUS LT LE GT GE Function From End Else EQ EOF Const CONS COMMA COLON CAT Block Begin Attributes And ARROW ] @@ -2664,16 +2713,16 @@ contract: Const Ident COLON Ident EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## In state 492, spurious reduction of production unqualified_decl(EQ) -> Ident COLON type_expr EQ expr ## In state 493, spurious reduction of production open_const_decl -> Const unqualified_decl(EQ) ## @@ -2761,16 +2810,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON Ident Is Bytes ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## In state 460, spurious reduction of production open_fun_decl -> Function Ident parameters COLON type_expr Is expr ## @@ -2900,7 +2949,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 291, spurious reduction of production pattern -> core_pattern +## In state 298, spurious reduction of production pattern -> core_pattern ## @@ -2932,16 +2981,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -3021,16 +3070,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -3061,16 +3110,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -3102,16 +3151,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## In state 467, spurious reduction of production var_assign -> Ident ASS expr ## @@ -3142,16 +3191,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -3234,8 +3283,8 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 126, spurious reduction of production nsepseq(selection,DOT) -> selection -## In state 335, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) -## In state 421, spurious reduction of production path -> projection +## In state 159, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT) +## In state 165, spurious reduction of production path -> projection ## @@ -3358,16 +3407,16 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## @@ -3384,42 +3433,6 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT Ident With -## -## Ends in an error in state: 420. -## -## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] -## -## The known suffix of the stack is as follows: -## Constr DOT Ident -## - - - -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr DOT With -## -## Ends in an error in state: 419. -## -## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] -## -## The known suffix of the stack is as follows: -## Constr DOT -## - - - -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Constr With -## -## Ends in an error in state: 418. -## -## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] -## -## The known suffix of the stack is as follows: -## Constr -## - - - contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident VBAR ## ## Ends in an error in state: 426. @@ -3435,20 +3448,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 417, spurious reduction of production path -> Ident -## - - - -contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Patch Ident While -## -## Ends in an error in state: 417. -## -## path -> Ident . [ With VBAR SEMI RBRACKET RBRACE End Else ] -## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR SEMI RBRACKET RBRACE End Else ] -## -## The known suffix of the stack is as follows: -## Ident +## In state 157, spurious reduction of production path -> Ident ## @@ -3466,19 +3466,19 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## @@ -3508,19 +3508,19 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 241, spurious reduction of production binding -> expr ARROW expr -## In state 242, spurious reduction of production nsepseq(binding,SEMI) -> binding -## In state 238, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 248, spurious reduction of production binding -> expr ARROW expr +## In state 249, spurious reduction of production nsepseq(binding,SEMI) -> binding +## In state 245, spurious reduction of production sep_or_term_list(binding,SEMI) -> nsepseq(binding,SEMI) ## @@ -3551,19 +3551,19 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 379, spurious reduction of production field_assignment -> Ident EQ expr -## In state 384, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 383, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## @@ -3581,19 +3581,19 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 379, spurious reduction of production field_assignment -> Ident EQ expr -## In state 384, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment -## In state 383, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 384, spurious reduction of production field_assignment -> Ident EQ expr +## In state 389, spurious reduction of production nsepseq(field_assignment,SEMI) -> field_assignment +## In state 388, spurious reduction of production sep_or_term_list(field_assignment,SEMI) -> nsepseq(field_assignment,SEMI) ## @@ -3636,18 +3636,18 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 360, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 359, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## @@ -3677,18 +3677,18 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr -## In state 360, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 359, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr +## In state 365, spurious reduction of production nsepseq(expr,SEMI) -> expr +## In state 364, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) ## @@ -3748,7 +3748,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From Set With ## -## Ends in an error in state: 416. +## Ends in an error in state: 421. ## ## set_remove -> Remove expr From Set . path [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3760,7 +3760,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim From With ## -## Ends in an error in state: 415. +## Ends in an error in state: 420. ## ## map_remove -> Remove expr From . Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr From . Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3773,7 +3773,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove Verbatim VBAR ## -## Ends in an error in state: 414. +## Ends in an error in state: 419. ## ## map_remove -> Remove expr . From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove expr . From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3785,23 +3785,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Remove With ## -## Ends in an error in state: 413. +## Ends in an error in state: 418. ## ## map_remove -> Remove . expr From Map path [ VBAR SEMI RBRACKET RBRACE End Else ] ## set_remove -> Remove . expr From Set path [ VBAR SEMI RBRACKET RBRACE End Else ] @@ -3911,7 +3911,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String ASS With ## -## Ends in an error in state: 409. +## Ends in an error in state: 414. ## ## unqualified_decl(ASS) -> Ident COLON type_expr ASS . expr [ SEMI RBRACE End ] ## @@ -3923,7 +3923,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON String VBAR ## -## Ends in an error in state: 408. +## Ends in an error in state: 413. ## ## unqualified_decl(ASS) -> Ident COLON type_expr . ASS expr [ SEMI RBRACE End ] ## @@ -3943,7 +3943,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident COLON With ## -## Ends in an error in state: 407. +## Ends in an error in state: 412. ## ## unqualified_decl(ASS) -> Ident COLON . type_expr ASS expr [ SEMI RBRACE End ] ## @@ -3955,7 +3955,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var Ident With ## -## Ends in an error in state: 406. +## Ends in an error in state: 411. ## ## unqualified_decl(ASS) -> Ident . COLON type_expr ASS expr [ SEMI RBRACE End ] ## @@ -3967,7 +3967,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin Var With ## -## Ends in an error in state: 405. +## Ends in an error in state: 410. ## ## open_var_decl -> Var . unqualified_decl(ASS) [ SEMI RBRACE End ] ## @@ -3979,7 +3979,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While Verbatim VBAR ## -## Ends in an error in state: 403. +## Ends in an error in state: 408. ## ## while_loop -> While expr . block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -3990,23 +3990,23 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 189, spurious reduction of production unary_expr -> core_expr +## In state 195, spurious reduction of production unary_expr -> core_expr ## In state 143, spurious reduction of production mult_expr -> unary_expr -## In state 166, spurious reduction of production add_expr -> mult_expr -## In state 195, spurious reduction of production cons_expr -> add_expr -## In state 192, spurious reduction of production cat_expr -> cons_expr -## In state 215, spurious reduction of production comp_expr -> cat_expr -## In state 202, spurious reduction of production set_membership -> comp_expr +## In state 172, spurious reduction of production add_expr -> mult_expr +## In state 201, spurious reduction of production cons_expr -> add_expr +## In state 198, spurious reduction of production cat_expr -> cons_expr +## In state 221, spurious reduction of production comp_expr -> cat_expr +## In state 208, spurious reduction of production set_membership -> comp_expr ## In state 145, spurious reduction of production conj_expr -> set_membership -## In state 219, spurious reduction of production disj_expr -> conj_expr -## In state 187, spurious reduction of production expr -> disj_expr +## In state 225, spurious reduction of production disj_expr -> conj_expr +## In state 193, spurious reduction of production expr -> disj_expr ## contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin While With ## -## Ends in an error in state: 402. +## Ends in an error in state: 407. ## ## while_loop -> While . expr block [ VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4018,7 +4018,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Begin With ## -## Ends in an error in state: 404. +## Ends in an error in state: 409. ## ## block -> Begin . sep_or_term_list(statement,SEMI) End [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4049,7 +4049,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block LBRACE With ## -## Ends in an error in state: 401. +## Ends in an error in state: 406. ## ## block -> Block LBRACE . sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## @@ -4061,7 +4061,7 @@ contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block contract: Function Ident LPAR Const Ident COLON Ident RPAR COLON String Is Block With ## -## Ends in an error in state: 400. +## Ends in an error in state: 405. ## ## block -> Block . LBRACE sep_or_term_list(statement,SEMI) RBRACE [ With VBAR SEMI RBRACKET RBRACE End Else ] ## diff --git a/src/passes/01-parser/reasonligo/.links b/src/passes/01-parser/reasonligo/.links index 71a2ea603..e85766c2b 100644 --- a/src/passes/01-parser/reasonligo/.links +++ b/src/passes/01-parser/reasonligo/.links @@ -27,6 +27,3 @@ Stubs/Parser_cameligo.ml ../cameligo/ParserLog.ml ../cameligo/Scoping.mli ../cameligo/Scoping.ml -../cameligo/Pretty.ml - -$HOME/git/ligo/_build/default/src/passes/1-parser/reasonligo/ParErr.ml diff --git a/src/passes/01-parser/reasonligo/Parser.mly b/src/passes/01-parser/reasonligo/Parser.mly index ed91c1d30..6f85f729a 100644 --- a/src/passes/01-parser/reasonligo/Parser.mly +++ b/src/passes/01-parser/reasonligo/Parser.mly @@ -430,14 +430,14 @@ type_expr_simple: TProd {region = cover $1 $3; value=$2} } | "(" type_expr_simple "=>" type_expr_simple ")" { - TPar { + TPar { value = { lpar = $1; rpar = $5; inside = TFun { region = cover (type_expr_to_region $2) (type_expr_to_region $4); value=$2,$3,$4 - } + } }; region = cover $1 $5; } @@ -912,9 +912,9 @@ update_record: lbrace = $1; record = $3; kwd_with = $4; - updates = {value = {compound = Braces(Region.ghost, Region.ghost); - ne_elements; - terminator}; + updates = {value = {compound = Braces (ghost, ghost); + ne_elements; + terminator}; region = cover $4 $6}; rbrace = $6} in {region; value} } @@ -942,10 +942,9 @@ exprs: in let sequence = ESeq { value = { - compound = BeginEnd(Region.ghost, Region.ghost); - elements = Some val_; - terminator = (snd c) - }; + compound = BeginEnd (ghost, ghost); + elements = Some val_; + terminator = snd c}; region = sequence_region } in @@ -1012,48 +1011,23 @@ field_assignment_punning: (* This can only happen with multiple fields - one item punning does NOT work in ReasonML *) field_name { - let value = { - field_name = $1; - assignment = ghost; - field_expr = EVar $1 } + let value = {field_name = $1; + assignment = ghost; + field_expr = EVar $1} in {$1 with value} } | field_assignment { $1 } field_assignment: field_name ":" expr { - let start = $1.region in - let stop = expr_to_region $3 in - let region = cover start stop in - let value = { - field_name = $1; - assignment = $2; - field_expr = $3} + let region = cover $1.region (expr_to_region $3) + and value = {field_name = $1; + assignment = $2; + field_expr = $3} in {region; value} } -real_selection: - field_name { FieldName $1 } -| "" { Component $1 } - field_path_assignment: - real_selection { - let region = selection_to_region $1 - and value = { - field_path = ($1,[]); - assignment = ghost; - field_expr = match $1 with - FieldName var -> EVar var - | Component {value;region} -> - let value = Z.to_string (snd value) in - EVar {value;region} } - in {region; value} - } -| nsepseq(real_selection,".") ":" expr { - let start = nsepseq_to_region selection_to_region $1 - and stop = expr_to_region $3 in - let region = cover start stop - and value = { - field_path = $1; - assignment = $2; - field_expr = $3} + path ":" expr { + let region = cover (path_to_region $1) (expr_to_region $3) + and value = {field_path=$1; assignment=$2; field_expr=$3} in {region; value} } diff --git a/src/passes/01-parser/reasonligo/ParserMain.ml b/src/passes/01-parser/reasonligo/ParserMain.ml index 70141993e..3dd94d37e 100644 --- a/src/passes/01-parser/reasonligo/ParserMain.ml +++ b/src/passes/01-parser/reasonligo/ParserMain.ml @@ -70,7 +70,7 @@ module ParserLog = module Lexer = Lexer.Make (LexToken) module Unit = - ParserUnit.Make (Lexer)(AST)(Parser)(ParErr)(ParserLog)(SubIO) + ParserUnit.Make (Lexer)(AST)(Parser)(Parser_msg)(ParserLog)(SubIO) (* Main *) @@ -78,7 +78,7 @@ let wrap = function Stdlib.Ok ast -> if IO.options#pretty then begin - let doc = Pretty.make ast in + let doc = Pretty.print ast in let width = match Terminal_size.get_columns () with None -> 60 diff --git a/src/passes/01-parser/reasonligo/Pretty.ml b/src/passes/01-parser/reasonligo/Pretty.ml index f1e1c834a..d0d4cbf80 100644 --- a/src/passes/01-parser/reasonligo/Pretty.ml +++ b/src/passes/01-parser/reasonligo/Pretty.ml @@ -40,14 +40,14 @@ and pp_let_binding let_ (binding : let_binding) = let patterns = Utils.nseq_to_list binders in let patterns = group (separate_map (break 0) pp_pattern patterns) in let lhs = - string let_ ^^ + string let_ ^^ match lhs_type with None -> patterns ^^ string " = " | Some (_,e) -> patterns ^^ group (break 0 ^^ string ": " ^^ pp_type_expr e ^^ string " = ") in - let rhs = pp_expr let_rhs in - match let_rhs with + let rhs = pp_expr let_rhs in + match let_rhs with | EFun _ | ESeq _ | ERecord _ -> lhs ^^ rhs @@ -110,7 +110,7 @@ and pp_list_comp e = group (pp_injection pp_pattern e) and pp_cons {value; _} = let patt1, _, patt2 = value in - string "[" ^^ (pp_pattern patt1 ^^ string ", ") ^^ group ( break 0 ^^ string "..." ^^ pp_pattern patt2) ^^ string "]" + string "[" ^^ (pp_pattern patt1 ^^ string ", ") ^^ group ( break 0 ^^ string "..." ^^ pp_pattern patt2) ^^ string "]" and pp_ptuple {value; _} = let head, tail = value in @@ -162,8 +162,9 @@ and pp_expr = function and pp_case_expr {value; _} = let {expr; cases; _} = value in - group (string "switch" ^^ string "(" ^^ nest 1 (pp_expr expr) ^^ (string ") " ^^ string "{") - ^^ (pp_cases cases) ^^ hardline ^^ string "}" ) + group (string "switch" ^^ string "(" ^^ nest 1 (pp_expr expr) + ^^ string ") " ^^ string "{" + ^^ pp_cases cases ^^ hardline ^^ string "}") and pp_cases {value; _} = let head, tail = value in @@ -238,7 +239,7 @@ and pp_string_expr = function | Verbatim e -> pp_verbatim e and pp_list_expr = function -| ECons {value = {arg1; arg2; _}; _ } -> +| ECons {value = {arg1; arg2; _}; _ } -> string "[" ^^ pp_expr arg1 ^^ string "," ^^ break 1 ^^ string "..." ^^ pp_expr arg2 ^^ string "]" | EListComp e -> group (pp_injection pp_expr e) @@ -294,29 +295,22 @@ and pp_ne_injection : string opening ^^ nest 2 (break 0 ^^ elements) ^^ break 1 ^^ string closing and pp_nsepseq : - 'a.string -> - ('a -> document) -> - ('a, t) Utils.nsepseq -> - document = + 'a.string -> ('a -> document) -> ('a, t) Utils.nsepseq -> document = fun sep printer elements -> let elems = Utils.nsepseq_to_list elements and sep = string sep ^^ break 1 in separate_map sep printer elems -and pp_nseq : 'a.('a -> document) -> 'a Utils.nseq -> document = - fun printer (head, tail) -> - separate_map (break 1) printer (head::tail) - and pp_projection {value; _} = - let {struct_name; field_path; _ } = value in - let fields = Utils.nsepseq_to_list field_path - and sep = break 0 in - let fields = separate_map sep pp_selection fields in - group (pp_ident struct_name ^^ break 0 ^^ fields) + let {struct_name; field_path; _} = value in + let subpath = Utils.nsepseq_to_list field_path in + let subpath = concat_map pp_selection subpath in + group (pp_ident struct_name ^^ subpath) and pp_selection = function - FieldName v -> string "." ^^ string v.value -| Component cmp -> string "[" ^^ (cmp.value |> snd |> Z.to_string |> string) ^^ string "]" + FieldName v -> string "." ^^ break 0 ^^ string v.value +| Component cmp -> + string "[" ^^ (cmp.value |> snd |> Z.to_string |> string) ^^ string "]" and pp_update {value; _} = let {record; updates; _} = value in @@ -327,9 +321,7 @@ and pp_update {value; _} = and pp_field_path_assign {value; _} = let {field_path; field_expr; _} = value in - let fields = Utils.nsepseq_to_list field_path - and sep = string "." ^^ break 0 in - let path = separate_map sep pp_ident fields in + let path = pp_path field_path in prefix 2 1 (path ^^ string ":") (pp_expr field_expr) and pp_path = function @@ -376,8 +368,8 @@ and pp_fun {value; _} = None -> empty | Some (_,e) -> group (break 0 ^^ string ": " ^^ nest 2 (pp_type_expr e)) - in - match body with + in + match body with | ESeq _ -> string "(" ^^ nest 1 binders ^^ string ")" ^^ annot ^^ string " => " ^^ pp_expr body | _ -> (prefix 2 0 (string "(" ^^ nest 1 binders ^^ string ")" ^^ annot ^^ string " => ") (pp_expr body)) @@ -411,7 +403,7 @@ and pp_cartesian {value; _} = | [e] -> group (break 1 ^^ pp_type_expr e) | e::items -> group (break 1 ^^ pp_type_expr e ^^ string ",") ^^ app items - in + in string "(" ^^ nest 1 (pp_type_expr head ^^ (if tail <> [] then string "," else empty) ^^ app (List.map snd tail)) ^^ string ")" and pp_variants {value; _} = @@ -435,17 +427,16 @@ and pp_fields fields = group (pp_ne_injection pp_field_decl fields) and pp_field_decl {value; _} = let {field_name; field_type; _} = value in let name = pp_ident field_name in - match field_type with + match field_type with | TVar v when v = field_name -> name - | _ -> ( + | _ -> let t_expr = pp_type_expr field_type in prefix 2 1 (name ^^ string ":") t_expr - ) and pp_type_app {value; _} = let ctor, tuple = value in - prefix 2 0 (pp_type_constr ctor) (string "(" ^^ nest 1 (pp_type_tuple tuple) ^^ string ")") + prefix 2 0 (pp_type_constr ctor) (string "(" ^^ nest 1 (pp_type_tuple tuple) ^^ string ")") and pp_type_tuple {value; _} = let head, tail = value.inside in @@ -465,14 +456,14 @@ and pp_type_constr ctor = string ctor.value and pp_fun_args {value; _} = let lhs, _, rhs = value in - match rhs with + match rhs with | TFun tf -> group (pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf) | _ -> group (pp_type_expr lhs ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) and pp_fun_type {value; _} = let lhs, _, rhs = value in - match lhs, rhs with - | _, TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf + match lhs, rhs with + | _, TFun tf -> string "(" ^^ pp_type_expr lhs ^^ string ", " ^^ pp_fun_args tf | TVar _ , _ -> group (pp_type_expr lhs ^^ string " =>" ^/^ pp_type_expr rhs) | _ -> group (string "(" ^^ nest 1 (pp_type_expr lhs) ^^ string ")" ^^ string " =>" ^/^ pp_type_expr rhs) diff --git a/src/passes/01-parser/reasonligo/error.messages.checked-in b/src/passes/01-parser/reasonligo/error.messages.checked-in index f161e5a67..1afe0b7f7 100644 --- a/src/passes/01-parser/reasonligo/error.messages.checked-in +++ b/src/passes/01-parser/reasonligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: C_None WILD ## -## Ends in an error in state: 174. +## Ends in an error in state: 176. ## ## call_expr_level -> call_expr_level_in . option(type_annotation_simple) [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -12,7 +12,7 @@ interactive_expr: C_None WILD interactive_expr: C_Some VBAR ## -## Ends in an error in state: 126. +## Ends in an error in state: 128. ## ## constr_expr -> C_Some . core_expr [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -24,7 +24,7 @@ interactive_expr: C_Some VBAR interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 112. +## Ends in an error in state: 113. ## ## module_fun -> Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr DOT Ident . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -37,7 +37,7 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT WILD ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## ## module_field -> Constr DOT . module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr DOT . Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -50,7 +50,7 @@ interactive_expr: Constr DOT WILD interactive_expr: Constr Switch ## -## Ends in an error in state: 109. +## Ends in an error in state: 110. ## ## constr_expr -> Constr . core_expr [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## constr_expr -> Constr . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -65,7 +65,7 @@ interactive_expr: Constr Switch interactive_expr: Ident DOT Ident WILD ## -## Ends in an error in state: 104. +## Ends in an error in state: 105. ## ## selection -> DOT Ident . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> DOT Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -78,7 +78,7 @@ interactive_expr: Ident DOT Ident WILD interactive_expr: Ident DOT WILD ## -## Ends in an error in state: 103. +## Ends in an error in state: 104. ## ## selection -> DOT . Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> DOT . Ident [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -91,7 +91,7 @@ interactive_expr: Ident DOT WILD interactive_expr: Ident LBRACKET Int RBRACKET WILD ## -## Ends in an error in state: 102. +## Ends in an error in state: 103. ## ## selection -> LBRACKET Int RBRACKET . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> LBRACKET Int RBRACKET . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -104,7 +104,7 @@ interactive_expr: Ident LBRACKET Int RBRACKET WILD interactive_expr: Ident LBRACKET Int WILD ## -## Ends in an error in state: 101. +## Ends in an error in state: 102. ## ## selection -> LBRACKET Int . RBRACKET selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> LBRACKET Int . RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -117,7 +117,7 @@ interactive_expr: Ident LBRACKET Int WILD interactive_expr: Ident LBRACKET WILD ## -## Ends in an error in state: 100. +## Ends in an error in state: 101. ## ## selection -> LBRACKET . Int RBRACKET selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> LBRACKET . Int RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -130,7 +130,7 @@ interactive_expr: Ident LBRACKET WILD interactive_expr: Ident WILD ## -## Ends in an error in state: 99. +## Ends in an error in state: 100. ## ## common_expr -> Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Ident . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -143,7 +143,7 @@ interactive_expr: Ident WILD interactive_expr: If LBRACE VBAR ## -## Ends in an error in state: 228. +## Ends in an error in state: 230. ## ## parenthesized_expr -> LBRACE . expr RBRACE [ LBRACE ] ## @@ -155,7 +155,7 @@ interactive_expr: If LBRACE VBAR interactive_expr: If LBRACE WILD VBAR ## -## Ends in an error in state: 229. +## Ends in an error in state: 231. ## ## parenthesized_expr -> LBRACE expr . RBRACE [ LBRACE ] ## @@ -166,26 +166,26 @@ interactive_expr: If LBRACE WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: If LPAR VBAR ## -## Ends in an error in state: 98. +## Ends in an error in state: 99. ## ## parenthesized_expr -> LPAR . expr RPAR [ LBRACE ] ## @@ -197,7 +197,7 @@ interactive_expr: If LPAR VBAR interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE VBAR ## -## Ends in an error in state: 351. +## Ends in an error in state: 350. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -209,7 +209,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE VBAR interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 411. +## Ends in an error in state: 410. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -221,7 +221,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 413. +## Ends in an error in state: 412. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) . RBRACE [ SEMI RBRACE ] ## @@ -233,7 +233,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 412. +## Ends in an error in state: 411. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if . option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -244,26 +244,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else WILD ## -## Ends in an error in state: 410. +## Ends in an error in state: 409. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -275,7 +275,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 409. +## Ends in an error in state: 408. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -287,7 +287,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 408. +## Ends in an error in state: 407. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -299,7 +299,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD SEMI P interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 407. +## Ends in an error in state: 406. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -310,26 +310,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 350. +## Ends in an error in state: 349. ## ## if_then_else(closed_if) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -341,7 +341,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR WILD interactive_expr: If LPAR WILD RPAR LBRACE If WILD ## -## Ends in an error in state: 349. +## Ends in an error in state: 348. ## ## if_then_else(closed_if) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -353,7 +353,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE If WILD interactive_expr: If LPAR WILD RPAR LBRACE Switch VBAR ## -## Ends in an error in state: 233. +## Ends in an error in state: 235. ## ## switch_expr(base_if_then_else) -> Switch . switch_expr_ LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -365,7 +365,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch VBAR interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR VBAR ## -## Ends in an error in state: 276. +## Ends in an error in state: 274. ## ## case_clause(base_if_then_else) -> VBAR . pattern ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -377,7 +377,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR VBAR interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 434. +## Ends in an error in state: 433. ## ## nseq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -389,7 +389,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW By interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 436. +## Ends in an error in state: 435. ## ## seq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -401,7 +401,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW By interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE VBAR ## -## Ends in an error in state: 348. +## Ends in an error in state: 347. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -413,7 +413,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 421. +## Ends in an error in state: 420. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -425,7 +425,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 425. +## Ends in an error in state: 424. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) . RBRACE [ VBAR SEMI RBRACE ] ## @@ -437,7 +437,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 424. +## Ends in an error in state: 423. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else . option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -448,26 +448,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 427, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr -## In state 423, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 426, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr +## In state 422, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else WILD ## -## Ends in an error in state: 420. +## Ends in an error in state: 419. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -479,7 +479,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 419. +## Ends in an error in state: 418. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -491,7 +491,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 418. +## Ends in an error in state: 417. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -503,7 +503,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 417. +## Ends in an error in state: 416. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -514,26 +514,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 347. +## Ends in an error in state: 346. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -545,7 +545,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If WILD ## -## Ends in an error in state: 346. +## Ends in an error in state: 345. ## ## if_then_else(base_if_then_else) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -557,7 +557,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW VBAR ## -## Ends in an error in state: 345. +## Ends in an error in state: 344. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW . base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -569,7 +569,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW VB interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW WILD Type ## -## Ends in an error in state: 428. +## Ends in an error in state: 427. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW base_if_then_else . option(SEMI) [ VBAR RBRACE ] ## @@ -580,26 +580,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW WI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 427, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr -## In state 423, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 426, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr +## In state 422, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 343. ## ## case_clause(base_if_then_else) -> VBAR pattern . ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -610,16 +610,16 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD COMMA By ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 330, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 333, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 342, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 341, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE WILD ## -## Ends in an error in state: 275. +## Ends in an error in state: 273. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ LBRACE . cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -631,7 +631,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE WILD interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD WILD ## -## Ends in an error in state: 274. +## Ends in an error in state: 272. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ . LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -643,7 +643,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD WILD interactive_expr: If LPAR WILD RPAR LBRACE VBAR ## -## Ends in an error in state: 232. +## Ends in an error in state: 234. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -656,7 +656,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE VBAR interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 446. +## Ends in an error in state: 445. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -668,7 +668,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE VBAR interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 448. +## Ends in an error in state: 447. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) . RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -680,7 +680,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLU interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 447. +## Ends in an error in state: 446. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr . option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -691,27 +691,27 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 401, spurious reduction of production expr_with_let_expr -> expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else WILD ## -## Ends in an error in state: 445. +## Ends in an error in state: 444. ## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -723,7 +723,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else WILD interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 444. +## Ends in an error in state: 443. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -736,7 +736,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE WILD interactive_expr: If LPAR WILD RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 443. +## Ends in an error in state: 442. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -749,7 +749,7 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD SEMI PLUS interactive_expr: If LPAR WILD RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 442. +## Ends in an error in state: 441. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -761,26 +761,26 @@ interactive_expr: If LPAR WILD RPAR LBRACE WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 415, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr +## In state 414, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## interactive_expr: If LPAR WILD RPAR WILD ## -## Ends in an error in state: 231. +## Ends in an error in state: 233. ## ## if_then(expr_with_let_expr) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -793,7 +793,7 @@ interactive_expr: If LPAR WILD RPAR WILD interactive_expr: If LPAR WILD VBAR ## -## Ends in an error in state: 226. +## Ends in an error in state: 228. ## ## parenthesized_expr -> LPAR expr . RPAR [ LBRACE ] ## @@ -804,26 +804,26 @@ interactive_expr: If LPAR WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: If WILD ## -## Ends in an error in state: 97. +## Ends in an error in state: 98. ## ## if_then(expr_with_let_expr) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## if_then_else(expr_with_let_expr) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] @@ -836,9 +836,9 @@ interactive_expr: If WILD interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD ## -## Ends in an error in state: 252. +## Ends in an error in state: 254. ## -## projection -> Constr DOT Ident . selection [ COMMA ] +## projection -> Constr DOT Ident . selection [ COMMA COLON ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident @@ -848,9 +848,9 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Constr DOT WILD ## -## Ends in an error in state: 251. +## Ends in an error in state: 253. ## -## projection -> Constr DOT . Ident selection [ COMMA ] +## projection -> Constr DOT . Ident selection [ COMMA COLON ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -860,9 +860,9 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT WILD interactive_expr: LBRACE ELLIPSIS Constr WILD ## -## Ends in an error in state: 250. +## Ends in an error in state: 252. ## -## projection -> Constr . DOT Ident selection [ COMMA ] +## projection -> Constr . DOT Ident selection [ COMMA COLON ] ## ## The known suffix of the stack is as follows: ## Constr @@ -870,54 +870,40 @@ interactive_expr: LBRACE ELLIPSIS Constr WILD -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR +interactive_expr: LBRACE ELLIPSIS Ident COLON ## -## Ends in an error in state: 267. +## Ends in an error in state: 256. ## -## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] -## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] -## nseq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment . COMMA seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] +## update_record -> LBRACE ELLIPSIS path . COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: -## field_path_assignment +## LBRACE ELLIPSIS path ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 266, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 251, spurious reduction of production path -> Ident ## -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON VBAR +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA Ident COLON Bytes COMMA WILD ## -## Ends in an error in state: 265. +## Ends in an error in state: 270. ## -## field_path_assignment -> nsepseq(field_name,DOT) COLON . expr [ RBRACE COMMA ] +## nsepseq(field_path_assignment,COMMA) -> field_path_assignment COMMA . nsepseq(field_path_assignment,COMMA) [ RBRACE ] +## seq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment COMMA . seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] ## ## The known suffix of the stack is as follows: -## nsepseq(field_name,DOT) COLON +## field_path_assignment COMMA ## -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COLON Bytes VBAR +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 271. +## Ends in an error in state: 269. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -930,40 +916,27 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 266, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 262, spurious reduction of production field_path_assignment -> path COLON expr ## -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COMMA WILD +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes COMMA WILD ## -## Ends in an error in state: 272. -## -## nsepseq(field_path_assignment,COMMA) -> field_path_assignment COMMA . nsepseq(field_path_assignment,COMMA) [ RBRACE ] -## seq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment COMMA . seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] -## -## The known suffix of the stack is as follows: -## field_path_assignment COMMA -## - - - -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA WILD -## -## Ends in an error in state: 268. +## Ends in an error in state: 266. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment COMMA . nsepseq(field_path_assignment,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment COMMA . seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] @@ -974,48 +947,72 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA WILD -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT Ident WILD +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 258. +## Ends in an error in state: 265. ## -## nsepseq(field_name,DOT) -> Ident . [ COLON ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ COLON ] +## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] +## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] +## nseq(__anonymous_0(field_path_assignment,COMMA)) -> field_path_assignment . COMMA seq(__anonymous_0(field_path_assignment,COMMA)) [ RBRACE ] ## ## The known suffix of the stack is as follows: -## Ident +## field_path_assignment +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 262, spurious reduction of production field_path_assignment -> path COLON expr ## -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT WILD +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON VBAR ## -## Ends in an error in state: 257. +## Ends in an error in state: 261. ## -## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ COLON ] +## field_path_assignment -> path COLON . expr [ RBRACE COMMA ] ## ## The known suffix of the stack is as follows: -## Ident DOT +## path COLON ## -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA ## -## Ends in an error in state: 256. +## Ends in an error in state: 260. ## -## field_path_assignment -> Ident . [ RBRACE COMMA ] -## nsepseq(field_name,DOT) -> Ident . [ COLON ] -## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ COLON ] +## field_path_assignment -> path . COLON expr [ RBRACE COMMA ] ## ## The known suffix of the stack is as follows: -## Ident +## path +## +## WARNING: This example involves spurious reductions. +## This implies that, although the LR(1) items shown above provide an +## accurate view of the past (what has been recognized so far), they +## may provide an INCOMPLETE view of the future (what was expected next). +## In state 251, spurious reduction of production path -> Ident ## interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD ## -## Ends in an error in state: 255. +## Ends in an error in state: 257. ## ## update_record -> LBRACE ELLIPSIS path COMMA . sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1025,32 +1022,12 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD -interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR -## -## Ends in an error in state: 254. -## -## update_record -> LBRACE ELLIPSIS path . COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] -## -## The known suffix of the stack is as follows: -## LBRACE ELLIPSIS path -## -## WARNING: This example involves spurious reductions. -## This implies that, although the LR(1) items shown above provide an -## accurate view of the past (what has been recognized so far), they -## may provide an INCOMPLETE view of the future (what was expected next). -## In state 104, spurious reduction of production selection -> DOT Ident -## In state 107, spurious reduction of production projection -> Ident selection -## In state 253, spurious reduction of production path -> projection -## - - - interactive_expr: LBRACE ELLIPSIS Ident WILD ## -## Ends in an error in state: 249. +## Ends in an error in state: 251. ## -## path -> Ident . [ COMMA ] -## projection -> Ident . selection [ COMMA ] +## path -> Ident . [ COMMA COLON ] +## projection -> Ident . selection [ COMMA COLON ] ## ## The known suffix of the stack is as follows: ## Ident @@ -1060,7 +1037,7 @@ interactive_expr: LBRACE ELLIPSIS Ident WILD interactive_expr: LBRACE ELLIPSIS WILD ## -## Ends in an error in state: 248. +## Ends in an error in state: 250. ## ## update_record -> LBRACE ELLIPSIS . path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1072,38 +1049,38 @@ interactive_expr: LBRACE ELLIPSIS WILD interactive_expr: LBRACE Ident COLON Bytes VBAR ## -## Ends in an error in state: 482. +## Ends in an error in state: 477. ## -## sequence_or_record_in -> field_assignment . option(more_field_assignments) [ RBRACE ] +## record -> LBRACE field_assignment . option(more_field_assignments) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: -## field_assignment +## LBRACE field_assignment ## ## WARNING: This example involves spurious reductions. ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 464, spurious reduction of production field_assignment -> Ident COLON expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 463, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COLON VBAR ## -## Ends in an error in state: 463. +## Ends in an error in state: 462. ## ## field_assignment -> Ident COLON . expr [ RBRACE COMMA ] ## @@ -1115,7 +1092,7 @@ interactive_expr: LBRACE Ident COLON VBAR interactive_expr: LBRACE Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 468. +## Ends in an error in state: 467. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . [ RBRACE ] ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . COMMA nsepseq(field_assignment_punning,COMMA) [ RBRACE ] @@ -1128,28 +1105,28 @@ interactive_expr: LBRACE Ident COMMA Ident COLON Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 464, spurious reduction of production field_assignment -> Ident COLON expr -## In state 475, spurious reduction of production field_assignment_punning -> field_assignment +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 463, spurious reduction of production field_assignment -> Ident COLON expr +## In state 474, spurious reduction of production field_assignment_punning -> field_assignment ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 472. +## Ends in an error in state: 471. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . [ RBRACE ] ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning . COMMA nsepseq(field_assignment_punning,COMMA) [ RBRACE ] @@ -1162,28 +1139,28 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 464, spurious reduction of production field_assignment -> Ident COLON expr -## In state 475, spurious reduction of production field_assignment_punning -> field_assignment +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 463, spurious reduction of production field_assignment -> Ident COLON expr +## In state 474, spurious reduction of production field_assignment_punning -> field_assignment ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 473. +## Ends in an error in state: 472. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning COMMA . nsepseq(field_assignment_punning,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_assignment_punning,COMMA)) -> field_assignment_punning COMMA . seq(__anonymous_0(field_assignment_punning,COMMA)) [ RBRACE ] @@ -1196,7 +1173,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 469. +## Ends in an error in state: 468. ## ## nsepseq(field_assignment_punning,COMMA) -> field_assignment_punning COMMA . nsepseq(field_assignment_punning,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_assignment_punning,COMMA)) -> field_assignment_punning COMMA . seq(__anonymous_0(field_assignment_punning,COMMA)) [ RBRACE ] @@ -1209,7 +1186,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident WILD ## -## Ends in an error in state: 462. +## Ends in an error in state: 461. ## ## field_assignment -> Ident . COLON expr [ RBRACE COMMA ] ## field_assignment_punning -> Ident . [ RBRACE COMMA ] @@ -1222,7 +1199,7 @@ interactive_expr: LBRACE Ident COMMA Ident WILD interactive_expr: LBRACE Ident COMMA WILD ## -## Ends in an error in state: 461. +## Ends in an error in state: 460. ## ## more_field_assignments -> COMMA . sep_or_term_list(field_assignment_punning,COMMA) [ RBRACE ] ## @@ -1234,24 +1211,26 @@ interactive_expr: LBRACE Ident COMMA WILD interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 460. +## Ends in an error in state: 459. ## ## common_expr -> Ident . [ TIMES SLASH SEMI RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ COLON CAT BOOL_OR BOOL_AND ARROW ] ## field_assignment -> Ident . COLON expr [ RBRACE COMMA ] ## projection -> Ident . selection [ TIMES SLASH SEMI RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ COLON CAT BOOL_OR BOOL_AND ARROW ] -## sequence_or_record_in -> Ident . more_field_assignments [ RBRACE ] +## record -> LBRACE Ident . more_field_assignments RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: -## Ident +## LBRACE Ident ## interactive_expr: LBRACE VBAR ## -## Ends in an error in state: 94. +## Ends in an error in state: 95. ## -## sequence_or_record -> LBRACE . sequence_or_record_in RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## record -> LBRACE . field_assignment option(more_field_assignments) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## record -> LBRACE . Ident more_field_assignments RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] +## sequence -> LBRACE . exprs RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## ## The known suffix of the stack is as follows: @@ -1260,12 +1239,12 @@ interactive_expr: LBRACE VBAR -interactive_expr: LBRACE WILD SEMI WILD SEMI VBAR +interactive_expr: LBRACE WILD SEMI VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 484. ## -## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr SEMI . nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] -## seq(__anonymous_0(expr_with_let_expr,SEMI)) -> expr_with_let_expr SEMI . seq(__anonymous_0(expr_with_let_expr,SEMI)) [ RBRACE ] +## exprs -> expr_with_let_expr SEMI . exprs [ RBRACE ] +## option(SEMI) -> SEMI . [ RBRACE ] ## ## The known suffix of the stack is as follows: ## expr_with_let_expr SEMI @@ -1273,13 +1252,12 @@ interactive_expr: LBRACE WILD SEMI WILD SEMI VBAR -interactive_expr: LBRACE WILD SEMI WILD VBAR +interactive_expr: LBRACE WILD VBAR ## -## Ends in an error in state: 489. +## Ends in an error in state: 483. ## -## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr . [ RBRACE ] -## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr . SEMI nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] -## seq(__anonymous_0(expr_with_let_expr,SEMI)) -> expr_with_let_expr . SEMI seq(__anonymous_0(expr_with_let_expr,SEMI)) [ RBRACE ] +## exprs -> expr_with_let_expr . option(SEMI) [ RBRACE ] +## exprs -> expr_with_let_expr . SEMI exprs [ RBRACE ] ## ## The known suffix of the stack is as follows: ## expr_with_let_expr @@ -1288,27 +1266,27 @@ interactive_expr: LBRACE WILD SEMI WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 401, spurious reduction of production expr_with_let_expr -> expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: LBRACKET VBAR ## -## Ends in an error in state: 92. +## Ends in an error in state: 93. ## ## list_or_spread -> LBRACKET . expr COMMA sep_or_term_list(expr,COMMA) RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## list_or_spread -> LBRACKET . expr COMMA ELLIPSIS expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1322,7 +1300,7 @@ interactive_expr: LBRACKET VBAR interactive_expr: LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 497. +## Ends in an error in state: 492. ## ## list_or_spread -> LBRACKET expr COMMA ELLIPSIS . expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1334,7 +1312,7 @@ interactive_expr: LBRACKET WILD COMMA ELLIPSIS VBAR interactive_expr: LBRACKET WILD COMMA ELLIPSIS WILD VBAR ## -## Ends in an error in state: 498. +## Ends in an error in state: 493. ## ## list_or_spread -> LBRACKET expr COMMA ELLIPSIS expr . RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1345,26 +1323,26 @@ interactive_expr: LBRACKET WILD COMMA ELLIPSIS WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: LBRACKET WILD COMMA VBAR ## -## Ends in an error in state: 496. +## Ends in an error in state: 491. ## ## list_or_spread -> LBRACKET expr COMMA . sep_or_term_list(expr,COMMA) RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## list_or_spread -> LBRACKET expr COMMA . ELLIPSIS expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1377,7 +1355,7 @@ interactive_expr: LBRACKET WILD COMMA VBAR interactive_expr: LBRACKET WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 505. +## Ends in an error in state: 500. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## nseq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1390,7 +1368,7 @@ interactive_expr: LBRACKET WILD COMMA WILD COMMA VBAR interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 508. +## Ends in an error in state: 503. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## seq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1403,7 +1381,7 @@ interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD COMMA VBAR interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD VBAR ## -## Ends in an error in state: 507. +## Ends in an error in state: 502. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1416,26 +1394,26 @@ interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: LBRACKET WILD COMMA WILD VBAR ## -## Ends in an error in state: 504. +## Ends in an error in state: 499. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1448,26 +1426,26 @@ interactive_expr: LBRACKET WILD COMMA WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: LBRACKET WILD VBAR ## -## Ends in an error in state: 495. +## Ends in an error in state: 490. ## ## list_or_spread -> LBRACKET expr . COMMA sep_or_term_list(expr,COMMA) RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## list_or_spread -> LBRACKET expr . COMMA ELLIPSIS expr RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1480,26 +1458,26 @@ interactive_expr: LBRACKET WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: LPAR VBAR ## -## Ends in an error in state: 95. +## Ends in an error in state: 96. ## ## par(expr) -> LPAR . expr RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## par(tuple(disj_expr_level)) -> LPAR . tuple(disj_expr_level) RPAR [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA COLON BOOL_OR Attr ARROW ] @@ -1513,7 +1491,7 @@ interactive_expr: LPAR VBAR interactive_expr: LPAR WILD COMMA Bytes RPAR COLON Ident TIMES ## -## Ends in an error in state: 166. +## Ends in an error in state: 168. ## ## base_expr -> disj_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] @@ -1527,18 +1505,18 @@ interactive_expr: LPAR WILD COMMA Bytes RPAR COLON Ident TIMES ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production option(type_expr_simple_args) -> -## In state 143, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) -## In state 150, spurious reduction of production type_annotation_simple -> COLON type_expr_simple -## In state 151, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple -## In state 152, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) +## In state 136, spurious reduction of production option(type_expr_simple_args) -> +## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 152, spurious reduction of production type_annotation_simple -> COLON type_expr_simple +## In state 153, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple +## In state 154, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) ## interactive_expr: LPAR WILD COMMA Bytes RPAR WILD ## -## Ends in an error in state: 131. +## Ends in an error in state: 133. ## ## disj_expr_level -> par(tuple(disj_expr_level)) . option(type_annotation_simple) [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] ## @@ -1550,7 +1528,7 @@ interactive_expr: LPAR WILD COMMA Bytes RPAR WILD interactive_expr: LPAR WILD COMMA VBAR ## -## Ends in an error in state: 455. +## Ends in an error in state: 454. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1562,7 +1540,7 @@ interactive_expr: LPAR WILD COMMA VBAR interactive_expr: LPAR WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 458. +## Ends in an error in state: 457. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1574,7 +1552,7 @@ interactive_expr: LPAR WILD COMMA WILD COMMA VBAR interactive_expr: LPAR WILD COMMA WILD VBAR ## -## Ends in an error in state: 457. +## Ends in an error in state: 456. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ RPAR Or COMMA BOOL_OR ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ RPAR Or COMMA BOOL_OR ] @@ -1588,23 +1566,23 @@ interactive_expr: LPAR WILD COMMA WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: LPAR WILD VBAR ## -## Ends in an error in state: 454. +## Ends in an error in state: 453. ## ## base_expr -> disj_expr_level . [ RPAR ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ RPAR Or COMMA BOOL_OR ARROW ] @@ -1619,23 +1597,23 @@ interactive_expr: LPAR WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Let Rec VBAR +interactive_expr: Let Rec Verbatim ## -## Ends in an error in state: 355. +## Ends in an error in state: 354. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1647,7 +1625,7 @@ interactive_expr: Let Rec VBAR interactive_expr: Let Rec WILD EQ Bytes SEMI VBAR ## -## Ends in an error in state: 398. +## Ends in an error in state: 397. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1659,7 +1637,7 @@ interactive_expr: Let Rec WILD EQ Bytes SEMI VBAR interactive_expr: Let Rec WILD EQ Bytes VBAR ## -## Ends in an error in state: 397. +## Ends in an error in state: 396. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1670,27 +1648,27 @@ interactive_expr: Let Rec WILD EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 525, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 520, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## -interactive_expr: Let VBAR +interactive_expr: Let Verbatim ## -## Ends in an error in state: 354. +## Ends in an error in state: 353. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## let_expr(expr_with_let_expr) -> seq(Attr) Let . Rec let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] @@ -1703,7 +1681,7 @@ interactive_expr: Let VBAR interactive_expr: Let WILD EQ Bytes SEMI VBAR ## -## Ends in an error in state: 403. +## Ends in an error in state: 402. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1715,7 +1693,7 @@ interactive_expr: Let WILD EQ Bytes SEMI VBAR interactive_expr: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 402. +## Ends in an error in state: 401. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1726,27 +1704,27 @@ interactive_expr: Let WILD EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 525, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 520, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## interactive_expr: MINUS VBAR ## -## Ends in an error in state: 93. +## Ends in an error in state: 94. ## ## unary_expr_level -> MINUS . call_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1758,7 +1736,7 @@ interactive_expr: MINUS VBAR interactive_expr: NOT VBAR ## -## Ends in an error in state: 91. +## Ends in an error in state: 92. ## ## unary_expr_level -> NOT . call_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1770,7 +1748,7 @@ interactive_expr: NOT VBAR interactive_expr: Switch Constr WILD ## -## Ends in an error in state: 115. +## Ends in an error in state: 116. ## ## module_field -> Constr . DOT module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr . DOT Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1783,7 +1761,7 @@ interactive_expr: Switch Constr WILD interactive_expr: Switch LBRACE WILD ## -## Ends in an error in state: 247. +## Ends in an error in state: 249. ## ## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ LBRACE ] ## @@ -1795,7 +1773,7 @@ interactive_expr: Switch LBRACE WILD interactive_expr: Switch LBRACKET VBAR ## -## Ends in an error in state: 234. +## Ends in an error in state: 236. ## ## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ LBRACE ] ## @@ -1807,7 +1785,7 @@ interactive_expr: Switch LBRACKET VBAR interactive_expr: Switch LBRACKET WILD SEMI VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 243. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1820,7 +1798,7 @@ interactive_expr: Switch LBRACKET WILD SEMI VBAR interactive_expr: Switch LBRACKET WILD SEMI WILD SEMI VBAR ## -## Ends in an error in state: 245. +## Ends in an error in state: 247. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1833,7 +1811,7 @@ interactive_expr: Switch LBRACKET WILD SEMI WILD SEMI VBAR interactive_expr: Switch LBRACKET WILD SEMI WILD VBAR ## -## Ends in an error in state: 244. +## Ends in an error in state: 246. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1846,26 +1824,26 @@ interactive_expr: Switch LBRACKET WILD SEMI WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: Switch LBRACKET WILD VBAR ## -## Ends in an error in state: 240. +## Ends in an error in state: 242. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1878,26 +1856,26 @@ interactive_expr: Switch LBRACKET WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: Switch LPAR VBAR ## -## Ends in an error in state: 89. +## Ends in an error in state: 90. ## ## par(expr) -> LPAR . expr RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## unit -> LPAR . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1910,7 +1888,7 @@ interactive_expr: Switch LPAR VBAR interactive_expr: Switch LPAR WILD VBAR ## -## Ends in an error in state: 452. +## Ends in an error in state: 451. ## ## par(expr) -> LPAR expr . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1921,26 +1899,26 @@ interactive_expr: Switch LPAR WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## interactive_expr: Switch VBAR ## -## Ends in an error in state: 85. +## Ends in an error in state: 86. ## ## switch_expr(base_cond) -> Switch . switch_expr_ LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -1952,7 +1930,7 @@ interactive_expr: Switch VBAR interactive_expr: Switch WILD LBRACE VBAR LBRACKET VBAR ## -## Ends in an error in state: 336. +## Ends in an error in state: 335. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ COMMA ARROW ] ## pattern -> LBRACKET . sub_pattern COMMA ELLIPSIS sub_pattern RBRACKET [ ARROW ] @@ -1965,7 +1943,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET VBAR interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 339. +## Ends in an error in state: 338. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS . sub_pattern RBRACKET [ ARROW ] ## @@ -1977,7 +1955,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD ## -## Ends in an error in state: 340. +## Ends in an error in state: 339. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS sub_pattern . RBRACKET [ ARROW ] ## @@ -1989,7 +1967,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA WILD ## -## Ends in an error in state: 338. +## Ends in an error in state: 337. ## ## pattern -> LBRACKET sub_pattern COMMA . ELLIPSIS sub_pattern RBRACKET [ ARROW ] ## @@ -2001,7 +1979,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA WILD interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD WILD ## -## Ends in an error in state: 337. +## Ends in an error in state: 336. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2016,7 +1994,7 @@ interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD WILD interactive_expr: Switch WILD LBRACE VBAR LPAR Bytes RPAR WILD ## -## Ends in an error in state: 343. +## Ends in an error in state: 342. ## ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2028,7 +2006,7 @@ interactive_expr: Switch WILD LBRACE VBAR LPAR Bytes RPAR WILD interactive_expr: Switch WILD LBRACE VBAR VBAR ## -## Ends in an error in state: 513. +## Ends in an error in state: 508. ## ## case_clause(base_cond) -> VBAR . pattern ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2040,7 +2018,7 @@ interactive_expr: Switch WILD LBRACE VBAR VBAR interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 521. +## Ends in an error in state: 516. ## ## nseq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2052,7 +2030,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 523. +## Ends in an error in state: 518. ## ## seq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2064,7 +2042,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Byte interactive_expr: Switch WILD LBRACE VBAR WILD ARROW VBAR ## -## Ends in an error in state: 515. +## Ends in an error in state: 510. ## ## case_clause(base_cond) -> VBAR pattern ARROW . base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2076,7 +2054,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW VBAR interactive_expr: Switch WILD LBRACE VBAR WILD ARROW WILD Type ## -## Ends in an error in state: 516. +## Ends in an error in state: 511. ## ## case_clause(base_cond) -> VBAR pattern ARROW base_cond . option(SEMI) [ VBAR RBRACE ] ## @@ -2087,25 +2065,25 @@ interactive_expr: Switch WILD LBRACE VBAR WILD ARROW WILD Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr ## interactive_expr: Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 514. +## Ends in an error in state: 509. ## ## case_clause(base_cond) -> VBAR pattern . ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2116,16 +2094,16 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 330, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 333, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 342, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 341, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR ## -## Ends in an error in state: 329. +## Ends in an error in state: 328. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2135,10 +2113,22 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR -interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR ## ## Ends in an error in state: 330. ## +## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] +## +## The known suffix of the stack is as follows: +## sub_pattern COMMA +## + + + +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD +## +## Ends in an error in state: 329. +## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ RPAR ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2148,21 +2138,9 @@ interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD -interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR -## -## Ends in an error in state: 336. -## -## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] -## -## The known suffix of the stack is as follows: -## sub_pattern COMMA -## - - - interactive_expr: Switch WILD LBRACE VBAR WILD WILD ## -## Ends in an error in state: 430. +## Ends in an error in state: 429. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ COMMA ] @@ -2175,7 +2153,7 @@ interactive_expr: Switch WILD LBRACE VBAR WILD WILD interactive_expr: Switch WILD LBRACE WILD ## -## Ends in an error in state: 512. +## Ends in an error in state: 507. ## ## switch_expr(base_cond) -> Switch switch_expr_ LBRACE . cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2187,7 +2165,7 @@ interactive_expr: Switch WILD LBRACE WILD interactive_expr: Switch WILD WILD ## -## Ends in an error in state: 511. +## Ends in an error in state: 506. ## ## switch_expr(base_cond) -> Switch switch_expr_ . LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2199,7 +2177,7 @@ interactive_expr: Switch WILD WILD interactive_expr: VBAR ## -## Ends in an error in state: 536. +## Ends in an error in state: 531. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -2211,7 +2189,7 @@ interactive_expr: VBAR interactive_expr: WILD ARROW VBAR ## -## Ends in an error in state: 216. +## Ends in an error in state: 218. ## ## fun_expr(expr) -> disj_expr_level ARROW . expr [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2223,7 +2201,7 @@ interactive_expr: WILD ARROW VBAR interactive_expr: WILD BOOL_AND VBAR ## -## Ends in an error in state: 170. +## Ends in an error in state: 172. ## ## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2235,7 +2213,7 @@ interactive_expr: WILD BOOL_AND VBAR interactive_expr: WILD BOOL_OR VBAR ## -## Ends in an error in state: 214. +## Ends in an error in state: 216. ## ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] ## @@ -2247,7 +2225,7 @@ interactive_expr: WILD BOOL_OR VBAR interactive_expr: WILD CAT VBAR ## -## Ends in an error in state: 193. +## Ends in an error in state: 195. ## ## bin_op(add_expr_level,CAT,cat_expr_level) -> add_expr_level CAT . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2259,7 +2237,7 @@ interactive_expr: WILD CAT VBAR interactive_expr: WILD COLON Ident LPAR Ident VBAR ## -## Ends in an error in state: 136. +## Ends in an error in state: 138. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2271,15 +2249,15 @@ interactive_expr: WILD COLON Ident LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production option(type_expr_simple_args) -> -## In state 143, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 136, spurious reduction of production option(type_expr_simple_args) -> +## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: WILD COLON Ident LPAR WILD ## -## Ends in an error in state: 135. +## Ends in an error in state: 137. ## ## par(nsepseq(type_expr_simple,COMMA)) -> LPAR . nsepseq(type_expr_simple,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2291,7 +2269,7 @@ interactive_expr: WILD COLON Ident LPAR WILD interactive_expr: WILD COLON Ident WILD ## -## Ends in an error in state: 134. +## Ends in an error in state: 136. ## ## type_expr_simple -> Ident . option(type_expr_simple_args) [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2303,7 +2281,7 @@ interactive_expr: WILD COLON Ident WILD interactive_expr: WILD COLON LPAR Ident ARROW Ident VBAR ## -## Ends in an error in state: 146. +## Ends in an error in state: 148. ## ## type_expr_simple -> LPAR type_expr_simple ARROW type_expr_simple . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2314,15 +2292,15 @@ interactive_expr: WILD COLON LPAR Ident ARROW Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production option(type_expr_simple_args) -> -## In state 143, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 136, spurious reduction of production option(type_expr_simple_args) -> +## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: WILD COLON LPAR Ident ARROW WILD ## -## Ends in an error in state: 145. +## Ends in an error in state: 147. ## ## type_expr_simple -> LPAR type_expr_simple ARROW . type_expr_simple RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2334,7 +2312,7 @@ interactive_expr: WILD COLON LPAR Ident ARROW WILD interactive_expr: WILD COLON LPAR Ident COMMA WILD ## -## Ends in an error in state: 137. +## Ends in an error in state: 139. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple COMMA . nsepseq(type_expr_simple,COMMA) [ RPAR ] ## @@ -2346,7 +2324,7 @@ interactive_expr: WILD COLON LPAR Ident COMMA WILD interactive_expr: WILD COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 153. +## Ends in an error in state: 155. ## ## add_expr_level -> mult_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2361,7 +2339,7 @@ interactive_expr: WILD COLON LPAR Ident RPAR WILD interactive_expr: WILD COLON LPAR Ident VBAR ## -## Ends in an error in state: 144. +## Ends in an error in state: 146. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2374,15 +2352,15 @@ interactive_expr: WILD COLON LPAR Ident VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 134, spurious reduction of production option(type_expr_simple_args) -> -## In state 143, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 136, spurious reduction of production option(type_expr_simple_args) -> +## In state 145, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: WILD COLON LPAR WILD ## -## Ends in an error in state: 133. +## Ends in an error in state: 135. ## ## type_expr_simple -> LPAR . nsepseq(type_expr_simple,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## type_expr_simple -> LPAR . type_expr_simple ARROW type_expr_simple RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2395,7 +2373,7 @@ interactive_expr: WILD COLON LPAR WILD interactive_expr: WILD COLON WILD ## -## Ends in an error in state: 132. +## Ends in an error in state: 134. ## ## type_annotation_simple -> COLON . type_expr_simple [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2407,7 +2385,7 @@ interactive_expr: WILD COLON WILD interactive_expr: WILD EQEQ VBAR ## -## Ends in an error in state: 203. +## Ends in an error in state: 205. ## ## bin_op(comp_expr_level,EQEQ,cat_expr_level) -> comp_expr_level EQEQ . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2419,7 +2397,7 @@ interactive_expr: WILD EQEQ VBAR interactive_expr: WILD GE VBAR ## -## Ends in an error in state: 201. +## Ends in an error in state: 203. ## ## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2431,7 +2409,7 @@ interactive_expr: WILD GE VBAR interactive_expr: WILD GT VBAR ## -## Ends in an error in state: 199. +## Ends in an error in state: 201. ## ## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2443,7 +2421,7 @@ interactive_expr: WILD GT VBAR interactive_expr: WILD LE VBAR ## -## Ends in an error in state: 197. +## Ends in an error in state: 199. ## ## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2455,7 +2433,7 @@ interactive_expr: WILD LE VBAR interactive_expr: WILD LPAR VBAR ## -## Ends in an error in state: 157. +## Ends in an error in state: 159. ## ## call_expr -> core_expr LPAR . nsepseq(expr,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## unit -> LPAR . RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2468,7 +2446,7 @@ interactive_expr: WILD LPAR VBAR interactive_expr: WILD LPAR WILD COMMA VBAR ## -## Ends in an error in state: 164. +## Ends in an error in state: 166. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -2480,7 +2458,7 @@ interactive_expr: WILD LPAR WILD COMMA VBAR interactive_expr: WILD LPAR WILD VBAR ## -## Ends in an error in state: 163. +## Ends in an error in state: 165. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -2492,26 +2470,26 @@ interactive_expr: WILD LPAR WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond ## Missing `)`. interactive_expr: WILD LT VBAR ## -## Ends in an error in state: 195. +## Ends in an error in state: 197. ## ## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2523,7 +2501,7 @@ interactive_expr: WILD LT VBAR interactive_expr: WILD MINUS VBAR ## -## Ends in an error in state: 191. +## Ends in an error in state: 193. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2535,7 +2513,7 @@ interactive_expr: WILD MINUS VBAR interactive_expr: WILD MINUS WILD COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 192. +## Ends in an error in state: 194. ## ## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2550,7 +2528,7 @@ interactive_expr: WILD MINUS WILD COLON LPAR Ident RPAR WILD interactive_expr: WILD Mod VBAR ## -## Ends in an error in state: 189. +## Ends in an error in state: 191. ## ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2562,7 +2540,7 @@ interactive_expr: WILD Mod VBAR interactive_expr: WILD NE VBAR ## -## Ends in an error in state: 172. +## Ends in an error in state: 174. ## ## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or NE Let LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2574,7 +2552,7 @@ interactive_expr: WILD NE VBAR interactive_expr: WILD Or VBAR ## -## Ends in an error in state: 167. +## Ends in an error in state: 169. ## ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE Or Let EOF COMMA BOOL_OR Attr ARROW ] ## @@ -2586,7 +2564,7 @@ interactive_expr: WILD Or VBAR interactive_expr: WILD PLUS VBAR ## -## Ends in an error in state: 185. +## Ends in an error in state: 187. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2598,7 +2576,7 @@ interactive_expr: WILD PLUS VBAR interactive_expr: WILD PLUS WILD COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 186. +## Ends in an error in state: 188. ## ## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ VBAR Type SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2613,7 +2591,7 @@ interactive_expr: WILD PLUS WILD COLON LPAR Ident RPAR WILD interactive_expr: WILD SLASH VBAR ## -## Ends in an error in state: 187. +## Ends in an error in state: 189. ## ## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2625,7 +2603,7 @@ interactive_expr: WILD SLASH VBAR interactive_expr: WILD TIMES VBAR ## -## Ends in an error in state: 154. +## Ends in an error in state: 156. ## ## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -2637,7 +2615,7 @@ interactive_expr: WILD TIMES VBAR interactive_expr: WILD VBAR ## -## Ends in an error in state: 538. +## Ends in an error in state: 533. ## ## interactive_expr -> expr_with_let_expr . EOF [ # ] ## @@ -2648,27 +2626,27 @@ interactive_expr: WILD VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 401, spurious reduction of production expr_with_let_expr -> expr +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: WILD WILD ## -## Ends in an error in state: 156. +## Ends in an error in state: 158. ## ## call_expr -> core_expr . LPAR nsepseq(expr,COMMA) RPAR [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## call_expr -> core_expr . unit [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -2694,7 +2672,7 @@ contract: Attr WILD contract: Let Ident COLON String WILD ## -## Ends in an error in state: 377. +## Ends in an error in state: 376. ## ## let_binding -> Ident option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -2706,7 +2684,7 @@ contract: Let Ident COLON String WILD contract: Let Ident EQ VBAR ## -## Ends in an error in state: 378. +## Ends in an error in state: 377. ## ## let_binding -> Ident option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -2723,7 +2701,7 @@ let func = (a: int, b: int) => a + b; contract: Let Ident WILD ## -## Ends in an error in state: 376. +## Ends in an error in state: 375. ## ## let_binding -> Ident . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> Ident . [ COMMA ] @@ -2736,7 +2714,7 @@ contract: Let Ident WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 312. +## Ends in an error in state: 311. ## ## nsepseq(field_pattern,COMMA) -> field_pattern COMMA . nsepseq(field_pattern,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_pattern,COMMA)) -> field_pattern COMMA . seq(__anonymous_0(field_pattern,COMMA)) [ RBRACE ] @@ -2749,7 +2727,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes WILD ## -## Ends in an error in state: 311. +## Ends in an error in state: 310. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -2763,7 +2741,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes WILD contract: Let LBRACE Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 308. +## Ends in an error in state: 307. ## ## nsepseq(field_pattern,COMMA) -> field_pattern COMMA . nsepseq(field_pattern,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_pattern,COMMA)) -> field_pattern COMMA . seq(__anonymous_0(field_pattern,COMMA)) [ RBRACE ] @@ -2776,7 +2754,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA WILD contract: Let LBRACE Ident EQ Bytes RBRACE COLON String WILD ## -## Ends in an error in state: 390. +## Ends in an error in state: 389. ## ## let_binding -> record_pattern option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -2788,7 +2766,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE COLON String WILD contract: Let LBRACE Ident EQ Bytes RBRACE EQ VBAR ## -## Ends in an error in state: 391. +## Ends in an error in state: 390. ## ## let_binding -> record_pattern option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -2800,7 +2778,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE EQ VBAR contract: Let LBRACE Ident EQ Bytes RBRACE WILD ## -## Ends in an error in state: 389. +## Ends in an error in state: 388. ## ## let_binding -> record_pattern . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> record_pattern . [ COMMA ] @@ -2813,7 +2791,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE WILD contract: Let LBRACE Ident EQ Bytes WILD ## -## Ends in an error in state: 307. +## Ends in an error in state: 306. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -2827,7 +2805,7 @@ contract: Let LBRACE Ident EQ Bytes WILD contract: Let LBRACE Ident EQ VBAR ## -## Ends in an error in state: 285. +## Ends in an error in state: 284. ## ## field_pattern -> Ident EQ . sub_pattern [ RBRACE COMMA ] ## @@ -2839,7 +2817,7 @@ contract: Let LBRACE Ident EQ VBAR contract: Let LBRACE Ident WILD ## -## Ends in an error in state: 284. +## Ends in an error in state: 283. ## ## field_pattern -> Ident . EQ sub_pattern [ RBRACE COMMA ] ## @@ -2851,7 +2829,7 @@ contract: Let LBRACE Ident WILD contract: Let LBRACE WILD ## -## Ends in an error in state: 283. +## Ends in an error in state: 282. ## ## record_pattern -> LBRACE . sep_or_term_list(field_pattern,COMMA) RBRACE [ SEMI RPAR RBRACKET RBRACE EQ COMMA COLON ARROW ] ## @@ -2863,7 +2841,7 @@ contract: Let LBRACE WILD contract: Let LPAR C_Some VBAR ## -## Ends in an error in state: 290. +## Ends in an error in state: 289. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -2875,7 +2853,7 @@ contract: Let LPAR C_Some VBAR contract: Let LPAR Constr LBRACKET VBAR ## -## Ends in an error in state: 282. +## Ends in an error in state: 281. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -2887,7 +2865,7 @@ contract: Let LPAR Constr LBRACKET VBAR contract: Let LPAR Constr LBRACKET WILD SEMI VBAR ## -## Ends in an error in state: 315. +## Ends in an error in state: 314. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern SEMI . nsepseq(sub_pattern,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(sub_pattern,SEMI)) -> sub_pattern SEMI . seq(__anonymous_0(sub_pattern,SEMI)) [ RBRACKET ] @@ -2900,7 +2878,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI VBAR contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI VBAR ## -## Ends in an error in state: 317. +## Ends in an error in state: 316. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern SEMI . nsepseq(sub_pattern,SEMI) [ RBRACKET ] ## seq(__anonymous_0(sub_pattern,SEMI)) -> sub_pattern SEMI . seq(__anonymous_0(sub_pattern,SEMI)) [ RBRACKET ] @@ -2913,7 +2891,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI VBAR contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD ## -## Ends in an error in state: 316. +## Ends in an error in state: 315. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2927,7 +2905,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD contract: Let LPAR Constr LBRACKET WILD WILD ## -## Ends in an error in state: 314. +## Ends in an error in state: 313. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2941,7 +2919,7 @@ contract: Let LPAR Constr LBRACKET WILD WILD contract: Let LPAR Constr LPAR VBAR ## -## Ends in an error in state: 281. +## Ends in an error in state: 280. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## par(sub_pattern) -> LPAR . sub_pattern RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -2955,7 +2933,7 @@ contract: Let LPAR Constr LPAR VBAR contract: Let LPAR Constr LPAR WILD COMMA Bytes ARROW ## -## Ends in an error in state: 334. +## Ends in an error in state: 333. ## ## par(ptuple) -> LPAR ptuple . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -2966,16 +2944,16 @@ contract: Let LPAR Constr LPAR WILD COMMA Bytes ARROW ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 330, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 333, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 326, spurious reduction of production ptuple -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 325, spurious reduction of production ptuple -> tuple(sub_pattern) ## contract: Let LPAR Constr LPAR WILD WILD ## -## Ends in an error in state: 327. +## Ends in an error in state: 326. ## ## par(sub_pattern) -> LPAR sub_pattern . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ] @@ -2988,7 +2966,7 @@ contract: Let LPAR Constr LPAR WILD WILD contract: Let LPAR Constr SEMI ## -## Ends in an error in state: 374. +## Ends in an error in state: 373. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ RPAR EQ COMMA COLON ] ## @@ -2999,15 +2977,15 @@ contract: Let LPAR Constr SEMI ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 289, spurious reduction of production constr_pattern -> Constr -## In state 373, spurious reduction of production closed_irrefutable -> constr_pattern +## In state 288, spurious reduction of production constr_pattern -> Constr +## In state 372, spurious reduction of production closed_irrefutable -> constr_pattern ## contract: Let LPAR Constr VBAR ## -## Ends in an error in state: 289. +## Ends in an error in state: 288. ## ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3020,7 +2998,7 @@ contract: Let LPAR Constr VBAR contract: Let LPAR RPAR COLON String WILD ## -## Ends in an error in state: 381. +## Ends in an error in state: 380. ## ## let_binding -> unit option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3032,7 +3010,7 @@ contract: Let LPAR RPAR COLON String WILD contract: Let LPAR RPAR EQ VBAR ## -## Ends in an error in state: 382. +## Ends in an error in state: 381. ## ## let_binding -> unit option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3044,7 +3022,7 @@ contract: Let LPAR RPAR EQ VBAR contract: Let LPAR RPAR WILD ## -## Ends in an error in state: 380. +## Ends in an error in state: 379. ## ## let_binding -> unit . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> unit . [ COMMA ] @@ -3055,9 +3033,9 @@ contract: Let LPAR RPAR WILD -contract: Let LPAR VBAR +contract: Let LPAR Verbatim ## -## Ends in an error in state: 356. +## Ends in an error in state: 355. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ RPAR EQ COMMA COLON ] ## unit -> LPAR . RPAR [ RPAR EQ COMMA COLON ] @@ -3070,7 +3048,7 @@ contract: Let LPAR VBAR contract: Let LPAR WILD COLON WILD ## -## Ends in an error in state: 371. +## Ends in an error in state: 370. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -3082,7 +3060,7 @@ contract: Let LPAR WILD COLON WILD contract: Let LPAR WILD COMMA Ident EQ ## -## Ends in an error in state: 370. +## Ends in an error in state: 369. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -3094,16 +3072,16 @@ contract: Let LPAR WILD COMMA Ident EQ ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 364, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 369, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) -## In state 361, spurious reduction of production irrefutable -> tuple(sub_irrefutable) +## In state 363, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 368, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 360, spurious reduction of production irrefutable -> tuple(sub_irrefutable) ## contract: Let LPAR WILD RPAR COLON String WILD ## -## Ends in an error in state: 394. +## Ends in an error in state: 393. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3115,7 +3093,7 @@ contract: Let LPAR WILD RPAR COLON String WILD contract: Let LPAR WILD RPAR EQ VBAR ## -## Ends in an error in state: 395. +## Ends in an error in state: 394. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3127,7 +3105,7 @@ contract: Let LPAR WILD RPAR EQ VBAR contract: Let LPAR WILD RPAR WILD ## -## Ends in an error in state: 393. +## Ends in an error in state: 392. ## ## let_binding -> par(closed_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> par(closed_irrefutable) . [ COMMA ] @@ -3140,7 +3118,7 @@ contract: Let LPAR WILD RPAR WILD contract: Let LPAR WILD WILD ## -## Ends in an error in state: 362. +## Ends in an error in state: 361. ## ## irrefutable -> sub_irrefutable . [ RPAR COLON ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR COLON ] @@ -3151,9 +3129,9 @@ contract: Let LPAR WILD WILD -contract: Let Rec VBAR +contract: Let Rec Verbatim ## -## Ends in an error in state: 526. +## Ends in an error in state: 521. ## ## let_declaration -> seq(Attr) Let Rec . let_binding [ Type SEMI Let EOF Attr ] ## @@ -3163,7 +3141,7 @@ contract: Let Rec VBAR -contract: Let VBAR +contract: Let Verbatim ## ## Ends in an error in state: 76. ## @@ -3202,7 +3180,7 @@ contract: Let WILD COLON WILD contract: Let WILD COMMA Ident COLON String WILD ## -## Ends in an error in state: 385. +## Ends in an error in state: 384. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3214,7 +3192,7 @@ contract: Let WILD COMMA Ident COLON String WILD contract: Let WILD COMMA Ident EQ VBAR ## -## Ends in an error in state: 386. +## Ends in an error in state: 385. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3226,7 +3204,7 @@ contract: Let WILD COMMA Ident EQ VBAR contract: Let WILD COMMA Ident RPAR ## -## Ends in an error in state: 384. +## Ends in an error in state: 383. ## ## let_binding -> tuple(sub_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3237,15 +3215,15 @@ contract: Let WILD COMMA Ident RPAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 364, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 369, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 363, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 368, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) ## -contract: Let WILD COMMA VBAR +contract: Let WILD COMMA Verbatim ## -## Ends in an error in state: 363. +## Ends in an error in state: 362. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3255,9 +3233,9 @@ contract: Let WILD COMMA VBAR -contract: Let WILD COMMA WILD COMMA VBAR +contract: Let WILD COMMA WILD COMMA Verbatim ## -## Ends in an error in state: 365. +## Ends in an error in state: 364. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3269,7 +3247,7 @@ contract: Let WILD COMMA WILD COMMA VBAR contract: Let WILD COMMA WILD WILD ## -## Ends in an error in state: 364. +## Ends in an error in state: 363. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ RPAR EQ COLON ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] @@ -3282,7 +3260,7 @@ contract: Let WILD COMMA WILD WILD contract: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 529. +## Ends in an error in state: 524. ## ## declaration -> let_declaration . option(SEMI) [ Type Let EOF Attr ] ## @@ -3293,21 +3271,21 @@ contract: Let WILD EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 156, spurious reduction of production call_expr_level_in -> core_expr -## In state 174, spurious reduction of production option(type_annotation_simple) -> -## In state 175, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 176, spurious reduction of production unary_expr_level -> call_expr_level -## In state 129, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 153, spurious reduction of production add_expr_level -> mult_expr_level -## In state 184, spurious reduction of production cat_expr_level -> add_expr_level -## In state 205, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 212, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 219, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 166, spurious reduction of production base_expr -> disj_expr_level -## In state 223, spurious reduction of production base_cond -> base_expr -## In state 224, spurious reduction of production expr -> base_cond -## In state 525, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## In state 528, spurious reduction of production let_declaration -> seq(Attr) Let let_binding +## In state 158, spurious reduction of production call_expr_level_in -> core_expr +## In state 176, spurious reduction of production option(type_annotation_simple) -> +## In state 177, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 178, spurious reduction of production unary_expr_level -> call_expr_level +## In state 131, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 155, spurious reduction of production add_expr_level -> mult_expr_level +## In state 186, spurious reduction of production cat_expr_level -> add_expr_level +## In state 207, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 214, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 221, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 168, spurious reduction of production base_expr -> disj_expr_level +## In state 225, spurious reduction of production base_cond -> base_expr +## In state 226, spurious reduction of production expr -> base_cond +## In state 520, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 523, spurious reduction of production let_declaration -> seq(Attr) Let let_binding ## @@ -3388,7 +3366,7 @@ contract: Type Ident EQ Constr LPAR WILD contract: Type Ident EQ Constr SEMI WILD ## -## Ends in an error in state: 533. +## Ends in an error in state: 528. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -3816,3 +3794,4 @@ contract: WILD ## + diff --git a/src/passes/02-concrete_to_imperative/cameligo.ml b/src/passes/02-concrete_to_imperative/cameligo.ml index 79e0c5acc..73fae2fda 100644 --- a/src/passes/02-concrete_to_imperative/cameligo.ml +++ b/src/passes/02-concrete_to_imperative/cameligo.ml @@ -352,38 +352,32 @@ let rec compile_expression : let compile_selection : Raw.selection -> access = fun s -> match s with | FieldName property -> Access_record property.value - | Component index -> (Access_tuple (snd index.value)) - in - let compile_path : Raw.path -> string * access list = fun p -> - match p with - | Raw.Name v -> (v.value , []) - | Raw.Path p -> ( - let p' = p.value in - let var = p'.struct_name.value in - let path = p'.field_path in - let path' = List.map compile_selection @@ npseq_to_list path in - (var , path') - ) - in - let compile_update = fun (u:Raw.update Region.reg) -> - let (u, loc) = r_split u in - let (name, path) = compile_path u.record in - let record = match path with - | [] -> e_variable (Var.of_name name) - | _ -> e_accessor (e_variable (Var.of_name name)) path in - let updates = u.updates.value.ne_elements in - let%bind updates' = - let aux (f:Raw.field_path_assign Raw.reg) = - let (f,_) = r_split f in - let%bind expr = compile_expression f.field_expr in - ok ( List.map compile_selection (npseq_to_list f.field_path), expr) - in - bind_map_list aux @@ npseq_to_list updates - in - let aux ur (path, expr) = ok @@ e_update ~loc ur path expr in - bind_fold_list aux record updates' - in - trace (abstracting_expr t) @@ + | Component index -> (Access_tuple (snd index.value)) in + + let compile_path : Raw.path -> string * access list = function + Raw.Name v -> v.value, [] + | Raw.Path {value; _} -> + let Raw.{struct_name; field_path; _} = value in + let var = struct_name.value in + let path = List.map compile_selection @@ npseq_to_list field_path + in var, path in + +let compile_update (u: Raw.update Region.reg) = + let u, loc = r_split u in + let name, path = compile_path u.record in + let var = e_variable (Var.of_name name) in + let record = if path = [] then var else e_accessor var path in + let updates = u.updates.value.ne_elements in + let%bind updates' = + let aux (f: Raw.field_path_assignment Raw.reg) = + let f, _ = r_split f in + let%bind expr = compile_expression f.field_expr + in ok (compile_path f.field_path, expr) + in bind_map_list aux @@ npseq_to_list updates in + let aux ur ((var, path), expr) = + ok @@ e_update ~loc ur (Access_record var :: path) expr + in bind_fold_list aux record updates' +in trace (abstracting_expr t) @@ match t with Raw.ELetIn e -> let Raw.{kwd_rec; binding; body; attributes; _} = e.value in diff --git a/src/passes/02-concrete_to_imperative/pascaligo.ml b/src/passes/02-concrete_to_imperative/pascaligo.ml index 2d96e76e9..942b5fd04 100644 --- a/src/passes/02-concrete_to_imperative/pascaligo.ml +++ b/src/passes/02-concrete_to_imperative/pascaligo.ml @@ -328,7 +328,8 @@ let rec compile_expression (t:Raw.expr) : expr result = | ERecord r -> let%bind fields = bind_list @@ List.map (fun ((k : _ Raw.reg), v) -> let%bind v = compile_expression v in ok (k.value, v)) - @@ List.map (fun (x:Raw.field_assign Raw.reg) -> (x.value.field_name, x.value.field_expr)) + @@ List.map (fun (x:Raw.field_assignment Raw.reg) -> + (x.value.field_name, x.value.field_expr)) @@ npseq_to_list r.value.ne_elements in let aux prev (k, v) = SMap.add k v prev in return @@ e_record (List.fold_left aux SMap.empty fields) @@ -458,36 +459,28 @@ let rec compile_expression (t:Raw.expr) : expr result = let (f , loc) = r_split f in let%bind (_ty_opt, f') = compile_fun_expression ~loc f in return @@ f' - - -and compile_update = fun (u:Raw.update Region.reg) -> - let (u, loc) = r_split u in - let (name, path) = compile_path u.record in - let record = match path with - | [] -> e_variable (Var.of_name name) - | _ -> e_accessor (e_variable (Var.of_name name)) path in - let updates = u.updates.value.ne_elements in +and compile_update (u: Raw.update Region.reg) = + let u, loc = r_split u in + let name, path = compile_path u.record in + let var = e_variable (Var.of_name name) in + let record = if path = [] then var else e_accessor var path in + let updates = u.updates.value.ne_elements in let%bind updates' = - let aux (f:Raw.field_path_assign Raw.reg) = - let (f,_) = r_split f in - let%bind expr = compile_expression f.field_expr in - ok ( List.map compile_selection (npseq_to_list f.field_path), expr) - in - bind_map_list aux @@ npseq_to_list updates in - let aux ur (path, expr) = ok @@ e_update ~loc ur path expr + let aux (f: Raw.field_path_assignment Raw.reg) = + let f, _ = r_split f in + let%bind expr = compile_expression f.field_expr + in ok (compile_path f.field_path, expr) + in bind_map_list aux @@ npseq_to_list updates in + let aux ur ((var, path), expr) = + ok @@ e_update ~loc ur (Access_record var :: path) expr in bind_fold_list aux record updates' and compile_logic_expression (t:Raw.logic_expr) : expression result = - let return x = ok x in match t with - | BoolExpr (False reg) -> ( - let loc = Location.lift reg in - return @@ e_bool ~loc false - ) - | BoolExpr (True reg) -> ( - let loc = Location.lift reg in - return @@ e_bool ~loc true - ) + | BoolExpr (False reg) -> + ok @@ e_bool ~loc:(Location.lift reg) false + | BoolExpr (True reg) -> + ok @@ e_bool ~loc:(Location.lift reg) true | BoolExpr (Or b) -> compile_binop "OR" b | BoolExpr (And b) -> @@ -857,25 +850,25 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let (a , loc) = r_split a in let%bind value_expr = compile_expression a.rhs in match a.lhs with - | Path path -> ( - let (name , path') = compile_path path in + | Path path -> + let name , path' = compile_path path in let name = Var.of_name name in return_statement @@ e_assign ~loc name path' value_expr - ) - | MapPath v -> ( + | MapPath v -> let v' = v.value in let%bind (varname,map,path) = match v'.path with - | Name name -> ok (name.value , e_variable (Var.of_name name.value), []) + | Name name -> + ok (name.value , + e_variable (Var.of_name name.value), []) | Path p -> - let (name,p') = compile_path v'.path in - let%bind accessor = compile_projection p in - ok @@ (name , accessor , p') - in - let%bind key_expr = compile_expression v'.index.value.inside in + let name, p' = compile_path v'.path in + let%bind accessor = compile_projection p in + ok @@ (name, accessor, p') in + let%bind key_expr = + compile_expression v'.index.value.inside in let expr' = e_map_add key_expr value_expr map in let varname = Var.of_name varname in return_statement @@ e_assign ~loc varname path expr' - ) ) | CaseInstr c -> ( let (c , loc) = r_split c in @@ -891,7 +884,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res LongBlock {value; _} -> compile_block value | ShortBlock {value; _} -> - compile_statements @@ fst value.inside in + compile_statements @@ fst value.inside in let%bind case_clause = case_clause None in ok (x.value.pattern, case_clause) in bind_list @@ -902,13 +895,13 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res ) | RecordPatch r -> let reg = r.region in - let (r,loc) = r_split r in - let aux (fa :Raw.field_assign Raw.reg) : Raw.field_path_assign Raw.reg = - {value = {field_path = FieldName fa.value.field_name, []; + let r, loc = r_split r in + let aux (fa: Raw.field_assignment Raw.reg) : Raw.field_path_assignment Raw.reg = + {value = {field_path = Name fa.value.field_name; assignment = fa.value.assignment; field_expr = fa.value.field_expr}; region = fa.region} in - let update : Raw.field_path_assign Raw.reg Raw.ne_injection Raw.reg = { + let update : Raw.field_path_assignment Raw.reg Raw.ne_injection Raw.reg = { value = Raw.map_ne_injection aux r.record_inj.value; region = r.record_inj.region} in let u : Raw.update = { @@ -916,12 +909,12 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res kwd_with = r.kwd_with; updates = update} in let%bind expr = compile_update {value=u;region=reg} in - let (name , access_path) = compile_path r.path in + let name, access_path = compile_path r.path in let name = Var.of_name name in return_statement @@ e_assign ~loc name access_path expr | MapPatch patch -> - let (map_p, loc) = r_split patch in - let (name, access_path) = compile_path map_p.path in + let map_p, loc = r_split patch in + let name, access_path = compile_path map_p.path in let%bind inj = bind_list @@ List.map (fun (x:Raw.binding Region.reg) -> let x = x.value in @@ -931,7 +924,7 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res in ok @@ (key', value') ) @@ npseq_to_list map_p.map_inj.value.ne_elements in - match inj with + (match inj with | [] -> return_statement @@ e_skip ~loc () | _ :: _ -> let assigns = List.fold_right @@ -939,10 +932,10 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res inj (e_accessor ~loc (e_variable (Var.of_name name)) access_path) and name = Var.of_name name in - return_statement @@ e_assign ~loc name access_path assigns + return_statement @@ e_assign ~loc name access_path assigns) | SetPatch patch -> ( - let (setp, loc) = r_split patch in - let (name , access_path) = compile_path setp.path in + let setp, loc = r_split patch in + let name, access_path = compile_path setp.path in let%bind inj = bind_list @@ List.map compile_expression @@ @@ -956,13 +949,13 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let name = Var.of_name name in return_statement @@ e_assign ~loc name access_path assigns ) - | MapRemove r -> ( + | MapRemove r -> let (v , loc) = r_split r in let key = v.key in let%bind (name,map,path) = match v.map with | Name v -> ok (v.value , e_variable (Var.of_name v.value) , []) | Path p -> - let (name,p') = compile_path v.map in + let name, p' = compile_path v.map in let%bind accessor = compile_projection p in ok @@ (name , accessor , p') in @@ -970,37 +963,32 @@ and compile_single_instruction : Raw.instruction -> (_ -> expression result) res let expr = e_constant ~loc C_MAP_REMOVE [key' ; map] in let name = Var.of_name name in return_statement @@ e_assign ~loc name path expr - ) - | SetRemove r -> ( - let (set_rm, loc) = r_split r in - let%bind (name, set, path) = match set_rm.set with - | Name v -> ok (v.value, e_variable (Var.of_name v.value), []) + | SetRemove r -> + let set_rm, loc = r_split r in + let%bind (name, set, path) = + match set_rm.set with + | Name v -> + ok (v.value, e_variable (Var.of_name v.value), []) | Path path -> - let(name, p') = compile_path set_rm.set in - let%bind accessor = compile_projection path in - ok @@ (name, accessor, p') - in + let name, p' = compile_path set_rm.set in + let%bind accessor = compile_projection path in + ok @@ (name, accessor, p') in let%bind removed' = compile_expression set_rm.element in let expr = e_constant ~loc C_SET_REMOVE [removed' ; set] in let name = Var.of_name name in return_statement @@ e_assign ~loc name path expr - ) -and compile_path : Raw.path -> string * access list = fun p -> - match p with - | Raw.Name v -> (v.value , []) - | Raw.Path p -> ( - let p' = p.value in - let var = p'.struct_name.value in - let path = p'.field_path in - let path' = List.map compile_selection @@ npseq_to_list path in - (var , path') - ) +and compile_path : Raw.path -> string * access list = function + Raw.Name v -> v.value, [] +| Raw.Path {value; _} -> + let Raw.{struct_name; field_path; _} = value in + let var = struct_name.value in + let path = List.map compile_selection @@ npseq_to_list field_path + in var, path -and compile_selection : Raw.selection -> access = fun s -> - match s with - | FieldName property -> Access_record property.value - | Component index -> (Access_tuple (snd index.value)) +and compile_selection : Raw.selection -> access = function + FieldName property -> Access_record property.value +| Component index -> Access_tuple (snd index.value) and compile_cases : (Raw.pattern * expression) list -> matching_expr result = fun t -> let open Raw in