diff --git a/dexter.ligo b/dexter.ligo deleted file mode 100644 index 0af2bb11d..000000000 --- a/dexter.ligo +++ /dev/null @@ -1,585 +0,0 @@ -// Dexter -// a decentralized Tezos exchange for XTZ and FA1.2 -// copyright: camlCase 2019-2020 -// version: 0.1.5.0 - -// ============================================================================= -// Entrypoints -// ============================================================================= - -type entrypoint is -| Approve of (address * nat * nat) -| AddLiquidity of (address * nat * nat * timestamp) -| RemoveLiquidity of (address * address * nat * tez * nat * timestamp) -| XtzToToken of (address * nat * timestamp) -| TokenToXtz of (address * address * nat * tez * timestamp) -| BetForBakingRights of (key_hash * address * nat) -| EndAuctionRound -| UpdateTokenBalance of (nat) - -// the transfer entrypoint of the FA1.2 contract -type token_contract_transfer is (address * address * nat); - -// ============================================================================= -// Storage -// ============================================================================= - -type baker_address is key_hash; - -type account is record - balance : nat; - allowances: map(address, nat); -end - -// this is just to force big_maps as the first item of a pair on the top -// so we can still use the old big map route without big map id for -// convenience -type s is record - current_baker: option(baker_address); - current_baker_candidate: option(baker_address * address * tez * nat); - last_auction: timestamp; - lqt_total: nat; - token_address: address; - token_balance: nat; - rewards: (tez * nat); -end - -type storage is record - s: s; - accounts: big_map(address, account); -end - -// ============================================================================= -// Constants -// ============================================================================= - -const empty_allowances : map(address,nat) = map end; - -const empty_ops : list(operation) = list end; - -const no_baker_candidate: option(baker_address * address * tez * nat) = None; - -const no_baker: option(key_hash) = None; - -// 21 days -// 86400 seconds * 21 -const dexter_cycle: int = 1814400; - -// ============================================================================= -// Helper Functions -// ============================================================================= - -function mutez_to_natural(const a: tez): nat is - block {skip} with a / 1mutez - -function natural_to_mutez(const a: nat): tez is - block {skip} with a * 1mutez - -// this will fail if provided a negative number -function int_to_nat(const error: string ; const a: int): nat is - block { - var result : nat := 0n; - if (a >= 0) then block { - result := abs(a); - } else block { - failwith(error) - }; - } with result; - -// get an account from the big_map, if one does not exist for a particular -// address then create one. -function get_account(const a: address ; const m: big_map(address, account)): account is - block { skip } with ( - case (m[a]) of - | None -> record balance = 0n; allowances = empty_allowances; end - | Some(account) -> account - end - ); - -function update_allowance(const owner : address; - const spender : address; - const updated_allowance: nat; - var storage : storage): - storage is - block { - if (spender =/= owner) then block { - var account: account := get_account(owner, storage.accounts); - account.allowances[spender] := updated_allowance; - storage.accounts[owner] := record balance = account.balance; allowances = account.allowances; end; - } else { - skip; - } - } with storage; - -// if sender is owner, return amount, otherwise check if sender has permission -// if true then return amount, otherwise fail -function get_sender_allowance(const owner: address ; const storage: storage): nat is - block { - var result: nat := 0n; - case storage.accounts[owner] of - | None -> failwith("2") - | Some(account) -> block { - if sender =/= owner then block { - case account.allowances[sender] of - | None -> failwith("3") - | Some(allowance) -> result := allowance - end; - } else block { - result := account.balance - } - } - end; - } with result; - -function get_current_candidate_bet (const storage: storage): (tez * nat) is - block { - var current_candidate_bet: (tez * nat) := (0mutez, 0n); - case (storage.s.current_baker_candidate) of - | None -> skip - | Some(current_baker_candidate) -> current_candidate_bet := (current_baker_candidate.2, current_baker_candidate.3) - end - } with current_candidate_bet; - -// there might be some zero division edge cases -function get_xtz_pool (const current_candidate_bet_xtz: tez ; const storage: storage): (tez) is - block { - const time_since_last_auction: int = now - storage.s.last_auction; - const days_since_last_auction: int = time_since_last_auction / 86400; - var xtz_pool : tez := 0mutez; - - if (days_since_last_auction < dexter_cycle) then block { - const released_rewards : tez = (storage.s.rewards.0 / abs((days_since_last_auction * 1000 / dexter_cycle))) / 1000n; - const unreleased_rewards: tez = storage.s.rewards.0 - released_rewards; - - xtz_pool := balance - current_candidate_bet_xtz - unreleased_rewards - amount; - } else block { - // the slow reward wait has passed, all the rewards are released - - xtz_pool := balance - current_candidate_bet_xtz - amount; - }; - } with xtz_pool; - -// there might be some zero division edge cases -function get_token_pool (const current_candidate_bet_token: nat ; const storage: storage): (nat) is - block { - const time_since_last_auction: int = now - storage.s.last_auction; - const days_since_last_auction: int = time_since_last_auction / 86400; - var token_pool : nat := 0n; - - if (days_since_last_auction < dexter_cycle) then block { - const reward_days : int = days_since_last_auction; - const released_rewards : nat = (storage.s.rewards.1 / abs((reward_days * 1000 / dexter_cycle))) / 1000n; - const unreleased_rewards: nat = abs(storage.s.rewards.1 - released_rewards); - - token_pool := abs(storage.s.token_balance - current_candidate_bet_token - unreleased_rewards); - } else block { - // the slow reward wait has passed, all the rewards are released - token_pool := abs(storage.s.token_balance - current_candidate_bet_token) - }; - } with token_pool; - -// ============================================================================= -// Entrypoint Functions -// ============================================================================= - -function approve(const spender : address; - const allowance: nat; - const current_allowance: nat; - var storage : storage): - (list(operation) * storage) is - block { - if (spender =/= sender) then block { - // get the sender's account - // if the account does not exist, fail, we do not want to create accounts here - // creating accounts should be done in add_liquidity - const account: account = get_account(sender, storage.accounts); - - var sender_allowances: map(address, nat) := account.allowances; - sender_allowances[spender] := allowance; - storage.accounts[sender] := record balance = account.balance; allowances = sender_allowances; end; - } else block { - failwith("1"); - } - } with (empty_ops, storage); - -// it is assumed that the exchange contract has permission from the FA1.2 token -// to manage the assets of the user. It is the responsibility of the dApp -// developer to handle permissions. -function add_liquidity(const owner : address; - const min_lqt_created : nat; - const max_tokens_deposited: nat; - const deadline : timestamp; - var storage : storage): - (list(operation) * storage) is - block { - // add_liquidity performs a transfer to the token contract, we need to - // return the operations - var op_list: list(operation) := nil; - - if (now < deadline) then skip else block { - failwith("4"); - }; - - if (max_tokens_deposited > 0n) then skip else block { - failwith("5"); - }; - - if (amount > 0mutez) then skip else block { - failwith("6"); - }; - - if (storage.s.lqt_total > 0n) then block { - // lqt_total greater than zero - // use the existing exchange rate - - if (min_lqt_created > 0n) then skip else block { - failwith("7"); - }; - - const current_candidate_bet: (tez * nat) = get_current_candidate_bet(storage); - const xtz_pool : nat = mutez_to_natural(get_xtz_pool(current_candidate_bet.0, storage)); - const token_pool : nat = get_token_pool(current_candidate_bet.1, storage); - const nat_amount : nat = mutez_to_natural(amount); - const tokens_deposited : nat = nat_amount * token_pool / xtz_pool; - const lqt_minted : nat = nat_amount * storage.s.lqt_total / xtz_pool; - - if (max_tokens_deposited >= tokens_deposited) then skip else block { - failwith("8"); - }; - - if (lqt_minted >= min_lqt_created) then skip else block { - failwith("9"); - }; - - const account: account = get_account(owner, storage.accounts); - const new_balance: nat = account.balance + lqt_minted; - storage.accounts[owner] := record balance = new_balance; allowances = account.allowances; end; - storage.s.lqt_total := storage.s.lqt_total + lqt_minted; - storage.s.token_balance := storage.s.token_balance + tokens_deposited; - - // send FA1.2 from owner to exchange - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const op1: operation = transaction((owner, self_address, tokens_deposited), 0mutez, token_contract); - op_list := list op1; end; - - } else block { - // initial add liquidity - if (amount >= 1tz) then skip else block { - failwith("10"); - }; - - const tokens_deposited : nat = max_tokens_deposited; - const current_candidate_bet: (tez * nat) = get_current_candidate_bet(storage); - const initial_liquidity : nat = mutez_to_natural(balance - current_candidate_bet.0); - - storage.s.lqt_total := initial_liquidity; - storage.accounts[owner] := record balance = initial_liquidity; allowances = empty_allowances; end; - storage.s.token_balance := tokens_deposited; - - // send FA1.2 tokens from owner to exchange - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const op1: operation = transaction((owner, self_address, tokens_deposited), 0mutez, token_contract); - op_list := list op1; end; - } - } with (op_list, storage); - -function remove_liquidity(const owner : address; - const to_ : address; - const lqt_burned : nat; - const min_xtz_withdrawn : tez; - const min_tokens_withdrawn : nat; - const deadline : timestamp; - var storage : storage): - (list(operation) * storage) is - block { - var op_list: list(operation) := nil; - if (now < deadline) then skip else block { - failwith("11"); - }; - - if (min_xtz_withdrawn > 0mutez) then skip else block { - failwith("12"); - }; - - if (min_tokens_withdrawn > 0n) then skip else block { - failwith("13"); - }; - - if (lqt_burned > 0n) then skip else block { - failwith("14"); - }; - - // returns total if sender is owner, otherwise looks it up - const lqt: nat = get_sender_allowance(owner, storage); - - if (lqt >= lqt_burned) then skip else block { - failwith("15"); - }; - - if (storage.s.lqt_total > 0n) then skip else block { - failwith("16"); - }; - - const current_candidate_bet: (tez * nat) = get_current_candidate_bet(storage); - const xtz_withdrawn : tez = natural_to_mutez(lqt_burned * mutez_to_natural(balance - current_candidate_bet.0) / storage.s.lqt_total); - - if (xtz_withdrawn >= min_xtz_withdrawn) then skip else block { - failwith("17"); - }; - - const token_pool : nat = get_token_pool(current_candidate_bet.1, storage); - const tokens_withdrawn: nat = lqt_burned * token_pool / storage.s.lqt_total; - - if (tokens_withdrawn >= min_tokens_withdrawn) then skip else block { - failwith("18"); - }; - - const account: account = get_account(owner, storage.accounts); - - if (account.balance >= lqt_burned) then skip else block { - failwith("19"); - }; - - const new_balance: nat = int_to_nat("33", account.balance - lqt_burned); - storage.accounts[owner] := record balance = new_balance; allowances = account.allowances; end; - - storage.s.lqt_total := int_to_nat("34", storage.s.lqt_total - lqt_burned); - storage.s.token_balance := int_to_nat("35", storage.s.token_balance - tokens_withdrawn); - - // update allowance - // lqt - lqt_burned is safe, we have already checed that lqt >= lqt_burned - storage := update_allowance(owner, sender, int_to_nat("36", lqt - lqt_burned), storage); - - // send xtz_withdrawn to to_ address - const to_contract: contract(unit) = get_contract(to_); - const op1: operation = transaction(unit, xtz_withdrawn, to_contract); - - // send tokens_withdrawn to to address - // if tokens_withdrawn if greater than storage.s.token_balance, this will fail - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const op2: operation = transaction((self_address, to_, tokens_withdrawn), 0mutez, token_contract); - op_list := list op1; op2; end - } with (op_list, storage); - -function xtz_to_token(const to_ : address; - const min_tokens_bought: nat; - const deadline : timestamp; - var storage : storage): - (list(operation) * storage) is - block { - var op_list: list(operation) := nil; - if (now < deadline) then skip else block { - failwith("20"); - }; - - const current_candidate_bet: (tez * nat) = get_current_candidate_bet(storage); - const xtz_pool : nat = mutez_to_natural(get_xtz_pool(current_candidate_bet.0, storage)); - const nat_amount : nat = mutez_to_natural(amount); - const token_pool : nat = get_token_pool(current_candidate_bet.1, storage); - const tokens_bought : nat = (nat_amount * 997n * token_pool) / (xtz_pool * 1000n + (nat_amount * 997n)); - - if (tokens_bought >= min_tokens_bought) then skip else block { - failwith("21"); - }; - - storage.s.token_balance := int_to_nat("32", storage.s.token_balance - tokens_bought); - - // send tokens_withdrawn to to address - // if tokens_bought is greater than storage.s.token_balance, this will fail - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const op: operation = transaction((self_address, to_, tokens_bought), 0mutez, token_contract); - - // append internal operations - op_list := list op; end; - } with (op_list, storage); - -function token_to_xtz(const owner : address; // the address of the owner of FA1.2 - const to_ : address; - const tokens_sold : nat; - const min_xtz_bought: tez; - const deadline : timestamp; - var storage : storage): - (list(operation) * storage) is - block { - var op_list: list(operation) := nil; - if (now < deadline) then skip else block { - failwith("22"); - }; - - const current_candidate_bet: (tez * nat) = get_current_candidate_bet(storage); - const xtz_pool : tez = get_xtz_pool(current_candidate_bet.0, storage); - const token_pool : nat = get_token_pool(current_candidate_bet.1, storage); - const xtz_bought : tez = natural_to_mutez((tokens_sold * 997n * mutez_to_natural(xtz_pool)) / (token_pool * 1000n + (tokens_sold * 997n))); - - if (xtz_bought >= min_xtz_bought) then skip else block { - failwith("23"); - }; - - storage.s.token_balance := storage.s.token_balance + tokens_sold; - - // send xtz_bought to to_ address - const to_contract: contract(unit) = get_contract(to_); - const op1: operation = transaction(unit, xtz_bought, to_contract); - - // send tokens_sold to the exchange address - // this assumes that the exchange has an allowance for the token and owner in FA1.2 - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const op2: operation = transaction((owner, self_address, tokens_sold), 0mutez, token_contract); - - // append internal operations - op_list := list op1; op2; end; - } with (op_list, storage); - -function assert_valid_baker (const current_baker: option(key_hash); - const candidate: key_hash): (operation * operation) is - block { - // test the candidate baker, if it is valid this will not fail - const test_set_delegate_operation: operation = set_delegate(Some(candidate)); - - // reset to the current baker - const reset_set_delegate_operation: operation = set_delegate(current_baker); - } with (test_set_delegate_operation, reset_set_delegate_operation); - -function bet_for_baking_rights (const candidate : key_hash; - const token_source : address; - const max_tokens_bet : nat; - var storage : storage): - (list(operation) * storage) is - block { - var op_list: list(operation) := nil; - - // this is a trick to assert that the provided baker address is valid - case (storage.s.current_baker_candidate) of - | None -> block { - const op_pair: (operation * operation) = assert_valid_baker(storage.s.current_baker, candidate); - op_list := op_pair.0 # op_list; - op_list := op_pair.1 # op_list; - } - | Some(current_baker_candidate) -> block { - if (current_baker_candidate.0 = candidate) then skip else block { - const op_pair: (operation * operation) = assert_valid_baker(storage.s.current_baker, candidate); - op_list := op_pair.0 # op_list; - op_list := op_pair.1 # op_list; - }; - } - end; - - // now we are sure it is a valid baker - - // set a minimum bet - if (max_tokens_bet > 0n) then skip else block { - failwith("24"); - }; - - if (amount > 0mutez) then skip else block { - failwith("25"); - }; - - const current_candidate_bet : (tez * nat) = get_current_candidate_bet(storage); - - if (amount > current_candidate_bet.0) then skip else { failwith("26") }; - - const xtz_pool : nat = mutez_to_natural(get_xtz_pool(current_candidate_bet.0, storage)); - const token_pool : nat = get_token_pool(current_candidate_bet.1, storage); - const nat_amount : nat = mutez_to_natural(amount); - const tokens_deposited : nat = nat_amount * token_pool / xtz_pool; - - if (tokens_deposited > current_candidate_bet.1) then skip else { failwith("27") }; - if (tokens_deposited > max_tokens_bet) then skip else { failwith("28") }; - - case (storage.s.current_baker_candidate) of - | None -> block { - // add the tokens_deposited to the token_balance - storage.s.token_balance := storage.s.token_balance + tokens_deposited; - } - | Some(current_baker_candidate) -> block { - // return rejected candidates tez and tokens to previous candidate - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const return_token_op: operation = transaction((self_address, current_baker_candidate.1, current_baker_candidate.3), 0mutez, token_contract); - op_list := return_token_op # op_list; - - const to_contract: contract(unit) = get_contract(current_baker_candidate.1); - const return_xtz_op: operation = transaction(unit, current_baker_candidate.2, to_contract); - op_list := return_xtz_op # op_list; - - // remove the tokens from the current_baker_candidate - // add the tokens_deposited to the token_balance - storage.s.token_balance := abs(storage.s.token_balance - current_baker_candidate.3) + tokens_deposited; - } - end; - - storage.s.current_baker_candidate := Some((candidate,token_source,amount,tokens_deposited)); - - // send FA1.2 from owner to exchange, dexter needs permission to transfer these tokens - const token_contract: contract(token_contract_transfer) = get_entrypoint("%transfer", storage.s.token_address); - const xtz_to_dexter_op: operation = transaction((token_source, self_address, tokens_deposited), 0mutez, token_contract); - op_list := xtz_to_dexter_op # op_list; - - } with (op_list, storage); - -function end_auction_round(var storage : storage) : (list(operation) * storage) is - block { - var op_list: list(operation) := nil; - // 604800 seconds is one week - if (now > storage.s.last_auction + 604800) then skip else {failwith("29")}; - - case (storage.s.current_baker_candidate) of - | None -> block { - const set_delegate_op: operation = set_delegate(no_baker); - op_list := set_delegate_op # op_list; - } - | Some(current_baker_candidate) -> block { - case (storage.s.current_baker) of - | None -> block { - storage.s.current_baker := Some(current_baker_candidate.0); - storage.s.current_baker_candidate := no_baker_candidate; - storage.s.token_balance := storage.s.token_balance + current_baker_candidate.3; - storage.s.last_auction := now; - const set_delegate_op: operation = set_delegate(storage.s.current_baker); - op_list := set_delegate_op # op_list; - } - | Some(current_baker) -> block { - if (current_baker = current_baker_candidate.0) then block { - storage.s.current_baker_candidate := no_baker_candidate; - storage.s.token_balance := storage.s.token_balance + current_baker_candidate.3; - storage.s.last_auction := now; - } else { - storage.s.current_baker := Some(current_baker_candidate.0); - storage.s.current_baker_candidate := no_baker_candidate; - storage.s.token_balance := storage.s.token_balance + current_baker_candidate.3; - storage.s.last_auction := now; - const set_delegate_op: operation = set_delegate(storage.s.current_baker); - op_list := set_delegate_op # op_list; - } - } - end; - } - end; - - } with (op_list, storage); - -function update_token_balance(const token_balance: nat ; var storage : storage) : (list(operation) * storage) is - block { - var op_list: list(operation) := nil; - if (sender =/= storage.s.token_address) then { - failwith("31"); - } else { - storage.s.token_balance := token_balance; - } - } with (op_list, storage); - -// ============================================================================= -// Main -// ============================================================================= - -function main (const entrypoint : entrypoint ; const storage : storage) : (list(operation) * storage) is - (case entrypoint of - | Approve(xs) -> approve(xs.0,xs.1,xs.2,storage) - | AddLiquidity(xs) -> add_liquidity(xs.0,xs.1,xs.2,xs.3,storage) - | RemoveLiquidity(xs) -> remove_liquidity(xs.0,xs.1,xs.2,xs.3,xs.4,xs.5,storage) - | XtzToToken(xs) -> xtz_to_token(xs.0,xs.1,xs.2,storage) - | TokenToXtz(xs) -> token_to_xtz(xs.0,xs.1,xs.2,xs.3,xs.4,storage) - | BetForBakingRights(xs) -> bet_for_baking_rights(xs.0,xs.1,xs.2,storage) - | EndAuctionRound -> end_auction_round(storage) - | UpdateTokenBalance(xs) -> update_token_balance(xs, storage) - end); diff --git a/gitlab-pages/docs/advanced/inline.md b/gitlab-pages/docs/advanced/inline.md new file mode 100644 index 000000000..26e2a8951 --- /dev/null +++ b/gitlab-pages/docs/advanced/inline.md @@ -0,0 +1,70 @@ +--- +id: inline +title: Inlining +--- + +import Syntax from '@theme/Syntax'; + +When compiling a contract in LIGO, declarations will get inlined if they are +only used once and pure. Inlining often results in larger contracts and is +therefore not aggressively done. + +A pure declaration is one that doesn't cause side effects like causing a +failure or operation. + +In some cases you might want to override the default behaviour of LIGO and +force inlining. The declaration still needs to be pure though. + +## Inline attribute + +To force inlining you can use the inline attribute. + + + +```pascaligo +function fst(const p : nat * nat) : nat is p.0; attributes ["inline"] ; + +function main(const p : nat * nat; const s : nat * nat) : list(operation) * (nat * nat) is + ((list end : list(operation)), (fst(p.0,p.1), fst(s.1,s.0))) +``` + + + + +```cameligo +let fst (p: (nat * nat)) : nat = p.0 [@@inline] + +let main (p : (nat * nat)) (s : (nat * nat)) : (operation list * (nat * nat)) = + (([]: operation list), (fst (p.0, p.1), fst (s.1, s.0))) +``` + + + + +```reasonligo +[@inline] +let fst = (p: (nat, nat)) : nat => p[0] + +let main = (p : (nat, nat), s : (nat, nat)) : (list(operation), (nat, nat)) => + (([]: list(operation)), (fst((p[0], p[1])), fst((s[1], s[0])))) +``` + + + +Now if we measure the difference between inlining and without inlining, using +`ligo measure-contract name_of_contract.ligo `, we see the +following results: + + + + + + + + +
With inlining66 bytes
Without inlining170 bytes
+ +:::info +Note that these results can change due to ongoing work to optimize output of +the LIGO compiler. +::: \ No newline at end of file diff --git a/gitlab-pages/docs/language-basics/boolean-if-else.md b/gitlab-pages/docs/language-basics/boolean-if-else.md index 8e35bc2f2..31c87ee4a 100644 --- a/gitlab-pages/docs/language-basics/boolean-if-else.md +++ b/gitlab-pages/docs/language-basics/boolean-if-else.md @@ -36,6 +36,373 @@ let b : bool = false; +Common operations: + + +
+
+ and +
+
+ Logical and +
+
+ +```pascaligo +const logical_and: bool = True and True; +``` + +
+
+ or +
+
+ Logical or +
+
+ +```pascaligo +const logical_or: bool = False or True; +``` + +
+
+ not +
+
+ Logical not +
+
+ +```pascaligo +const logical_not: bool = not False; +``` + +
+
+ = +
+
+ Equals +
+
+ +```pascaligo +const eq: bool = 2 = 3; +``` + +
+
+ =/= +
+
+ Not equals +
+
+ +```pascaligo +const not_eq: bool = 2 =/= 3; +``` + +
+
+ > +
+
+ Greater than +
+
+ +```pascaligo +const gt: bool = 4 > 3; +``` + +
+
+ < +
+
+ Less than +
+
+ +```pascaligo +const lt: bool = 4 < 3; +``` + +
+
+ >= +
+
+ Greater than or equal to +
+
+ +```pascaligo +const gte: bool = 4 >= 3; +``` + +
+
+ <= +
+
+ Less than or equal to +
+
+ +```pascaligo +const lte: bool = 4 <= 3; +``` + +
+
+
+ + +
+
+ && +
+
+ Logical and +
+
+ +```cameligo +let logical_and: bool = true && true +``` + +
+
+ || +
+
+ Logical or +
+
+ +```cameligo +let logical_or: bool = false || true +``` + +
+
+ ! +
+
+ Logical not +
+
+ +```cameligo +let logical_not: bool = not false +``` + +
+
+ = +
+
+ Equals +
+
+ +```cameligo +let eq: bool = 2 = 3 +``` + +
+
+ <> +
+
+ Not equals +
+
+ +```cameligo +let not_eq: bool = 2 <> 3 +``` + +
+
+ > +
+
+ Greater than +
+
+ +```cameligo +let gt: bool = 4 > 3 +``` + +
+
+ < +
+
+ Less than +
+
+ +```cameligo +let lt: bool = 4 < 3 +``` + +
+
+ >= +
+
+ Greater than or equal to +
+
+ +```cameligo +let gte: bool = 4 >= 3 +``` + +
+
+ <= +
+
+ Less than or equal to +
+
+ +```cameligo +let lte: bool = 4 <= 3 +``` + +
+
+
+ + +
+
+ && +
+
+ Logical and +
+
+ +```reasonligo +let logical_and: bool = true && true; +``` + +
+
+ || +
+
+ Logical or +
+
+ +```reasonligo +let logical_or: bool = false || true; +``` + +
+
+ ! +
+
+ Logical not +
+
+ +```reasonligo +let logical_not: bool = !false; +``` + +
+
+ == +
+
+ Equals +
+
+ +```reasonligo +let eq: bool = 2 == 3; +``` + +
+
+ != +
+
+ Not equals +
+
+ +```reasonligo +let not_eq: bool = 2 != 3; +``` + +
+
+ > +
+
+ Greater than +
+
+ +```reasonligo +let gt: bool = 4 > 3; +``` + +
+
+ < +
+
+ Less than +
+
+ +```reasonligo +let lt: bool = 4 < 3; +``` + +
+
+ >= +
+
+ Greater than or equal to +
+
+ +```reasonligo +let gte: bool = 4 >= 3; +``` + +
+
+ <= +
+
+ Less than or equal to +
+
+ +```reasonligo +let lte: bool = 4 <= 3; +``` + +
+
+
## Comparing Values @@ -152,6 +519,7 @@ let c : bool = (a = b) // false + ```reasonligo group=d let a : tez = 5mutez; let b : tez = 10mutez; diff --git a/gitlab-pages/docs/reference/toplevel.md b/gitlab-pages/docs/reference/toplevel.md new file mode 100644 index 000000000..4ed93379a --- /dev/null +++ b/gitlab-pages/docs/reference/toplevel.md @@ -0,0 +1,86 @@ +--- +id: toplevel +title: Toplevel +description: Available functions at the top level +hide_table_of_contents: true +--- + +import Syntax from '@theme/Syntax'; +import SyntaxTitle from '@theme/SyntaxTitle'; + +These functions are available without any needed prefix. + + +function is_nat: int -> option(nat) + + +val is_nat: int -> nat option + + +let is_nat: int => option(nat) + + +Convert an `int` to a `nat` if possible. + + +function abs: int -> nat + + +val abs: int -> nat + + +let abs: int => nat + + +Cast an `int` to `nat`. + + +function int: nat -> int + + +val int: nat -> int + + +let int: nat => int + + +Cast an `nat` to `int`. + + +const unit: unit + + +val unit: unit + + +let (): unit + + +A helper to create a unit. + + +function failwith : string -> unit + + +function failwith : string -> unit + + +function failwith : string -> unit + + +Cause the contract to fail with an error message. + +> ⚠ Using this currently requires in general a type annotation on the +> `failwith` call. + + +function assert : bool -> unit + + +function assert : bool -> unit + + +function assert : bool -> unit + + +Check if a certain condition has been met. If not the contract will fail. diff --git a/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.ligo b/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.ligo index 9cf169397..6d582d7c9 100644 --- a/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.ligo +++ b/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.ligo @@ -34,13 +34,21 @@ function buy_taco (const taco_kind_index : nat; var taco_shop_storage : taco_sho // Update the storage with the refreshed taco_kind taco_shop_storage[taco_kind_index] := taco_kind; - const receiver : contract (unit) = get_contract (ownerAddress); - const donationReceiver : contract (unit) = get_contract (donationAddress); + const receiver : contract (unit) = + case (Tezos.get_contract_opt (ownerAddress): option(contract (unit))) of + Some (contract) -> contract + | None -> (failwith ("Not a contract") : contract (unit)) + end; + const donationReceiver : contract (unit) = + case (Tezos.get_contract_opt (donationAddress): option(contract (unit))) of + Some (contract) -> contract + | None -> (failwith ("Not a contract") : contract (unit)) + end; const donationAmount : tez = amount / 10n; const operations : list (operation) = list [ - transaction (unit, amount - donationAmount, receiver); - transaction (unit, donationAmount, donationReceiver); + Tezos.transaction (unit, amount - donationAmount, receiver); + Tezos.transaction (unit, donationAmount, donationReceiver); ] } with (operations, taco_shop_storage) diff --git a/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.md b/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.md index 9207f7817..20cd89556 100644 --- a/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.md +++ b/gitlab-pages/docs/tutorials/get-started/tezos-taco-shop-payout.md @@ -105,7 +105,11 @@ contract with no parameters, or an implicit account. ```pascaligo group=ex1 const ownerAddress : address = ("tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV" : address); -const receiver : contract (unit) = get_contract (ownerAddress); +const receiver : contract (unit) = + case (Tezos.get_contract_opt (ownerAddress): option(contract(unit))) of + Some (contract) -> contract + | None -> (failwith ("Not a contract") : (contract(unit))) + end; ``` > Would you like to learn more about addresses, contracts and @@ -120,7 +124,7 @@ receiver)` within a list of operations returned at the end of our contract. ```pascaligo group=ex1 -const payoutOperation : operation = transaction (unit, amount, receiver) ; +const payoutOperation : operation = Tezos.transaction (unit, amount, receiver) ; const operations : list (operation) = list [payoutOperation]; ``` @@ -166,8 +170,13 @@ function buy_taco (const taco_kind_index : nat ; var taco_shop_storage : taco_sh // Update the storage with the refreshed taco_kind taco_shop_storage[taco_kind_index] := taco_kind; - const receiver : contract(unit) = get_contract (ownerAddress); - const payoutOperation : operation = transaction (unit, amount, receiver); + const receiver : contract (unit) = + case (Tezos.get_contract_opt (ownerAddress): option(contract(unit))) of + Some (contract) -> contract + | None -> (failwith ("Not a contract") : (contract(unit))) + end; + + const payoutOperation : operation = Tezos.transaction (unit, amount, receiver); const operations : list(operation) = list [payoutOperation] } with ((operations : list (operation)), taco_shop_storage) ``` @@ -214,8 +223,16 @@ sum from each taco purchase. const ownerAddress : address = ("tz1TGu6TN5GSez2ndXXeDX6LgUDvLzPLqgYV" : address); const donationAddress : address = ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx" : address); -const receiver : contract (unit) = get_contract (ownerAddress); -const donationReceiver : contract(unit) = get_contract (donationAddress); +const receiver : contract (unit) = + case (Tezos.get_contract_opt (ownerAddress) : option(contract(unit))) of + Some (contract) -> contract + | None -> (failwith ("Not a contract") : contract (unit)) + end; +const donationReceiver : contract (unit) = + case (Tezos.get_contract_opt (donationAddress) : option(contract(unit))) of + Some (contract) -> contract + | None -> (failwith ("Not a contract") : contract (unit)) + end; const donationAmount : tez = amount / 10n; diff --git a/gitlab-pages/website/sidebars.json b/gitlab-pages/website/sidebars.json index 36cff21e1..2d32e898b 100644 --- a/gitlab-pages/website/sidebars.json +++ b/gitlab-pages/website/sidebars.json @@ -19,13 +19,15 @@ "advanced/entrypoints-contracts", "advanced/include", "advanced/first-contract", - "advanced/michelson-and-ligo" + "advanced/michelson-and-ligo", + "advanced/inline" ], "Reference": [ "api/cli-commands", "api/cheat-sheet" ], "API":[ + "reference/toplevel", "reference/big-map-reference", "reference/bitwise-reference", "reference/bytes-reference", diff --git a/gitlab-pages/website/static/css/custom.css b/gitlab-pages/website/static/css/custom.css index 476f1da98..6d2e05fec 100644 --- a/gitlab-pages/website/static/css/custom.css +++ b/gitlab-pages/website/static/css/custom.css @@ -1029,3 +1029,31 @@ a:hover { background-color: transparent; } +.boolean-example-table { + display: grid; + grid-template-columns: 10% 30% 60%; + width: 100%; +} + +.boolean-example-table .operation{ + font-weight: bold; + display: flex; + align-items: center; + justify-content: center; +} + +.boolean-example-table .description { + display: flex; + align-items: center; +} + +.boolean-example-table > div:nth-child(6n+1), +.boolean-example-table > div:nth-child(6n+2), +.boolean-example-table > div:nth-child(6n+3) { + background-color: var(--ifm-table-stripe-background); +} + +.boolean-example-table > .example pre, +.boolean-example-table > .example .codeBlockLines_src-theme-CodeBlock- { + background-color: transparent; +} \ No newline at end of file diff --git a/src/bin/expect_tests/contract_tests.ml b/src/bin/expect_tests/contract_tests.ml index 3419ad93b..5cff60cca 100644 --- a/src/bin/expect_tests/contract_tests.ml +++ b/src/bin/expect_tests/contract_tests.ml @@ -26,7 +26,7 @@ let%expect_test _ = run_ligo_bad [ "compile-storage" ; contract "coase.ligo" ; "main" ; "Buy_single (record card_to_buy = 1n end)" ] ; [%expect {| - ligo: different kinds: {"a":"record[card_patterns -> (TO_Map (nat,record[coefficient -> mutez , quantity -> nat])) , cards -> (TO_Map (nat,record[card_owner -> address , card_pattern -> nat])) , next_id -> nat]","b":"sum[Buy_single -> record[card_to_buy -> nat] , Sell_single -> record[card_to_sell -> nat] , Transfer_single -> record[card_to_transfer -> nat , destination -> address]]"} + ligo: different kinds: {"a":"record[card_patterns -> (TO_Map (nat,record[coefficient -> mutez , quantity -> nat])) ,\n cards -> (TO_Map (nat,record[card_owner -> address , card_pattern -> nat])) ,\n next_id -> nat]","b":"sum[Buy_single -> record[card_to_buy -> nat] ,\n Sell_single -> record[card_to_sell -> nat] ,\n Transfer_single -> record[card_to_transfer -> nat ,\n destination -> address]]"} If you're not sure how to fix this error, you can @@ -39,7 +39,7 @@ let%expect_test _ = run_ligo_bad [ "compile-parameter" ; contract "coase.ligo" ; "main" ; "record cards = (map end : cards) ; card_patterns = (map end : card_patterns) ; next_id = 3n ; end" ] ; [%expect {| - ligo: different kinds: {"a":"sum[Buy_single -> record[card_to_buy -> nat] , Sell_single -> record[card_to_sell -> nat] , Transfer_single -> record[card_to_transfer -> nat , destination -> address]]","b":"record[card_patterns -> (TO_Map (nat,record[coefficient -> mutez , quantity -> nat])) , cards -> (TO_Map (nat,record[card_owner -> address , card_pattern -> nat])) , next_id -> nat]"} + ligo: different kinds: {"a":"sum[Buy_single -> record[card_to_buy -> nat] ,\n Sell_single -> record[card_to_sell -> nat] ,\n Transfer_single -> record[card_to_transfer -> nat ,\n destination -> address]]","b":"record[card_patterns -> (TO_Map (nat,record[coefficient -> mutez , quantity -> nat])) ,\n cards -> (TO_Map (nat,record[card_owner -> address , card_pattern -> nat])) ,\n next_id -> nat]"} If you're not sure how to fix this error, you can @@ -1117,7 +1117,7 @@ let%expect_test _ = let%expect_test _ = run_ligo_bad [ "compile-contract" ; bad_contract "create_contract_toplevel.mligo" ; "main" ] ; [%expect {| -ligo: in file "create_contract_toplevel.mligo", line 4, character 35 to line 8, character 8. No free variable allowed in this lambda: variable 'store' {"expression":"CREATE_CONTRACT(lambda (#P:Some(( nat * string ))) : None return let rhs#702 = #P in let p = rhs#702.0 in let s = rhs#702.1 in ( LIST_EMPTY() : (TO_list(operation)) , store ) , NONE() : (TO_option(key_hash)) , 300000000mutez , \"un\")","location":"in file \"create_contract_toplevel.mligo\", line 4, character 35 to line 8, character 8"} +ligo: in file "create_contract_toplevel.mligo", line 4, character 35 to line 8, character 8. No free variable allowed in this lambda: variable 'store' {"expression":"CREATE_CONTRACT(lambda (#P:Some(( nat * string ))) : None return\n let rhs#702 = #P in\n let p = rhs#702.0 in\n let s = rhs#702.1 in\n ( LIST_EMPTY() : (TO_list(operation)) , store ) ,\n NONE() : (TO_option(key_hash)) ,\n 300000000mutez ,\n \"un\")","location":"in file \"create_contract_toplevel.mligo\", line 4, character 35 to line 8, character 8"} If you're not sure how to fix this error, you can @@ -1130,7 +1130,7 @@ ligo: in file "create_contract_toplevel.mligo", line 4, character 35 to line 8, run_ligo_bad [ "compile-contract" ; bad_contract "create_contract_var.mligo" ; "main" ] ; [%expect {| -ligo: in file "create_contract_var.mligo", line 6, character 35 to line 10, character 5. No free variable allowed in this lambda: variable 'a' {"expression":"CREATE_CONTRACT(lambda (#P:Some(( nat * int ))) : None return let rhs#705 = #P in let p = rhs#705.0 in let s = rhs#705.1 in ( LIST_EMPTY() : (TO_list(operation)) , a ) , NONE() : (TO_option(key_hash)) , 300000000mutez , 1)","location":"in file \"create_contract_var.mligo\", line 6, character 35 to line 10, character 5"} +ligo: in file "create_contract_var.mligo", line 6, character 35 to line 10, character 5. No free variable allowed in this lambda: variable 'a' {"expression":"CREATE_CONTRACT(lambda (#P:Some(( nat * int ))) : None return\n let rhs#705 = #P in\n let p = rhs#705.0 in\n let s = rhs#705.1 in\n ( LIST_EMPTY() : (TO_list(operation)) , a ) ,\n NONE() : (TO_option(key_hash)) ,\n 300000000mutez ,\n 1)","location":"in file \"create_contract_var.mligo\", line 6, character 35 to line 10, character 5"} If you're not sure how to fix this error, you can diff --git a/src/bin/expect_tests/typer_error_tests.ml b/src/bin/expect_tests/typer_error_tests.ml index facf1e75c..a52cd6e68 100644 --- a/src/bin/expect_tests/typer_error_tests.ml +++ b/src/bin/expect_tests/typer_error_tests.ml @@ -158,7 +158,9 @@ let%expect_test _ = run_ligo_bad [ "compile-contract" ; "../../test/contracts/negative/id.mligo" ; "main" ] ; [%expect {| - ligo: in file "id.mligo", line 45, characters 4-51. Expected a different type: Expected the type option but got the type record[controller -> address , owner -> address , profile -> bytes] + ligo: in file "id.mligo", line 45, characters 4-51. Expected a different type: Expected the type option but got the type record[controller -> address , + owner -> address , + profile -> bytes] If you're not sure how to fix this error, you can do one of the following: diff --git a/src/passes/1-parser/reasonligo.ml b/src/passes/1-parser/reasonligo.ml index 5254018e8..38cde6edb 100644 --- a/src/passes/1-parser/reasonligo.ml +++ b/src/passes/1-parser/reasonligo.ml @@ -68,6 +68,18 @@ module Errors = ("location", fun () -> Format.asprintf "%a" Location.pp_lift @@ expression_loc)] in error ~data title message + + let invalid_wild (expr: AST.expr) = + let title () = "" in + let message () = + "It looks like you are using a wild pattern where it cannot be used." + in + let expression_loc = AST.expr_to_region expr in + let data = [ + ("location", + fun () -> Format.asprintf "%a" Location.pp_lift @@ expression_loc)] + in error ~data title message + end let parse (module IO : IO) parser = @@ -127,6 +139,8 @@ let parse (module IO : IO) parser = | exception SyntaxError.Error (SyntaxError.WrongFunctionArguments expr) -> Trace.fail @@ Errors.wrong_function_arguments expr + | exception SyntaxError.Error (SyntaxError.InvalidWild expr) -> + Trace.fail @@ Errors.wrong_function_arguments expr let parse_file (source: string) = let module IO = diff --git a/src/passes/1-parser/reasonligo/Parser.mly b/src/passes/1-parser/reasonligo/Parser.mly index 5b6a09dfc..1c6078355 100644 --- a/src/passes/1-parser/reasonligo/Parser.mly +++ b/src/passes/1-parser/reasonligo/Parser.mly @@ -40,6 +40,13 @@ let rec curry hd = function in TFun {value; region} | [] -> hd +let wild_error e = + match e with + | EVar { value = "_"; _} as e -> + let open! SyntaxError in + raise (Error (InvalidWild e)) + | _ -> () + (* END HEADER *) %} @@ -262,24 +269,30 @@ let_declaration: let_binding: "" type_annotation? "=" expr { + wild_error $4; Scoping.check_reserved_name $1; {binders = PVar $1, []; lhs_type=$2; eq=$3; let_rhs=$4} } | "_" type_annotation? "=" expr { + wild_error $4; {binders = PWild $1, []; lhs_type=$2; eq=$3; let_rhs=$4} } | unit type_annotation? "=" expr { + wild_error $4; {binders = PUnit $1, []; lhs_type=$2; eq=$3; let_rhs=$4} } | record_pattern type_annotation? "=" expr { + wild_error $4; Scoping.check_pattern (PRecord $1); {binders = PRecord $1, []; lhs_type=$2; eq=$3; let_rhs=$4} } | par(closed_irrefutable) type_annotation? "=" expr { + wild_error $4; Scoping.check_pattern $1.value.inside; {binders = PPar $1, []; lhs_type=$2; eq=$3; let_rhs=$4} } | tuple(sub_irrefutable) type_annotation? "=" expr { + wild_error $4; Utils.nsepseq_iter Scoping.check_pattern $1; let hd, tl = $1 in let start = pattern_to_region hd in @@ -408,7 +421,9 @@ expr: base_cond__open(expr) | switch_expr(base_cond) { $1 } base_cond__open(x): - base_expr(x) | conditional(expr_with_let_expr) { $1 } + base_expr(x) | conditional(expr_with_let_expr) { + wild_error $1; + $1 } base_cond: base_cond__open(base_cond) { $1 } @@ -444,9 +459,13 @@ fun_expr: let region = cover start stop in let rec arg_to_pattern = function - EVar v -> - Scoping.check_reserved_name v; - PVar v + EVar v -> + if v.value = "_" then + PWild v.region + else ( + Scoping.check_reserved_name v; + PVar v + ) | EAnnot {region; value = {inside = EVar v, colon, typ; _}} -> Scoping.check_reserved_name v; let value = {pattern = PVar v; colon; type_expr = typ} @@ -779,6 +798,7 @@ common_expr: | "" { EBytes $1 } | "" | module_field { EVar $1 } | projection { EProj $1 } +| "_" { EVar {value = "_"; region = $1} } | update_record { EUpdate $1 } | "" { EString (String $1) } | unit { EUnit $1 } diff --git a/src/passes/1-parser/reasonligo/ParserMain.ml b/src/passes/1-parser/reasonligo/ParserMain.ml index 6d27665a2..e64aecf0a 100644 --- a/src/passes/1-parser/reasonligo/ParserMain.ml +++ b/src/passes/1-parser/reasonligo/ParserMain.ml @@ -48,7 +48,12 @@ let parse parser : ('a, string Region.reg) Stdlib.result = in Stdlib.Error Region.{value=error; region} (* Scoping errors *) - + | SyntaxError.Error (SyntaxError.InvalidWild expr) -> + let msg = "It looks like you are using a wild pattern where it cannot be used.\n" + and region = AST.expr_to_region expr in + let error = Unit.short_error ~offsets:IO.options#offsets + IO.options#mode msg region + in Stdlib.Error Region.{value=error; region} | Scoping.Error (Scoping.Reserved_name name) -> let token = Lexer.Token.mk_ident name.Region.value name.Region.region in diff --git a/src/passes/1-parser/reasonligo/SyntaxError.ml b/src/passes/1-parser/reasonligo/SyntaxError.ml index befbb27c2..e6d23dbed 100644 --- a/src/passes/1-parser/reasonligo/SyntaxError.ml +++ b/src/passes/1-parser/reasonligo/SyntaxError.ml @@ -1,4 +1,5 @@ type error = | WrongFunctionArguments of AST.expr + | InvalidWild of AST.expr exception Error of error \ No newline at end of file diff --git a/src/passes/1-parser/reasonligo/SyntaxError.mli b/src/passes/1-parser/reasonligo/SyntaxError.mli index f0cc1ca6e..5288ceb41 100644 --- a/src/passes/1-parser/reasonligo/SyntaxError.mli +++ b/src/passes/1-parser/reasonligo/SyntaxError.mli @@ -1,4 +1,5 @@ type error = | WrongFunctionArguments of AST.expr + | InvalidWild of AST.expr exception Error of error diff --git a/src/passes/1-parser/reasonligo/error.messages.checked-in b/src/passes/1-parser/reasonligo/error.messages.checked-in index f075a2d1d..19c8fcfa2 100644 --- a/src/passes/1-parser/reasonligo/error.messages.checked-in +++ b/src/passes/1-parser/reasonligo/error.messages.checked-in @@ -1,6 +1,6 @@ interactive_expr: C_None WILD ## -## Ends in an error in state: 172. +## Ends in an error in state: 173. ## ## 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 ] ## @@ -10,9 +10,9 @@ interactive_expr: C_None WILD -interactive_expr: C_Some WILD +interactive_expr: C_Some VBAR ## -## Ends in an error in state: 124. +## Ends in an error in state: 125. ## ## constr_expr -> C_Some . core_expr [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -24,7 +24,7 @@ interactive_expr: C_Some WILD interactive_expr: Constr DOT Ident WILD ## -## Ends in an error in state: 110. +## Ends in an error in state: 111. ## ## module_fun -> Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr DOT Ident . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -37,7 +37,7 @@ interactive_expr: Constr DOT Ident WILD interactive_expr: Constr DOT WILD ## -## Ends in an error in state: 108. +## Ends in an error in state: 109. ## ## module_field -> Constr DOT . module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr DOT . Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -48,9 +48,9 @@ interactive_expr: Constr DOT WILD -interactive_expr: Constr WILD +interactive_expr: Constr Switch ## -## Ends in an error in state: 107. +## Ends in an error in state: 108. ## ## constr_expr -> Constr . core_expr [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## constr_expr -> Constr . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -65,7 +65,7 @@ interactive_expr: Constr WILD interactive_expr: Ident DOT Ident WILD ## -## Ends in an error in state: 102. +## Ends in an error in state: 103. ## ## selection -> DOT Ident . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> DOT Ident . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -78,7 +78,7 @@ interactive_expr: Ident DOT Ident WILD interactive_expr: Ident DOT WILD ## -## Ends in an error in state: 101. +## Ends in an error in state: 102. ## ## selection -> DOT . Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> DOT . Ident [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -91,7 +91,7 @@ interactive_expr: Ident DOT WILD interactive_expr: Ident LBRACKET Int RBRACKET WILD ## -## Ends in an error in state: 100. +## Ends in an error in state: 101. ## ## selection -> LBRACKET Int RBRACKET . selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> LBRACKET Int RBRACKET . [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -104,7 +104,7 @@ interactive_expr: Ident LBRACKET Int RBRACKET WILD interactive_expr: Ident LBRACKET Int WILD ## -## Ends in an error in state: 99. +## Ends in an error in state: 100. ## ## selection -> LBRACKET Int . RBRACKET selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> LBRACKET Int . RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -117,7 +117,7 @@ interactive_expr: Ident LBRACKET Int WILD interactive_expr: Ident LBRACKET WILD ## -## Ends in an error in state: 98. +## Ends in an error in state: 99. ## ## selection -> LBRACKET . Int RBRACKET selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## selection -> LBRACKET . Int RBRACKET [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -130,7 +130,7 @@ interactive_expr: Ident LBRACKET WILD interactive_expr: Ident WILD ## -## Ends in an error in state: 97. +## Ends in an error in state: 98. ## ## 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 ] @@ -141,10 +141,22 @@ interactive_expr: Ident WILD -interactive_expr: If LBRACE True VBAR +interactive_expr: If LBRACE VBAR ## ## Ends in an error in state: 227. ## +## parenthesized_expr -> LBRACE . expr RBRACE [ LBRACE ] +## +## The known suffix of the stack is as follows: +## LBRACE +## + + + +interactive_expr: If LBRACE WILD VBAR +## +## Ends in an error in state: 228. +## ## parenthesized_expr -> LBRACE expr . RBRACE [ LBRACE ] ## ## The known suffix of the stack is as follows: @@ -154,38 +166,50 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: If LBRACE WILD +interactive_expr: If LPAR VBAR ## -## Ends in an error in state: 226. +## Ends in an error in state: 97. ## -## parenthesized_expr -> LBRACE . expr RBRACE [ LBRACE ] +## parenthesized_expr -> LPAR . expr RPAR [ LBRACE ] ## ## The known suffix of the stack is as follows: -## LBRACE +## LPAR ## -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True ARROW Bytes VBAR +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE VBAR ## -## Ends in an error in state: 407. +## Ends in an error in state: 350. +## +## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD ARROW Bytes VBAR +## +## Ends in an error in state: 408. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -196,31 +220,43 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 215, spurious reduction of production fun_expr -> disj_expr_level ARROW expr -## In state 405, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 216, spurious reduction of production fun_expr -> disj_expr_level ARROW expr +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, 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 RBRACE Else LBRACE True ARROW Bytes VBAR +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## ## Ends in an error in state: 412. ## +## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . closed_if option(SEMI) RBRACE [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD ARROW Bytes VBAR +## +## Ends in an error in state: 413. +## ## 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: @@ -230,30 +266,30 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 215, spurious reduction of production fun_expr -> disj_expr_level ARROW expr -## In state 405, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 216, spurious reduction of production fun_expr -> disj_expr_level ARROW expr +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, 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 RBRACE Else LBRACE True SEMI PLUS +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 413. +## Ends in an error in state: 414. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) . RBRACE [ SEMI RBRACE ] ## @@ -263,22 +299,10 @@ 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 RBRACE Else LBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE Else WILD ## ## Ends in an error in state: 411. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE . closed_if option(SEMI) RBRACE [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## 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: 410. -## ## 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: @@ -287,9 +311,9 @@ 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 RBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 409. +## Ends in an error in state: 410. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -299,9 +323,9 @@ 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 SEMI PLUS +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 408. +## Ends in an error in state: 409. ## ## if_then_else(closed_if) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -311,22 +335,10 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE True SEMI P -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR LBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE If LPAR Bytes RPAR WILD ## ## Ends in an error in state: 349. ## -## if_then_else(closed_if) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE -## - - - -interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR WILD -## -## Ends in an error in state: 348. -## ## if_then_else(closed_if) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## ## The known suffix of the stack is as follows: @@ -335,9 +347,9 @@ interactive_expr: If LPAR True RPAR LBRACE If LPAR Bytes RPAR WILD -interactive_expr: If LPAR True RPAR LBRACE If WILD +interactive_expr: If LPAR WILD RPAR LBRACE If WILD ## -## Ends in an error in state: 347. +## Ends in an error in state: 348. ## ## if_then_else(closed_if) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE closed_if option(SEMI) RBRACE [ SEMI RBRACE ] ## @@ -347,9 +359,21 @@ interactive_expr: If LPAR True RPAR LBRACE If WILD -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR VBAR +interactive_expr: If LPAR WILD RPAR LBRACE Switch VBAR ## -## Ends in an error in state: 274. +## Ends in an error in state: 232. +## +## switch_expr(base_if_then_else) -> Switch . switch_expr_ LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## Switch +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR VBAR +## +## Ends in an error in state: 275. ## ## case_clause(base_if_then_else) -> VBAR . pattern ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## @@ -359,9 +383,9 @@ 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 +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 436. +## Ends in an error in state: 437. ## ## nseq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -371,9 +395,9 @@ 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 +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 438. +## Ends in an error in state: 439. ## ## seq(case_clause(base_if_then_else)) -> case_clause(base_if_then_else) . seq(case_clause(base_if_then_else)) [ RBRACE ] ## @@ -383,9 +407,21 @@ 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 ARROW Bytes VBAR +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE VBAR ## -## Ends in an error in state: 417. +## Ends in an error in state: 347. +## +## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] +## +## The known suffix of the stack is as follows: +## If parenthesized_expr LBRACE +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD ARROW Bytes VBAR +## +## Ends in an error in state: 418. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if . option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -396,30 +432,42 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 215, spurious reduction of production fun_expr -> disj_expr_level ARROW expr -## In state 405, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 216, spurious reduction of production fun_expr -> disj_expr_level ARROW expr +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, 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 RBRACE Else LBRACE True SEMI PLUS +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 427. +## Ends in an error in state: 422. +## +## 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) RBRACE Else LBRACE +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS +## +## Ends in an error in state: 428. ## ## 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 ] ## @@ -429,9 +477,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 LBRACE True RBRACE Else LBRACE True VBAR +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 426. +## Ends in an error in state: 427. ## ## 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 ] ## @@ -442,39 +490,27 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 424, spurious reduction of production base_expr(base_if_then_else) -> disj_expr_level -## In state 429, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) -## In state 425, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, 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 430, 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) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE True RBRACE Else LBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE Else WILD ## ## Ends in an error in state: 421. ## -## 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) RBRACE Else LBRACE -## - - - -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: 420. -## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## ## The known suffix of the stack is as follows: @@ -483,9 +519,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 LBRACE True RBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 419. +## Ends in an error in state: 420. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE . Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -495,9 +531,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 LBRACE True SEMI PLUS +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 418. +## Ends in an error in state: 419. ## ## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE closed_if option(SEMI) . RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -507,22 +543,10 @@ 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 LBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD ## ## Ends in an error in state: 346. ## -## if_then_else(base_if_then_else) -> If parenthesized_expr LBRACE . closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] -## -## The known suffix of the stack is as follows: -## If parenthesized_expr LBRACE -## - - - -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW If LPAR Bytes RPAR WILD -## -## Ends in an error in state: 345. -## ## if_then_else(base_if_then_else) -> If parenthesized_expr . LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## ## The known suffix of the stack is as follows: @@ -531,9 +555,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 +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW If WILD ## -## Ends in an error in state: 344. +## Ends in an error in state: 345. ## ## if_then_else(base_if_then_else) -> If . parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else LBRACE base_if_then_else option(SEMI) RBRACE [ VBAR SEMI RBRACE ] ## @@ -543,9 +567,21 @@ 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 True ARROW Bytes Type +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW VBAR ## -## Ends in an error in state: 430. +## Ends in an error in state: 344. +## +## case_clause(base_if_then_else) -> VBAR pattern ARROW . base_if_then_else option(SEMI) [ VBAR RBRACE ] +## +## The known suffix of the stack is as follows: +## VBAR pattern ARROW +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW WILD ARROW Bytes Type +## +## Ends in an error in state: 431. ## ## case_clause(base_if_then_else) -> VBAR pattern ARROW base_if_then_else . option(SEMI) [ VBAR RBRACE ] ## @@ -556,30 +592,30 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 215, spurious reduction of production fun_expr -> disj_expr_level ARROW expr -## In state 423, spurious reduction of production base_expr(base_if_then_else) -> fun_expr -## In state 429, spurious reduction of production base_if_then_else__open(base_if_then_else) -> base_expr(base_if_then_else) -## In state 425, spurious reduction of production base_if_then_else -> base_if_then_else__open(base_if_then_else) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 216, spurious reduction of production fun_expr -> disj_expr_level ARROW expr +## In state 424, spurious reduction of production base_expr(base_if_then_else) -> fun_expr +## In state 430, 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) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW True Type +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD ARROW WILD Type ## -## Ends in an error in state: 424. +## Ends in an error in state: 425. ## ## 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 ] @@ -593,36 +629,24 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD ARROW WILD +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## ## Ends in an error in state: 343. ## -## case_clause(base_if_then_else) -> VBAR pattern ARROW . base_if_then_else option(SEMI) [ VBAR RBRACE ] -## -## The known suffix of the stack is as follows: -## VBAR pattern ARROW -## - - - -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE VBAR WILD COMMA Bytes RPAR -## -## Ends in an error in state: 342. -## ## case_clause(base_if_then_else) -> VBAR pattern . ARROW base_if_then_else option(SEMI) [ VBAR RBRACE ] ## ## The known suffix of the stack is as follows: @@ -632,16 +656,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 328, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 331, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 340, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 341, spurious reduction of production pattern -> tuple(sub_pattern) ## -interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD LBRACE WILD ## -## Ends in an error in state: 273. +## Ends in an error in state: 274. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ LBRACE . cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -651,9 +675,9 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True LBRACE WILD -interactive_expr: If LPAR True RPAR LBRACE Switch True WILD +interactive_expr: If LPAR WILD RPAR LBRACE Switch WILD WILD ## -## Ends in an error in state: 272. +## Ends in an error in state: 273. ## ## switch_expr(base_if_then_else) -> Switch switch_expr_ . LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] ## @@ -663,21 +687,22 @@ interactive_expr: If LPAR True RPAR LBRACE Switch True WILD -interactive_expr: If LPAR True RPAR LBRACE Switch WILD +interactive_expr: If LPAR WILD RPAR LBRACE VBAR ## ## Ends in an error in state: 231. ## -## switch_expr(base_if_then_else) -> Switch . switch_expr_ LBRACE cases(base_if_then_else) RBRACE [ SEMI RBRACE ] +## 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: -## Switch +## If parenthesized_expr LBRACE ## -interactive_expr: If LPAR True RPAR LBRACE True ARROW Bytes VBAR +interactive_expr: If LPAR WILD RPAR LBRACE WILD ARROW Bytes VBAR ## -## Ends in an error in state: 444. +## Ends in an error in state: 445. ## ## 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 ] @@ -689,30 +714,42 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 215, spurious reduction of production fun_expr -> disj_expr_level ARROW expr -## In state 405, spurious reduction of production base_expr(closed_if) -> fun_expr -## In state 416, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) -## In state 415, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 216, spurious reduction of production fun_expr -> disj_expr_level ARROW expr +## In state 406, spurious reduction of production base_expr(closed_if) -> fun_expr +## In state 417, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if) +## In state 416, spurious reduction of production closed_if -> base_if_then_else__open(closed_if) ## -interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True SEMI PLUS +interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE VBAR ## -## Ends in an error in state: 450. +## Ends in an error in state: 449. +## +## 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 option(SEMI) RBRACE Else LBRACE +## + + + +interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD SEMI PLUS +## +## Ends in an error in state: 451. ## ## 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 ] ## @@ -722,9 +759,9 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True SEMI PLU -interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE True VBAR +interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else LBRACE WILD VBAR ## -## Ends in an error in state: 449. +## Ends in an error in state: 450. ## ## 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 ] ## @@ -735,40 +772,28 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 399, spurious reduction of production expr_with_let_expr -> expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## -interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else LBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE Else WILD ## ## Ends in an error in state: 448. ## -## 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 option(SEMI) RBRACE Else LBRACE -## - - - -interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else WILD -## -## Ends in an error in state: 447. -## ## if_then_else(expr_with_let_expr) -> If parenthesized_expr LBRACE closed_if option(SEMI) RBRACE Else . LBRACE expr_with_let_expr option(SEMI) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## ## The known suffix of the stack is as follows: @@ -777,9 +802,9 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE Else WILD -interactive_expr: If LPAR True RPAR LBRACE True RBRACE WILD +interactive_expr: If LPAR WILD RPAR LBRACE WILD RBRACE WILD ## -## Ends in an error in state: 446. +## Ends in an error in state: 447. ## ## 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 ] @@ -790,9 +815,9 @@ interactive_expr: If LPAR True RPAR LBRACE True RBRACE WILD -interactive_expr: If LPAR True RPAR LBRACE True SEMI PLUS +interactive_expr: If LPAR WILD RPAR LBRACE WILD SEMI PLUS ## -## Ends in an error in state: 445. +## Ends in an error in state: 446. ## ## 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 ] @@ -803,9 +828,9 @@ interactive_expr: If LPAR True RPAR LBRACE True SEMI PLUS -interactive_expr: If LPAR True RPAR LBRACE True VBAR +interactive_expr: If LPAR WILD RPAR LBRACE WILD VBAR ## -## Ends in an error in state: 406. +## Ends in an error in state: 407. ## ## base_expr(closed_if) -> disj_expr_level . [ SEMI RBRACE ] ## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI RBRACE Or BOOL_OR ARROW ] @@ -819,37 +844,24 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: If LPAR True RPAR LBRACE WILD +interactive_expr: If LPAR WILD RPAR WILD ## ## Ends in an error in state: 230. ## -## 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 -## - - - -interactive_expr: If LPAR True RPAR WILD -## -## Ends in an error in state: 229. -## ## 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 ] ## @@ -859,9 +871,9 @@ interactive_expr: If LPAR True RPAR WILD -interactive_expr: If LPAR True VBAR +interactive_expr: If LPAR WILD VBAR ## -## Ends in an error in state: 224. +## Ends in an error in state: 225. ## ## parenthesized_expr -> LPAR expr . RPAR [ LBRACE ] ## @@ -872,38 +884,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## - - - -interactive_expr: If LPAR WILD -## -## Ends in an error in state: 96. -## -## parenthesized_expr -> LPAR . expr RPAR [ LBRACE ] -## -## The known suffix of the stack is as follows: -## LPAR +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## interactive_expr: If WILD ## -## Ends in an error in state: 95. +## Ends in an error in state: 96. ## ## 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 ] @@ -916,7 +916,7 @@ interactive_expr: If WILD interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD ## -## Ends in an error in state: 250. +## Ends in an error in state: 251. ## ## projection -> Constr DOT Ident . selection [ COMMA ] ## @@ -928,7 +928,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT Ident WILD interactive_expr: LBRACE ELLIPSIS Constr DOT WILD ## -## Ends in an error in state: 249. +## Ends in an error in state: 250. ## ## projection -> Constr DOT . Ident selection [ COMMA ] ## @@ -940,7 +940,7 @@ interactive_expr: LBRACE ELLIPSIS Constr DOT WILD interactive_expr: LBRACE ELLIPSIS Constr WILD ## -## Ends in an error in state: 248. +## Ends in an error in state: 249. ## ## projection -> Constr . DOT Ident selection [ COMMA ] ## @@ -952,7 +952,7 @@ interactive_expr: LBRACE ELLIPSIS Constr WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 265. +## Ends in an error in state: 266. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -965,27 +965,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 264, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 265, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr ## -interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON WILD +interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident COLON VBAR ## -## Ends in an error in state: 263. +## Ends in an error in state: 264. ## ## field_path_assignment -> nsepseq(field_name,DOT) COLON . expr [ RBRACE COMMA ] ## @@ -997,7 +997,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: 269. +## Ends in an error in state: 270. ## ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . [ RBRACE ] ## nsepseq(field_path_assignment,COMMA) -> field_path_assignment . COMMA nsepseq(field_path_assignment,COMMA) [ RBRACE ] @@ -1010,27 +1010,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 264, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) COLON expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 265, 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: 270. +## Ends in an error in state: 271. ## ## 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 ] @@ -1043,7 +1043,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: 266. +## Ends in an error in state: 267. ## ## 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 ] @@ -1056,7 +1056,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: 256. +## Ends in an error in state: 257. ## ## nsepseq(field_name,DOT) -> Ident . [ COLON ] ## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ COLON ] @@ -1069,7 +1069,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: 255. +## Ends in an error in state: 256. ## ## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ COLON ] ## @@ -1081,7 +1081,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident DOT WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD ## -## Ends in an error in state: 254. +## Ends in an error in state: 255. ## ## field_path_assignment -> Ident . [ RBRACE COMMA ] ## nsepseq(field_name,DOT) -> Ident . [ COLON ] @@ -1095,7 +1095,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA Ident WILD interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD ## -## Ends in an error in state: 253. +## Ends in an error in state: 254. ## ## update_record -> LBRACE ELLIPSIS path COMMA . sep_or_term_list(field_path_assignment,COMMA) RBRACE [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LPAR LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## @@ -1107,7 +1107,7 @@ interactive_expr: LBRACE ELLIPSIS Ident COMMA WILD interactive_expr: LBRACE ELLIPSIS Ident DOT Ident VBAR ## -## Ends in an error in state: 252. +## Ends in an error in state: 253. ## ## 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 ] ## @@ -1118,16 +1118,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 102, spurious reduction of production selection -> DOT Ident -## In state 105, spurious reduction of production projection -> Ident selection -## In state 251, spurious reduction of production path -> projection +## In state 103, spurious reduction of production selection -> DOT Ident +## In state 106, spurious reduction of production projection -> Ident selection +## In state 252, spurious reduction of production path -> projection ## interactive_expr: LBRACE ELLIPSIS Ident WILD ## -## Ends in an error in state: 247. +## Ends in an error in state: 248. ## ## path -> Ident . [ COMMA ] ## projection -> Ident . selection [ COMMA ] @@ -1140,7 +1140,7 @@ interactive_expr: LBRACE ELLIPSIS Ident WILD interactive_expr: LBRACE ELLIPSIS WILD ## -## Ends in an error in state: 246. +## Ends in an error in state: 247. ## ## 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 ] ## @@ -1152,7 +1152,7 @@ interactive_expr: LBRACE ELLIPSIS WILD interactive_expr: LBRACE Ident COLON Bytes VBAR ## -## Ends in an error in state: 467. +## Ends in an error in state: 468. ## ## sequence_or_record_in -> field_assignment . COMMA sep_or_term_list(field_assignment,COMMA) [ RBRACE ] ## @@ -1163,27 +1163,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 464, spurious reduction of production field_assignment -> Ident COLON expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 465, spurious reduction of production field_assignment -> Ident COLON expr ## -interactive_expr: LBRACE Ident COLON WILD +interactive_expr: LBRACE Ident COLON VBAR ## -## Ends in an error in state: 463. +## Ends in an error in state: 464. ## ## field_assignment -> Ident COLON . expr [ RBRACE COMMA ] ## @@ -1195,7 +1195,7 @@ interactive_expr: LBRACE Ident COLON WILD interactive_expr: LBRACE Ident COMMA Ident COLON Bytes VBAR ## -## Ends in an error in state: 473. +## Ends in an error in state: 474. ## ## nsepseq(field_assignment,COMMA) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,COMMA) -> field_assignment . COMMA nsepseq(field_assignment,COMMA) [ RBRACE ] @@ -1208,27 +1208,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 464, spurious reduction of production field_assignment -> Ident COLON expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 465, 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: 477. +## Ends in an error in state: 478. ## ## nsepseq(field_assignment,COMMA) -> field_assignment . [ RBRACE ] ## nsepseq(field_assignment,COMMA) -> field_assignment . COMMA nsepseq(field_assignment,COMMA) [ RBRACE ] @@ -1241,27 +1241,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 464, spurious reduction of production field_assignment -> Ident COLON expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 465, 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: 478. +## Ends in an error in state: 479. ## ## 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 ] @@ -1274,7 +1274,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: 474. +## Ends in an error in state: 475. ## ## 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 ] @@ -1287,7 +1287,7 @@ interactive_expr: LBRACE Ident COMMA Ident COMMA WILD interactive_expr: LBRACE Ident COMMA Ident WILD ## -## Ends in an error in state: 469. +## Ends in an error in state: 470. ## ## field_assignment -> Ident . [ RBRACE COMMA ] ## field_assignment -> Ident . COLON expr [ RBRACE COMMA ] @@ -1300,7 +1300,7 @@ interactive_expr: LBRACE Ident COMMA Ident WILD interactive_expr: LBRACE Ident COMMA WILD ## -## Ends in an error in state: 468. +## Ends in an error in state: 469. ## ## sequence_or_record_in -> field_assignment COMMA . sep_or_term_list(field_assignment,COMMA) [ RBRACE ] ## @@ -1312,7 +1312,7 @@ interactive_expr: LBRACE Ident COMMA WILD interactive_expr: LBRACE Ident WILD ## -## Ends in an error in state: 462. +## Ends in an error in state: 463. ## ## 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 ] @@ -1325,9 +1325,48 @@ interactive_expr: LBRACE Ident WILD -interactive_expr: LBRACE True SEMI True SEMI True SEMI WILD +interactive_expr: LBRACE VBAR ## -## Ends in an error in state: 490. +## Ends in an error in state: 93. +## +## 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 +## + + + +interactive_expr: LBRACE WILD SEMI VBAR +## +## Ends in an error in state: 482. +## +## option(SEMI) -> 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_with_let_expr SEMI +## + + + +interactive_expr: LBRACE WILD SEMI WILD SEMI VBAR +## +## Ends in an error in state: 487. +## +## 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 WILD SEMI WILD SEMI WILD SEMI VBAR +## +## Ends in an error in state: 491. ## ## 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 ] @@ -1338,9 +1377,9 @@ interactive_expr: LBRACE True SEMI True SEMI True SEMI WILD -interactive_expr: LBRACE True SEMI True SEMI True VBAR +interactive_expr: LBRACE WILD SEMI WILD SEMI WILD VBAR ## -## Ends in an error in state: 489. +## Ends in an error in state: 490. ## ## 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 ] @@ -1353,41 +1392,28 @@ interactive_expr: LBRACE True SEMI 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 399, spurious reduction of production expr_with_let_expr -> expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## -interactive_expr: LBRACE True SEMI True SEMI WILD +interactive_expr: LBRACE WILD SEMI WILD VBAR ## ## Ends in an error in state: 486. ## -## 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: 485. -## ## 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 ] @@ -1399,41 +1425,28 @@ interactive_expr: LBRACE 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 399, spurious reduction of production expr_with_let_expr -> expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## -interactive_expr: LBRACE True SEMI WILD +interactive_expr: LBRACE WILD VBAR ## ## Ends in an error in state: 481. ## -## option(SEMI) -> 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_with_let_expr SEMI -## - - - -interactive_expr: LBRACE True VBAR -## -## Ends in an error in state: 480. -## ## 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 ] ## @@ -1444,41 +1457,54 @@ interactive_expr: 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 399, spurious reduction of production expr_with_let_expr -> expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## -interactive_expr: LBRACE WILD +interactive_expr: LBRACKET VBAR ## -## Ends in an error in state: 92. +## Ends in an error in state: 91. ## -## 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 ] +## 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: -## LBRACE +## LBRACKET ## -interactive_expr: LBRACKET True COMMA ELLIPSIS True VBAR +interactive_expr: LBRACKET WILD COMMA ELLIPSIS VBAR ## ## Ends in an error in state: 499. ## +## 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 +## + + + +interactive_expr: LBRACKET WILD COMMA ELLIPSIS WILD VBAR +## +## Ends in an error in state: 500. +## ## 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: @@ -1488,38 +1514,52 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: LBRACKET True COMMA ELLIPSIS WILD +interactive_expr: LBRACKET WILD COMMA VBAR ## ## Ends in an error in state: 498. ## -## 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 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 ELLIPSIS +## LBRACKET expr COMMA ## -interactive_expr: LBRACKET True COMMA True COMMA True COMMA WILD +interactive_expr: LBRACKET WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 509. +## Ends in an error in state: 507. +## +## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] +## nseq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] +## +## The known suffix of the stack is as follows: +## expr COMMA +## + + + +interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD COMMA VBAR +## +## Ends in an error in state: 510. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] ## seq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1530,9 +1570,9 @@ interactive_expr: LBRACKET True COMMA True COMMA True COMMA WILD -interactive_expr: LBRACKET True COMMA True COMMA True VBAR +interactive_expr: LBRACKET WILD COMMA WILD COMMA WILD VBAR ## -## Ends in an error in state: 508. +## Ends in an error in state: 509. ## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] @@ -1545,40 +1585,27 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: LBRACKET True COMMA True COMMA WILD +interactive_expr: LBRACKET WILD COMMA WILD VBAR ## ## Ends in an error in state: 506. ## -## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RBRACKET ] -## nseq(__anonymous_0(expr,COMMA)) -> expr COMMA . seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] -## -## The known suffix of the stack is as follows: -## expr COMMA -## - - - -interactive_expr: LBRACKET True COMMA True VBAR -## -## Ends in an error in state: 505. -## ## nsepseq(expr,COMMA) -> expr . [ RBRACKET ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RBRACKET ] ## nseq(__anonymous_0(expr,COMMA)) -> expr . COMMA seq(__anonymous_0(expr,COMMA)) [ RBRACKET ] @@ -1590,40 +1617,27 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: LBRACKET True COMMA WILD +interactive_expr: LBRACKET WILD VBAR ## ## Ends in an error in state: 497. ## -## 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 -## - - - -interactive_expr: LBRACKET True VBAR -## -## Ends in an error in state: 496. -## ## 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 ] @@ -1635,40 +1649,40 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: LBRACKET WILD +interactive_expr: LPAR VBAR ## -## Ends in an error in state: 90. +## Ends in an error in state: 94. ## -## 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 ] +## 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: -## LBRACKET +## LPAR ## -interactive_expr: LPAR True COMMA Bytes RPAR COLON Ident TIMES +interactive_expr: LPAR WILD COMMA Bytes RPAR COLON Ident TIMES ## -## Ends in an error in state: 164. +## Ends in an error in state: 165. ## ## 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 ] @@ -1682,18 +1696,18 @@ 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 132, spurious reduction of production option(type_expr_simple_args) -> -## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) -## In state 148, spurious reduction of production type_annotation_simple -> COLON type_expr_simple -## In state 149, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple -## In state 150, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) +## In state 133, spurious reduction of production option(type_expr_simple_args) -> +## In state 142, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 149, spurious reduction of production type_annotation_simple -> COLON type_expr_simple +## In state 150, spurious reduction of production option(type_annotation_simple) -> type_annotation_simple +## In state 151, spurious reduction of production disj_expr_level -> par(tuple(disj_expr_level)) option(type_annotation_simple) ## -interactive_expr: LPAR True COMMA Bytes RPAR WILD +interactive_expr: LPAR WILD COMMA Bytes RPAR WILD ## -## Ends in an error in state: 129. +## Ends in an error in state: 130. ## ## 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 ] ## @@ -1703,9 +1717,21 @@ interactive_expr: LPAR True COMMA Bytes RPAR WILD -interactive_expr: LPAR True COMMA True COMMA WILD +interactive_expr: LPAR WILD COMMA VBAR ## -## Ends in an error in state: 460. +## Ends in an error in state: 458. +## +## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] +## +## The known suffix of the stack is as follows: +## disj_expr_level COMMA +## + + + +interactive_expr: LPAR WILD COMMA WILD COMMA VBAR +## +## Ends in an error in state: 461. ## ## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] ## @@ -1715,9 +1741,9 @@ interactive_expr: LPAR True COMMA True COMMA WILD -interactive_expr: LPAR True COMMA True VBAR +interactive_expr: LPAR WILD COMMA WILD VBAR ## -## Ends in an error in state: 459. +## Ends in an error in state: 460. ## ## 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 ] @@ -1731,36 +1757,24 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: LPAR True COMMA WILD +interactive_expr: LPAR WILD VBAR ## ## Ends in an error in state: 457. ## -## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ RPAR ] -## -## The known suffix of the stack is as follows: -## disj_expr_level COMMA -## - - - -interactive_expr: LPAR True VBAR -## -## Ends in an error in state: 456. -## ## 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 ] ## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ RPAR Or COMMA BOOL_OR ARROW ] @@ -1774,37 +1788,23 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## - - - -interactive_expr: LPAR WILD -## -## Ends in an error in state: 93. -## -## 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 +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level ## interactive_expr: Let Rec VBAR ## -## Ends in an error in state: 353. +## Ends in an error in state: 354. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1814,9 +1814,9 @@ interactive_expr: Let Rec VBAR -interactive_expr: Let Rec WILD EQ Bytes SEMI WILD +interactive_expr: Let Rec WILD EQ Bytes SEMI VBAR ## -## Ends in an error in state: 396. +## Ends in an error in state: 397. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1828,7 +1828,7 @@ interactive_expr: Let Rec WILD EQ Bytes SEMI WILD interactive_expr: Let Rec WILD EQ Bytes VBAR ## -## Ends in an error in state: 395. +## Ends in an error in state: 396. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let Rec let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1839,27 +1839,27 @@ interactive_expr: Let Rec WILD EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 531, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 532, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## interactive_expr: Let VBAR ## -## Ends in an error in state: 352. +## Ends in an error in state: 353. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let . let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## let_expr(expr_with_let_expr) -> seq(Attr) Let . Rec let_binding SEMI expr_with_let_expr [ SEMI RBRACE EOF ] @@ -1870,9 +1870,9 @@ interactive_expr: Let VBAR -interactive_expr: Let WILD EQ Bytes SEMI WILD +interactive_expr: Let WILD EQ Bytes SEMI VBAR ## -## Ends in an error in state: 401. +## Ends in an error in state: 402. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding SEMI . expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1884,7 +1884,7 @@ interactive_expr: Let WILD EQ Bytes SEMI WILD interactive_expr: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 400. +## Ends in an error in state: 401. ## ## let_expr(expr_with_let_expr) -> seq(Attr) Let let_binding . SEMI expr_with_let_expr [ SEMI RBRACE EOF ] ## @@ -1895,27 +1895,27 @@ interactive_expr: Let WILD EQ Bytes VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 531, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 532, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr ## -interactive_expr: MINUS WILD +interactive_expr: MINUS VBAR ## -## Ends in an error in state: 91. +## Ends in an error in state: 92. ## ## 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 ] ## @@ -1925,9 +1925,9 @@ interactive_expr: MINUS WILD -interactive_expr: NOT WILD +interactive_expr: NOT VBAR ## -## Ends in an error in state: 89. +## Ends in an error in state: 90. ## ## 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 ] ## @@ -1939,7 +1939,7 @@ interactive_expr: NOT WILD interactive_expr: Switch Constr WILD ## -## Ends in an error in state: 113. +## Ends in an error in state: 114. ## ## module_field -> Constr . DOT module_fun [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] ## projection -> Constr . DOT Ident selection [ VBAR Type TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE LBRACE GT GE EQEQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ARROW ] @@ -1952,7 +1952,7 @@ interactive_expr: Switch Constr WILD interactive_expr: Switch LBRACE WILD ## -## Ends in an error in state: 245. +## Ends in an error in state: 246. ## ## update_record -> LBRACE . ELLIPSIS path COMMA sep_or_term_list(field_path_assignment,COMMA) RBRACE [ LBRACE ] ## @@ -1962,9 +1962,34 @@ interactive_expr: Switch LBRACE WILD -interactive_expr: Switch LBRACKET True SEMI True SEMI WILD +interactive_expr: Switch LBRACKET VBAR ## -## Ends in an error in state: 243. +## Ends in an error in state: 233. +## +## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ LBRACE ] +## +## The known suffix of the stack is as follows: +## LBRACKET +## + + + +interactive_expr: Switch LBRACKET WILD SEMI VBAR +## +## Ends in an error in state: 240. +## +## 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 +## + + + +interactive_expr: Switch LBRACKET WILD SEMI WILD SEMI VBAR +## +## Ends in an error in state: 244. ## ## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ] ## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ] @@ -1975,9 +2000,9 @@ interactive_expr: Switch LBRACKET True SEMI True SEMI WILD -interactive_expr: Switch LBRACKET True SEMI True VBAR +interactive_expr: Switch LBRACKET WILD SEMI WILD VBAR ## -## Ends in an error in state: 242. +## Ends in an error in state: 243. ## ## nsepseq(expr,SEMI) -> expr . [ RBRACKET ] ## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ] @@ -1990,40 +2015,27 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Switch LBRACKET True SEMI WILD +interactive_expr: Switch LBRACKET WILD VBAR ## ## Ends in an error in state: 239. ## -## 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 -## - - - -interactive_expr: Switch LBRACKET True VBAR -## -## Ends in an error in state: 238. -## ## 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 ] @@ -2035,68 +2047,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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## -interactive_expr: Switch LBRACKET WILD +interactive_expr: Switch LPAR VBAR ## -## Ends in an error in state: 232. -## -## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ LBRACE ] -## -## The known suffix of the stack is as follows: -## LBRACKET -## - - - -interactive_expr: Switch LPAR True VBAR -## -## Ends in an error in state: 454. -## -## 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 -## -## 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## - - - -interactive_expr: Switch LPAR WILD -## -## Ends in an error in state: 87. +## Ends in an error in state: 88. ## ## 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 ] @@ -2107,9 +2077,51 @@ interactive_expr: Switch LPAR WILD -interactive_expr: Switch True LBRACE VBAR LBRACKET VBAR +interactive_expr: Switch LPAR WILD VBAR ## -## Ends in an error in state: 334. +## Ends in an error in state: 455. +## +## 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 +## +## 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 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## + + + +interactive_expr: Switch VBAR +## +## Ends in an error in state: 84. +## +## 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 +## + + + +interactive_expr: Switch WILD LBRACE VBAR LBRACKET VBAR +## +## Ends in an error in state: 335. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ COMMA ARROW ] ## pattern -> LBRACKET . sub_pattern COMMA ELLIPSIS sub_pattern RBRACKET [ ARROW ] @@ -2120,9 +2132,9 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET VBAR -interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR +interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR ## -## Ends in an error in state: 337. +## Ends in an error in state: 338. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS . sub_pattern RBRACKET [ ARROW ] ## @@ -2132,9 +2144,9 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS VBAR -interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD +interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD ## -## Ends in an error in state: 338. +## Ends in an error in state: 339. ## ## pattern -> LBRACKET sub_pattern COMMA ELLIPSIS sub_pattern . RBRACKET [ ARROW ] ## @@ -2144,9 +2156,9 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA ELLIPSIS WILD WILD -interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA WILD +interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD COMMA WILD ## -## Ends in an error in state: 336. +## Ends in an error in state: 337. ## ## pattern -> LBRACKET sub_pattern COMMA . ELLIPSIS sub_pattern RBRACKET [ ARROW ] ## @@ -2156,9 +2168,9 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD COMMA WILD -interactive_expr: Switch True LBRACE VBAR LBRACKET WILD WILD +interactive_expr: Switch WILD LBRACE VBAR LBRACKET WILD WILD ## -## Ends in an error in state: 335. +## Ends in an error in state: 336. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -2171,9 +2183,9 @@ interactive_expr: Switch True LBRACE VBAR LBRACKET WILD WILD -interactive_expr: Switch True LBRACE VBAR LPAR Bytes RPAR WILD +interactive_expr: Switch WILD LBRACE VBAR LPAR Bytes RPAR WILD ## -## Ends in an error in state: 341. +## Ends in an error in state: 342. ## ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ] ## @@ -2183,9 +2195,9 @@ interactive_expr: Switch True LBRACE VBAR LPAR Bytes RPAR WILD -interactive_expr: Switch True LBRACE VBAR VBAR +interactive_expr: Switch WILD LBRACE VBAR VBAR ## -## Ends in an error in state: 514. +## Ends in an error in state: 515. ## ## case_clause(base_cond) -> VBAR . pattern ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## @@ -2195,9 +2207,9 @@ interactive_expr: Switch True LBRACE VBAR VBAR -interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes SEMI WILD +interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes SEMI WILD ## -## Ends in an error in state: 527. +## Ends in an error in state: 528. ## ## nseq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2207,9 +2219,9 @@ 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 +interactive_expr: Switch WILD LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Bytes SEMI WILD ## -## Ends in an error in state: 529. +## Ends in an error in state: 530. ## ## seq(case_clause(base_cond)) -> case_clause(base_cond) . seq(case_clause(base_cond)) [ RBRACE ] ## @@ -2219,9 +2231,21 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW Bytes VBAR Bytes ARROW Byte -interactive_expr: Switch True LBRACE VBAR WILD ARROW True ARROW Bytes Type +interactive_expr: Switch WILD LBRACE VBAR WILD ARROW VBAR ## -## Ends in an error in state: 522. +## Ends in an error in state: 517. +## +## case_clause(base_cond) -> VBAR pattern ARROW . base_cond option(SEMI) [ VBAR RBRACE ] +## +## The known suffix of the stack is as follows: +## VBAR pattern ARROW +## + + + +interactive_expr: Switch WILD LBRACE VBAR WILD ARROW WILD ARROW Bytes Type +## +## Ends in an error in state: 523. ## ## case_clause(base_cond) -> VBAR pattern ARROW base_cond . option(SEMI) [ VBAR RBRACE ] ## @@ -2232,30 +2256,30 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW True ARROW Bytes Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 215, spurious reduction of production fun_expr -> disj_expr_level ARROW expr -## In state 517, spurious reduction of production base_expr(base_cond) -> fun_expr -## In state 520, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) -## In state 521, spurious reduction of production base_cond -> base_cond__open(base_cond) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 216, spurious reduction of production fun_expr -> disj_expr_level ARROW expr +## In state 518, spurious reduction of production base_expr(base_cond) -> fun_expr +## In state 521, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond) +## In state 522, spurious reduction of production base_cond -> base_cond__open(base_cond) ## -interactive_expr: Switch True LBRACE VBAR WILD ARROW True Type +interactive_expr: Switch WILD LBRACE VBAR WILD ARROW WILD Type ## -## Ends in an error in state: 518. +## Ends in an error in state: 519. ## ## 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 ] @@ -2269,36 +2293,24 @@ interactive_expr: Switch True LBRACE VBAR WILD ARROW True Type ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level ## -interactive_expr: Switch True LBRACE VBAR WILD ARROW WILD +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA Bytes RPAR ## ## Ends in an error in state: 516. ## -## case_clause(base_cond) -> VBAR pattern ARROW . base_cond option(SEMI) [ VBAR RBRACE ] -## -## The known suffix of the stack is as follows: -## VBAR pattern ARROW -## - - - -interactive_expr: Switch True LBRACE VBAR WILD COMMA Bytes RPAR -## -## Ends in an error in state: 515. -## ## case_clause(base_cond) -> VBAR pattern . ARROW base_cond option(SEMI) [ VBAR RBRACE ] ## ## The known suffix of the stack is as follows: @@ -2308,16 +2320,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 328, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 331, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 340, spurious reduction of production pattern -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 341, spurious reduction of production pattern -> tuple(sub_pattern) ## -interactive_expr: Switch True LBRACE VBAR WILD COMMA VBAR +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA VBAR ## -## Ends in an error in state: 327. +## Ends in an error in state: 328. ## ## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2327,9 +2339,9 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA VBAR -interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD COMMA VBAR +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 329. +## Ends in an error in state: 330. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] ## @@ -2339,9 +2351,9 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD COMMA VBAR -interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD WILD +interactive_expr: Switch WILD LBRACE VBAR WILD COMMA WILD WILD ## -## Ends in an error in state: 328. +## Ends in an error in state: 329. ## ## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ RPAR ARROW ] ## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ARROW ] @@ -2352,9 +2364,9 @@ interactive_expr: Switch True LBRACE VBAR WILD COMMA WILD WILD -interactive_expr: Switch True LBRACE VBAR WILD WILD +interactive_expr: Switch WILD LBRACE VBAR WILD WILD ## -## Ends in an error in state: 432. +## Ends in an error in state: 433. ## ## pattern -> core_pattern . [ ARROW ] ## sub_pattern -> core_pattern . [ COMMA ] @@ -2365,9 +2377,9 @@ interactive_expr: Switch True LBRACE VBAR WILD WILD -interactive_expr: Switch True LBRACE WILD +interactive_expr: Switch WILD LBRACE WILD ## -## Ends in an error in state: 513. +## Ends in an error in state: 514. ## ## switch_expr(base_cond) -> Switch switch_expr_ LBRACE . cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2377,9 +2389,9 @@ interactive_expr: Switch True LBRACE WILD -interactive_expr: Switch True WILD +interactive_expr: Switch WILD WILD ## -## Ends in an error in state: 512. +## Ends in an error in state: 513. ## ## switch_expr(base_cond) -> Switch switch_expr_ . LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2389,21 +2401,21 @@ interactive_expr: Switch True WILD -interactive_expr: Switch WILD +interactive_expr: VBAR ## -## Ends in an error in state: 83. +## Ends in an error in state: 543. ## -## switch_expr(base_cond) -> Switch . switch_expr_ LBRACE cases(base_cond) RBRACE [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] +## interactive_expr' -> . interactive_expr [ # ] ## ## The known suffix of the stack is as follows: -## Switch +## ## -interactive_expr: True ARROW WILD +interactive_expr: WILD ARROW VBAR ## -## Ends in an error in state: 214. +## Ends in an error in state: 215. ## ## fun_expr -> disj_expr_level ARROW . expr [ VBAR Type SEMI RPAR RBRACKET RBRACE Let EOF COMMA Attr ] ## @@ -2413,9 +2425,9 @@ interactive_expr: True ARROW WILD -interactive_expr: True BOOL_AND WILD +interactive_expr: WILD BOOL_AND VBAR ## -## Ends in an error in state: 168. +## Ends in an error in state: 169. ## ## 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 ] ## @@ -2425,9 +2437,9 @@ interactive_expr: True BOOL_AND WILD -interactive_expr: True BOOL_OR WILD +interactive_expr: WILD BOOL_OR VBAR ## -## Ends in an error in state: 212. +## Ends in an error in state: 213. ## ## 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 ] ## @@ -2437,9 +2449,9 @@ interactive_expr: True BOOL_OR WILD -interactive_expr: True CAT WILD +interactive_expr: WILD CAT VBAR ## -## Ends in an error in state: 191. +## Ends in an error in state: 192. ## ## 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 ] ## @@ -2449,9 +2461,9 @@ interactive_expr: True CAT WILD -interactive_expr: True COLON Ident LPAR Ident VBAR +interactive_expr: WILD COLON Ident LPAR Ident VBAR ## -## Ends in an error in state: 134. +## Ends in an error in state: 135. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2463,15 +2475,15 @@ 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 132, spurious reduction of production option(type_expr_simple_args) -> -## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 133, spurious reduction of production option(type_expr_simple_args) -> +## In state 142, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## -interactive_expr: True COLON Ident LPAR WILD +interactive_expr: WILD COLON Ident LPAR WILD ## -## Ends in an error in state: 133. +## Ends in an error in state: 134. ## ## 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 ] ## @@ -2481,9 +2493,9 @@ interactive_expr: True COLON Ident LPAR WILD -interactive_expr: True COLON Ident WILD +interactive_expr: WILD COLON Ident WILD ## -## Ends in an error in state: 132. +## Ends in an error in state: 133. ## ## 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 ] ## @@ -2493,9 +2505,9 @@ interactive_expr: True COLON Ident WILD -interactive_expr: True COLON LPAR Ident ARROW Ident VBAR +interactive_expr: WILD COLON LPAR Ident ARROW Ident VBAR ## -## Ends in an error in state: 144. +## Ends in an error in state: 145. ## ## 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 ] ## @@ -2506,15 +2518,15 @@ 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 132, spurious reduction of production option(type_expr_simple_args) -> -## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 133, spurious reduction of production option(type_expr_simple_args) -> +## In state 142, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## -interactive_expr: True COLON LPAR Ident ARROW WILD +interactive_expr: WILD COLON LPAR Ident ARROW WILD ## -## Ends in an error in state: 143. +## Ends in an error in state: 144. ## ## 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 ] ## @@ -2524,9 +2536,9 @@ interactive_expr: True COLON LPAR Ident ARROW WILD -interactive_expr: True COLON LPAR Ident COMMA WILD +interactive_expr: WILD COLON LPAR Ident COMMA WILD ## -## Ends in an error in state: 135. +## Ends in an error in state: 136. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple COMMA . nsepseq(type_expr_simple,COMMA) [ RPAR ] ## @@ -2536,9 +2548,9 @@ interactive_expr: True COLON LPAR Ident COMMA WILD -interactive_expr: True COLON LPAR Ident RPAR WILD +interactive_expr: WILD COLON LPAR Ident RPAR WILD ## -## Ends in an error in state: 151. +## Ends in an error in state: 152. ## ## 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 ] @@ -2551,9 +2563,9 @@ interactive_expr: True COLON LPAR Ident RPAR WILD -interactive_expr: True COLON LPAR Ident VBAR +interactive_expr: WILD COLON LPAR Ident VBAR ## -## Ends in an error in state: 142. +## Ends in an error in state: 143. ## ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . [ RPAR ] ## nsepseq(type_expr_simple,COMMA) -> type_expr_simple . COMMA nsepseq(type_expr_simple,COMMA) [ RPAR ] @@ -2566,15 +2578,15 @@ 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 132, spurious reduction of production option(type_expr_simple_args) -> -## In state 141, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) +## In state 133, spurious reduction of production option(type_expr_simple_args) -> +## In state 142, spurious reduction of production type_expr_simple -> Ident option(type_expr_simple_args) ## -interactive_expr: True COLON LPAR WILD +interactive_expr: WILD COLON LPAR WILD ## -## Ends in an error in state: 131. +## Ends in an error in state: 132. ## ## 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 ] @@ -2585,9 +2597,9 @@ interactive_expr: True COLON LPAR WILD -interactive_expr: True COLON WILD +interactive_expr: WILD COLON WILD ## -## Ends in an error in state: 130. +## Ends in an error in state: 131. ## ## 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 ] ## @@ -2597,9 +2609,9 @@ interactive_expr: True COLON WILD -interactive_expr: True EQEQ WILD +interactive_expr: WILD EQEQ VBAR ## -## Ends in an error in state: 201. +## Ends in an error in state: 202. ## ## 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 ] ## @@ -2609,9 +2621,9 @@ interactive_expr: True EQEQ WILD -interactive_expr: True GE WILD +interactive_expr: WILD GE VBAR ## -## Ends in an error in state: 199. +## Ends in an error in state: 200. ## ## 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 ] ## @@ -2621,9 +2633,9 @@ interactive_expr: True GE WILD -interactive_expr: True GT WILD +interactive_expr: WILD GT VBAR ## -## Ends in an error in state: 197. +## Ends in an error in state: 198. ## ## 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 ] ## @@ -2633,9 +2645,9 @@ interactive_expr: True GT WILD -interactive_expr: True LE WILD +interactive_expr: WILD LE VBAR ## -## Ends in an error in state: 195. +## Ends in an error in state: 196. ## ## 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 ] ## @@ -2645,9 +2657,22 @@ interactive_expr: True LE WILD -interactive_expr: True LPAR True COMMA WILD +interactive_expr: WILD LPAR VBAR ## -## Ends in an error in state: 162. +## Ends in an error in state: 156. +## +## 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 +## + + + +interactive_expr: WILD LPAR WILD COMMA VBAR +## +## Ends in an error in state: 163. ## ## nsepseq(expr,COMMA) -> expr COMMA . nsepseq(expr,COMMA) [ RPAR ] ## @@ -2657,9 +2682,9 @@ interactive_expr: True LPAR True COMMA WILD -interactive_expr: True LPAR True VBAR +interactive_expr: WILD LPAR WILD VBAR ## -## Ends in an error in state: 161. +## Ends in an error in state: 162. ## ## nsepseq(expr,COMMA) -> expr . [ RPAR ] ## nsepseq(expr,COMMA) -> expr . COMMA nsepseq(expr,COMMA) [ RPAR ] @@ -2671,39 +2696,26 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) ## Missing `)`. -interactive_expr: True LPAR WILD +interactive_expr: WILD LT VBAR ## -## Ends in an error in state: 155. -## -## 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 -## - - - -interactive_expr: True LT WILD -## -## Ends in an error in state: 193. +## Ends in an error in state: 194. ## ## 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 ] ## @@ -2713,10 +2725,22 @@ interactive_expr: True LT WILD -interactive_expr: True MINUS True COLON LPAR Ident RPAR WILD +interactive_expr: WILD MINUS VBAR ## ## Ends in an error in state: 190. ## +## 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 +## + + + +interactive_expr: WILD MINUS WILD COLON LPAR Ident RPAR WILD +## +## Ends in an error in state: 191. +## ## 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 ] @@ -2728,21 +2752,9 @@ interactive_expr: True MINUS True COLON LPAR Ident RPAR WILD -interactive_expr: True MINUS WILD +interactive_expr: WILD Mod VBAR ## -## Ends in an error in state: 189. -## -## 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 -## - - - -interactive_expr: True Mod WILD -## -## Ends in an error in state: 187. +## Ends in an error in state: 188. ## ## 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 ] ## @@ -2752,9 +2764,9 @@ interactive_expr: True Mod WILD -interactive_expr: True NE WILD +interactive_expr: WILD NE VBAR ## -## Ends in an error in state: 170. +## Ends in an error in state: 171. ## ## 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 ] ## @@ -2764,9 +2776,9 @@ interactive_expr: True NE WILD -interactive_expr: True Or WILD +interactive_expr: WILD Or VBAR ## -## Ends in an error in state: 165. +## Ends in an error in state: 166. ## ## 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 ] ## @@ -2776,10 +2788,22 @@ interactive_expr: True Or WILD -interactive_expr: True PLUS True COLON LPAR Ident RPAR WILD +interactive_expr: WILD PLUS VBAR ## ## Ends in an error in state: 184. ## +## 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 +## + + + +interactive_expr: WILD PLUS WILD COLON LPAR Ident RPAR WILD +## +## Ends in an error in state: 185. +## ## 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 ] @@ -2791,21 +2815,9 @@ interactive_expr: True PLUS True COLON LPAR Ident RPAR WILD -interactive_expr: True PLUS WILD +interactive_expr: WILD SLASH VBAR ## -## Ends in an error in state: 183. -## -## 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 -## - - - -interactive_expr: True SLASH WILD -## -## Ends in an error in state: 185. +## Ends in an error in state: 186. ## ## 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 ] ## @@ -2815,9 +2827,9 @@ interactive_expr: True SLASH WILD -interactive_expr: True TIMES WILD +interactive_expr: WILD TIMES VBAR ## -## Ends in an error in state: 152. +## Ends in an error in state: 153. ## ## 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 ] ## @@ -2827,9 +2839,9 @@ interactive_expr: True TIMES WILD -interactive_expr: True VBAR +interactive_expr: WILD VBAR ## -## Ends in an error in state: 544. +## Ends in an error in state: 545. ## ## interactive_expr -> expr_with_let_expr . EOF [ # ] ## @@ -2840,27 +2852,27 @@ interactive_expr: True VBAR ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 399, spurious reduction of production expr_with_let_expr -> expr +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 400, spurious reduction of production expr_with_let_expr -> expr ## -interactive_expr: True WILD +interactive_expr: WILD WILD ## -## Ends in an error in state: 154. +## Ends in an error in state: 155. ## ## 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 ] @@ -2872,18 +2884,6 @@ interactive_expr: True WILD -interactive_expr: WILD -## -## Ends in an error in state: 542. -## -## interactive_expr' -> . interactive_expr [ # ] -## -## The known suffix of the stack is as follows: -## -## - - - contract: Attr WILD ## ## Ends in an error in state: 69. @@ -2898,7 +2898,7 @@ contract: Attr WILD contract: Let Ident COLON Constr Type ## -## Ends in an error in state: 375. +## Ends in an error in state: 376. ## ## let_binding -> Ident option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -2919,9 +2919,9 @@ contract: Let Ident COLON Constr Type -contract: Let Ident EQ WILD +contract: Let Ident EQ VBAR ## -## Ends in an error in state: 376. +## Ends in an error in state: 377. ## ## let_binding -> Ident option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -2938,7 +2938,7 @@ let func = (a: int, b: int) => a + b; contract: Let Ident WILD ## -## Ends in an error in state: 374. +## Ends in an error in state: 375. ## ## let_binding -> Ident . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> Ident . [ COMMA ] @@ -2951,7 +2951,7 @@ contract: Let Ident WILD contract: Let LBRACE Ident EQ Bytes COMMA Ident EQ Bytes COMMA WILD ## -## Ends in an error in state: 310. +## Ends in an error in state: 311. ## ## nsepseq(field_pattern,COMMA) -> field_pattern COMMA . nsepseq(field_pattern,COMMA) [ RBRACE ] ## seq(__anonymous_0(field_pattern,COMMA)) -> field_pattern COMMA . seq(__anonymous_0(field_pattern,COMMA)) [ RBRACE ] @@ -2964,7 +2964,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: 309. +## Ends in an error in state: 310. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -2978,7 +2978,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: 306. +## Ends in an error in state: 307. ## ## nsepseq(field_pattern,COMMA) -> field_pattern COMMA . nsepseq(field_pattern,COMMA) [ RBRACE ] ## nseq(__anonymous_0(field_pattern,COMMA)) -> field_pattern COMMA . seq(__anonymous_0(field_pattern,COMMA)) [ RBRACE ] @@ -2991,7 +2991,7 @@ contract: Let LBRACE Ident EQ Bytes COMMA WILD contract: Let LBRACE Ident EQ Bytes RBRACE COLON Constr Type ## -## Ends in an error in state: 388. +## Ends in an error in state: 389. ## ## let_binding -> record_pattern option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3012,9 +3012,9 @@ contract: Let LBRACE Ident EQ Bytes RBRACE COLON Constr Type -contract: Let LBRACE Ident EQ Bytes RBRACE EQ WILD +contract: Let LBRACE Ident EQ Bytes RBRACE EQ VBAR ## -## Ends in an error in state: 389. +## Ends in an error in state: 390. ## ## let_binding -> record_pattern option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3026,7 +3026,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE EQ WILD contract: Let LBRACE Ident EQ Bytes RBRACE WILD ## -## Ends in an error in state: 387. +## Ends in an error in state: 388. ## ## let_binding -> record_pattern . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> record_pattern . [ COMMA ] @@ -3039,7 +3039,7 @@ contract: Let LBRACE Ident EQ Bytes RBRACE WILD contract: Let LBRACE Ident EQ Bytes WILD ## -## Ends in an error in state: 305. +## Ends in an error in state: 306. ## ## nsepseq(field_pattern,COMMA) -> field_pattern . [ RBRACE ] ## nsepseq(field_pattern,COMMA) -> field_pattern . COMMA nsepseq(field_pattern,COMMA) [ RBRACE ] @@ -3053,7 +3053,7 @@ contract: Let LBRACE Ident EQ Bytes WILD contract: Let LBRACE Ident EQ VBAR ## -## Ends in an error in state: 283. +## Ends in an error in state: 284. ## ## field_pattern -> Ident EQ . sub_pattern [ RBRACE COMMA ] ## @@ -3065,7 +3065,7 @@ contract: Let LBRACE Ident EQ VBAR contract: Let LBRACE Ident WILD ## -## Ends in an error in state: 282. +## Ends in an error in state: 283. ## ## field_pattern -> Ident . EQ sub_pattern [ RBRACE COMMA ] ## @@ -3077,7 +3077,7 @@ contract: Let LBRACE Ident WILD contract: Let LBRACE WILD ## -## Ends in an error in state: 281. +## Ends in an error in state: 282. ## ## record_pattern -> LBRACE . sep_or_term_list(field_pattern,COMMA) RBRACE [ SEMI RPAR RBRACKET RBRACE EQ COMMA COLON ARROW ] ## @@ -3089,7 +3089,7 @@ contract: Let LBRACE WILD contract: Let LPAR C_Some VBAR ## -## Ends in an error in state: 288. +## Ends in an error in state: 289. ## ## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3101,7 +3101,7 @@ contract: Let LPAR C_Some VBAR contract: Let LPAR Constr LBRACKET VBAR ## -## Ends in an error in state: 280. +## Ends in an error in state: 281. ## ## list__(sub_pattern) -> LBRACKET . option(sep_or_term_list(sub_pattern,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3113,7 +3113,7 @@ contract: Let LPAR Constr LBRACKET VBAR contract: Let LPAR Constr LBRACKET WILD SEMI VBAR ## -## Ends in an error in state: 313. +## Ends in an error in state: 314. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern SEMI . nsepseq(sub_pattern,SEMI) [ RBRACKET ] ## nseq(__anonymous_0(sub_pattern,SEMI)) -> sub_pattern SEMI . seq(__anonymous_0(sub_pattern,SEMI)) [ RBRACKET ] @@ -3126,7 +3126,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: 315. +## Ends in an error in state: 316. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern SEMI . nsepseq(sub_pattern,SEMI) [ RBRACKET ] ## seq(__anonymous_0(sub_pattern,SEMI)) -> sub_pattern SEMI . seq(__anonymous_0(sub_pattern,SEMI)) [ RBRACKET ] @@ -3139,7 +3139,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: 314. +## Ends in an error in state: 315. ## ## nsepseq(sub_pattern,SEMI) -> sub_pattern . [ RBRACKET ] ## nsepseq(sub_pattern,SEMI) -> sub_pattern . SEMI nsepseq(sub_pattern,SEMI) [ RBRACKET ] @@ -3153,7 +3153,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD WILD contract: Let LPAR Constr LBRACKET WILD WILD ## -## Ends in an error in state: 312. +## 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 ] @@ -3167,7 +3167,7 @@ contract: Let LPAR Constr LBRACKET WILD WILD contract: Let LPAR Constr LPAR VBAR ## -## Ends in an error in state: 279. +## Ends in an error in state: 280. ## ## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## par(sub_pattern) -> LPAR . sub_pattern RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3181,7 +3181,7 @@ contract: Let LPAR Constr LPAR VBAR contract: Let LPAR Constr LPAR WILD COMMA Bytes ARROW ## -## Ends in an error in state: 332. +## Ends in an error in state: 333. ## ## par(ptuple) -> LPAR ptuple . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## @@ -3192,16 +3192,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 328, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern -## In state 331, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) -## In state 324, spurious reduction of production ptuple -> tuple(sub_pattern) +## In state 329, spurious reduction of production nsepseq(sub_pattern,COMMA) -> sub_pattern +## In state 332, spurious reduction of production tuple(sub_pattern) -> sub_pattern COMMA nsepseq(sub_pattern,COMMA) +## In state 325, spurious reduction of production ptuple -> tuple(sub_pattern) ## contract: Let LPAR Constr LPAR WILD WILD ## -## Ends in an error in state: 325. +## Ends in an error in state: 326. ## ## par(sub_pattern) -> LPAR sub_pattern . RPAR [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ RPAR ] @@ -3214,7 +3214,7 @@ contract: Let LPAR Constr LPAR WILD WILD contract: Let LPAR Constr SEMI ## -## Ends in an error in state: 372. +## Ends in an error in state: 373. ## ## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ RPAR EQ COMMA COLON ] ## @@ -3225,15 +3225,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 287, spurious reduction of production constr_pattern -> Constr -## In state 371, spurious reduction of production closed_irrefutable -> constr_pattern +## In state 288, spurious reduction of production constr_pattern -> Constr +## In state 372, spurious reduction of production closed_irrefutable -> constr_pattern ## contract: Let LPAR Constr VBAR ## -## Ends in an error in state: 287. +## Ends in an error in state: 288. ## ## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] ## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE COMMA ARROW ] @@ -3246,7 +3246,7 @@ contract: Let LPAR Constr VBAR contract: Let LPAR RPAR COLON Constr Type ## -## Ends in an error in state: 379. +## Ends in an error in state: 380. ## ## let_binding -> unit option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3267,9 +3267,9 @@ contract: Let LPAR RPAR COLON Constr Type -contract: Let LPAR RPAR EQ WILD +contract: Let LPAR RPAR EQ VBAR ## -## Ends in an error in state: 380. +## Ends in an error in state: 381. ## ## let_binding -> unit option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3281,7 +3281,7 @@ contract: Let LPAR RPAR EQ WILD contract: Let LPAR RPAR WILD ## -## Ends in an error in state: 378. +## Ends in an error in state: 379. ## ## let_binding -> unit . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> unit . [ COMMA ] @@ -3294,7 +3294,7 @@ contract: Let LPAR RPAR WILD contract: Let LPAR VBAR ## -## Ends in an error in state: 354. +## Ends in an error in state: 355. ## ## par(closed_irrefutable) -> LPAR . closed_irrefutable RPAR [ RPAR EQ COMMA COLON ] ## unit -> LPAR . RPAR [ RPAR EQ COMMA COLON ] @@ -3307,7 +3307,7 @@ contract: Let LPAR VBAR contract: Let LPAR WILD COLON WILD ## -## Ends in an error in state: 369. +## Ends in an error in state: 370. ## ## typed_pattern -> irrefutable COLON . type_expr [ RPAR ] ## @@ -3319,7 +3319,7 @@ contract: Let LPAR WILD COLON WILD contract: Let LPAR WILD COMMA Ident EQ ## -## Ends in an error in state: 368. +## Ends in an error in state: 369. ## ## closed_irrefutable -> irrefutable . [ RPAR ] ## typed_pattern -> irrefutable . COLON type_expr [ RPAR ] @@ -3331,16 +3331,16 @@ contract: Let LPAR WILD COMMA Ident EQ ## This implies that, although the LR(1) items shown above provide an ## accurate view of the past (what has been recognized so far), they ## may provide an INCOMPLETE view of the future (what was expected next). -## In state 362, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 367, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) -## In state 359, spurious reduction of production irrefutable -> tuple(sub_irrefutable) +## In state 363, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 368, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 360, spurious reduction of production irrefutable -> tuple(sub_irrefutable) ## contract: Let LPAR WILD RPAR COLON Constr Type ## -## Ends in an error in state: 392. +## Ends in an error in state: 393. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3361,9 +3361,9 @@ contract: Let LPAR WILD RPAR COLON Constr Type -contract: Let LPAR WILD RPAR EQ WILD +contract: Let LPAR WILD RPAR EQ VBAR ## -## Ends in an error in state: 393. +## Ends in an error in state: 394. ## ## let_binding -> par(closed_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3375,7 +3375,7 @@ contract: Let LPAR WILD RPAR EQ WILD contract: Let LPAR WILD RPAR WILD ## -## Ends in an error in state: 391. +## Ends in an error in state: 392. ## ## let_binding -> par(closed_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## sub_irrefutable -> par(closed_irrefutable) . [ COMMA ] @@ -3388,7 +3388,7 @@ contract: Let LPAR WILD RPAR WILD contract: Let LPAR WILD WILD ## -## Ends in an error in state: 360. +## Ends in an error in state: 361. ## ## irrefutable -> sub_irrefutable . [ RPAR COLON ] ## tuple(sub_irrefutable) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR COLON ] @@ -3401,7 +3401,7 @@ contract: Let LPAR WILD WILD contract: Let Rec VBAR ## -## Ends in an error in state: 532. +## Ends in an error in state: 533. ## ## let_declaration -> seq(Attr) Let Rec . let_binding [ Type SEMI Let EOF Attr ] ## @@ -3460,7 +3460,7 @@ contract: Let WILD COLON WILD contract: Let WILD COMMA Ident COLON Constr Type ## -## Ends in an error in state: 383. +## Ends in an error in state: 384. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) . EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3481,9 +3481,9 @@ contract: Let WILD COMMA Ident COLON Constr Type -contract: Let WILD COMMA Ident EQ WILD +contract: Let WILD COMMA Ident EQ VBAR ## -## Ends in an error in state: 384. +## Ends in an error in state: 385. ## ## let_binding -> tuple(sub_irrefutable) option(type_annotation) EQ . expr [ Type SEMI Let EOF Attr ] ## @@ -3495,7 +3495,7 @@ contract: Let WILD COMMA Ident EQ WILD contract: Let WILD COMMA Ident RPAR ## -## Ends in an error in state: 382. +## Ends in an error in state: 383. ## ## let_binding -> tuple(sub_irrefutable) . option(type_annotation) EQ expr [ Type SEMI Let EOF Attr ] ## @@ -3506,15 +3506,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 362, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable -## In state 367, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) +## In state 363, spurious reduction of production nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable +## In state 368, spurious reduction of production tuple(sub_irrefutable) -> sub_irrefutable COMMA nsepseq(sub_irrefutable,COMMA) ## contract: Let WILD COMMA VBAR ## -## Ends in an error in state: 361. +## Ends in an error in state: 362. ## ## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3526,7 +3526,7 @@ contract: Let WILD COMMA VBAR contract: Let WILD COMMA WILD COMMA VBAR ## -## Ends in an error in state: 363. +## Ends in an error in state: 364. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] ## @@ -3538,7 +3538,7 @@ contract: Let WILD COMMA WILD COMMA VBAR contract: Let WILD COMMA WILD WILD ## -## Ends in an error in state: 362. +## Ends in an error in state: 363. ## ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ RPAR EQ COLON ] ## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ RPAR EQ COLON ] @@ -3551,7 +3551,7 @@ contract: Let WILD COMMA WILD WILD contract: Let WILD EQ Bytes VBAR ## -## Ends in an error in state: 535. +## Ends in an error in state: 536. ## ## declaration -> let_declaration . option(SEMI) [ Type Let EOF Attr ] ## @@ -3562,26 +3562,26 @@ 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 154, spurious reduction of production call_expr_level_in -> core_expr -## In state 172, spurious reduction of production option(type_annotation_simple) -> -## In state 173, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) -## In state 174, spurious reduction of production unary_expr_level -> call_expr_level -## In state 127, spurious reduction of production mult_expr_level -> unary_expr_level -## In state 151, spurious reduction of production add_expr_level -> mult_expr_level -## In state 182, spurious reduction of production cat_expr_level -> add_expr_level -## In state 203, spurious reduction of production comp_expr_level -> cat_expr_level -## In state 210, spurious reduction of production conj_expr_level -> comp_expr_level -## In state 217, spurious reduction of production disj_expr_level -> conj_expr_level -## In state 164, spurious reduction of production base_expr(expr) -> disj_expr_level -## In state 221, spurious reduction of production base_cond__open(expr) -> base_expr(expr) -## In state 222, spurious reduction of production expr -> base_cond__open(expr) -## In state 531, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr -## In state 534, spurious reduction of production let_declaration -> seq(Attr) Let let_binding +## In state 155, spurious reduction of production call_expr_level_in -> core_expr +## In state 173, spurious reduction of production option(type_annotation_simple) -> +## In state 174, spurious reduction of production call_expr_level -> call_expr_level_in option(type_annotation_simple) +## In state 175, spurious reduction of production unary_expr_level -> call_expr_level +## In state 128, spurious reduction of production mult_expr_level -> unary_expr_level +## In state 152, spurious reduction of production add_expr_level -> mult_expr_level +## In state 183, spurious reduction of production cat_expr_level -> add_expr_level +## In state 204, spurious reduction of production comp_expr_level -> cat_expr_level +## In state 211, spurious reduction of production conj_expr_level -> comp_expr_level +## In state 218, spurious reduction of production disj_expr_level -> conj_expr_level +## In state 165, spurious reduction of production base_expr(expr) -> disj_expr_level +## In state 222, spurious reduction of production base_cond__open(expr) -> base_expr(expr) +## In state 223, spurious reduction of production expr -> base_cond__open(expr) +## In state 532, spurious reduction of production let_binding -> WILD option(type_annotation) EQ expr +## In state 535, spurious reduction of production let_declaration -> seq(Attr) Let let_binding ## -contract: Let WILD EQ WILD +contract: Let WILD EQ VBAR ## ## Ends in an error in state: 81. ## @@ -3686,7 +3686,7 @@ contract: Type Ident EQ Constr RPAR contract: Type Ident EQ Constr SEMI WILD ## -## Ends in an error in state: 539. +## Ends in an error in state: 540. ## ## declarations -> declaration . [ EOF ] ## declarations -> declaration . declarations [ EOF ] @@ -4149,5 +4149,4 @@ contract: WILD ## ## - - + \ No newline at end of file diff --git a/src/passes/11-self_mini_c/michelson_restrictions.ml b/src/passes/11-self_mini_c/michelson_restrictions.ml index 80fe2cf73..88bab055f 100644 --- a/src/passes/11-self_mini_c/michelson_restrictions.ml +++ b/src/passes/11-self_mini_c/michelson_restrictions.ml @@ -5,9 +5,9 @@ module Errors = struct let bad_self_address cst () = let title = thunk @@ - Format.asprintf "Wrong %alocation" Mini_c.PP.expression' cst in + Format.asprintf "Wrong %a location" Stage_common.PP.constant cst in let message = thunk @@ - Format.asprintf "%ais only allowed at top-level" Mini_c.PP.expression' cst in + Format.asprintf "%a is only allowed at top-level" Stage_common.PP.constant cst in error title message () end @@ -19,7 +19,7 @@ let self_in_lambdas : expression -> expression result = | E_closure {binder=_ ; body} -> let%bind _self_in_lambdas = Helpers.map_expression (fun e -> match e.content with - | E_constant {cons_name=C_SELF_ADDRESS; _} as c -> fail (bad_self_address c) + | E_constant {cons_name=C_SELF_ADDRESS; _} -> fail (bad_self_address C_SELF_ADDRESS) | _ -> ok e) body in ok e diff --git a/src/passes/11-self_mini_c/subst.ml b/src/passes/11-self_mini_c/subst.ml index 1637a7bbe..def581f96 100644 --- a/src/passes/11-self_mini_c/subst.ml +++ b/src/passes/11-self_mini_c/subst.ml @@ -225,7 +225,7 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (V(x))[x := L(unit)] = + (x)[x := L(unit)] = L(unit) |}] ; (* other var *) @@ -235,8 +235,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (V(y))[x := L(unit)] = - V(y) + (y)[x := L(unit)] = + y |}] ; (* closure shadowed *) @@ -246,8 +246,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (C(fun x -> (V(x))))[x := L(unit)] = - C(fun x -> (V(x))) + (fun x -> (x))[x := L(unit)] = + fun x -> (x) |}] ; (* closure not shadowed *) @@ -257,8 +257,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (C(fun y -> (V(x))))[x := L(unit)] = - C(fun y -> (L(unit))) + (fun y -> (x))[x := L(unit)] = + fun y -> (L(unit)) |}] ; (* closure capture-avoidance *) @@ -268,8 +268,8 @@ let%expect_test _ = ~x:x ~expr:(wrap (E_variable y)) ; [%expect{| - (C(fun y -> ((V(x))@(V(y)))))[x := V(y)] = - C(fun y#1 -> ((V(y))@(V(y#1)))) + (fun y -> ((x)@(y)))[x := y] = + fun y#1 -> ((y)@(y#1)) |}] ; (* let-in shadowed (not in rhs) *) @@ -279,8 +279,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (let x = V(x) in ( V(x) ))[x := L(unit)] = - let x = L(unit) in ( V(x) ) + (let x = x in x)[x := L(unit)] = + let x = L(unit) in x |}] ; (* let-in not shadowed *) @@ -290,8 +290,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (let y = V(x) in ( V(x) ))[x := L(unit)] = - let y = L(unit) in ( L(unit) ) + (let y = x in x)[x := L(unit)] = + let y = L(unit) in L(unit) |}] ; (* let-in capture avoidance *) @@ -302,8 +302,8 @@ let%expect_test _ = ~x:x ~expr:(var y) ; [%expect{| - (let y = V(x) in ( (V(x))@(V(y)) ))[x := V(y)] = - let y#1 = V(y) in ( (V(y))@(V(y#1)) ) + (let y = x in (x)@(y))[x := y] = + let y#1 = y in (y)@(y#1) |}] ; (* iter shadowed *) @@ -313,8 +313,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (for_ITER x of V(x) do ( V(x) ))[x := L(unit)] = - for_ITER x of L(unit) do ( V(x) ) + (for_ITER x of x do ( x ))[x := L(unit)] = + for_ITER x of L(unit) do ( x ) |}] ; (* iter not shadowed *) @@ -324,7 +324,7 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (for_ITER y of V(x) do ( V(x) ))[x := L(unit)] = + (for_ITER y of x do ( x ))[x := L(unit)] = for_ITER y of L(unit) do ( L(unit) ) |}] ; @@ -335,8 +335,8 @@ let%expect_test _ = ~x:x ~expr:(var y) ; [%expect{| - (for_ITER y of (V(x))@(V(y)) do ( (V(x))@(V(y)) ))[x := V(y)] = - for_ITER y#1 of (V(y))@(V(y)) do ( (V(y))@(V(y#1)) ) + (for_ITER y of (x)@(y) do ( (x)@(y) ))[x := y] = + for_ITER y#1 of (y)@(y) do ( (y)@(y#1) ) |}] ; (* if_cons shadowed 1 *) @@ -349,8 +349,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (V(x) ?? V(x) : (x :: y) -> V(x))[x := L(unit)] = - L(unit) ?? L(unit) : (x :: y) -> V(x) + (x ?? x : (x :: y) -> x)[x := L(unit)] = + L(unit) ?? L(unit) : (x :: y) -> x |}] ; (* if_cons shadowed 2 *) @@ -363,8 +363,8 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (V(x) ?? V(x) : (y :: x) -> V(x))[x := L(unit)] = - L(unit) ?? L(unit) : (y :: x) -> V(x) + (x ?? x : (y :: x) -> x)[x := L(unit)] = + L(unit) ?? L(unit) : (y :: x) -> x |}] ; (* if_cons not shadowed *) @@ -377,7 +377,7 @@ let%expect_test _ = ~x:x ~expr:unit ; [%expect{| - (V(x) ?? V(x) : (y :: z) -> V(x))[x := L(unit)] = + (x ?? x : (y :: z) -> x)[x := L(unit)] = L(unit) ?? L(unit) : (y :: z) -> L(unit) |}] ; @@ -391,8 +391,8 @@ let%expect_test _ = ~x:x ~expr:(var y) ; [%expect{| - (V(x) ?? V(x) : (y :: z) -> (V(x))@((V(y))@(V(z))))[x := V(y)] = - V(y) ?? V(y) : (y#1 :: z) -> (V(y))@((V(y#1))@(V(z))) + (x ?? x : (y :: z) -> (x)@((y)@(z)))[x := y] = + y ?? y : (y#1 :: z) -> (y)@((y#1)@(z)) |}] ; (* if_cons capture avoidance 2 *) @@ -405,8 +405,8 @@ let%expect_test _ = ~x:x ~expr:(var z) ; [%expect{| - (V(x) ?? V(x) : (y :: z) -> (V(x))@((V(y))@(V(z))))[x := V(z)] = - V(z) ?? V(z) : (y :: z#1) -> (V(z))@((V(y))@(V(z#1))) + (x ?? x : (y :: z) -> (x)@((y)@(z)))[x := z] = + z ?? z : (y :: z#1) -> (z)@((y)@(z#1)) |}] ; (* old bug *) @@ -417,6 +417,6 @@ let%expect_test _ = ~x:x ~expr:(var y) ; [%expect{| - (C(fun y -> (C(fun y#1 -> ((V(x))@((V(y))@(V(y#1))))))))[x := V(y)] = - C(fun y#2 -> (C(fun y#1 -> ((V(y))@((V(y#2))@(V(y#1))))))) + (fun y -> (fun y#1 -> ((x)@((y)@(y#1)))))[x := y] = + fun y#2 -> (fun y#1 -> ((y)@((y#2)@(y#1)))) |}] ; diff --git a/src/stages/3-ast_core/PP.ml b/src/stages/3-ast_core/PP.ml index 2909d4dc8..ac760dbba 100644 --- a/src/stages/3-ast_core/PP.ml +++ b/src/stages/3-ast_core/PP.ml @@ -19,20 +19,20 @@ and expression_content ppf (ec : expression_content) = | E_variable n -> fprintf ppf "%a" expression_variable n | E_application {lamb;args} -> - fprintf ppf "(%a)@(%a)" expression lamb expression args + fprintf ppf "@[(%a)@@(%a)@]" expression lamb expression args | E_constructor c -> - fprintf ppf "%a(%a)" constructor c.constructor expression c.element + fprintf ppf "@[%a(%a)@]" constructor c.constructor expression c.element | E_constant c -> - fprintf ppf "%a(%a)" constant c.cons_name (list_sep_d expression) + fprintf ppf "@[%a@[(%a)@]@]" constant c.cons_name (list_sep_d expression) c.arguments | E_record m -> fprintf ppf "%a" (tuple_or_record_sep_expr expression) m | E_record_accessor ra -> - fprintf ppf "%a.%a" expression ra.record label ra.path + fprintf ppf "@[%a.%a@]" expression ra.record label ra.path | E_record_update {record; path; update} -> - fprintf ppf "{ %a with { %a = %a } }" expression record label path expression update + fprintf ppf "@[{ %a@;<1 2>with@;<1 2>{ %a = %a } }@]" expression record label path expression update | E_lambda {binder; input_type; output_type; result} -> - fprintf ppf "lambda (%a:%a) : %a return %a" + fprintf ppf "@[lambda (%a:%a) : %a@ return@ %a@]" expression_variable binder (PP_helpers.option type_expression) input_type @@ -44,10 +44,10 @@ and expression_content ppf (ec : expression_content) = type_expression fun_type expression_content (E_lambda lambda) | E_matching {matchee; cases; _} -> - fprintf ppf "match %a with %a" expression matchee (matching expression) + fprintf ppf "@[match %a with@ %a@]" expression matchee (matching expression) cases | E_let_in { let_binder ;rhs ; let_result; inline } -> - fprintf ppf "let %a = %a%a in %a" option_type_name let_binder expression rhs option_inline inline expression let_result + fprintf ppf "@[let %a =@;<1 2>%a%a in@ %a@]" option_type_name let_binder expression rhs option_inline inline expression let_result | E_ascription {anno_expr; type_annotation} -> fprintf ppf "%a : %a" expression anno_expr type_expression type_annotation @@ -61,27 +61,27 @@ and option_type_name ppf fprintf ppf "%a : %a" expression_variable n type_expression ty and assoc_expression ppf : expr * expr -> unit = - fun (a, b) -> fprintf ppf "%a -> %a" expression a expression b + fun (a, b) -> fprintf ppf "@[<2>%a ->@;<1 2>%a@]" expression a expression b and single_record_patch ppf ((p, expr) : label * expr) = fprintf ppf "%a <- %a" label p expression expr and matching_variant_case : type a . (_ -> a -> unit) -> _ -> (constructor' * expression_variable) * a -> unit = fun f ppf ((c,n),a) -> - fprintf ppf "| %a %a -> %a" constructor c expression_variable n f a + fprintf ppf "| %a %a ->@;<1 2>%a@ " constructor c expression_variable n f a and matching : type a . (formatter -> a -> unit) -> formatter -> (a,unit) matching_content -> unit = fun f ppf m -> match m with | Match_tuple ((lst, b), _) -> - fprintf ppf "let (%a) = %a" (list_sep_d expression_variable) lst f b + fprintf ppf "@[| (%a) ->@;<1 2>%a@]" (list_sep_d expression_variable) lst f b | Match_variant (lst, _) -> - fprintf ppf "%a" (list_sep (matching_variant_case f) (tag "@.")) lst + fprintf ppf "@[%a@]" (list_sep (matching_variant_case f) (tag "@ ")) lst | Match_bool {match_true ; match_false} -> - fprintf ppf "| True -> %a @.| False -> %a" f match_true f match_false + fprintf ppf "@[| True ->@;<1 2>%a@ | False ->@;<1 2>%a@]" f match_true f match_false | Match_list {match_nil ; match_cons = (hd, tl, match_cons, _)} -> - fprintf ppf "| Nil -> %a @.| %a :: %a -> %a" f match_nil expression_variable hd expression_variable tl f match_cons + fprintf ppf "@[| Nil ->@;<1 2>%a@ | %a :: %a ->@;<1 2>%a@]" f match_nil expression_variable hd expression_variable tl f match_cons | Match_option {match_none ; match_some = (some, match_some, _)} -> - fprintf ppf "| None -> %a @.| Some %a -> %a" f match_none expression_variable some f match_some + fprintf ppf "@[| None ->@;<1 2>%a@ | Some %a ->@;<1 2>%a@]" f match_none expression_variable some f match_some (* Shows the type expected for the matched value *) and matching_type ppf m = match m with @@ -101,22 +101,22 @@ and matching_variant_case_type ppf ((c,n),_a) = and option_mut ppf mut = if mut then - fprintf ppf "[@mut]" + fprintf ppf "[@@mut]" else fprintf ppf "" and option_inline ppf inline = if inline then - fprintf ppf "[@inline]" + fprintf ppf "[@@inline]" else fprintf ppf "" let declaration ppf (d : declaration) = match d with | Declaration_type (type_name, te) -> - fprintf ppf "type %a = %a" type_variable type_name type_expression te + fprintf ppf "@[<2>type %a =@ %a@]" type_variable type_name type_expression te | Declaration_constant (name, ty_opt, i, expr) -> - fprintf ppf "const %a = %a%a" option_type_name (name, ty_opt) expression + fprintf ppf "@[<2>const %a =@ %a%a@]" option_type_name (name, ty_opt) expression expr option_inline i diff --git a/src/stages/5-mini_c/PP.ml b/src/stages/5-mini_c/PP.ml index 808b65873..908a30e22 100644 --- a/src/stages/5-mini_c/PP.ml +++ b/src/stages/5-mini_c/PP.ml @@ -3,23 +3,21 @@ open Simple_utils.PP_helpers open Types open Format -let list_sep_d x = list_sep x (const " , ") - -let space_sep ppf () = fprintf ppf " " +let list_sep_d x = list_sep x (tag " ,@ ") let lr = fun ppf -> function `Left -> fprintf ppf "L" | `Right -> fprintf ppf "R" let rec type_variable ppf : type_value -> _ = function - | T_or(a, b) -> fprintf ppf "(%a) | (%a)" annotated a annotated b - | T_pair(a, b) -> fprintf ppf "(%a) & (%a)" annotated a annotated b + | T_or(a, b) -> fprintf ppf "@[(%a) |@ (%a)@]" annotated a annotated b + | T_pair(a, b) -> fprintf ppf "@[(%a) &@ (%a)@]" annotated a annotated b | T_base b -> type_constant ppf b - | T_function(a, b) -> fprintf ppf "(%a) -> (%a)" type_variable a type_variable b - | T_map(k, v) -> fprintf ppf "map(%a -> %a)" type_variable k type_variable v - | T_big_map(k, v) -> fprintf ppf "big_map(%a -> %a)" type_variable k type_variable v - | T_list(t) -> fprintf ppf "list(%a)" type_variable t - | T_set(t) -> fprintf ppf "set(%a)" type_variable t - | T_option(o) -> fprintf ppf "option(%a)" type_variable o - | T_contract(t) -> fprintf ppf "contract(%a)" type_variable t + | T_function(a, b) -> fprintf ppf "@[(%a) ->@ (%a)@]" type_variable a type_variable b + | T_map(k, v) -> fprintf ppf "@[<4>map(%a -> %a)@]" type_variable k type_variable v + | T_big_map(k, v) -> fprintf ppf "@[<9>big_map(%a -> %a)@]" type_variable k type_variable v + | T_list(t) -> fprintf ppf "@[<5>list(%a)@]" type_variable t + | T_set(t) -> fprintf ppf "@[<4>set(%a)@]" type_variable t + | T_option(o) -> fprintf ppf "@[<7>option(%a)@]" type_variable o + | T_contract(t) -> fprintf ppf "@[<9>contract(%a)@]" type_variable t and annotated ppf : type_value annotated -> _ = function | (Some ann, a) -> fprintf ppf "(%a %%%s)" type_variable a ann @@ -80,30 +78,38 @@ and expression ppf (e:expression) = and expression' ppf (e:expression') = match e with | E_skip -> fprintf ppf "skip" - | E_closure x -> fprintf ppf "C(%a)" function_ x - | E_variable v -> fprintf ppf "V(%a)" Var.pp v - | E_application(a, b) -> fprintf ppf "(%a)@(%a)" expression a expression b + | E_closure x -> function_ ppf x + | E_variable v -> fprintf ppf "%a" Var.pp v + | E_application(a, b) -> fprintf ppf "@[(%a)@(%a)@]" expression a expression b - | E_constant c -> fprintf ppf "%a %a" constant c.cons_name (pp_print_list ~pp_sep:space_sep expression) c.arguments - | E_literal v -> fprintf ppf "L(%a)" value v + | E_constant c -> fprintf ppf "@[%a@[(%a)@]@]" constant c.cons_name (list_sep_d expression) c.arguments + | E_literal v -> fprintf ppf "@[L(%a)@]" value v | E_make_none _ -> fprintf ppf "none" - | E_if_bool (c, a, b) -> fprintf ppf "%a ? %a : %a" expression c expression a expression b - | E_if_none (c, n, ((name, _) , s)) -> fprintf ppf "%a ?? %a : %a -> %a" expression c expression n Var.pp name expression s - | E_if_cons (c, n, (((hd_name, _) , (tl_name, _)) , cons)) -> fprintf ppf "%a ?? %a : (%a :: %a) -> %a" expression c expression n Var.pp hd_name Var.pp tl_name expression cons + | E_if_bool (c, a, b) -> + fprintf ppf + "@[match %a with@ @[| True ->@;<1 2>%a@ | False ->@;<1 2>%a@]@]" + expression c expression a expression b + | E_if_none (c, n, ((name, _) , s)) -> + fprintf ppf + "@[match %a with@ @[| None ->@;<1 2>%a@ | Some %a ->@;<1 2>%a@]@]" + expression c expression n Var.pp name expression s + | E_if_cons (c, n, (((hd_name, _) , (tl_name, _)) , cons)) -> fprintf ppf "@[%a ?? %a : (%a :: %a) -> %a@]" expression c expression n Var.pp hd_name Var.pp tl_name expression cons | E_if_left (c, ((name_l, _) , l), ((name_r, _) , r)) -> - fprintf ppf "%a ?? %a -> %a : %a -> %a" expression c Var.pp name_l expression l Var.pp name_r expression r - | E_sequence (a , b) -> fprintf ppf "%a ;; %a" expression a expression b + fprintf ppf + "@[match %a with@ @[| Left %a ->@;<1 2>%a@ | Right %a ->@;<1 2>%a@]@]" + expression c Var.pp name_l expression l Var.pp name_r expression r + | E_sequence (a , b) -> fprintf ppf "@[%a ;; %a@]" expression a expression b | E_let_in ((name , _) , inline, expr , body) -> - fprintf ppf "let %a = %a%a in ( %a )" Var.pp name expression expr option_inline inline expression body + fprintf ppf "@[let %a =@;<1 2>%a%a in@ %a@]" Var.pp name expression expr option_inline inline expression body | E_iterator (b , ((name , _) , body) , expr) -> - fprintf ppf "for_%a %a of %a do ( %a )" constant b Var.pp name expression expr expression body + fprintf ppf "@[for_%a %a of %a do ( %a )@]" constant b Var.pp name expression expr expression body | E_fold (((name , _) , body) , collection , initial) -> - fprintf ppf "fold %a on %a with %a do ( %a )" expression collection expression initial Var.pp name expression body + fprintf ppf "@[fold %a on %a with %a do ( %a )@]" expression collection expression initial Var.pp name expression body | E_record_update (r, path,update) -> - fprintf ppf "%a with { %a = %a }" expression r (list_sep lr (const ".")) path expression update + fprintf ppf "@[{ %a@;<1 2>with@;<1 2>{ %a = %a } }@]" expression r (list_sep lr (const ".")) path expression update | E_while (e , b) -> - fprintf ppf "while %a do %a" expression e expression b + fprintf ppf "@[while %a do %a@]" expression e expression b and expression_with_type : _ -> expression -> _ = fun ppf e -> fprintf ppf "%a : %a" @@ -111,24 +117,22 @@ and expression_with_type : _ -> expression -> _ = fun ppf e -> type_variable e.type_value and function_ ppf ({binder ; body}:anon_function) = - fprintf ppf "fun %a -> (%a)" + fprintf ppf "@[fun %a ->@ (%a)@]" Var.pp binder expression body -and assignment ppf ((n, i, e):assignment) = fprintf ppf "%a = %a%a;" Var.pp n expression e option_inline i - and option_inline ppf inline = if inline then - fprintf ppf "[@inline]" + fprintf ppf "[@@inline]" else fprintf ppf "" -and declaration ppf ((n,i, e):assignment) = fprintf ppf "let %a = %a%a;" Var.pp n expression e option_inline i +and declaration ppf ((n,i, e):assignment) = fprintf ppf "@[let %a =@;<1 2>%a%a@]" Var.pp n expression e option_inline i -and tl_statement ppf (ass, _) = assignment ppf ass +and tl_statement ppf (ass, _) = declaration ppf ass and program ppf (p:program) = - fprintf ppf "Program:\n---\n%a" (pp_print_list ~pp_sep:pp_print_newline tl_statement) p + fprintf ppf "@[%a@]" (pp_print_list ~pp_sep:(tag "@ ") tl_statement) p and constant ppf : constant' -> unit = function | C_INT -> fprintf ppf "INT" @@ -254,9 +258,9 @@ let%expect_test _ = let wrap e = { content = e ; type_value = dummy_type } in pp @@ E_closure { binder = Var.of_name "y" ; body = wrap (E_variable (Var.of_name "y")) } ; [%expect{| - C(fun y -> (V(y))) + fun y -> (y) |}] ; pp @@ E_closure { binder = Var.of_name "z" ; body = wrap (E_variable (Var.of_name "z")) } ; [%expect{| - C(fun z -> (V(z))) + fun z -> (z) |}] diff --git a/src/stages/common/PP.ml b/src/stages/common/PP.ml index 832609b47..5204c93f0 100644 --- a/src/stages/common/PP.ml +++ b/src/stages/common/PP.ml @@ -11,13 +11,13 @@ let label ppf (l:label) : unit = let cmap_sep value sep ppf m = let lst = CMap.to_kv_list m in let lst = List.sort (fun (Constructor a,_) (Constructor b,_) -> String.compare a b) lst in - let new_pp ppf (k, v) = fprintf ppf "%a -> %a" constructor k value v in + let new_pp ppf (k, v) = fprintf ppf "@[%a -> %a@]" constructor k value v in fprintf ppf "%a" (list_sep new_pp sep) lst let record_sep value sep ppf (m : 'a label_map) = let lst = LMap.to_kv_list m in let lst = List.sort_uniq (fun (Label a,_) (Label b,_) -> String.compare a b) lst in - let new_pp ppf (k, v) = fprintf ppf "%a -> %a" label k value v in + let new_pp ppf (k, v) = fprintf ppf "@[%a -> %a@]" label k value v in fprintf ppf "%a" (list_sep new_pp sep) lst let tuple_sep value sep ppf m = @@ -30,14 +30,14 @@ let tuple_sep value sep ppf m = 0..(cardinal-1) as tuples *) let tuple_or_record_sep value format_record sep_record format_tuple sep_tuple ppf m = if Helpers.is_tuple_lmap m then - fprintf ppf format_tuple (tuple_sep value (const sep_tuple)) m + fprintf ppf format_tuple (tuple_sep value (tag sep_tuple)) m else - fprintf ppf format_record (record_sep value (const sep_record)) m + fprintf ppf format_record (record_sep value (tag sep_record)) m -let list_sep_d x = list_sep x (const " , ") -let cmap_sep_d x = cmap_sep x (const " , ") -let tuple_or_record_sep_expr value = tuple_or_record_sep value "record[%a]" " , " "( %a )" " , " -let tuple_or_record_sep_type value = tuple_or_record_sep value "record[%a]" " , " "( %a )" " * " +let list_sep_d x = list_sep x (tag " ,@ ") +let cmap_sep_d x = cmap_sep x (tag " ,@ ") +let tuple_or_record_sep_expr value = tuple_or_record_sep value "@[record[%a]@]" " ,@ " "@[( %a )@]" " ,@ " +let tuple_or_record_sep_type value = tuple_or_record_sep value "@[record[%a]@]" " ,@ " "@[( %a )@]" " *@ " let constant ppf : constant' -> unit = function | C_INT -> fprintf ppf "INT" @@ -206,7 +206,7 @@ module Ast_PP_type (PARAMETER : AST_PARAMETER_TYPE) = struct -> unit = fun f ppf te -> match te.type_content with - | T_sum m -> fprintf ppf "sum[%a]" (cmap_sep_d f) m + | T_sum m -> fprintf ppf "@[sum[%a]@]" (cmap_sep_d f) m | T_record m -> fprintf ppf "%a" (tuple_or_record_sep_type f) m | T_arrow a -> fprintf ppf "%a -> %a" f a.type1 f a.type2 | T_variable tv -> type_variable ppf tv diff --git a/src/test/contracts/negative/nested_bigmap_1.religo b/src/test/contracts/negative/nested_bigmap_1.religo index b86e549b1..b091be1e3 100644 --- a/src/test/contracts/negative/nested_bigmap_1.religo +++ b/src/test/contracts/negative/nested_bigmap_1.religo @@ -5,6 +5,6 @@ type storage = big_map (int, bar); type return = (list (operation), storage); -let main = ((ignore, store): (unit, storage)): return => { +let main = ((_, store): (unit, storage)): return => { ([]: list(operation), store) }; diff --git a/src/test/contracts/negative/nested_bigmap_2.religo b/src/test/contracts/negative/nested_bigmap_2.religo index d8061f912..346800be6 100644 --- a/src/test/contracts/negative/nested_bigmap_2.religo +++ b/src/test/contracts/negative/nested_bigmap_2.religo @@ -3,7 +3,7 @@ type storage = big_map (nat, big_map (int, string)); type return = (list (operation), storage); -let main = ((ignore, store): (unit, storage)): return => { +let main = ((_, store): (unit, storage)): return => { ([]: list(operation), store) }; \ No newline at end of file diff --git a/src/test/contracts/negative/nested_bigmap_3.religo b/src/test/contracts/negative/nested_bigmap_3.religo index e8941f445..7e45a1fc2 100644 --- a/src/test/contracts/negative/nested_bigmap_3.religo +++ b/src/test/contracts/negative/nested_bigmap_3.religo @@ -10,6 +10,6 @@ type storage = big_map(nat, foo); type return = (list (operation), storage); -let main = ((ignore, store): (unit, storage)): return => { +let main = ((_, store): (unit, storage)): return => { ([]: list(operation), store) }; diff --git a/src/test/contracts/negative/nested_bigmap_4.religo b/src/test/contracts/negative/nested_bigmap_4.religo index 653908636..b4db2192a 100644 --- a/src/test/contracts/negative/nested_bigmap_4.religo +++ b/src/test/contracts/negative/nested_bigmap_4.religo @@ -3,7 +3,7 @@ type storage = map (int, big_map (nat, big_map (int, string))); type return = (list (operation), storage); -let main = ((ignore, store): (unit, storage)): return => { +let main = ((_, store): (unit, storage)): return => { ([]: list(operation), store) }; \ No newline at end of file diff --git a/src/test/contracts/tuple_type.religo b/src/test/contracts/tuple_type.religo index e17fbc9fb..7e32c8954 100644 --- a/src/test/contracts/tuple_type.religo +++ b/src/test/contracts/tuple_type.religo @@ -15,7 +15,7 @@ let arguments = (b: int, c: int) => { b + c; }; let arguments_type_def = (b: fun_type) => b (5, 3); -let arguments_test = (ignore: int) => arguments_type_def (arguments); +let arguments_test = (_: int) => arguments_type_def (arguments); type tuple_type = ((int, int)) => int; @@ -23,7 +23,7 @@ let tuple = ((a, b): (int, int)) => { a + b; }; let tuple_type_def = (b: tuple_type) => b ((5, 3)); -let tuple_test = (ignore: int) => tuple_type_def (tuple); +let tuple_test = (_: int) => tuple_type_def (tuple); /* inline */ @@ -32,12 +32,12 @@ let arguments_inline = (b: int, c: int) => { b + c; }; let arguments_type_def_inline = (b: (int, int) => int) => b (5, 3); -let arguments_test_inline = (ignore: int) => +let arguments_test_inline = (_: int) => arguments_type_def_inline (arguments_inline); let tuple_inline = ((a, b): (int, int)) => { a + b; }; let tuple_type_def_inline = (b: ((int, int)) => int) => b ((5, 3)); -let tuple_test_inline = (ignore: int) => +let tuple_test_inline = (_: int) => tuple_type_def_inline(tuple_inline); diff --git a/src/test/md_file_tests.ml b/src/test/md_file_tests.ml index 6114e9126..3ceb8c3a6 100644 --- a/src/test/md_file_tests.ml +++ b/src/test/md_file_tests.ml @@ -122,8 +122,12 @@ let md_files = [ "/gitlab-pages/docs/advanced/first-contract.md"; "/gitlab-pages/docs/advanced/entrypoints-contracts.md"; "/gitlab-pages/docs/advanced/timestamps-addresses.md"; + "/gitlab-pages/docs/advanced/inline.md"; "/gitlab-pages/docs/api/cli-commands.md"; "/gitlab-pages/docs/api/cheat-sheet.md"; + "/gitlab-pages/docs/reference/toplevel.md"; + "/gitlab-pages/docs/reference/bitwise.md"; + "/gitlab-pages/docs/reference/bytes.md"; "/gitlab-pages/docs/reference/list.md"; "/gitlab-pages/docs/reference/map.md"; "/gitlab-pages/docs/reference/set.md"; diff --git a/tools/webide/packages/e2e/test/deploy.spec.js b/tools/webide/packages/e2e/test/deploy.spec.js deleted file mode 100644 index 958774cae..000000000 --- a/tools/webide/packages/e2e/test/deploy.spec.js +++ /dev/null @@ -1,38 +0,0 @@ -const commonUtils = require('./common-utils'); - -const API_HOST = commonUtils.API_HOST; - -const runCommandAndGetOutputFor = commonUtils.runCommandAndGetOutputFor; -const clearText = commonUtils.clearText; - -const COMMAND = 'deploy'; -const COMMAND_ENDPOINT = 'deploy'; - -async function deploy() { - return await runCommandAndGetOutputFor(COMMAND, COMMAND_ENDPOINT); -} - -describe('Deploy contract', () => { - beforeAll(() => jest.setTimeout(60000)); - - beforeEach(async () => await page.goto(API_HOST)); - - it('should deploy', async done => { - expect(await deploy()).toContain('The contract was successfully deployed to the carthage test network.'); - - done(); - }); - - it('should fail to deploy contract with invalid storage', async done => { - await page.click('#command-select'); - await page.click(`#deploy`); - - await page.click(`#storage`); - await clearText(page.keyboard); - await page.keyboard.type('asdf'); - - expect(await deploy()).toContain('Error: '); - - done(); - }); -});