diff --git a/src/bin/expect_tests/error_messages_tests.ml b/src/bin/expect_tests/error_messages_tests.ml new file mode 100644 index 000000000..284b21e89 --- /dev/null +++ b/src/bin/expect_tests/error_messages_tests.ml @@ -0,0 +1,38 @@ +open Cli_expect + +let%expect_test _ = + run_ligo_bad [ "compile-contract" ; "../../test/contracts/negative/gitlab_111.religo" ; "main" ] ; + [%expect {| + ligo: : Parse error in file "gitlab_111.religo", line 2, characters 0-3, after "=" and before "let": + This is an incorrect let binding. + - + Examples of correct let bindings: + let a: int = 4; + let (a: int, b: int) = (1, 2); + let func = (a: int, b: int) => a + b; + {} + + + If you're not sure how to fix this error, you can + do one of the following: + + * Visit our documentation: https://ligolang.org/docs/intro/what-and-why/ + * Ask a question on our Discord: https://discord.gg/9rhYaEt + * Open a gitlab issue: https://gitlab.com/ligolang/ligo/issues/new + * Check the changelog by running 'ligo changelog' |} ] ; + + run_ligo_bad [ "compile-contract" ; "../../test/contracts/negative/missing_rpar.religo" ; "main" ] ; + [%expect {| + ligo: : Parse error in file "missing_rpar.religo", line 5, characters 0-3, after "m" and before "let": + Missing `)`. + {} + + + If you're not sure how to fix this error, you can + do one of the following: + + * Visit our documentation: https://ligolang.org/docs/intro/what-and-why/ + * Ask a question on our Discord: https://discord.gg/9rhYaEt + * Open a gitlab issue: https://gitlab.com/ligolang/ligo/issues/new + * Check the changelog by running 'ligo changelog' |} ] ; + diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 8c7fb65a6..48765c19a 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -159,8 +159,8 @@ declarations: | declaration declarations { Utils.nseq_cons $1 $2 } declaration: -| type_decl ";" { TypeDecl $1 } -| let_declaration ";" { Let $1 } +| type_decl ";"? { TypeDecl $1 } +| let_declaration ";"? { Let $1 } (* Type declarations *) @@ -226,7 +226,7 @@ core_type: in TApp {region; value = constr,arg} } sum_type: - "|" nsepseq(variant,"|") { + ioption("|") nsepseq(variant,"|") { Scoping.check_variants (Utils.nsepseq_to_list $2); let region = nsepseq_to_region (fun x -> x.region) $2 in TSum {region; value=$2} } @@ -418,13 +418,13 @@ unit: (* Expressions *) interactive_expr: - expr EOF { $1 } + expr_with_let_expr EOF { $1 } expr: base_cond__open(expr) | switch_expr(base_cond) { $1 } base_cond__open(x): - base_expr(x) | conditional(x) { $1 } + base_expr(x) | conditional(expr_with_let_expr) { $1 } base_cond: base_cond__open(base_cond) { $1 } @@ -567,7 +567,7 @@ fun_expr: in EFun {region; value=f} } base_expr(right_expr): - let_expr(right_expr) | disj_expr_level | fun_expr { $1 } + disj_expr_level | fun_expr { $1 } conditional(right_expr): if_then_else(right_expr) | if_then(right_expr) { $1 } @@ -576,10 +576,10 @@ parenthesized_expr: "{" expr "}" | "(" expr ")" { $2 } if_then(right_expr): - "if" parenthesized_expr "{" closed_if "}" { + "if" parenthesized_expr "{" closed_if ";"? "}" { let the_unit = ghost, ghost in let ifnot = EUnit {region=ghost; value=the_unit} in - let region = cover $1 $5 in + let region = cover $1 $6 in let value = {kwd_if = $1; test = $2; kwd_then = $3; @@ -589,8 +589,8 @@ if_then(right_expr): in ECond {region; value} } if_then_else(right_expr): - "if" parenthesized_expr "{" closed_if ";" "}" - "else" "{" right_expr ";" "}" { + "if" parenthesized_expr "{" closed_if ";"? "}" + "else" "{" right_expr ";"? "}" { let region = cover $1 $11 in let value = {kwd_if = $1; test = $2; @@ -609,6 +609,7 @@ base_if_then_else: closed_if: base_if_then_else__open(closed_if) | switch_expr(base_if_then_else) { $1 } +| let_expr(expr_with_let_expr) { $1 } switch_expr(right_expr): "switch" switch_expr_ "{" cases(right_expr) "}" { @@ -896,8 +897,12 @@ update_record: rbrace = $6} in {region; value} } +expr_with_let_expr: + expr { $1 } +| let_expr(expr_with_let_expr) { $1 } + sequence_or_record_in: - expr ";" sep_or_term_list(expr,";") { + expr_with_let_expr ";" sep_or_term_list(expr_with_let_expr,";") { let elts, _region = $3 in let s_elts = Utils.nsepseq_cons $1 $2 elts in PaSequence {s_elts; s_terminator=None} @@ -907,7 +912,7 @@ sequence_or_record_in: let r_elts = Utils.nsepseq_cons $1 $2 elts in PaRecord {r_elts; r_terminator = None} } -| expr ";"? { PaSingleExpr $1 } +| expr_with_let_expr ";"? { PaSingleExpr $1 } sequence_or_record: "{" sequence_or_record_in "}" { diff --git a/src/passes/1-parser/reasonligo/error.messages.checked-in b/src/passes/1-parser/reasonligo/error.messages.checked-in index 62600f5f8..f86688e86 100644 --- a/src/passes/1-parser/reasonligo/error.messages.checked-in +++ b/src/passes/1-parser/reasonligo/error.messages.checked-in @@ -1,8 +1,8 @@ interactive_expr: C_None WILD ## -## Ends in an error in state: 252. +## Ends in an error in state: 170. ## -## call_expr_level -> call_expr_level_in . option(type_annotation_simple) [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## call_expr_level_in @@ -12,9 +12,9 @@ interactive_expr: C_None WILD interactive_expr: C_Some WILD ## -## Ends in an error in state: 119. +## Ends in an error in state: 122. ## -## constr_expr -> C_Some . core_expr [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## C_Some @@ -24,10 +24,10 @@ interactive_expr: C_Some WILD interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 106. +## Ends in an error in state: 109. ## -## module_field -> Constr DOT Ident . [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## projection -> Constr DOT Ident . selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## module_field -> Constr 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Constr DOT Ident @@ -37,10 +37,10 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT WILD ## -## Ends in an error in state: 105. +## Ends in an error in state: 108. ## -## module_field -> Constr DOT . Ident [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## projection -> Constr DOT . Ident selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## module_field -> Constr 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -50,12 +50,12 @@ interactive_expr: Constr DOT WILD interactive_expr: Constr WILD ## -## Ends in an error in state: 104. +## Ends in an error in state: 107. ## -## constr_expr -> Constr . core_expr [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## constr_expr -> Constr . [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## module_field -> Constr . DOT Ident [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## projection -> Constr . DOT Ident selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## module_field -> Constr . DOT Ident [ 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 ] +## projection -> Constr . DOT Ident selection [ 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: ## Constr @@ -65,10 +65,10 @@ interactive_expr: Constr WILD interactive_expr: Ident DOT Ident WILD ## -## Ends in an error in state: 99. +## Ends in an error in state: 102. ## -## selection -> DOT Ident . selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## selection -> DOT Ident . [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## DOT Ident @@ -78,10 +78,10 @@ interactive_expr: Ident DOT Ident WILD interactive_expr: Ident DOT WILD ## -## Ends in an error in state: 98. +## Ends in an error in state: 101. ## -## selection -> DOT . Ident selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## selection -> DOT . Ident [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## DOT @@ -91,10 +91,10 @@ interactive_expr: Ident DOT WILD interactive_expr: Ident LBRACKET Int RBRACKET WILD ## -## Ends in an error in state: 97. +## Ends in an error in state: 100. ## -## selection -> LBRACKET Int RBRACKET . selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## selection -> LBRACKET Int RBRACKET . [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET Int RBRACKET @@ -104,10 +104,10 @@ interactive_expr: Ident LBRACKET Int RBRACKET WILD interactive_expr: Ident LBRACKET Int WILD ## -## Ends in an error in state: 96. +## Ends in an error in state: 99. ## -## selection -> LBRACKET Int . RBRACKET selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## selection -> LBRACKET Int . RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET Int @@ -117,10 +117,10 @@ interactive_expr: Ident LBRACKET Int WILD interactive_expr: Ident LBRACKET WILD ## -## Ends in an error in state: 95. +## Ends in an error in state: 98. ## -## selection -> LBRACKET . Int RBRACKET selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## selection -> LBRACKET . Int RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET @@ -130,10 +130,10 @@ interactive_expr: Ident LBRACKET WILD interactive_expr: Ident WILD ## -## Ends in an error in state: 94. +## Ends in an error in state: 97. ## -## common_expr -> Ident . [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## projection -> Ident . selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Ident @@ -143,7 +143,7 @@ interactive_expr: Ident WILD interactive_expr: If LBRACE True VBAR ## -## Ends in an error in state: 329. +## Ends in an error in state: 226. ## ## parenthesized_expr -> LBRACE expr . RBRACE [ LBRACE ] ## @@ -154,26 +154,26 @@ interactive_expr: If LBRACE 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If LBRACE WILD ## -## Ends in an error in state: 328. +## Ends in an error in state: 225. ## ## parenthesized_expr -> LBRACE . expr RBRACE [ LBRACE ] ## @@ -183,11 +183,11 @@ interactive_expr: If LBRACE WILD -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 405. +## Ends in an error in state: 402. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if . SEMI RBRACE Else LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr LBRACE closed_if @@ -196,118 +196,128 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 401, spurious reduction of production base_expr(closed_if) -> disj_expr_level -## In state 404, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 403, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 213, spurious reduction of production es6_func -> ARROW expr +## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE True RBRACE +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 410. +## Ends in an error in state: 407. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE closed_if . SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if . option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE closed_if +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if ## ## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 401, spurious reduction of production base_expr(closed_if) -> disj_expr_level -## In state 404, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 403, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 213, spurious reduction of production es6_func -> ARROW expr +## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE True SEMI WILD -## -## Ends in an error in state: 411. -## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE closed_if SEMI . RBRACE [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE closed_if SEMI -## - - - -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE WILD -## -## Ends in an error in state: 409. -## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE . closed_if SEMI RBRACE [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE -## - - - -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else WILD +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS ## ## Ends in an error in state: 408. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else . LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) . RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) ## -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI RBRACE WILD -## -## Ends in an error in state: 407. -## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE . Else LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE -## - - - -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI WILD +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE WILD ## ## Ends in an error in state: 406. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if SEMI . RBRACE Else LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE +## + + + +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE Else WILD +## +## Ends in an error in state: 405. +## +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else +## + + + +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True RBRACE WILD +## +## Ends in an error in state: 404. +## +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE +## + + + +interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI PLUS +## +## Ends in an error in state: 403. +## +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE closed_if option(SEMI) ## interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD ## -## Ends in an error in state: 392. +## Ends in an error in state: 348. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if SEMI RBRACE Else LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr LBRACE @@ -317,9 +327,9 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 391. +## Ends in an error in state: 347. ## -## if_then_else(closed_if) -> If parenthesized_expr . LBRACE closed_if SEMI RBRACE Else LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr @@ -329,9 +339,9 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR WILD interactive_expr: If LPAR True RPAR LBRACE If WILD ## -## Ends in an error in state: 390. +## Ends in an error in state: 346. ## -## if_then_else(closed_if) -> If . parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE closed_if SEMI RBRACE [ SEMI RBRACE ] +## if_then_else(closed_if) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: ## If @@ -339,64 +349,9 @@ interactive_expr: If LPAR True RPAR LBRACE If WILD -interactive_expr: If LPAR True RPAR LBRACE Let VBAR -## -## Ends in an error in state: 395. -## -## let_expr(closed_if) -> seq(Attr) Let . let_binding SEMI closed_if [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let -## - - - -interactive_expr: If LPAR True RPAR LBRACE Let WILD EQ Bytes SEMI WILD -## -## Ends in an error in state: 397. -## -## let_expr(closed_if) -> seq(Attr) Let let_binding SEMI . closed_if [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let let_binding SEMI -## - - - -interactive_expr: If LPAR True RPAR LBRACE Let WILD EQ Bytes VBAR -## -## Ends in an error in state: 396. -## -## let_expr(closed_if) -> seq(Attr) Let let_binding . SEMI closed_if [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let let_binding -## -## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 546, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## - - - interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR VBAR ## -## Ends in an error in state: 376. +## Ends in an error in state: 273. ## ## case_clause(base_if_then_else) -> VBAR . pattern ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -408,7 +363,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR VBAR interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 439. +## Ends in an error in state: 431. ## ## nseq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -420,7 +375,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW By interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 441. +## Ends in an error in state: 433. ## ## seq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -430,11 +385,11 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW By -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 413. +## Ends in an error in state: 412. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if . SEMI RBRACE Else LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr LBRACE closed_if @@ -443,118 +398,123 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 401, spurious reduction of production base_expr(closed_if) -> disj_expr_level -## In state 404, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 403, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 213, spurious reduction of production es6_func -> ARROW expr +## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE True SEMI WILD +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS ## -## Ends in an error in state: 430. +## Ends in an error in state: 422. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_if_then_else SEMI . RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_if_then_else SEMI +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE True VBAR +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE True VBAR ## -## Ends in an error in state: 429. +## Ends in an error in state: 421. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_if_then_else . SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_if_then_else +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else ## ## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 425, spurious reduction of production base_expr(base_if_then_else) -> disj_expr_level -## In state 428, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) -## In state 426, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 419, spurious reduction of production base_expr(base_if_then_else) -> disj_expr_level +## In state 424, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) +## In state 420, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE WILD -## -## Ends in an error in state: 417. -## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE . base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE -## - - - -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else WILD +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE WILD ## ## Ends in an error in state: 416. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else . LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE WILD +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else WILD ## ## Ends in an error in state: 415. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE . Else LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI WILD +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE WILD ## ## Ends in an error in state: 414. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if SEMI . RBRACE Else LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE +## + + + +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI PLUS +## +## Ends in an error in state: 413. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE closed_if option(SEMI) ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD ## -## Ends in an error in state: 389. +## Ends in an error in state: 345. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE . closed_if SEMI RBRACE Else LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr LBRACE @@ -564,9 +524,9 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD ## -## Ends in an error in state: 388. +## Ends in an error in state: 344. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr . LBRACE closed_if SEMI RBRACE Else LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr @@ -576,9 +536,9 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If WILD ## -## Ends in an error in state: 387. +## Ends in an error in state: 343. ## -## if_then_else(base_if_then_else) -> If . parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_if_then_else SEMI RBRACE [ VBAR SEMI RBRACE ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If @@ -586,64 +546,9 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Let VBAR +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True ARROW Bytes Type ## -## Ends in an error in state: 419. -## -## let_expr(base_if_then_else) -> seq(Attr) Let . let_binding SEMI base_if_then_else [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let -## - - - -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Let WILD EQ Bytes SEMI WILD -## -## Ends in an error in state: 421. -## -## let_expr(base_if_then_else) -> seq(Attr) Let let_binding SEMI . base_if_then_else [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let let_binding SEMI -## - - - -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Let WILD EQ Bytes VBAR -## -## Ends in an error in state: 420. -## -## let_expr(base_if_then_else) -> seq(Attr) Let let_binding . SEMI base_if_then_else [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let let_binding -## -## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 546, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## - - - -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True ARROW Bytes RPAR -## -## Ends in an error in state: 432. +## Ends in an error in state: 425. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW base_if_then_else . option(SEMI) [ VBAR RBRACE ] ## @@ -654,31 +559,31 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Tr ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 295, spurious reduction of production es6_func -> ARROW expr -## In state 303, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 424, spurious reduction of production base_expr(base_if_then_else) -> fun_expr -## In state 428, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) -## In state 426, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 213, spurious reduction of production es6_func -> ARROW expr +## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 418, spurious reduction of production base_expr(base_if_then_else) -> fun_expr +## In state 424, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) +## In state 420, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True RPAR +interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True Type ## -## Ends in an error in state: 425. +## Ends in an error in state: 419. ## ## base_expr(base_if_then_else) -> disj_expr_level . [ VBAR SEMI RBRACE ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI RBRACE Or BOOL_OR ARROW ] @@ -692,23 +597,23 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW Tr ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW WILD ## -## Ends in an error in state: 386. +## Ends in an error in state: 342. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW . base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -720,7 +625,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW WI interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD COMMA Bytes RPAR ## -## Ends in an error in state: 385. +## Ends in an error in state: 341. ## ## case_clause(base_if_then_else) -> VBAR pattern . ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -731,16 +636,16 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True 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 169, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 172, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 383, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 327, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 330, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 339, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE WILD ## -## Ends in an error in state: 375. +## 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 ] ## @@ -752,7 +657,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE WILD interactive_expr: If LPAR True RPAR LBRACE Switch True WILD ## -## Ends in an error in state: 374. +## Ends in an error in state: 271. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ . LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -764,7 +669,7 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True WILD interactive_expr: If LPAR True RPAR LBRACE Switch WILD ## -## Ends in an error in state: 333. +## Ends in an error in state: 230. ## ## switch_expr(base_if_then_else) -> Switch . switch_expr_ LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -776,10 +681,10 @@ interactive_expr: If LPAR True RPAR LBRACE Switch WILD interactive_expr: If LPAR True RPAR LBRACE True ARROW Bytes VBAR ## -## Ends in an error in state: 447. +## Ends in an error in state: 439. ## -## if_then(expr) -> If parenthesized_expr LBRACE closed_if . RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if . SEMI RBRACE Else LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr LBRACE closed_if @@ -788,114 +693,117 @@ interactive_expr: If LPAR True RPAR LBRACE True 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 295, spurious reduction of production es6_func -> ARROW expr -## In state 303, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 213, spurious reduction of production es6_func -> ARROW expr +## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func ## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 404, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 403, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 411, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 410, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: If LPAR True RPAR LBRACE True SEMI RBRACE Else LBRACE True SEMI WILD +interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS ## -## Ends in an error in state: 453. +## Ends in an error in state: 445. ## -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE expr SEMI . RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE expr SEMI +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_expr option(SEMI) ## -interactive_expr: If LPAR True RPAR LBRACE True SEMI RBRACE Else LBRACE True VBAR +interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True VBAR ## -## Ends in an error in state: 452. +## Ends in an error in state: 444. ## -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE expr . SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE expr +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE expr_with_let_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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 397, spurious reduction of production expr_with_let_expr -> expr ## -interactive_expr: If LPAR True RPAR LBRACE True SEMI RBRACE Else LBRACE WILD +interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE WILD ## -## Ends in an error in state: 451. +## Ends in an error in state: 443. ## -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE . expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE ## -interactive_expr: If LPAR True RPAR LBRACE True SEMI RBRACE Else WILD +interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else WILD ## -## Ends in an error in state: 450. +## Ends in an error in state: 442. ## -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else . LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else ## -interactive_expr: If LPAR True RPAR LBRACE True SEMI RBRACE WILD +interactive_expr: If LPAR True RPAR LBRACE True RBRACE WILD ## -## Ends in an error in state: 449. +## Ends in an error in state: 441. ## -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE . Else LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE ## -interactive_expr: If LPAR True RPAR LBRACE True SEMI WILD +interactive_expr: If LPAR True RPAR LBRACE True SEMI PLUS ## -## Ends in an error in state: 448. +## Ends in an error in state: 440. ## -## if_then_else(expr) -> If parenthesized_expr LBRACE closed_if SEMI . RBRACE Else LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI +## If parenthesized_expr LBRACE closed_if option(SEMI) ## @@ -916,26 +824,26 @@ interactive_expr: If LPAR True RPAR LBRACE 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: If LPAR True RPAR LBRACE WILD ## -## Ends in an error in state: 332. +## Ends in an error in state: 229. ## -## if_then(expr) -> If parenthesized_expr LBRACE . closed_if RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] -## if_then_else(expr) -> If parenthesized_expr LBRACE . closed_if SEMI RBRACE Else LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr LBRACE @@ -945,10 +853,10 @@ interactive_expr: If LPAR True RPAR LBRACE WILD interactive_expr: If LPAR True RPAR WILD ## -## Ends in an error in state: 331. +## Ends in an error in state: 228. ## -## if_then(expr) -> If parenthesized_expr . LBRACE closed_if RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] -## if_then_else(expr) -> If parenthesized_expr . LBRACE closed_if SEMI RBRACE Else LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If parenthesized_expr @@ -958,7 +866,7 @@ interactive_expr: If LPAR True RPAR WILD interactive_expr: If LPAR True VBAR ## -## Ends in an error in state: 326. +## Ends in an error in state: 223. ## ## parenthesized_expr -> LPAR expr . RPAR [ LBRACE ] ## @@ -969,26 +877,26 @@ interactive_expr: If LPAR 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If LPAR WILD ## -## Ends in an error in state: 93. +## Ends in an error in state: 96. ## ## parenthesized_expr -> LPAR . expr RPAR [ LBRACE ] ## @@ -1000,10 +908,10 @@ interactive_expr: If LPAR WILD interactive_expr: If WILD ## -## Ends in an error in state: 92. +## Ends in an error in state: 95. ## -## if_then(expr) -> If . parenthesized_expr LBRACE closed_if RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] -## if_then_else(expr) -> If . parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE expr SEMI RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## 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 ] ## ## The known suffix of the stack is as follows: ## If @@ -1013,7 +921,7 @@ interactive_expr: If WILD interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD ## -## Ends in an error in state: 352. +## Ends in an error in state: 249. ## ## projection -> Constr DOT Ident . selection [ COMMA ] ## @@ -1025,7 +933,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Constr DOT WILD ## -## Ends in an error in state: 351. +## Ends in an error in state: 248. ## ## projection -> Constr DOT . Ident selection [ COMMA ] ## @@ -1037,7 +945,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT WILD interactive_expr: LBRACE ELLIPSIS Constr WILD ## -## Ends in an error in state: 350. +## Ends in an error in state: 247. ## ## projection -> Constr . DOT Ident selection [ COMMA ] ## @@ -1049,7 +957,7 @@ interactive_expr: LBRACE ELLIPSIS Constr WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 367. +## Ends in an error in state: 264. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -1062,27 +970,27 @@ interactive_expr: LBRACE ELLIPSIS 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 366, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 263, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr ## interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON WILD ## -## Ends in an error in state: 365. +## Ends in an error in state: 262. ## ## field_path_assignment -> nsepseq(field_name,DOT) COLON . expr [ RBRACE COMMA ] ## @@ -1094,7 +1002,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 371. +## Ends in an error in state: 268. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -1107,27 +1015,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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 366, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 263, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr ## interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 372. +## Ends in an error in state: 269. ## ## 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 ] @@ -1140,7 +1048,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 368. +## Ends in an error in state: 265. ## ## 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 ] @@ -1153,7 +1061,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT Ident WILD ## -## Ends in an error in state: 358. +## Ends in an error in state: 255. ## ## nsepseq(field_name,DOT) -> Ident . [ COLON ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ COLON ] @@ -1166,7 +1074,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT WILD ## -## Ends in an error in state: 357. +## Ends in an error in state: 254. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ COLON ] ## @@ -1178,7 +1086,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD ## -## Ends in an error in state: 356. +## Ends in an error in state: 253. ## ## field_path_assignment -> Ident . [ RBRACE COMMA ] ## nsepseq(field_name,DOT) -> Ident . [ COLON ] @@ -1192,9 +1100,9 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD ## -## Ends in an error in state: 355. +## Ends in an error in state: 252. ## -## update_record -> LBRACE ELLIPSIS path COMMA . sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND 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 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 COMMA @@ -1204,9 +1112,9 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR ## -## Ends in an error in state: 354. +## Ends in an error in state: 251. ## -## update_record -> LBRACE ELLIPSIS path . COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND 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 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 @@ -1215,16 +1123,16 @@ interactive_expr: LBRACE ELLIPSIS 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 99, spurious reduction of production selection -> DOT Ident -## In state 102, spurious reduction of production projection -> Ident selection -## In state 353, spurious reduction of production path -> projection +## In state 102, spurious reduction of production selection -> DOT Ident +## In state 105, spurious reduction of production projection -> Ident selection +## In state 250, spurious reduction of production path -> projection ## interactive_expr: LBRACE ELLIPSIS Ident WILD ## -## Ends in an error in state: 349. +## Ends in an error in state: 246. ## ## path -> Ident . [ COMMA ] ## projection -> Ident . selection [ COMMA ] @@ -1237,9 +1145,9 @@ interactive_expr: LBRACE ELLIPSIS Ident WILD interactive_expr: LBRACE ELLIPSIS WILD ## -## Ends in an error in state: 348. +## Ends in an error in state: 245. ## -## update_record -> LBRACE ELLIPSIS . path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND 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 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 @@ -1249,7 +1157,7 @@ interactive_expr: LBRACE ELLIPSIS WILD interactive_expr: LBRACE Ident COLON Bytes VBAR ## -## Ends in an error in state: 471. +## Ends in an error in state: 462. ## ## sequence_or_record_in -> field_assignment . COMMA sep_or_term_list(field_assignment,COMMA) [ RBRACE ] ## @@ -1260,27 +1168,27 @@ interactive_expr: LBRACE 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 468, spurious reduction of production field_assignment -> Ident COLON expr +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 459, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COLON WILD ## -## Ends in an error in state: 467. +## Ends in an error in state: 458. ## ## field_assignment -> Ident COLON . expr [ RBRACE COMMA ] ## @@ -1292,7 +1200,7 @@ interactive_expr: LBRACE Ident COLON WILD interactive_expr: LBRACE Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 477. +## Ends in an error in state: 468. ## ## nsepseq(field_assignment,COMMA) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,COMMA) -> field_assignment . COMMA nsepseq(field_assignment,COMMA) [ RBRACE ] @@ -1305,27 +1213,27 @@ 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 468, spurious reduction of production field_assignment -> Ident COLON expr +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 459, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 481. +## Ends in an error in state: 472. ## ## nsepseq(field_assignment,COMMA) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,COMMA) -> field_assignment . COMMA nsepseq(field_assignment,COMMA) [ RBRACE ] @@ -1338,27 +1246,27 @@ 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 468, spurious reduction of production field_assignment -> Ident COLON expr +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 459, spurious reduction of production field_assignment -> Ident COLON expr ## interactive_expr: LBRACE Ident COMMA Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 482. +## Ends in an error in state: 473. ## ## nsepseq(field_assignment,COMMA) -> field_assignment COMMA . nsepseq(field_assignment,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_assignment,COMMA)) -> field_assignment COMMA . seq(__anonymous_0(field_assignment,COMMA)) [ RBRACE ] @@ -1371,7 +1279,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: 478. +## Ends in an error in state: 469. ## ## nsepseq(field_assignment,COMMA) -> field_assignment COMMA . nsepseq(field_assignment,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_assignment,COMMA)) -> field_assignment COMMA . seq(__anonymous_0(field_assignment,COMMA)) [ RBRACE ] @@ -1384,7 +1292,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident WILD ## -## Ends in an error in state: 473. +## Ends in an error in state: 464. ## ## field_assignment -> Ident . [ RBRACE COMMA ] ## field_assignment -> Ident . COLON expr [ RBRACE COMMA ] @@ -1397,7 +1305,7 @@ interactive_expr: LBRACE Ident COMMA Ident WILD interactive_expr: LBRACE Ident COMMA WILD ## -## Ends in an error in state: 472. +## Ends in an error in state: 463. ## ## sequence_or_record_in -> field_assignment COMMA . sep_or_term_list(field_assignment,COMMA) [ RBRACE ] ## @@ -1409,7 +1317,7 @@ interactive_expr: LBRACE Ident COMMA WILD interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 466. +## Ends in an error in state: 457. ## ## 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 . [ COMMA ] @@ -1422,89 +1330,149 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE True SEMI Bytes RBRACKET +interactive_expr: LBRACE True SEMI True SEMI True SEMI WILD ## -## Ends in an error in state: 469. +## Ends in an error in state: 485. ## -## sequence_or_record -> LBRACE sequence_or_record_in . RBRACE [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: -## LBRACE sequence_or_record_in +## expr_with_let_expr SEMI +## + + + +interactive_expr: LBRACE True SEMI True SEMI True VBAR +## +## Ends in an error in state: 484. +## +## 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 ] +## +## The known suffix of the stack is as follows: +## expr_with_let_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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 340, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 339, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) -## In state 486, spurious reduction of production sequence_or_record_in -> expr SEMI sep_or_term_list(expr,SEMI) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 397, spurious reduction of production expr_with_let_expr -> expr +## + + + +interactive_expr: LBRACE True SEMI True SEMI WILD +## +## Ends in an error in state: 481. +## +## nsepseq(expr_with_let_expr,SEMI) -> expr_with_let_expr SEMI . nsepseq(expr_with_let_expr,SEMI) [ RBRACE ] +## nseq(__anonymous_0(expr_with_let_expr,SEMI)) -> expr_with_let_expr SEMI . seq(__anonymous_0(expr_with_let_expr,SEMI)) [ RBRACE ] +## +## The known suffix of the stack is as follows: +## expr_with_let_expr SEMI +## + + + +interactive_expr: LBRACE True SEMI True VBAR +## +## Ends in an error in state: 480. +## +## 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 ] +## nseq(__anonymous_0(expr_with_let_expr,SEMI)) -> expr_with_let_expr . SEMI seq(__anonymous_0(expr_with_let_expr,SEMI)) [ RBRACE ] +## +## The known suffix of the stack is as follows: +## expr_with_let_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 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 397, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: LBRACE True SEMI WILD ## -## Ends in an error in state: 485. +## Ends in an error in state: 476. ## ## option(SEMI) -> SEMI . [ RBRACE ] -## sequence_or_record_in -> expr SEMI . sep_or_term_list(expr,SEMI) [ RBRACE ] +## sequence_or_record_in -> expr_with_let_expr SEMI . sep_or_term_list(expr_with_let_expr,SEMI) [ RBRACE ] ## ## The known suffix of the stack is as follows: -## expr SEMI +## expr_with_let_expr SEMI ## interactive_expr: LBRACE True VBAR ## -## Ends in an error in state: 484. +## Ends in an error in state: 475. ## -## sequence_or_record_in -> expr . SEMI sep_or_term_list(expr,SEMI) [ RBRACE ] -## sequence_or_record_in -> expr . option(SEMI) [ RBRACE ] +## sequence_or_record_in -> expr_with_let_expr . SEMI sep_or_term_list(expr_with_let_expr,SEMI) [ RBRACE ] +## sequence_or_record_in -> expr_with_let_expr . option(SEMI) [ RBRACE ] ## ## The known suffix of the stack is as follows: -## expr +## expr_with_let_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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 397, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: LBRACE WILD ## -## Ends in an error in state: 89. +## Ends in an error in state: 92. ## -## sequence_or_record -> LBRACE . sequence_or_record_in RBRACE [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## 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: ## LBRACE @@ -1516,7 +1484,7 @@ interactive_expr: LBRACKET True COMMA ELLIPSIS True VBAR ## ## Ends in an error in state: 494. ## -## list_or_spread -> LBRACKET expr COMMA ELLIPSIS expr . RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET expr COMMA ELLIPSIS expr @@ -1525,19 +1493,19 @@ interactive_expr: LBRACKET True COMMA ELLIPSIS 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## @@ -1546,7 +1514,7 @@ interactive_expr: LBRACKET True COMMA ELLIPSIS WILD ## ## Ends in an error in state: 493. ## -## list_or_spread -> LBRACKET expr COMMA ELLIPSIS . expr RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET expr COMMA ELLIPSIS @@ -1582,19 +1550,19 @@ interactive_expr: LBRACKET True COMMA True COMMA 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## @@ -1627,19 +1595,19 @@ interactive_expr: LBRACKET True COMMA 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## @@ -1648,8 +1616,8 @@ interactive_expr: LBRACKET True COMMA WILD ## ## Ends in an error in state: 492. ## -## list_or_spread -> LBRACKET expr COMMA . sep_or_term_list(expr,COMMA) RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## list_or_spread -> LBRACKET expr COMMA . ELLIPSIS expr RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET expr COMMA @@ -1661,8 +1629,8 @@ interactive_expr: LBRACKET True VBAR ## ## Ends in an error in state: 491. ## -## list_or_spread -> LBRACKET expr . COMMA sep_or_term_list(expr,COMMA) RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## list_or_spread -> LBRACKET expr . COMMA ELLIPSIS expr RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## option(expr) -> expr . [ RBRACKET ] ## ## The known suffix of the stack is as follows: @@ -1672,30 +1640,30 @@ interactive_expr: LBRACKET 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: LBRACKET WILD ## -## Ends in an error in state: 87. +## Ends in an error in state: 90. ## -## list_or_spread -> LBRACKET . expr COMMA sep_or_term_list(expr,COMMA) RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## list_or_spread -> LBRACKET . expr COMMA ELLIPSIS expr RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## list_or_spread -> LBRACKET . option(expr) RBRACKET [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## list_or_spread -> LBRACKET . option(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 ] ## ## The known suffix of the stack is as follows: ## LBRACKET @@ -1705,12 +1673,12 @@ interactive_expr: LBRACKET WILD interactive_expr: LPAR True COMMA Bytes RPAR COLON Ident TIMES ## -## Ends in an error in state: 244. +## Ends in an error in state: 162. ## -## base_expr(expr) -> disj_expr_level . [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] -## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA BOOL_OR ARROW ] -## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA BOOL_OR ARROW ] -## fun_expr -> disj_expr_level . es6_func [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## base_expr(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 ] +## 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 ] +## fun_expr -> disj_expr_level . es6_func [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## disj_expr_level @@ -1719,20 +1687,20 @@ interactive_expr: LPAR True 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 211, spurious reduction of production option(type_expr_simple_args) -> -## In state 220, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) -## In state 227, spurious reduction of production type_annotation_simple -> COLON type_expr_simple -## In state 228, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple -## In state 229, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) +## In state 130, spurious reduction of production option(type_expr_simple_args) -> +## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 146, spurious reduction of production type_annotation_simple -> COLON type_expr_simple +## In state 147, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple +## In state 148, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) ## interactive_expr: LPAR True COMMA Bytes RPAR WILD ## -## Ends in an error in state: 208. +## Ends in an error in state: 127. ## -## disj_expr_level -> par(tuple(disj_expr_level)) . option(type_annotation_simple) [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA BOOL_OR ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## par(tuple(disj_expr_level)) @@ -1742,7 +1710,7 @@ interactive_expr: LPAR True COMMA Bytes RPAR WILD interactive_expr: LPAR True COMMA True COMMA WILD ## -## Ends in an error in state: 464. +## Ends in an error in state: 455. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1754,7 +1722,7 @@ interactive_expr: LPAR True COMMA True COMMA WILD interactive_expr: LPAR True COMMA True VBAR ## -## Ends in an error in state: 463. +## Ends in an error in state: 454. ## ## 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 ] @@ -1768,23 +1736,23 @@ interactive_expr: LPAR True COMMA 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: LPAR True COMMA WILD ## -## Ends in an error in state: 461. +## Ends in an error in state: 452. ## ## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1796,7 +1764,7 @@ interactive_expr: LPAR True COMMA WILD interactive_expr: LPAR True VBAR ## -## Ends in an error in state: 460. +## Ends in an error in state: 451. ## ## base_expr(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 ] @@ -1811,27 +1779,27 @@ interactive_expr: LPAR 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: LPAR WILD ## -## Ends in an error in state: 90. +## Ends in an error in state: 93. ## -## par(expr) -> LPAR . expr RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## par(tuple(disj_expr_level)) -> LPAR . tuple(disj_expr_level) RPAR [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA COLON BOOL_OR ARROW ] -## unit -> LPAR . RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## unit -> LPAR . 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -1841,9 +1809,9 @@ interactive_expr: LPAR WILD interactive_expr: Let VBAR ## -## Ends in an error in state: 125. +## Ends in an error in state: 351. ## -## let_expr(expr) -> seq(Attr) Let . let_binding SEMI expr [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## let_expr(expr_with_let_expr) -> seq(Attr) Let . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## ## The known suffix of the stack is as follows: ## seq(Attr) Let @@ -1853,9 +1821,9 @@ interactive_expr: Let VBAR interactive_expr: Let WILD EQ Bytes SEMI WILD ## -## Ends in an error in state: 324. +## Ends in an error in state: 394. ## -## let_expr(expr) -> seq(Attr) Let let_binding SEMI . expr [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## ## The known suffix of the stack is as follows: ## seq(Attr) Let let_binding SEMI @@ -1865,9 +1833,9 @@ interactive_expr: Let WILD EQ Bytes SEMI WILD interactive_expr: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 323. +## Ends in an error in state: 393. ## -## let_expr(expr) -> seq(Attr) Let let_binding . SEMI expr [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## ## The known suffix of the stack is as follows: ## seq(Attr) Let let_binding @@ -1876,29 +1844,29 @@ 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 546, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 526, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## interactive_expr: MINUS WILD ## -## Ends in an error in state: 88. +## Ends in an error in state: 91. ## -## unary_expr_level -> MINUS . call_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## MINUS @@ -1908,9 +1876,9 @@ interactive_expr: MINUS WILD interactive_expr: NOT WILD ## -## Ends in an error in state: 86. +## Ends in an error in state: 89. ## -## unary_expr_level -> NOT . call_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## NOT @@ -1920,10 +1888,10 @@ interactive_expr: NOT WILD interactive_expr: Switch Constr WILD ## -## Ends in an error in state: 108. +## Ends in an error in state: 111. ## -## module_field -> Constr . DOT Ident [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## projection -> Constr . DOT Ident selection [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## module_field -> Constr . DOT Ident [ 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 ] ## ## The known suffix of the stack is as follows: ## Constr @@ -1933,7 +1901,7 @@ interactive_expr: Switch Constr WILD interactive_expr: Switch LBRACE WILD ## -## Ends in an error in state: 347. +## Ends in an error in state: 244. ## ## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ LBRACE ] ## @@ -1943,45 +1911,12 @@ interactive_expr: Switch LBRACE WILD -interactive_expr: Switch LBRACKET True RBRACE -## -## Ends in an error in state: 336. -## -## list__(expr) -> LBRACKET option(sep_or_term_list(expr,SEMI)) . RBRACKET [ LBRACE ] -## -## The known suffix of the stack is as follows: -## LBRACKET option(sep_or_term_list(expr,SEMI)) -## -## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 340, spurious reduction of production nsepseq(expr,SEMI) -> expr -## In state 339, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI) -## In state 335, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI) -## - - - interactive_expr: Switch LBRACKET True SEMI True SEMI WILD ## -## Ends in an error in state: 345. +## Ends in an error in state: 242. ## -## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET RBRACE ] -## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET RBRACE ] +## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] +## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr SEMI @@ -1991,11 +1926,11 @@ interactive_expr: Switch LBRACKET True SEMI True SEMI WILD interactive_expr: Switch LBRACKET True SEMI True VBAR ## -## Ends in an error in state: 344. +## Ends in an error in state: 241. ## -## nsepseq(expr,SEMI) -> expr . [ RBRACKET RBRACE ] -## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET RBRACE ] -## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET RBRACE ] +## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] +## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr @@ -2004,29 +1939,29 @@ interactive_expr: Switch LBRACKET True SEMI 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Switch LBRACKET True SEMI WILD ## -## Ends in an error in state: 341. +## Ends in an error in state: 238. ## -## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET RBRACE ] -## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET RBRACE ] +## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] +## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr SEMI @@ -2036,11 +1971,11 @@ interactive_expr: Switch LBRACKET True SEMI WILD interactive_expr: Switch LBRACKET True VBAR ## -## Ends in an error in state: 340. +## Ends in an error in state: 237. ## -## nsepseq(expr,SEMI) -> expr . [ RBRACKET RBRACE ] -## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET RBRACE ] -## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET RBRACE ] +## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] +## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] +## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] ## ## The known suffix of the stack is as follows: ## expr @@ -2049,26 +1984,26 @@ interactive_expr: Switch LBRACKET 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Switch LBRACKET WILD ## -## Ends in an error in state: 334. +## Ends in an error in state: 231. ## ## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ LBRACE ] ## @@ -2080,9 +2015,9 @@ interactive_expr: Switch LBRACKET WILD interactive_expr: Switch LPAR True VBAR ## -## Ends in an error in state: 458. +## Ends in an error in state: 449. ## -## par(expr) -> LPAR expr . RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LPAR expr @@ -2091,29 +2026,29 @@ interactive_expr: Switch LPAR 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: Switch LPAR WILD ## -## Ends in an error in state: 84. +## Ends in an error in state: 87. ## -## par(expr) -> LPAR . expr RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## unit -> LPAR . RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -2123,7 +2058,7 @@ interactive_expr: Switch LPAR WILD interactive_expr: Switch True LBRACE VBAR LBRACKET VBAR ## -## Ends in an error in state: 377. +## Ends in an error in state: 333. ## ## 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 ] @@ -2136,7 +2071,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET VBAR interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 380. +## Ends in an error in state: 336. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS . sub_pattern RBRACKET [ ARROW ] ## @@ -2148,7 +2083,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD ## -## Ends in an error in state: 381. +## Ends in an error in state: 337. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS sub_pattern . RBRACKET [ ARROW ] ## @@ -2160,7 +2095,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA WILD ## -## Ends in an error in state: 379. +## Ends in an error in state: 335. ## ## pattern -> LBRACKET sub_pattern COMMA . ELLIPSIS sub_pattern RBRACKET [ ARROW ] ## @@ -2172,7 +2107,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA WILD interactive_expr: Switch True LBRACE VBAR LBRACKET WILD WILD ## -## Ends in an error in state: 378. +## Ends in an error in state: 334. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2187,7 +2122,7 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD WILD interactive_expr: Switch True LBRACE VBAR LPAR Bytes RPAR WILD ## -## Ends in an error in state: 384. +## Ends in an error in state: 340. ## ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2211,7 +2146,7 @@ interactive_expr: Switch True LBRACE VBAR VBAR interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 542. +## Ends in an error in state: 522. ## ## nseq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2223,7 +2158,7 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 544. +## Ends in an error in state: 524. ## ## seq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2233,230 +2168,10 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Byte -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True ARROW Bytes VBAR -## -## Ends in an error in state: 515. -## -## if_then(base_cond) -> If parenthesized_expr LBRACE closed_if . RBRACE [ VBAR SEMI RBRACE ] -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if . SEMI RBRACE Else LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if -## -## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 295, spurious reduction of production es6_func -> ARROW expr -## In state 303, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 400, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 404, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 403, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE True SEMI WILD -## -## Ends in an error in state: 534. -## -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_cond SEMI . RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_cond SEMI -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE True VBAR -## -## Ends in an error in state: 533. -## -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_cond . SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_cond -## -## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 528, spurious reduction of production base_expr(base_cond) -> disj_expr_level -## In state 530, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 531, spurious reduction of production base_cond -> base_cond__open(base_cond) -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else LBRACE WILD -## -## Ends in an error in state: 519. -## -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE . base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE Else WILD -## -## Ends in an error in state: 518. -## -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE Else . LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE Else -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI RBRACE WILD +interactive_expr: Switch True LBRACE VBAR WILD ARROW True ARROW Bytes Type ## ## Ends in an error in state: 517. ## -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if SEMI RBRACE . Else LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI RBRACE -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True SEMI WILD -## -## Ends in an error in state: 516. -## -## if_then_else(base_cond) -> If parenthesized_expr LBRACE closed_if SEMI . RBRACE Else LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE closed_if SEMI -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD -## -## Ends in an error in state: 514. -## -## if_then(base_cond) -> If parenthesized_expr LBRACE . closed_if RBRACE [ VBAR SEMI RBRACE ] -## if_then_else(base_cond) -> If parenthesized_expr LBRACE . closed_if SEMI RBRACE Else LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD -## -## Ends in an error in state: 513. -## -## if_then(base_cond) -> If parenthesized_expr . LBRACE closed_if RBRACE [ VBAR SEMI RBRACE ] -## if_then_else(base_cond) -> If parenthesized_expr . LBRACE closed_if SEMI RBRACE Else LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW If WILD -## -## Ends in an error in state: 512. -## -## if_then(base_cond) -> If . parenthesized_expr LBRACE closed_if RBRACE [ VBAR SEMI RBRACE ] -## if_then_else(base_cond) -> If . parenthesized_expr LBRACE closed_if SEMI RBRACE Else LBRACE base_cond SEMI RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW Let VBAR -## -## Ends in an error in state: 521. -## -## let_expr(base_cond) -> seq(Attr) Let . let_binding SEMI base_cond [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW Let WILD EQ Bytes SEMI WILD -## -## Ends in an error in state: 523. -## -## let_expr(base_cond) -> seq(Attr) Let let_binding SEMI . base_cond [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let let_binding SEMI -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW Let WILD EQ Bytes VBAR -## -## Ends in an error in state: 522. -## -## let_expr(base_cond) -> seq(Attr) Let let_binding . SEMI base_cond [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## seq(Attr) Let let_binding -## -## 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 546, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## - - - -interactive_expr: Switch True LBRACE VBAR WILD ARROW True ARROW Bytes RPAR -## -## Ends in an error in state: 537. -## ## case_clause(base_cond) -> VBAR pattern ARROW base_cond . option(SEMI) [ VBAR RBRACE ] ## ## The known suffix of the stack is as follows: @@ -2466,31 +2181,31 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW True ARROW 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 295, spurious reduction of production es6_func -> ARROW expr -## In state 303, spurious reduction of production fun_expr -> disj_expr_level es6_func -## In state 527, spurious reduction of production base_expr(base_cond) -> fun_expr -## In state 530, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 531, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 213, spurious reduction of production es6_func -> ARROW expr +## In state 221, spurious reduction of production fun_expr -> disj_expr_level es6_func +## In state 512, spurious reduction of production base_expr(base_cond) -> fun_expr +## In state 515, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 516, spurious reduction of production base_cond -> base_cond__open(base_cond) ## -interactive_expr: Switch True LBRACE VBAR WILD ARROW True RPAR +interactive_expr: Switch True LBRACE VBAR WILD ARROW True Type ## -## Ends in an error in state: 528. +## Ends in an error in state: 513. ## ## base_expr(base_cond) -> disj_expr_level . [ VBAR SEMI RBRACE ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI RBRACE Or BOOL_OR ARROW ] @@ -2504,16 +2219,16 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW True 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level ## @@ -2543,16 +2258,16 @@ interactive_expr: Switch True 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 169, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 172, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 383, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 327, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 330, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 339, spurious reduction of production pattern -> tuple(sub_pattern) ## interactive_expr: Switch True LBRACE VBAR WILD COMMA VBAR ## -## Ends in an error in state: 168. +## Ends in an error in state: 326. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2564,7 +2279,7 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA VBAR interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 170. +## Ends in an error in state: 328. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2576,7 +2291,7 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD COMMA VBAR interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD WILD ## -## Ends in an error in state: 169. +## Ends in an error in state: 327. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ RPAR ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] @@ -2589,7 +2304,7 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD WILD interactive_expr: Switch True LBRACE VBAR WILD WILD ## -## Ends in an error in state: 435. +## Ends in an error in state: 427. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ COMMA ] @@ -2604,7 +2319,7 @@ interactive_expr: Switch True LBRACE WILD ## ## Ends in an error in state: 508. ## -## switch_expr(base_cond) -> Switch switch_expr_ LBRACE . cases(base_cond) RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## switch_expr(base_cond) -> Switch switch_expr_ LBRACE . cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Switch switch_expr_ LBRACE @@ -2616,7 +2331,7 @@ interactive_expr: Switch True WILD ## ## Ends in an error in state: 507. ## -## switch_expr(base_cond) -> Switch switch_expr_ . LBRACE cases(base_cond) RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## switch_expr(base_cond) -> Switch switch_expr_ . LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Switch switch_expr_ @@ -2626,9 +2341,9 @@ interactive_expr: Switch True WILD interactive_expr: Switch WILD ## -## Ends in an error in state: 80. +## Ends in an error in state: 83. ## -## switch_expr(base_cond) -> Switch . switch_expr_ LBRACE cases(base_cond) RBRACE [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## switch_expr(base_cond) -> Switch . switch_expr_ LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Switch @@ -2638,9 +2353,9 @@ interactive_expr: Switch WILD interactive_expr: True ARROW WILD ## -## Ends in an error in state: 294. +## Ends in an error in state: 212. ## -## es6_func -> ARROW . expr [ VBAR SEMI RPAR RBRACKET RBRACE EOF COMMA ] +## es6_func -> ARROW . expr [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## ARROW @@ -2650,9 +2365,9 @@ interactive_expr: True ARROW WILD interactive_expr: True BOOL_AND WILD ## -## Ends in an error in state: 248. +## Ends in an error in state: 166. ## -## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## conj_expr_level BOOL_AND @@ -2662,9 +2377,9 @@ interactive_expr: True BOOL_AND WILD interactive_expr: True BOOL_OR WILD ## -## Ends in an error in state: 292. +## Ends in an error in state: 210. ## -## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA BOOL_OR ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## disj_expr_level BOOL_OR @@ -2674,9 +2389,9 @@ interactive_expr: True BOOL_OR WILD interactive_expr: True CAT WILD ## -## Ends in an error in state: 271. +## Ends in an error in state: 189. ## -## bin_op(add_expr_level,CAT,cat_expr_level) -> add_expr_level CAT . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## add_expr_level CAT @@ -2686,7 +2401,7 @@ interactive_expr: True CAT WILD interactive_expr: True COLON Ident LPAR Ident VBAR ## -## Ends in an error in state: 213. +## Ends in an error in state: 132. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2698,17 +2413,17 @@ interactive_expr: True 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 211, spurious reduction of production option(type_expr_simple_args) -> -## In state 220, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 130, spurious reduction of production option(type_expr_simple_args) -> +## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: True COLON Ident LPAR WILD ## -## Ends in an error in state: 212. +## Ends in an error in state: 131. ## -## par(nsepseq(type_expr_simple,COMMA)) -> LPAR . nsepseq(type_expr_simple,COMMA) RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -2718,9 +2433,9 @@ interactive_expr: True COLON Ident LPAR WILD interactive_expr: True COLON Ident WILD ## -## Ends in an error in state: 211. +## Ends in an error in state: 130. ## -## type_expr_simple -> Ident . option(type_expr_simple_args) [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## Ident @@ -2730,9 +2445,9 @@ interactive_expr: True COLON Ident WILD interactive_expr: True COLON LPAR Ident ARROW Ident VBAR ## -## Ends in an error in state: 223. +## Ends in an error in state: 142. ## -## type_expr_simple -> LPAR type_expr_simple ARROW type_expr_simple . RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND 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 ] ## ## The known suffix of the stack is as follows: ## LPAR type_expr_simple ARROW type_expr_simple @@ -2741,17 +2456,17 @@ interactive_expr: True 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 211, spurious reduction of production option(type_expr_simple_args) -> -## In state 220, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 130, spurious reduction of production option(type_expr_simple_args) -> +## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: True COLON LPAR Ident ARROW WILD ## -## Ends in an error in state: 222. +## Ends in an error in state: 141. ## -## type_expr_simple -> LPAR type_expr_simple ARROW . type_expr_simple RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND 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 ] ## ## The known suffix of the stack is as follows: ## LPAR type_expr_simple ARROW @@ -2761,7 +2476,7 @@ interactive_expr: True COLON LPAR Ident ARROW WILD interactive_expr: True COLON LPAR Ident COMMA WILD ## -## Ends in an error in state: 214. +## Ends in an error in state: 133. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple COMMA . nsepseq(type_expr_simple,COMMA) [ RPAR ] ## @@ -2773,12 +2488,12 @@ interactive_expr: True COLON LPAR Ident COMMA WILD interactive_expr: True COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 230. +## Ends in an error in state: 149. ## -## add_expr_level -> mult_expr_level . [ VBAR SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level . SLASH unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level . TIMES unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr_level @@ -2788,11 +2503,11 @@ interactive_expr: True COLON LPAR Ident RPAR WILD interactive_expr: True COLON LPAR Ident VBAR ## -## Ends in an error in state: 221. +## Ends in an error in state: 140. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] -## type_expr_simple -> LPAR type_expr_simple . ARROW type_expr_simple RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND 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 ] ## ## The known suffix of the stack is as follows: ## LPAR type_expr_simple @@ -2801,18 +2516,18 @@ interactive_expr: True 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 211, spurious reduction of production option(type_expr_simple_args) -> -## In state 220, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 130, spurious reduction of production option(type_expr_simple_args) -> +## In state 139, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## interactive_expr: True COLON LPAR WILD ## -## Ends in an error in state: 210. +## Ends in an error in state: 129. ## -## type_expr_simple -> LPAR . nsepseq(type_expr_simple,COMMA) RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## type_expr_simple -> LPAR . type_expr_simple ARROW type_expr_simple RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -2822,9 +2537,9 @@ interactive_expr: True COLON LPAR WILD interactive_expr: True COLON WILD ## -## Ends in an error in state: 209. +## Ends in an error in state: 128. ## -## type_annotation_simple -> COLON . type_expr_simple [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## COLON @@ -2834,9 +2549,9 @@ interactive_expr: True COLON WILD interactive_expr: True EQEQ WILD ## -## Ends in an error in state: 281. +## Ends in an error in state: 199. ## -## bin_op(comp_expr_level,EQEQ,cat_expr_level) -> comp_expr_level EQEQ . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr_level EQEQ @@ -2846,9 +2561,9 @@ interactive_expr: True EQEQ WILD interactive_expr: True GE WILD ## -## Ends in an error in state: 279. +## Ends in an error in state: 197. ## -## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr_level GE @@ -2858,9 +2573,9 @@ interactive_expr: True GE WILD interactive_expr: True GT WILD ## -## Ends in an error in state: 277. +## Ends in an error in state: 195. ## -## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr_level GT @@ -2870,9 +2585,9 @@ interactive_expr: True GT WILD interactive_expr: True LE WILD ## -## Ends in an error in state: 275. +## Ends in an error in state: 193. ## -## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr_level LE @@ -2882,7 +2597,7 @@ interactive_expr: True LE WILD interactive_expr: True LPAR True COMMA WILD ## -## Ends in an error in state: 242. +## Ends in an error in state: 160. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -2894,7 +2609,7 @@ interactive_expr: True LPAR True COMMA WILD interactive_expr: True LPAR True VBAR ## -## Ends in an error in state: 241. +## Ends in an error in state: 159. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -2906,29 +2621,29 @@ interactive_expr: True LPAR 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) ## - +Missing `)`. interactive_expr: True LPAR WILD ## -## Ends in an error in state: 234. +## Ends in an error in state: 153. ## -## call_expr -> core_expr LPAR . nsepseq(expr,COMMA) RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## unit -> LPAR . RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## core_expr LPAR @@ -2938,9 +2653,9 @@ interactive_expr: True LPAR WILD interactive_expr: True LT WILD ## -## Ends in an error in state: 273. +## Ends in an error in state: 191. ## -## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr_level LT @@ -2950,12 +2665,12 @@ interactive_expr: True LT WILD interactive_expr: True MINUS True COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 270. +## Ends in an error in state: 188. ## -## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ VBAR SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level . SLASH unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level . TIMES unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: ## add_expr_level MINUS mult_expr_level @@ -2965,9 +2680,9 @@ interactive_expr: True MINUS True COLON LPAR Ident RPAR WILD interactive_expr: True MINUS WILD ## -## Ends in an error in state: 269. +## Ends in an error in state: 187. ## -## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## add_expr_level MINUS @@ -2977,9 +2692,9 @@ interactive_expr: True MINUS WILD interactive_expr: True Mod WILD ## -## Ends in an error in state: 267. +## Ends in an error in state: 185. ## -## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr_level Mod @@ -2989,9 +2704,9 @@ interactive_expr: True Mod WILD interactive_expr: True NE WILD ## -## Ends in an error in state: 250. +## Ends in an error in state: 168. ## -## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or NE LT LE GT GE EQEQ EOF COMMA BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## comp_expr_level NE @@ -3001,9 +2716,9 @@ interactive_expr: True NE WILD interactive_expr: True Or WILD ## -## Ends in an error in state: 245. +## Ends in an error in state: 163. ## -## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE Or EOF COMMA BOOL_OR ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## disj_expr_level Or @@ -3013,12 +2728,12 @@ interactive_expr: True Or WILD interactive_expr: True PLUS True COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 264. +## Ends in an error in state: 182. ## -## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ VBAR SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level . SLASH unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] -## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level . TIMES unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## 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 ] +## 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 ] ## ## The known suffix of the stack is as follows: ## add_expr_level PLUS mult_expr_level @@ -3028,9 +2743,9 @@ interactive_expr: True PLUS True COLON LPAR Ident RPAR WILD interactive_expr: True PLUS WILD ## -## Ends in an error in state: 263. +## Ends in an error in state: 181. ## -## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ VBAR SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## add_expr_level PLUS @@ -3040,9 +2755,9 @@ interactive_expr: True PLUS WILD interactive_expr: True SLASH WILD ## -## Ends in an error in state: 265. +## Ends in an error in state: 183. ## -## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr_level SLASH @@ -3052,9 +2767,9 @@ interactive_expr: True SLASH WILD interactive_expr: True TIMES WILD ## -## Ends in an error in state: 231. +## Ends in an error in state: 150. ## -## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] ## ## The known suffix of the stack is as follows: ## mult_expr_level TIMES @@ -3064,41 +2779,42 @@ interactive_expr: True TIMES WILD interactive_expr: True VBAR ## -## Ends in an error in state: 557. +## Ends in an error in state: 537. ## -## interactive_expr -> expr . EOF [ # ] +## interactive_expr -> expr_with_let_expr . EOF [ # ] ## ## The known suffix of the stack is as follows: -## expr +## expr_with_let_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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 397, spurious reduction of production expr_with_let_expr -> expr ## interactive_expr: True WILD ## -## Ends in an error in state: 233. +## Ends in an error in state: 152. ## -## call_expr -> core_expr . LPAR nsepseq(expr,COMMA) RPAR [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## call_expr -> core_expr . unit [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] -## call_expr_level_in -> core_expr . [ VBAR TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND ARROW ] +## 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 ] +## call_expr_level_in -> 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 ] ## ## The known suffix of the stack is as follows: ## core_expr @@ -3108,7 +2824,7 @@ interactive_expr: True WILD interactive_expr: WILD ## -## Ends in an error in state: 555. +## Ends in an error in state: 535. ## ## interactive_expr' -> . interactive_expr [ # ] ## @@ -3120,7 +2836,7 @@ interactive_expr: WILD contract: Attr WILD ## -## Ends in an error in state: 67. +## Ends in an error in state: 69. ## ## seq(Attr) -> Attr . seq(Attr) [ Let ] ## @@ -3130,11 +2846,11 @@ contract: Attr WILD -contract: Let Ident COLON Ident SEMI +contract: Let Ident COLON Constr Type ## -## Ends in an error in state: 206. +## Ends in an error in state: 373. ## -## let_binding -> Ident option(type_annotation) . EQ expr [ SEMI ] +## let_binding -> Ident option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## Ident option(type_annotation) @@ -3143,32 +2859,38 @@ contract: Let Ident COLON Ident 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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 75, spurious reduction of production type_annotation -> COLON type_expr -## In state 76, spurious reduction of production option(type_annotation) -> type_annotation +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 66, spurious reduction of production type_expr -> sum_type +## In state 78, spurious reduction of production type_annotation -> COLON type_expr +## In state 79, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let Ident EQ WILD ## -## Ends in an error in state: 207. +## Ends in an error in state: 374. ## -## let_binding -> Ident option(type_annotation) EQ . expr [ SEMI ] +## let_binding -> Ident option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## Ident option(type_annotation) EQ ## - +This is an incorrect let binding. +- +Examples of correct let bindings: +let a: int = 4; +let (a: int, b: int) = (1, 2); +let func = (a: int, b: int) => a + b; contract: Let Ident WILD ## -## Ends in an error in state: 205. +## Ends in an error in state: 372. ## -## let_binding -> Ident . option(type_annotation) EQ expr [ SEMI ] +## let_binding -> Ident . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> Ident . [ COMMA ] ## ## The known suffix of the stack is as follows: @@ -3179,7 +2901,7 @@ contract: Let Ident WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 185. +## Ends in an error in state: 309. ## ## 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 ] @@ -3192,7 +2914,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: 184. +## Ends in an error in state: 308. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -3206,7 +2928,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: 181. +## Ends in an error in state: 305. ## ## 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 ] @@ -3217,11 +2939,11 @@ contract: Let LBRACE Ident EQ Bytes COMMA WILD -contract: Let LBRACE Ident EQ Bytes RBRACE COLON Ident SEMI +contract: Let LBRACE Ident EQ Bytes RBRACE COLON Constr Type ## -## Ends in an error in state: 316. +## Ends in an error in state: 386. ## -## let_binding -> record_pattern option(type_annotation) . EQ expr [ SEMI ] +## let_binding -> record_pattern option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## record_pattern option(type_annotation) @@ -3230,20 +2952,21 @@ contract: Let LBRACE Ident EQ Bytes RBRACE COLON Ident 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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 75, spurious reduction of production type_annotation -> COLON type_expr -## In state 76, spurious reduction of production option(type_annotation) -> type_annotation +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 66, spurious reduction of production type_expr -> sum_type +## In state 78, spurious reduction of production type_annotation -> COLON type_expr +## In state 79, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let LBRACE Ident EQ Bytes RBRACE EQ WILD ## -## Ends in an error in state: 317. +## Ends in an error in state: 387. ## -## let_binding -> record_pattern option(type_annotation) EQ . expr [ SEMI ] +## let_binding -> record_pattern option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## record_pattern option(type_annotation) EQ @@ -3253,9 +2976,9 @@ contract: Let LBRACE Ident EQ Bytes RBRACE EQ WILD contract: Let LBRACE Ident EQ Bytes RBRACE WILD ## -## Ends in an error in state: 315. +## Ends in an error in state: 385. ## -## let_binding -> record_pattern . option(type_annotation) EQ expr [ SEMI ] +## let_binding -> record_pattern . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> record_pattern . [ COMMA ] ## ## The known suffix of the stack is as follows: @@ -3266,7 +2989,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE WILD contract: Let LBRACE Ident EQ Bytes WILD ## -## Ends in an error in state: 180. +## Ends in an error in state: 304. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -3280,7 +3003,7 @@ contract: Let LBRACE Ident EQ Bytes WILD contract: Let LBRACE Ident EQ VBAR ## -## Ends in an error in state: 130. +## Ends in an error in state: 282. ## ## field_pattern -> Ident EQ . sub_pattern [ RBRACE COMMA ] ## @@ -3292,7 +3015,7 @@ contract: Let LBRACE Ident EQ VBAR contract: Let LBRACE Ident WILD ## -## Ends in an error in state: 129. +## Ends in an error in state: 281. ## ## field_pattern -> Ident . EQ sub_pattern [ RBRACE COMMA ] ## @@ -3304,7 +3027,7 @@ contract: Let LBRACE Ident WILD contract: Let LBRACE WILD ## -## Ends in an error in state: 128. +## Ends in an error in state: 280. ## ## record_pattern -> LBRACE . sep_or_term_list(field_pattern,COMMA) RBRACE [ SEMI RPAR RBRACKET RBRACE EQ COMMA COLON ARROW ] ## @@ -3316,7 +3039,7 @@ contract: Let LBRACE WILD contract: Let LPAR C_Some VBAR ## -## Ends in an error in state: 141. +## Ends in an error in state: 287. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3328,7 +3051,7 @@ contract: Let LPAR C_Some VBAR contract: Let LPAR Constr LBRACKET VBAR ## -## Ends in an error in state: 136. +## Ends in an error in state: 279. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3340,7 +3063,7 @@ contract: Let LPAR Constr LBRACKET VBAR contract: Let LPAR Constr LBRACKET WILD SEMI VBAR ## -## Ends in an error in state: 154. +## Ends in an error in state: 312. ## ## 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 ] @@ -3353,7 +3076,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: 156. +## Ends in an error in state: 314. ## ## 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 ] @@ -3366,7 +3089,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: 155. +## 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 ] @@ -3380,7 +3103,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD contract: Let LPAR Constr LBRACKET WILD WILD ## -## Ends in an error in state: 153. +## Ends in an error in state: 311. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -3394,7 +3117,7 @@ contract: Let LPAR Constr LBRACKET WILD WILD contract: Let LPAR Constr LPAR VBAR ## -## Ends in an error in state: 135. +## Ends in an error in state: 278. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## par(sub_pattern) -> LPAR . sub_pattern RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3408,7 +3131,7 @@ contract: Let LPAR Constr LPAR VBAR contract: Let LPAR Constr LPAR WILD COMMA Bytes ARROW ## -## Ends in an error in state: 173. +## Ends in an error in state: 331. ## ## par(ptuple) -> LPAR ptuple . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3419,16 +3142,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 169, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 172, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 165, spurious reduction of production ptuple -> tuple(sub_pattern) +## In state 327, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 330, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 323, spurious reduction of production ptuple -> tuple(sub_pattern) ## contract: Let LPAR Constr LPAR WILD WILD ## -## Ends in an error in state: 166. +## Ends in an error in state: 324. ## ## par(sub_pattern) -> LPAR sub_pattern . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ] @@ -3441,7 +3164,7 @@ contract: Let LPAR Constr LPAR WILD WILD contract: Let LPAR Constr SEMI ## -## Ends in an error in state: 203. +## Ends in an error in state: 370. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ RPAR EQ COMMA COLON ] ## @@ -3452,15 +3175,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 140, spurious reduction of production constr_pattern -> Constr -## In state 202, spurious reduction of production closed_irrefutable -> constr_pattern +## In state 286, spurious reduction of production constr_pattern -> Constr +## In state 369, spurious reduction of production closed_irrefutable -> constr_pattern ## contract: Let LPAR Constr VBAR ## -## Ends in an error in state: 140. +## Ends in an error in state: 286. ## ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3471,11 +3194,11 @@ contract: Let LPAR Constr VBAR -contract: Let LPAR RPAR COLON Ident SEMI +contract: Let LPAR RPAR COLON Constr Type ## -## Ends in an error in state: 307. +## Ends in an error in state: 377. ## -## let_binding -> unit option(type_annotation) . EQ expr [ SEMI ] +## let_binding -> unit option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## unit option(type_annotation) @@ -3484,20 +3207,21 @@ contract: Let LPAR RPAR COLON Ident 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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 75, spurious reduction of production type_annotation -> COLON type_expr -## In state 76, spurious reduction of production option(type_annotation) -> type_annotation +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 66, spurious reduction of production type_expr -> sum_type +## In state 78, spurious reduction of production type_annotation -> COLON type_expr +## In state 79, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let LPAR RPAR EQ WILD ## -## Ends in an error in state: 308. +## Ends in an error in state: 378. ## -## let_binding -> unit option(type_annotation) EQ . expr [ SEMI ] +## let_binding -> unit option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## unit option(type_annotation) EQ @@ -3507,9 +3231,9 @@ contract: Let LPAR RPAR EQ WILD contract: Let LPAR RPAR WILD ## -## Ends in an error in state: 306. +## Ends in an error in state: 376. ## -## let_binding -> unit . option(type_annotation) EQ expr [ SEMI ] +## let_binding -> unit . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> unit . [ COMMA ] ## ## The known suffix of the stack is as follows: @@ -3520,7 +3244,7 @@ contract: Let LPAR RPAR WILD contract: Let LPAR VBAR ## -## Ends in an error in state: 126. +## Ends in an error in state: 352. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ RPAR EQ COMMA COLON ] ## unit -> LPAR . RPAR [ RPAR EQ COMMA COLON ] @@ -3533,7 +3257,7 @@ contract: Let LPAR VBAR contract: Let LPAR WILD COLON WILD ## -## Ends in an error in state: 200. +## Ends in an error in state: 367. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -3545,7 +3269,7 @@ contract: Let LPAR WILD COLON WILD contract: Let LPAR WILD COMMA Ident EQ ## -## Ends in an error in state: 199. +## Ends in an error in state: 366. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -3557,18 +3281,18 @@ 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 193, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 198, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) -## In state 190, spurious reduction of production irrefutable -> tuple(sub_irrefutable) +## In state 360, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 365, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 357, spurious reduction of production irrefutable -> tuple(sub_irrefutable) ## -contract: Let LPAR WILD RPAR COLON Ident SEMI +contract: Let LPAR WILD RPAR COLON Constr Type ## -## Ends in an error in state: 320. +## Ends in an error in state: 390. ## -## let_binding -> par(closed_irrefutable) option(type_annotation) . EQ expr [ SEMI ] +## let_binding -> par(closed_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## par(closed_irrefutable) option(type_annotation) @@ -3577,20 +3301,21 @@ contract: Let LPAR WILD RPAR COLON Ident 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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 75, spurious reduction of production type_annotation -> COLON type_expr -## In state 76, spurious reduction of production option(type_annotation) -> type_annotation +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 66, spurious reduction of production type_expr -> sum_type +## In state 78, spurious reduction of production type_annotation -> COLON type_expr +## In state 79, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let LPAR WILD RPAR EQ WILD ## -## Ends in an error in state: 321. +## Ends in an error in state: 391. ## -## let_binding -> par(closed_irrefutable) option(type_annotation) EQ . expr [ SEMI ] +## let_binding -> par(closed_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## par(closed_irrefutable) option(type_annotation) EQ @@ -3600,9 +3325,9 @@ contract: Let LPAR WILD RPAR EQ WILD contract: Let LPAR WILD RPAR WILD ## -## Ends in an error in state: 319. +## Ends in an error in state: 389. ## -## let_binding -> par(closed_irrefutable) . option(type_annotation) EQ expr [ SEMI ] +## let_binding -> par(closed_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> par(closed_irrefutable) . [ COMMA ] ## ## The known suffix of the stack is as follows: @@ -3613,7 +3338,7 @@ contract: Let LPAR WILD RPAR WILD contract: Let LPAR WILD WILD ## -## Ends in an error in state: 191. +## Ends in an error in state: 358. ## ## irrefutable -> sub_irrefutable . [ RPAR COLON ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR COLON ] @@ -3626,9 +3351,9 @@ contract: Let LPAR WILD WILD contract: Let VBAR ## -## Ends in an error in state: 72. +## Ends in an error in state: 75. ## -## let_declaration -> seq(Attr) Let . let_binding [ SEMI ] +## let_declaration -> seq(Attr) Let . let_binding [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## seq(Attr) Let @@ -3636,11 +3361,11 @@ contract: Let VBAR -contract: Let WILD COLON Ident SEMI +contract: Let WILD COLON Ident Type ## -## Ends in an error in state: 77. +## Ends in an error in state: 80. ## -## let_binding -> WILD option(type_annotation) . EQ expr [ SEMI ] +## let_binding -> WILD option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## WILD option(type_annotation) @@ -3651,16 +3376,16 @@ contract: Let WILD COLON Ident SEMI ## may provide an INCOMPLETE view of the future (what was expected next). ## In state 8, spurious reduction of production core_type -> Ident ## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 75, spurious reduction of production type_annotation -> COLON type_expr -## In state 76, spurious reduction of production option(type_annotation) -> type_annotation +## In state 68, spurious reduction of production type_expr -> cartesian +## In state 78, spurious reduction of production type_annotation -> COLON type_expr +## In state 79, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let WILD COLON WILD ## -## Ends in an error in state: 74. +## Ends in an error in state: 77. ## ## type_annotation -> COLON . type_expr [ EQ ] ## @@ -3670,11 +3395,11 @@ contract: Let WILD COLON WILD -contract: Let WILD COMMA Ident COLON Ident SEMI +contract: Let WILD COMMA Ident COLON Constr Type ## -## Ends in an error in state: 311. +## Ends in an error in state: 381. ## -## let_binding -> tuple(sub_irrefutable) option(type_annotation) . EQ expr [ SEMI ] +## let_binding -> tuple(sub_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## tuple(sub_irrefutable) option(type_annotation) @@ -3683,20 +3408,21 @@ contract: Let WILD COMMA Ident COLON Ident 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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 75, spurious reduction of production type_annotation -> COLON type_expr -## In state 76, spurious reduction of production option(type_annotation) -> type_annotation +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 66, spurious reduction of production type_expr -> sum_type +## In state 78, spurious reduction of production type_annotation -> COLON type_expr +## In state 79, spurious reduction of production option(type_annotation) -> type_annotation ## contract: Let WILD COMMA Ident EQ WILD ## -## Ends in an error in state: 312. +## Ends in an error in state: 382. ## -## let_binding -> tuple(sub_irrefutable) option(type_annotation) EQ . expr [ SEMI ] +## let_binding -> tuple(sub_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## tuple(sub_irrefutable) option(type_annotation) EQ @@ -3706,9 +3432,9 @@ contract: Let WILD COMMA Ident EQ WILD contract: Let WILD COMMA Ident RPAR ## -## Ends in an error in state: 310. +## Ends in an error in state: 380. ## -## let_binding -> tuple(sub_irrefutable) . option(type_annotation) EQ expr [ SEMI ] +## let_binding -> tuple(sub_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## tuple(sub_irrefutable) @@ -3717,15 +3443,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 193, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 198, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 360, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 365, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) ## contract: Let WILD COMMA VBAR ## -## Ends in an error in state: 192. +## Ends in an error in state: 359. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3737,7 +3463,7 @@ contract: Let WILD COMMA VBAR contract: Let WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 194. +## Ends in an error in state: 361. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3749,7 +3475,7 @@ contract: Let WILD COMMA WILD COMMA VBAR contract: Let WILD COMMA WILD WILD ## -## Ends in an error in state: 193. +## Ends in an error in state: 360. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ RPAR EQ COLON ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] @@ -3762,9 +3488,9 @@ contract: Let WILD COMMA WILD WILD contract: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 548. +## Ends in an error in state: 528. ## -## declaration -> let_declaration . SEMI [ Type Let EOF Attr ] +## declaration -> let_declaration . option(SEMI) [ Type Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## let_declaration @@ -3773,30 +3499,30 @@ 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 233, spurious reduction of production call_expr_level_in -> core_expr -## In state 252, spurious reduction of production option(type_annotation_simple) -> -## In state 253, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 254, spurious reduction of production unary_expr_level -> call_expr_level -## In state 122, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 230, spurious reduction of production add_expr_level -> mult_expr_level -## In state 262, spurious reduction of production cat_expr_level -> add_expr_level -## In state 283, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 290, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 297, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 244, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 301, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 302, spurious reduction of production expr -> base_cond__open(expr) -## In state 546, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## In state 547, spurious reduction of production let_declaration -> seq(Attr) Let let_binding +## In state 152, spurious reduction of production call_expr_level_in -> core_expr +## In state 170, spurious reduction of production option(type_annotation_simple) -> +## In state 171, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 172, spurious reduction of production unary_expr_level -> call_expr_level +## In state 125, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 149, spurious reduction of production add_expr_level -> mult_expr_level +## In state 180, spurious reduction of production cat_expr_level -> add_expr_level +## In state 201, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 208, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 215, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 162, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 219, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 220, spurious reduction of production expr -> base_cond__open(expr) +## In state 526, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 527, spurious reduction of production let_declaration -> seq(Attr) Let let_binding ## contract: Let WILD EQ WILD ## -## Ends in an error in state: 78. +## Ends in an error in state: 81. ## -## let_binding -> WILD option(type_annotation) EQ . expr [ SEMI ] +## let_binding -> WILD option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## WILD option(type_annotation) EQ @@ -3806,9 +3532,9 @@ contract: Let WILD EQ WILD contract: Let WILD WILD ## -## Ends in an error in state: 73. +## Ends in an error in state: 76. ## -## let_binding -> WILD . option(type_annotation) EQ expr [ SEMI ] +## let_binding -> WILD . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> WILD . [ COMMA ] ## ## The known suffix of the stack is as follows: @@ -3821,7 +3547,7 @@ contract: Type Ident EQ Constr DOT WILD ## ## Ends in an error in state: 12. ## -## core_type -> Constr DOT . Ident [ SEMI RPAR RBRACE EQ COMMA ] +## core_type -> Constr DOT . Ident [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Constr DOT @@ -3829,11 +3555,104 @@ contract: Type Ident EQ Constr DOT WILD +contract: Type Ident EQ Constr LPAR Ident RPAR WILD +## +## Ends in an error in state: 41. +## +## nsepseq(variant,VBAR) -> variant . [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## nsepseq(variant,VBAR) -> variant . VBAR nsepseq(variant,VBAR) [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## +## The known suffix of the stack is as follows: +## variant +## + + + +contract: Type Ident EQ Constr LPAR Ident Type +## +## Ends in an error in state: 39. +## +## variant -> Constr LPAR cartesian . RPAR [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## +## The known suffix of the stack is as follows: +## Constr LPAR cartesian +## +## 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 8, spurious reduction of production core_type -> Ident +## In state 15, spurious reduction of production cartesian -> core_type +## + + + +contract: Type Ident EQ Constr LPAR WILD +## +## Ends in an error in state: 6. +## +## variant -> Constr LPAR . cartesian RPAR [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## +## The known suffix of the stack is as follows: +## Constr LPAR +## + + + +contract: Type Ident EQ Constr RPAR +## +## Ends in an error in state: 71. +## +## declaration -> type_decl . option(SEMI) [ Type Let EOF Attr ] +## +## The known suffix of the stack is as follows: +## type_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 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 66, spurious reduction of production type_expr -> sum_type +## In state 65, spurious reduction of production type_decl -> Type Ident EQ type_expr +## + + + +contract: Type Ident EQ Constr SEMI WILD +## +## Ends in an error in state: 532. +## +## declarations -> declaration . [ EOF ] +## declarations -> declaration . declarations [ EOF ] +## +## The known suffix of the stack is as follows: +## declaration +## + + + +contract: Type Ident EQ Constr VBAR WILD +## +## Ends in an error in state: 42. +## +## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## +## The known suffix of the stack is as follows: +## variant VBAR +## + + + contract: Type Ident EQ Constr WILD ## -## Ends in an error in state: 11. +## Ends in an error in state: 48. ## -## core_type -> Constr . DOT Ident [ SEMI RPAR RBRACE EQ COMMA ] +## core_type -> Constr . DOT Ident [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## variant -> Constr . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## variant -> Constr . LPAR cartesian RPAR [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Constr @@ -3845,7 +3664,7 @@ contract: Type Ident EQ Ident ARROW WILD ## ## Ends in an error in state: 25. ## -## type_expr_func -> ARROW . cartesian [ SEMI RPAR EQ COMMA ] +## type_expr_func -> ARROW . cartesian [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## ARROW @@ -3897,7 +3716,7 @@ contract: Type Ident EQ Ident LPAR Ident WILD -contract: Type Ident EQ Ident LPAR LPAR Ident SEMI +contract: Type Ident EQ Ident LPAR LPAR Ident Type ## ## Ends in an error in state: 16. ## @@ -3932,7 +3751,7 @@ contract: Type Ident EQ Ident LPAR WILD ## ## Ends in an error in state: 9. ## -## par(__anonymous_1) -> LPAR . nsepseq(core_type,COMMA) RPAR [ SEMI RPAR RBRACE EQ COMMA ] +## par(__anonymous_1) -> LPAR . nsepseq(core_type,COMMA) RPAR [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -3940,47 +3759,13 @@ contract: Type Ident EQ Ident LPAR WILD -contract: Type Ident EQ Ident RPAR -## -## Ends in an error in state: 69. -## -## declaration -> type_decl . SEMI [ Type Let EOF Attr ] -## -## The known suffix of the stack is as follows: -## type_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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## In state 66, spurious reduction of production type_expr -> cartesian -## In state 63, spurious reduction of production type_decl -> Type Ident EQ type_expr -## - - - -contract: Type Ident EQ Ident SEMI WILD -## -## Ends in an error in state: 552. -## -## declarations -> declaration . [ EOF ] -## declarations -> declaration . declarations [ EOF ] -## -## The known suffix of the stack is as follows: -## declaration -## - - - contract: Type Ident EQ Ident WILD ## ## Ends in an error in state: 8. ## -## cartesian -> Ident . type_expr_func [ SEMI RPAR EQ COMMA ] -## core_type -> Ident . [ SEMI RPAR EQ COMMA ] -## core_type -> Ident . par(__anonymous_1) [ SEMI RPAR EQ COMMA ] +## cartesian -> Ident . type_expr_func [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## core_type -> Ident . [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## core_type -> Ident . par(__anonymous_1) [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Ident @@ -3988,9 +3773,9 @@ contract: Type Ident EQ Ident WILD -contract: Type Ident EQ LBRACE Ident COLON Ident RPAR +contract: Type Ident EQ LBRACE Ident COLON Constr Type ## -## Ends in an error in state: 56. +## Ends in an error in state: 58. ## ## nsepseq(field_decl,COMMA) -> field_decl . [ RBRACE ] ## nsepseq(field_decl,COMMA) -> field_decl . COMMA nsepseq(field_decl,COMMA) [ RBRACE ] @@ -4003,9 +3788,11 @@ contract: Type Ident EQ LBRACE Ident COLON 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 18, spurious reduction of production core_type -> Ident -## In state 51, spurious reduction of production type_expr_field -> core_type -## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr_field +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 50, spurious reduction of production type_expr_field -> sum_type +## In state 49, spurious reduction of production field_decl -> Ident COLON type_expr_field ## @@ -4022,9 +3809,9 @@ contract: Type Ident EQ LBRACE Ident COLON WILD -contract: Type Ident EQ LBRACE Ident COMMA Ident COLON Ident RPAR +contract: Type Ident EQ LBRACE Ident COMMA Ident COLON Constr Type ## -## Ends in an error in state: 60. +## Ends in an error in state: 62. ## ## nsepseq(field_decl,COMMA) -> field_decl . [ RBRACE ] ## nsepseq(field_decl,COMMA) -> field_decl . COMMA nsepseq(field_decl,COMMA) [ RBRACE ] @@ -4037,16 +3824,18 @@ contract: Type Ident EQ LBRACE Ident COMMA Ident COLON 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 18, spurious reduction of production core_type -> Ident -## In state 51, spurious reduction of production type_expr_field -> core_type -## In state 48, spurious reduction of production field_decl -> Ident COLON type_expr_field +## In state 48, spurious reduction of production variant -> Constr +## In state 41, spurious reduction of production nsepseq(variant,VBAR) -> variant +## In state 52, spurious reduction of production sum_type -> nsepseq(variant,VBAR) +## In state 50, spurious reduction of production type_expr_field -> sum_type +## In state 49, spurious reduction of production field_decl -> Ident COLON type_expr_field ## contract: Type Ident EQ LBRACE Ident COMMA Ident COMMA WILD ## -## Ends in an error in state: 61. +## Ends in an error in state: 63. ## ## nsepseq(field_decl,COMMA) -> field_decl COMMA . nsepseq(field_decl,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_decl,COMMA)) -> field_decl COMMA . seq(__anonymous_0(field_decl,COMMA)) [ RBRACE ] @@ -4059,7 +3848,7 @@ contract: Type Ident EQ LBRACE Ident COMMA Ident COMMA WILD contract: Type Ident EQ LBRACE Ident COMMA WILD ## -## Ends in an error in state: 57. +## Ends in an error in state: 59. ## ## nsepseq(field_decl,COMMA) -> field_decl COMMA . nsepseq(field_decl,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_decl,COMMA)) -> field_decl COMMA . seq(__anonymous_0(field_decl,COMMA)) [ RBRACE ] @@ -4087,7 +3876,7 @@ contract: Type Ident EQ LBRACE WILD ## ## Ends in an error in state: 45. ## -## record_type -> LBRACE . sep_or_term_list(field_decl,COMMA) RBRACE [ SEMI RPAR RBRACE EQ COMMA ] +## record_type -> LBRACE . sep_or_term_list(field_decl,COMMA) RBRACE [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LBRACE @@ -4095,6 +3884,18 @@ contract: Type Ident EQ LBRACE WILD +contract: Type Ident EQ LPAR Constr WILD +## +## Ends in an error in state: 11. +## +## core_type -> Constr . DOT Ident [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## +## The known suffix of the stack is as follows: +## Constr +## + + + contract: Type Ident EQ LPAR Ident COMMA Ident COMMA WILD ## ## Ends in an error in state: 37. @@ -4111,7 +3912,7 @@ contract: Type Ident EQ LPAR Ident COMMA Ident RPAR WILD ## ## Ends in an error in state: 33. ## -## cartesian -> LPAR cartesian COMMA nsepseq(cartesian,COMMA) RPAR . option(type_expr_func) [ SEMI RPAR EQ COMMA ] +## cartesian -> LPAR cartesian COMMA nsepseq(cartesian,COMMA) RPAR . option(type_expr_func) [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LPAR cartesian COMMA nsepseq(cartesian,COMMA) RPAR @@ -4119,7 +3920,7 @@ contract: Type Ident EQ LPAR Ident COMMA Ident RPAR WILD -contract: Type Ident EQ LPAR Ident COMMA Ident SEMI +contract: Type Ident EQ LPAR Ident COMMA Ident Type ## ## Ends in an error in state: 36. ## @@ -4143,7 +3944,7 @@ contract: Type Ident EQ LPAR Ident COMMA WILD ## ## Ends in an error in state: 31. ## -## cartesian -> LPAR cartesian COMMA . nsepseq(cartesian,COMMA) RPAR option(type_expr_func) [ SEMI RPAR EQ COMMA ] +## cartesian -> LPAR cartesian COMMA . nsepseq(cartesian,COMMA) RPAR option(type_expr_func) [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LPAR cartesian COMMA @@ -4155,8 +3956,8 @@ contract: Type Ident EQ LPAR Ident RPAR WILD ## ## Ends in an error in state: 29. ## -## cartesian -> LPAR cartesian RPAR . type_expr_func [ SEMI RPAR EQ COMMA ] -## par(cartesian) -> LPAR cartesian RPAR . [ SEMI RPAR EQ COMMA ] +## cartesian -> LPAR cartesian RPAR . type_expr_func [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## par(cartesian) -> LPAR cartesian RPAR . [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LPAR cartesian RPAR @@ -4164,13 +3965,13 @@ contract: Type Ident EQ LPAR Ident RPAR WILD -contract: Type Ident EQ LPAR Ident SEMI +contract: Type Ident EQ LPAR Ident Type ## ## Ends in an error in state: 28. ## -## cartesian -> LPAR cartesian . RPAR type_expr_func [ SEMI RPAR EQ COMMA ] -## cartesian -> LPAR cartesian . COMMA nsepseq(cartesian,COMMA) RPAR option(type_expr_func) [ SEMI RPAR EQ COMMA ] -## par(cartesian) -> LPAR cartesian . RPAR [ SEMI RPAR EQ COMMA ] +## cartesian -> LPAR cartesian . RPAR type_expr_func [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## cartesian -> LPAR cartesian . COMMA nsepseq(cartesian,COMMA) RPAR option(type_expr_func) [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## par(cartesian) -> LPAR cartesian . RPAR [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LPAR cartesian @@ -4189,9 +3990,9 @@ contract: Type Ident EQ LPAR WILD ## ## Ends in an error in state: 7. ## -## cartesian -> LPAR . cartesian RPAR type_expr_func [ SEMI RPAR EQ COMMA ] -## cartesian -> LPAR . cartesian COMMA nsepseq(cartesian,COMMA) RPAR option(type_expr_func) [ SEMI RPAR EQ COMMA ] -## par(cartesian) -> LPAR . cartesian RPAR [ SEMI RPAR EQ COMMA ] +## cartesian -> LPAR . cartesian RPAR type_expr_func [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## cartesian -> LPAR . cartesian COMMA nsepseq(cartesian,COMMA) RPAR option(type_expr_func) [ Type SEMI RPAR Let EQ EOF COMMA Attr ] +## par(cartesian) -> LPAR . cartesian RPAR [ Type SEMI RPAR Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## LPAR @@ -4199,68 +4000,12 @@ contract: Type Ident EQ LPAR WILD -contract: Type Ident EQ VBAR Constr LPAR Ident RPAR WILD -## -## Ends in an error in state: 41. -## -## nsepseq(variant,VBAR) -> variant . [ SEMI RPAR RBRACE EQ COMMA ] -## nsepseq(variant,VBAR) -> variant . VBAR nsepseq(variant,VBAR) [ SEMI RPAR RBRACE EQ COMMA ] -## -## The known suffix of the stack is as follows: -## variant -## - - - -contract: Type Ident EQ VBAR Constr LPAR Ident SEMI -## -## Ends in an error in state: 39. -## -## variant -> Constr LPAR cartesian . RPAR [ VBAR SEMI RPAR RBRACE EQ COMMA ] -## -## The known suffix of the stack is as follows: -## Constr LPAR cartesian -## -## 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 8, spurious reduction of production core_type -> Ident -## In state 15, spurious reduction of production cartesian -> core_type -## - - - -contract: Type Ident EQ VBAR Constr LPAR WILD -## -## Ends in an error in state: 6. -## -## variant -> Constr LPAR . cartesian RPAR [ VBAR SEMI RPAR RBRACE EQ COMMA ] -## -## The known suffix of the stack is as follows: -## Constr LPAR -## - - - -contract: Type Ident EQ VBAR Constr VBAR WILD -## -## Ends in an error in state: 42. -## -## nsepseq(variant,VBAR) -> variant VBAR . nsepseq(variant,VBAR) [ SEMI RPAR RBRACE EQ COMMA ] -## -## The known suffix of the stack is as follows: -## variant VBAR -## - - - contract: Type Ident EQ VBAR Constr WILD ## ## Ends in an error in state: 5. ## -## variant -> Constr . [ VBAR SEMI RPAR RBRACE EQ COMMA ] -## variant -> Constr . LPAR cartesian RPAR [ VBAR SEMI RPAR RBRACE EQ COMMA ] +## variant -> Constr . [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] +## variant -> Constr . LPAR cartesian RPAR [ VBAR Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## Constr @@ -4272,7 +4017,7 @@ contract: Type Ident EQ VBAR WILD ## ## Ends in an error in state: 4. ## -## sum_type -> VBAR . nsepseq(variant,VBAR) [ SEMI RPAR RBRACE EQ COMMA ] +## sum_type -> VBAR . nsepseq(variant,VBAR) [ Type SEMI RPAR RBRACE Let EQ EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: ## VBAR @@ -4284,7 +4029,7 @@ contract: Type Ident EQ WILD ## ## Ends in an error in state: 3. ## -## type_decl -> Type Ident EQ . type_expr [ SEMI ] +## type_decl -> Type Ident EQ . type_expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## Type Ident EQ @@ -4296,7 +4041,7 @@ contract: Type Ident WILD ## ## Ends in an error in state: 2. ## -## type_decl -> Type Ident . EQ type_expr [ SEMI ] +## type_decl -> Type Ident . EQ type_expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## Type Ident @@ -4308,7 +4053,7 @@ contract: Type WILD ## ## Ends in an error in state: 1. ## -## type_decl -> Type . Ident EQ type_expr [ SEMI ] +## type_decl -> Type . Ident EQ type_expr [ Type SEMI Let EOF Attr ] ## ## The known suffix of the stack is as follows: ## Type diff --git a/src/passes/4-typer-new/solver.ml b/src/passes/4-typer-new/solver.ml index 4f9c96388..7175fab54 100644 --- a/src/passes/4-typer-new/solver.ml +++ b/src/passes/4-typer-new/solver.ml @@ -35,8 +35,10 @@ module Wrap = struct let rec type_expression_to_type_value : T.type_value -> O.type_value = fun te -> match te.type_value' with | T_sum kvmap -> + let () = failwith "fixme: don't use to_list, it drops the variant keys, rows have a differnt kind than argument lists for now!" in P_constant (C_variant, T.CMap.to_list @@ T.CMap.map type_expression_to_type_value kvmap) | T_record kvmap -> + let () = failwith "fixme: don't use to_list, it drops the record keys, rows have a differnt kind than argument lists for now!" in P_constant (C_record, T.LMap.to_list @@ T.LMap.map type_expression_to_type_value kvmap) | T_arrow (arg , ret) -> P_constant (C_arrow, List.map type_expression_to_type_value [ arg ; ret ]) @@ -77,8 +79,10 @@ module Wrap = struct let rec type_expression_to_type_value_copypasted : I.type_expression -> O.type_value = fun te -> match te.type_expression' with | T_sum kvmap -> + let () = failwith "fixme: don't use to_list, it drops the variant keys, rows have a differnt kind than argument lists for now!" in P_constant (C_variant, I.CMap.to_list @@ I.CMap.map type_expression_to_type_value_copypasted kvmap) | T_record kvmap -> + let () = failwith "fixme: don't use to_list, it drops the record keys, rows have a differnt kind than argument lists for now!" in P_constant (C_record, I.LMap.to_list @@ I.LMap.map type_expression_to_type_value_copypasted kvmap) | T_arrow (arg , ret) -> P_constant (C_arrow, List.map type_expression_to_type_value_copypasted [ arg ; ret ]) diff --git a/src/passes/4-typer-new/typer.ml b/src/passes/4-typer-new/typer.ml index ba9e10bd0..7eb46e26e 100644 --- a/src/passes/4-typer-new/typer.ml +++ b/src/passes/4-typer-new/typer.ml @@ -897,7 +897,8 @@ and type_expression : environment -> Solver.state -> ?tv_opt:O.type_value -> I.e | E_constant (name, lst) -> let () = ignore (name , lst) in - Pervasives.failwith "TODO: E_constant" + let _t = Operators.Typer.Operators_types.constant_type name in + Pervasives.failwith (Format.asprintf "TODO: E_constant (%a(%a))" Stage_common.PP.constant name (Format.pp_print_list Ast_simplified.PP.expression) lst) (* let%bind lst' = bind_list @@ List.map (type_expression e) lst in let tv_lst = List.map get_type_annotation lst' in diff --git a/src/passes/8-compiler/compiler_program.ml b/src/passes/8-compiler/compiler_program.ml index c1f7cc5b6..e4e91f921 100644 --- a/src/passes/8-compiler/compiler_program.ml +++ b/src/passes/8-compiler/compiler_program.ml @@ -80,6 +80,12 @@ let get_operator : constant -> type_value -> expression list -> predicate result prim ~children:[r_ty] I_CONTRACT ; i_assert_some_msg (i_push_string "bad address for get_contract") ; ] + | C_CONTRACT_OPT -> + let%bind tc = get_t_option ty in + let%bind r = get_t_contract tc in + let%bind r_ty = Compiler_type.type_ r in + ok @@ simple_unary @@ prim ~children:[r_ty] I_CONTRACT ; + | C_CONTRACT_ENTRYPOINT -> let%bind r = get_t_contract ty in let%bind r_ty = Compiler_type.type_ r in @@ -94,6 +100,20 @@ let get_operator : constant -> type_value -> expression list -> predicate result prim ~annot:[entry] ~children:[r_ty] I_CONTRACT ; i_assert_some_msg (i_push_string @@ Format.sprintf "bad address for get_entrypoint (%s)" entry) ; ] + | C_CONTRACT_ENTRYPOINT_OPT -> + let%bind tc = get_t_option ty in + let%bind r = get_t_contract tc in + let%bind r_ty = Compiler_type.type_ r in + let%bind entry = match lst with + | [ { content = E_literal (D_string entry); type_value = _ } ; _addr ] -> ok entry + | [ _entry ; _addr ] -> + fail @@ contract_entrypoint_must_be_literal ~loc:__LOC__ + | _ -> + fail @@ corner_case ~loc:__LOC__ "mini_c . CONTRACT_ENTRYPOINT" in + ok @@ simple_binary @@ seq [ + i_drop ; (* drop the entrypoint... *) + prim ~annot:[entry] ~children:[r_ty] I_CONTRACT ; + ] | x -> simple_fail (Format.asprintf "predicate \"%a\" doesn't exist" Stage_common.PP.constant x) ) diff --git a/src/passes/operators/operators.ml b/src/passes/operators/operators.ml index e6eb15c3e..49f693030 100644 --- a/src/passes/operators/operators.ml +++ b/src/passes/operators/operators.ml @@ -70,7 +70,9 @@ module Simplify = struct | "get_chain_id" -> ok C_CHAIN_ID | "transaction" -> ok C_CALL | "get_contract" -> ok C_CONTRACT + | "get_contract_opt"-> ok C_CONTRACT_OPT | "get_entrypoint" -> ok C_CONTRACT_ENTRYPOINT + | "get_entrypoint_opt" -> ok C_CONTRACT_ENTRYPOINT_OPT | "size" -> ok C_SIZE | "int" -> ok C_INT | "abs" -> ok C_ABS @@ -228,7 +230,9 @@ module Simplify = struct | "Operation.transaction" -> ok C_CALL | "Operation.set_delegate" -> ok C_SET_DELEGATE | "Operation.get_contract" -> ok C_CONTRACT + | "Operation.get_contract_opt" -> ok C_CONTRACT_OPT | "Operation.get_entrypoint" -> ok C_CONTRACT_ENTRYPOINT + | "Operation.get_entrypoint_opt" -> ok C_CONTRACT_ENTRYPOINT_OPT | "int" -> ok C_INT | "abs" -> ok C_ABS | "unit" -> ok C_UNIT @@ -365,6 +369,93 @@ module Typer = struct let t_set_add = forall "a" @@ fun a -> a --> set a --> set a let t_set_remove = forall "a" @@ fun a -> a --> set a --> set a let t_not = bool --> bool + + let constant_type : constant -> Typesystem.Core.type_value result = function + | C_INT -> ok @@ t_int ; + | C_UNIT -> ok @@ t_unit ; + | C_NOW -> ok @@ t_now ; + | C_IS_NAT -> ok @@ failwith "t_is_nat" ; + | C_SOME -> ok @@ t_some ; + | C_NONE -> ok @@ t_none ; + | C_ASSERTION -> ok @@ t_assertion ; + | C_FAILWITH -> ok @@ t_failwith ; + (* LOOPS *) + | C_FOLD_WHILE -> ok @@ failwith "t_fold_while" ; + | C_CONTINUE -> ok @@ failwith "t_continue" ; + | C_STOP -> ok @@ failwith "t_stop" ; + (* MATH *) + | C_NEG -> ok @@ failwith "t_neg" ; + | C_ABS -> ok @@ t_abs ; + | C_ADD -> ok @@ t_add ; + | C_SUB -> ok @@ t_sub ; + | C_MUL -> ok @@ t_times; + | C_DIV -> ok @@ t_div ; + | C_MOD -> ok @@ t_mod ; + (* LOGIC *) + | C_NOT -> ok @@ t_not ; + | C_AND -> ok @@ failwith "t_and" ; + | C_OR -> ok @@ failwith "t_or" ; + | C_XOR -> ok @@ failwith "t_xor" ; + (* COMPARATOR *) + | C_EQ -> ok @@ failwith "t_comparator EQ" ; + | C_NEQ -> ok @@ failwith "t_comparator NEQ" ; + | C_LT -> ok @@ failwith "t_comparator LT" ; + | C_GT -> ok @@ failwith "t_comparator GT" ; + | C_LE -> ok @@ failwith "t_comparator LE" ; + | C_GE -> ok @@ failwith "t_comparator GE" ; + (* BYTES / STRING *) + | C_SIZE -> ok @@ t_size ; + | C_CONCAT -> ok @@ failwith "t_concat" ; + | C_SLICE -> ok @@ t_slice ; + | C_BYTES_PACK -> ok @@ t_bytes_pack ; + | C_BYTES_UNPACK -> ok @@ t_bytes_unpack ; + | C_CONS -> ok @@ t_cons ; + (* SET *) + | C_SET_EMPTY -> ok @@ failwith "t_set_empty" ; + | C_SET_ADD -> ok @@ t_set_add ; + | C_SET_REMOVE -> ok @@ t_set_remove ; + | C_SET_ITER -> ok @@ failwith "t_set_iter" ; + | C_SET_FOLD -> ok @@ failwith "t_set_fold" ; + | C_SET_MEM -> ok @@ t_set_mem ; + + (* LIST *) + | C_LIST_ITER -> ok @@ failwith "t_list_iter" ; + | C_LIST_MAP -> ok @@ failwith "t_list_map" ; + | C_LIST_FOLD -> ok @@ failwith "t_list_fold" ; + | C_LIST_CONS -> ok @@ failwith "t_list_cons" ; + (* MAP *) + | C_MAP_GET -> ok @@ failwith "t_map_get" ; + | C_MAP_GET_FORCE -> ok @@ failwith "t_map_get_force" ; + | C_MAP_ADD -> ok @@ t_map_add ; + | C_MAP_REMOVE -> ok @@ t_map_remove ; + | C_MAP_UPDATE -> ok @@ t_map_update ; + | C_MAP_ITER -> ok @@ t_map_iter ; + | C_MAP_MAP -> ok @@ t_map_map ; + | C_MAP_FOLD -> ok @@ t_map_fold ; + | C_MAP_MEM -> ok @@ t_map_mem ; + | C_MAP_FIND -> ok @@ t_map_find ; + | C_MAP_FIND_OPT -> ok @@ t_map_find_opt ; + (* BIG MAP *) + (* CRYPTO *) + | C_SHA256 -> ok @@ t_hash256 ; + | C_SHA512 -> ok @@ t_hash512 ; + | C_BLAKE2b -> ok @@ t_blake2b ; + | C_HASH_KEY -> ok @@ t_hash_key ; + | C_CHECK_SIGNATURE -> ok @@ t_check_signature ; + | C_CHAIN_ID -> ok @@ failwith "t_chain_id" ; + (*BLOCKCHAIN *) + | C_CONTRACT -> ok @@ t_get_contract ; + | C_CONTRACT_ENTRYPOINT -> ok @@ failwith "t_get_entrypoint" ; + | C_AMOUNT -> ok @@ t_amount ; + | C_BALANCE -> ok @@ failwith "t_balance" ; + | C_CALL -> ok @@ t_transaction ; + | C_SENDER -> ok @@ t_sender ; + | C_SOURCE -> ok @@ t_source ; + | C_ADDRESS -> ok @@ t_address ; + | C_SELF_ADDRESS -> ok @@ failwith "t_self_address"; + | C_IMPLICIT_ACCOUNT -> ok @@ failwith "t_implicit_account"; + | C_SET_DELEGATE -> ok @@ failwith "t_set_delegate" ; + | c -> simple_fail @@ Format.asprintf "Typer not implemented for consant %a" Stage_common.PP.constant c end let none = typer_0 "NONE" @@ fun tv_opt -> @@ -570,6 +661,20 @@ module Typer = struct get_t_contract tv in ok @@ t_contract tv' () + let get_contract_opt = typer_1_opt "CONTRACT OPT" @@ fun addr_tv tv_opt -> + if not (type_value_eq (addr_tv, t_address ())) + then fail @@ simple_error (Format.asprintf "get_contract_opt expects an address, got %a" PP.type_value addr_tv) + else + let%bind tv = + trace_option (simple_error "get_contract_opt needs a type annotation") tv_opt in + let%bind tv = + trace_strong (simple_error "get_entrypoint_opt has a not-option annotation") @@ + get_t_option tv in + let%bind tv' = + trace_strong (simple_error "get_entrypoint_opt has a not-option(contract) annotation") @@ + get_t_contract tv in + ok @@ t_option (t_contract tv' ()) () + let get_entrypoint = typer_2_opt "CONTRACT_ENTRYPOINT" @@ fun entry_tv addr_tv tv_opt -> if not (type_value_eq (entry_tv, t_string ())) then fail @@ simple_error (Format.asprintf "get_entrypoint expects a string entrypoint label for first argument, got %a" PP.type_value entry_tv) @@ -584,6 +689,23 @@ module Typer = struct get_t_contract tv in ok @@ t_contract tv' () + let get_entrypoint_opt = typer_2_opt "CONTRACT_ENTRYPOINT_OPT" @@ fun entry_tv addr_tv tv_opt -> + if not (type_value_eq (entry_tv, t_string ())) + then fail @@ simple_error (Format.asprintf "get_entrypoint_opt expects a string entrypoint label for first argument, got %a" PP.type_value entry_tv) + else + if not (type_value_eq (addr_tv, t_address ())) + then fail @@ simple_error (Format.asprintf "get_entrypoint_opt expects an address for second argument, got %a" PP.type_value addr_tv) + else + let%bind tv = + trace_option (simple_error "get_entrypoint_opt needs a type annotation") tv_opt in + let%bind tv = + trace_strong (simple_error "get_entrypoint_opt has a not-option annotation") @@ + get_t_option tv in + let%bind tv' = + trace_strong (simple_error "get_entrypoint_opt has a not-option(contract) annotation") @@ + get_t_contract tv in + ok @@ t_option (t_contract tv' ())() + let set_delegate = typer_1 "SET_DELEGATE" @@ fun delegate_opt -> let%bind () = assert_eq_1 delegate_opt (t_option (t_key_hash ()) ()) in ok @@ t_operation () @@ -933,7 +1055,9 @@ module Typer = struct | C_CHAIN_ID -> ok @@ chain_id ; (*BLOCKCHAIN *) | C_CONTRACT -> ok @@ get_contract ; + | C_CONTRACT_OPT -> ok @@ get_contract_opt ; | C_CONTRACT_ENTRYPOINT -> ok @@ get_entrypoint ; + | C_CONTRACT_ENTRYPOINT_OPT -> ok @@ get_entrypoint_opt ; | C_AMOUNT -> ok @@ amount ; | C_BALANCE -> ok @@ balance ; | C_CALL -> ok @@ transaction ; diff --git a/src/passes/operators/operators.mli b/src/passes/operators/operators.mli index 0085f5883..3da294664 100644 --- a/src/passes/operators/operators.mli +++ b/src/passes/operators/operators.mli @@ -94,6 +94,7 @@ module Typer : sig val t_set_add : Typesystem.Core.type_value val t_set_remove : Typesystem.Core.type_value val t_not : Typesystem.Core.type_value + val constant_type : constant -> Typesystem.Core.type_value Trace.result end (* diff --git a/src/stages/common/PP.ml b/src/stages/common/PP.ml index deebe08ee..773b5eaab 100644 --- a/src/stages/common/PP.ml +++ b/src/stages/common/PP.ml @@ -108,7 +108,9 @@ let constant ppf : constant -> unit = function (* Blockchain *) | C_CALL -> fprintf ppf "CALL" | C_CONTRACT -> fprintf ppf "CONTRACT" + | C_CONTRACT_OPT -> fprintf ppf "CONTRACT_OPT" | C_CONTRACT_ENTRYPOINT -> fprintf ppf "CONTRACT_ENTRYPOINT" + | C_CONTRACT_ENTRYPOINT_OPT -> fprintf ppf "CONTRACT_ENTRYPOINT_OPT" | C_AMOUNT -> fprintf ppf "AMOUNT" | C_BALANCE -> fprintf ppf "BALANCE" | C_SOURCE -> fprintf ppf "SOURCE" diff --git a/src/stages/common/misc.ml b/src/stages/common/misc.ml index 794a36e7c..c753d7f3b 100644 --- a/src/stages/common/misc.ml +++ b/src/stages/common/misc.ml @@ -57,8 +57,8 @@ let type_expression'_of_string = function | "TC_timestamp" , [] -> ok @@ T_constant(TC_timestamp) | _, [] -> failwith "internal error: wrong number of arguments for type constant" - | _ -> - failwith "internal error: unknown type operator" + | op, _ -> + failwith (Format.asprintf "internal error: unknown type operator in src/stages/common/misc.ml %s" op) let string_of_type_operator = function | TC_contract x -> "TC_contract" , [x] diff --git a/src/stages/common/types.ml b/src/stages/common/types.ml index 70c3bc80a..a0c6f9cb6 100644 --- a/src/stages/common/types.ml +++ b/src/stages/common/types.ml @@ -225,7 +225,9 @@ type constant = (* Blockchain *) | C_CALL | C_CONTRACT + | C_CONTRACT_OPT | C_CONTRACT_ENTRYPOINT + | C_CONTRACT_ENTRYPOINT_OPT | C_AMOUNT | C_BALANCE | C_SOURCE diff --git a/src/stages/typesystem/core.ml b/src/stages/typesystem/core.ml index c21888908..11f9122c5 100644 --- a/src/stages/typesystem/core.ml +++ b/src/stages/typesystem/core.ml @@ -77,7 +77,11 @@ let type_expression'_of_simple_c_constant = function | C_set , [x] -> ok @@ T_operator(TC_set x) | C_map , [x ; y] -> ok @@ T_operator(TC_map (x , y)) | C_big_map , [x ; y] -> ok @@ T_operator(TC_big_map (x, y)) - | (C_contract | C_option | C_list | C_set | C_map | C_big_map), _ -> + | C_arrow , [x ; y] -> ok @@ T_operator(TC_arrow (x, y)) + | C_tuple , lst -> ok @@ T_operator(TC_tuple lst) + | C_record , _lst -> ok @@ failwith "records are not supported yet: T_record lst" + | C_variant , _lst -> ok @@ failwith "sums are not supported yet: T_sum lst" + | (C_contract | C_option | C_list | C_set | C_map | C_big_map | C_arrow ), _ -> failwith "internal error: wrong number of arguments for type operator" | C_unit , [] -> ok @@ T_constant(TC_unit) @@ -94,8 +98,6 @@ let type_expression'_of_simple_c_constant = function | C_chain_id , [] -> ok @@ T_constant(TC_chain_id) | C_signature , [] -> ok @@ T_constant(TC_signature) | C_timestamp , [] -> ok @@ T_constant(TC_timestamp) - | _ , [] -> + | (C_unit | C_string | C_bytes | C_nat | C_int | C_mutez | C_bool | C_operation | C_address | C_key | C_key_hash | C_chain_id | C_signature | C_timestamp), _::_ -> failwith "internal error: wrong number of arguments for type constant" - | _ , _ -> - failwith "internal error: unknown type operator" diff --git a/src/test/contracts/entrypoints.ligo b/src/test/contracts/entrypoints.ligo index 1d49a468c..d884a1ec9 100644 --- a/src/test/contracts/entrypoints.ligo +++ b/src/test/contracts/entrypoints.ligo @@ -3,3 +3,14 @@ function cb(const a : address; const s : unit) : list(operation) * unit is const c : contract(unit) = get_entrypoint("%cb", a) } with (list transaction(unit, 0mutez, c) end, s) + + +function cbo(const a : address; const s : unit) : list(operation) * unit is + block { + const c : contract(unit) = + case (get_entrypoint_opt("%cbo", a) : option(contract (unit))) of + | Some (c) -> c + | None -> (failwith ("entrypoint not found") : contract (unit)) + end + } + with (list transaction(unit, 0mutez, c) end, s) diff --git a/src/test/contracts/get_contract.ligo b/src/test/contracts/get_contract.ligo new file mode 100644 index 000000000..12d58aba6 --- /dev/null +++ b/src/test/contracts/get_contract.ligo @@ -0,0 +1,16 @@ +function cb(const s : unit) : list(operation) * unit is + block { + const c : contract(unit) = get_contract(source) + } + with (list transaction(unit, 0mutez, c) end, s) + + +function cbo(const s : unit) : list(operation) * unit is + block { + const c : contract(unit) = + case (get_contract_opt(source) : option(contract (unit))) of + | Some (c) -> c + | None -> (failwith ("contract not found") : contract (unit)) + end + } + with (list transaction(unit, 0mutez, c) end, s) diff --git a/src/test/contracts/match_bis.religo b/src/test/contracts/match_bis.religo index 2a8cd69b8..d1465d77b 100644 --- a/src/test/contracts/match_bis.religo +++ b/src/test/contracts/match_bis.religo @@ -3,7 +3,7 @@ type storage = int; /* variant defining pseudo multi-entrypoint actions */ type action = - | Increment(int) + Increment(int) | Decrement(int); let add = ((a: int), (b: int)) => a + b; diff --git a/src/test/contracts/negative/gitlab_111.religo b/src/test/contracts/negative/gitlab_111.religo new file mode 100644 index 000000000..39cb5dceb --- /dev/null +++ b/src/test/contracts/negative/gitlab_111.religo @@ -0,0 +1,2 @@ +let a = +let b = 2; \ No newline at end of file diff --git a/src/test/contracts/negative/missing_rpar.religo b/src/test/contracts/negative/missing_rpar.religo new file mode 100644 index 000000000..452c0ad1c --- /dev/null +++ b/src/test/contracts/negative/missing_rpar.religo @@ -0,0 +1,5 @@ +type foo = big_map(int, int); + +let test_case = (n: int, m: foo): foo => Big_map.update(23, Some(n), m + +let z = 4; \ No newline at end of file diff --git a/src/test/contracts/no_semicolon.religo b/src/test/contracts/no_semicolon.religo new file mode 100644 index 000000000..633053d61 --- /dev/null +++ b/src/test/contracts/no_semicolon.religo @@ -0,0 +1,13 @@ +type f = int + +let a = (b: f) => { + if (b == 2) { + 3 + } else { + 4 + } +} + +let c = (c: f) => { + 3 +} \ No newline at end of file diff --git a/src/test/integration_tests.ml b/src/test/integration_tests.ml index 720f03b0f..204d2fc55 100644 --- a/src/test/integration_tests.ml +++ b/src/test/integration_tests.ml @@ -1916,6 +1916,26 @@ let attributes_religo () : unit result = in ok () +let get_contract_ligo () : unit result = + let%bind program = type_file "./contracts/get_contract.ligo" in + let%bind () = + let make_input = fun _n -> e_unit () in + let make_expected : int -> Ast_simplified.expression -> unit result = fun _n result -> + let%bind (ops , storage) = get_e_pair result.expression in + let%bind () = + let%bind lst = get_e_list ops.expression in + Assert.assert_list_size lst 1 in + let expected_storage = e_unit () in + Ast_simplified.Misc.assert_value_eq (expected_storage , storage) + in + let%bind () = + let amount = Memory_proto_alpha.Protocol.Alpha_context.Tez.zero in + let options = Proto_alpha_utils.Memory_proto_alpha.make_options ~amount () in + let%bind () = expect_n_strict_pos_small ~options program "cb" make_input make_expected in + expect_n_strict_pos_small ~options program "cbo" make_input make_expected in + ok () + in + ok() let entrypoints_ligo () : unit result = let%bind _program = type_file "./contracts/entrypoints.ligo" in @@ -2178,6 +2198,15 @@ let tuple_type_religo () : unit result = in ok () +let no_semicolon_religo () : unit result = + let%bind program = retype_file "./contracts/no_semicolon.religo" in + let%bind () = + let input _ = e_int 2 in + let expected _ = e_int 3 in + expect_eq_n program "a" input expected + in + ok () + let main = test_suite "Integration (End to End)" [ test "bytes unpack" bytes_unpack ; test "bytes unpack (mligo)" bytes_unpack_mligo ; @@ -2328,6 +2357,7 @@ let main = test_suite "Integration (End to End)" [ test "tuples_sequences_functions (religo)" tuples_sequences_functions_religo ; test "simple_access (ligo)" simple_access_ligo; test "deep_access (ligo)" deep_access_ligo; + test "get_contract (ligo)" get_contract_ligo; test "entrypoints (ligo)" entrypoints_ligo ; test "curry (mligo)" curry ; test "type tuple destruct (mligo)" type_tuple_destruct ; @@ -2342,4 +2372,5 @@ let main = test_suite "Integration (End to End)" [ test "empty case (religo)" empty_case_religo ; test "tuple type (mligo)" tuple_type_mligo ; test "tuple type (religo)" tuple_type_religo ; + test "no semicolon (religo)" no_semicolon_religo ; ]