summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-06-20 11:53:02 -0400
committerTakashi Kokubun <takashikkbn@gmail.com>2023-06-21 11:25:39 -0700
commitcc7f765f2c12a9ba050b0d95f9d85f3923c8d944 (patch)
tree5b5c60c1950240900dc749773083324a0e39748a /test
parent08478fefca827276d68e33f2e6a5940c85957a51 (diff)
[Feature #19741] Sync all files in yarp
This commit is the initial sync of all files from ruby/yarp into ruby/ruby. Notably, it does the following: * Sync all ruby/yarp/lib/ files to ruby/ruby/lib/yarp * Sync all ruby/yarp/src/ files to ruby/ruby/yarp/ * Sync all ruby/yarp/test/ files to ruby/ruby/test/yarp
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/7964
Diffstat (limited to 'test')
-rw-r--r--test/yarp/comments_test.rb47
-rw-r--r--test/yarp/compile_test.rb212
-rw-r--r--test/yarp/encoding_test.rb70
-rw-r--r--test/yarp/errors_test.rb984
-rw-r--r--test/yarp/fixtures/alias.txt23
-rw-r--r--test/yarp/fixtures/arithmetic.txt8
-rw-r--r--test/yarp/fixtures/arrays.txt80
-rw-r--r--test/yarp/fixtures/begin_ensure.txt14
-rw-r--r--test/yarp/fixtures/begin_rescue.txt79
-rw-r--r--test/yarp/fixtures/blocks.txt54
-rw-r--r--test/yarp/fixtures/boolean_operators.txt5
-rw-r--r--test/yarp/fixtures/booleans.txt3
-rw-r--r--test/yarp/fixtures/break.txt25
-rw-r--r--test/yarp/fixtures/case.txt30
-rw-r--r--test/yarp/fixtures/classes.txt35
-rw-r--r--test/yarp/fixtures/comments.txt24
-rw-r--r--test/yarp/fixtures/constants.txt169
-rw-r--r--test/yarp/fixtures/dash_heredocs.txt44
-rw-r--r--test/yarp/fixtures/defined.txt7
-rw-r--r--test/yarp/fixtures/dos_endings.txt20
-rw-r--r--test/yarp/fixtures/embdoc_no_newline_at_end.txt2
-rw-r--r--test/yarp/fixtures/for.txt19
-rw-r--r--test/yarp/fixtures/global_variables.txt89
-rw-r--r--test/yarp/fixtures/hashes.txt20
-rw-r--r--test/yarp/fixtures/heredoc_with_trailing_newline.txt2
-rw-r--r--test/yarp/fixtures/heredocs_nested.txt9
-rw-r--r--test/yarp/fixtures/heredocs_with_ignored_newlines.txt14
-rw-r--r--test/yarp/fixtures/heredocs_with_ignored_newlines_and_non_empty.txt4
-rw-r--r--test/yarp/fixtures/if.txt31
-rw-r--r--test/yarp/fixtures/integer_operations.txt63
-rw-r--r--test/yarp/fixtures/keyword_method_names.txt29
-rw-r--r--test/yarp/fixtures/keywords.txt11
-rw-r--r--test/yarp/fixtures/lambda.txt7
-rw-r--r--test/yarp/fixtures/method_calls.txt139
-rw-r--r--test/yarp/fixtures/methods.txt165
-rw-r--r--test/yarp/fixtures/modules.txt18
-rw-r--r--test/yarp/fixtures/next.txt24
-rw-r--r--test/yarp/fixtures/nils.txt13
-rw-r--r--test/yarp/fixtures/non_alphanumeric_methods.txt105
-rw-r--r--test/yarp/fixtures/not.txt20
-rw-r--r--test/yarp/fixtures/numbers.txt63
-rw-r--r--test/yarp/fixtures/patterns.txt191
-rw-r--r--test/yarp/fixtures/procs.txt27
-rw-r--r--test/yarp/fixtures/range_begin_open_exclusive.txt1
-rw-r--r--test/yarp/fixtures/range_begin_open_inclusive.txt1
-rw-r--r--test/yarp/fixtures/range_end_open_exclusive.txt1
-rw-r--r--test/yarp/fixtures/range_end_open_inclusive.txt1
-rw-r--r--test/yarp/fixtures/ranges.txt17
-rw-r--r--test/yarp/fixtures/regex.txt28
-rw-r--r--test/yarp/fixtures/rescue.txt31
-rw-r--r--test/yarp/fixtures/return.txt24
-rw-r--r--test/yarp/fixtures/seattlerb/BEGIN.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/README.rdoc113
-rw-r--r--test/yarp/fixtures/seattlerb/__ENCODING__.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/alias_gvar_backref.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/alias_resword.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/and_multi.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/aref_args_assocs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/aref_args_lit_assocs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/args_kw_block.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/array_line_breaks.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/array_lits_trailing_calls.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/assoc__bare.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/assoc_label.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/attr_asgn_colon_id.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/attrasgn_array_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/attrasgn_array_lhs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/attrasgn_primary_dot_constant.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/backticks_interpolation_line.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bang_eq.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bdot2.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/bdot3.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/begin_ensure_no_bodies.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_bodies.txt9
-rw-r--r--test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_no_bodies.txt9
-rw-r--r--test/yarp/fixtures/seattlerb/begin_rescue_ensure_no_bodies.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg__bare.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_opt_arg_block.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_opt_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_opt_splat_arg_block_omfg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_optional.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_scope.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_scope2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_arg_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_args_kwargs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_args_no_kwargs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_args_opt1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_args_opt2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_args_opt2_2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_args_opt3.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_break.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_call_defn_call_block_call.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/block_call_dot_op2_brace_block.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_call_dot_op2_cmd_args_do_block.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_call_operation_colon.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_call_operation_dot.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_call_paren_call_block_call.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/block_command_operation_colon.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_command_operation_dot.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_decomp_anon_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_decomp_arg_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_decomp_arg_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_decomp_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_kw.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_kw__required.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_kwarg_lvar.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_kwarg_lvar_multiple.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_next.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_opt_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_opt_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_opt_splat_arg_block_omfg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_optarg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_paren_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_reg_optarg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_return.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_scope.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/block_splat_reg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug169.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug179.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug190.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug191.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/bug202.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/bug236.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/bug290.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/bug_187.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/bug_215.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_249.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/bug_and.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/bug_args__19.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_args_masgn.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_args_masgn2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_args_masgn_outer_parens__19.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_call_arglist_parens.txt11
-rw-r--r--test/yarp/fixtures/seattlerb/bug_case_when_regexp.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_cond_pct.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_hash_args.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_hash_args_trailing_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_hash_interp_array.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_masgn_right.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_not_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/bug_op_asgn_rescue.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_and.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_arg_assoc.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_arg_assoc_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_arg_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_args_assoc_quoted.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/call_args_assoc_trailing_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_args_command.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_array_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_array_block_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_array_lambda_block_call.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/call_array_lit_inline_hash.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_assoc.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_assoc_new.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_assoc_new_if_multiline.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/call_assoc_trailing_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_bang_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_bang_squiggle.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_begin_call_block_call.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/call_block_arg_named.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_carat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_colon2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_colon_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_div.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_dot_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_env.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_eq3.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_gt.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_leading_dots.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/call_leading_dots_comment.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/call_lt.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_lte.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_not.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_pipe.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_rshift.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_self_brackets.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_spaceship.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_stabby_do_end_with_block.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_stabby_with_braces_block.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_star.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_star2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_trailing_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/call_trailing_dots.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/call_unary_bang.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/case_in.txt111
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_31.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_37.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_42.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_42_2.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_47.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_67.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_86.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_86_2.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_array_pat_const.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_array_pat_const2.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_array_pat_paren_assign.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_const.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_else.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_find.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_find_array.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_hash_pat.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_hash_pat_assign.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_assign.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_true.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_hash_pat_rest.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_hash_pat_rest_solo.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_if_unless_post_mod.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_multiple.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/case_in_or.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/class_comments.txt9
-rw-r--r--test/yarp/fixtures/seattlerb/cond_unary_minus.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/const_2_op_asgn_or2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/const_3_op_asgn_or.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/const_op_asgn_and1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/const_op_asgn_and2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/const_op_asgn_or.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dasgn_icky2.txt8
-rw-r--r--test/yarp/fixtures/seattlerb/defined_eh_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_arg_asplat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_arg_forward_args.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_args_forward_args.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_comments.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/defn_endless_command.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_endless_command_rescue.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_forward_args.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_env.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_kwarg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat_anon.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_lvar.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_no_parens.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/defn_kwarg_val.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_no_kwargs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_oneliner.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_oneliner_eq2.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/defn_oneliner_noargs.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_oneliner_noargs_parentheses.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_oneliner_rescue.txt13
-rw-r--r--test/yarp/fixtures/seattlerb/defn_opt_last_arg.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/defn_opt_reg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_opt_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_powarg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_reg_opt_reg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defn_unary_not.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defns_reserved.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defs_as_arg_with_do_block_inside.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defs_comments.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/defs_endless_command.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defs_endless_command_rescue.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defs_kwarg.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/defs_oneliner.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/defs_oneliner_eq2.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/defs_oneliner_rescue.txt13
-rw-r--r--test/yarp/fixtures/seattlerb/do_bug.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/do_lambda.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dot2_nil__26.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dot3_nil__26.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dstr_evstr.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dstr_evstr_empty_end.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dstr_lex_state.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dstr_str.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dsym_esc_to_sym.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/dsym_to_sym.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/eq_begin_line_numbers.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/evstr_evstr.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/evstr_str.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/expr_not_bang.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/f_kw.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/f_kw__required.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/flip2_env_lvar.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/float_with_if_modifier.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc__backslash_dos_format.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_backslash_nl.txt8
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_bad_hex_escape.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_bad_oct_escape.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_comma_arg.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_lineno.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_nested.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_lines.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_empty.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_interp.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_no_indent.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs_extra.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_squiggly_visually_blank_lines.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_trailing_slash_continued_call.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_unicode.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes_windows.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns_windows.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_not_global_interpolation.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns_windows.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/heredoc_wtf_I_hate_you.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers.txt13
-rw-r--r--test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers2.txt8
-rw-r--r--test/yarp/fixtures/seattlerb/i_have_no_freakin_clue.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/if_elsif.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/if_symbol.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/in_expr_no_case.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/index_0.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/index_0_opasgn.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/integer_with_if_modifier.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/interpolated_symbol_array_line_breaks.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/interpolated_word_array_line_breaks.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_10_1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_10_2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_11_1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_11_2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_2__19.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_3.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_4.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_5.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_6.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_7_1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_7_2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_8_1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_8_2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_9_1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_args_9_2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_kwarg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/iter_kwarg_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me3.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me4.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me5.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_10.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_11.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_12.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_6.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_7.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_8.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/kill_me_9.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/label_vs_string.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/lambda_do_vs_brace.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_arg_rescue_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_call_bracket_rescue_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_call_nobracket_rescue_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_command.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_env.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_ivar_env.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_lasgn_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/lasgn_middle_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/magic_encoding_comment.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_anon_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_arg_colon_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_arg_ident.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_arg_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_colon2.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_colon3.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_double_paren.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_lhs_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_paren.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_splat_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_splat_arg_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_star.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/masgn_var_star_var.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/messy_op_asgn_lineno.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/method_call_assoc_trailing_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/method_call_trailing_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_back_anonsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_back_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_front_anonsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_front_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_keyword.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_mid_anonsplat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_mid_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/mlhs_rescue.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/module_comments.txt10
-rw-r--r--test/yarp/fixtures/seattlerb/motherfuckin_leading_dots.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/motherfuckin_leading_dots2.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/multiline_hash_declaration.txt8
-rw-r--r--test/yarp/fixtures/seattlerb/non_interpolated_symbol_array_line_breaks.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/non_interpolated_word_array_line_breaks.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_dot_ident_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_index_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_primary_colon_const_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier1.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/op_asgn_val_dot_ident_command_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/parse_def_special_name.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/parse_if_not_canonical.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_if_not_noncanonical.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_block.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_block_inline_comment.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_block_inline_comment_leading_newlines.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_block_inline_multiline_comment.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_call_ivar_line_break_paren.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_call_no_args.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_defn_complex.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_defn_no_parens.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_defn_no_parens_args.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_dot2.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_dot2_open.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_dot3.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_dot3_open.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_dstr_escaped_newline.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_dstr_soft_newline.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_evstr_after_break.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_hash_lit.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_heredoc.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_heredoc_evstr.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_heredoc_hardnewline.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_heredoc_regexp_chars.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_iter_call_no_parens.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_iter_call_parens.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_multiline_str.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_multiline_str_literal_n.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_newlines.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_op_asgn.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_postexe.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_preexe.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_rescue.txt8
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_return.txt6
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_str_with_newline_escape.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_to_ary.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_line_trailing_newlines.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/parse_opt_call_args_assocs_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/parse_opt_call_args_lit_comma.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_019.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_044.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_051.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_058.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_058_2.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_069.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_pattern_076.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/parse_until_not_canonical.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_until_not_noncanonical.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_while_not_canonical.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/parse_while_not_noncanonical.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/pctW_lineno.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/pct_Q_backslash_nl.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/pct_nl.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/pct_w_heredoc_interp_nested.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/pipe_semicolon.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/pipe_space.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qWords_space.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qsymbols.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qsymbols_empty.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qsymbols_empty_space.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qsymbols_interp.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/quoted_symbol_hash_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/quoted_symbol_keys.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qw_escape.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qw_escape_term.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/qwords_empty.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/read_escape_unicode_curlies.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/read_escape_unicode_h4.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/regexp.txt9
-rw-r--r--test/yarp/fixtures/seattlerb/regexp_esc_C_slash.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/regexp_esc_u.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/regexp_escape_extended.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/regexp_unicode_curlies.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/required_kwarg_no_value.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/rescue_do_end_ensure_result.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/rescue_do_end_no_raise.txt9
-rw-r--r--test/yarp/fixtures/seattlerb/rescue_do_end_raised.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/rescue_do_end_rescued.txt9
-rw-r--r--test/yarp/fixtures/seattlerb/rescue_in_block.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/rescue_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/return_call_assocs.txt11
-rw-r--r--test/yarp/fixtures/seattlerb/rhs_asgn.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/ruby21_numbers.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_attrasgn.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_attrasgn_constant.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_call.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_call_after_newline.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/safe_call_dot_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_call_newline.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/safe_call_operator.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_call_rhs_newline.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/safe_calls.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_op_asgn.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/safe_op_asgn2.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/slashy_newlines_within_string.txt7
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_arg_no_paren.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_block_iter_call.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_block_iter_call_no_target_with_arg.txt4
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_block_kw.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_block_kw__required.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/stabby_proc_scope.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_backslashes.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_double_double_escaped_newline.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_double_escaped_newline.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_double_newline.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/str_evstr.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_evstr_escape.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_heredoc_interp.txt5
-rw-r--r--test/yarp/fixtures/seattlerb/str_interp_ternary_or_label.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_lit_concat_bad_encodings.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/str_newline_hash_line_number.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/str_pct_Q_nested.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_pct_nested_nested.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_pct_q.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_single_double_escaped_newline.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_single_escaped_newline.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_single_newline.txt2
-rw-r--r--test/yarp/fixtures/seattlerb/str_str.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/str_str_str.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/super_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/symbol_empty.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/symbol_list.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/symbols.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/symbols_empty.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/symbols_empty_space.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/symbols_interp.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/thingy.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/uminus_float.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/unary_minus.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/unary_plus.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/unary_plus_on_literal.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/unary_tilde.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/utf8_bom.txt3
-rw-r--r--test/yarp/fixtures/seattlerb/when_splat.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/words_interp.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/wtf.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/wtf_7.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/wtf_8.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/yield_arg.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/yield_call_assocs.txt11
-rw-r--r--test/yarp/fixtures/seattlerb/yield_empty_parens.txt1
-rw-r--r--test/yarp/fixtures/seattlerb/zomg_sometimes_i_hate_this_project.txt5
-rw-r--r--test/yarp/fixtures/single_quote_heredocs.txt3
-rw-r--r--test/yarp/fixtures/strings.txt99
-rw-r--r--test/yarp/fixtures/super.txt7
-rw-r--r--test/yarp/fixtures/symbols.txt93
-rw-r--r--test/yarp/fixtures/ternary_operator.txt13
-rw-r--r--test/yarp/fixtures/tilde_heredocs.txt91
-rw-r--r--test/yarp/fixtures/undef.txt17
-rw-r--r--test/yarp/fixtures/unescaping.txt9
-rw-r--r--test/yarp/fixtures/unless.txt14
-rw-r--r--test/yarp/fixtures/unparser/LICENSE20
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/alias.txt2
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/assignment.txt53
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/block.txt96
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/case.txt37
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/class.txt35
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/control.txt15
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/def.txt134
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/defined.txt3
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/defs.txt40
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/dstr.txt37
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/empty.txt0
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/empty_begin.txt1
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/flipflop.txt6
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/for.txt12
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/hookexe.txt7
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/if.txt36
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/kwbegin.txt80
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/lambda.txt13
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/literal.txt91
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/module.txt16
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/opasgn.txt24
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/pattern.txt41
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/pragma.txt4
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/range.txt4
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/rescue.txt3
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/send.txt83
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/since/27.txt4
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/since/30.txt4
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/since/31.txt7
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/since/32.txt7
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/singletons.txt4
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/super.txt21
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/unary.txt8
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/undef.txt2
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/variables.txt10
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/while.txt73
-rw-r--r--test/yarp/fixtures/unparser/corpus/literal/yield.txt3
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/and.txt8
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/block.txt26
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/def.txt7
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/dstr.txt127
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/kwbegin.txt42
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/literal.txt14
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/send.txt6
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/undef.txt2
-rw-r--r--test/yarp/fixtures/unparser/corpus/semantic/while.txt25
-rw-r--r--test/yarp/fixtures/until.txt11
-rw-r--r--test/yarp/fixtures/variables.txt46
-rw-r--r--test/yarp/fixtures/while.txt19
-rw-r--r--test/yarp/fixtures/whitequark/LICENSE25
-rw-r--r--test/yarp/fixtures/whitequark/__ENCODING__.txt1
-rw-r--r--test/yarp/fixtures/whitequark/__ENCODING___legacy_.txt1
-rw-r--r--test/yarp/fixtures/whitequark/alias.txt1
-rw-r--r--test/yarp/fixtures/whitequark/alias_gvar.txt3
-rw-r--r--test/yarp/fixtures/whitequark/ambiuous_quoted_label_in_ternary_operator.txt1
-rw-r--r--test/yarp/fixtures/whitequark/and.txt3
-rw-r--r--test/yarp/fixtures/whitequark/and_asgn.txt3
-rw-r--r--test/yarp/fixtures/whitequark/and_or_masgn.txt3
-rw-r--r--test/yarp/fixtures/whitequark/anonymous_blockarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/arg.txt3
-rw-r--r--test/yarp/fixtures/whitequark/arg_duplicate_ignored.txt3
-rw-r--r--test/yarp/fixtures/whitequark/arg_label.txt6
-rw-r--r--test/yarp/fixtures/whitequark/arg_scope.txt1
-rw-r--r--test/yarp/fixtures/whitequark/args.txt63
-rw-r--r--test/yarp/fixtures/whitequark/args_args_assocs.txt3
-rw-r--r--test/yarp/fixtures/whitequark/args_args_assocs_comma.txt1
-rw-r--r--test/yarp/fixtures/whitequark/args_args_comma.txt1
-rw-r--r--test/yarp/fixtures/whitequark/args_args_star.txt3
-rw-r--r--test/yarp/fixtures/whitequark/args_assocs.txt11
-rw-r--r--test/yarp/fixtures/whitequark/args_assocs_comma.txt1
-rw-r--r--test/yarp/fixtures/whitequark/args_assocs_legacy.txt11
-rw-r--r--test/yarp/fixtures/whitequark/args_block_pass.txt1
-rw-r--r--test/yarp/fixtures/whitequark/args_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/args_star.txt3
-rw-r--r--test/yarp/fixtures/whitequark/array_assocs.txt3
-rw-r--r--test/yarp/fixtures/whitequark/array_plain.txt1
-rw-r--r--test/yarp/fixtures/whitequark/array_splat.txt5
-rw-r--r--test/yarp/fixtures/whitequark/array_symbols.txt1
-rw-r--r--test/yarp/fixtures/whitequark/array_symbols_empty.txt3
-rw-r--r--test/yarp/fixtures/whitequark/array_symbols_interp.txt3
-rw-r--r--test/yarp/fixtures/whitequark/array_words.txt1
-rw-r--r--test/yarp/fixtures/whitequark/array_words_empty.txt3
-rw-r--r--test/yarp/fixtures/whitequark/array_words_interp.txt3
-rw-r--r--test/yarp/fixtures/whitequark/asgn_cmd.txt3
-rw-r--r--test/yarp/fixtures/whitequark/asgn_mrhs.txt5
-rw-r--r--test/yarp/fixtures/whitequark/back_ref.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bang.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bang_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/begin_cmdarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/beginless_erange_after_newline.txt2
-rw-r--r--test/yarp/fixtures/whitequark/beginless_irange_after_newline.txt2
-rw-r--r--test/yarp/fixtures/whitequark/beginless_range.txt3
-rw-r--r--test/yarp/fixtures/whitequark/blockarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/blockargs.txt71
-rw-r--r--test/yarp/fixtures/whitequark/break.txt7
-rw-r--r--test/yarp/fixtures/whitequark/break_block.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_435.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_447.txt3
-rw-r--r--test/yarp/fixtures/whitequark/bug_452.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_466.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_473.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_480.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_481.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_ascii_8bit_in_literal.txt2
-rw-r--r--test/yarp/fixtures/whitequark/bug_cmd_string_lookahead.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_cmdarg.txt5
-rw-r--r--test/yarp/fixtures/whitequark/bug_def_no_paren_eql_begin.txt4
-rw-r--r--test/yarp/fixtures/whitequark/bug_do_block_in_call_args.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_do_block_in_cmdarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_do_block_in_hash_brace.txt9
-rw-r--r--test/yarp/fixtures/whitequark/bug_heredoc_do.txt3
-rw-r--r--test/yarp/fixtures/whitequark/bug_interp_single.txt3
-rw-r--r--test/yarp/fixtures/whitequark/bug_lambda_leakage.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_regex_verification.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_rescue_empty_else.txt1
-rw-r--r--test/yarp/fixtures/whitequark/bug_while_not_parens_do.txt1
-rw-r--r--test/yarp/fixtures/whitequark/case_cond.txt1
-rw-r--r--test/yarp/fixtures/whitequark/case_cond_else.txt1
-rw-r--r--test/yarp/fixtures/whitequark/case_expr.txt1
-rw-r--r--test/yarp/fixtures/whitequark/case_expr_else.txt1
-rw-r--r--test/yarp/fixtures/whitequark/casgn_scoped.txt1
-rw-r--r--test/yarp/fixtures/whitequark/casgn_toplevel.txt1
-rw-r--r--test/yarp/fixtures/whitequark/casgn_unscoped.txt1
-rw-r--r--test/yarp/fixtures/whitequark/character.txt1
-rw-r--r--test/yarp/fixtures/whitequark/class.txt3
-rw-r--r--test/yarp/fixtures/whitequark/class_definition_in_while_cond.txt7
-rw-r--r--test/yarp/fixtures/whitequark/class_super.txt1
-rw-r--r--test/yarp/fixtures/whitequark/class_super_label.txt1
-rw-r--r--test/yarp/fixtures/whitequark/comments_before_leading_dot__27.txt19
-rw-r--r--test/yarp/fixtures/whitequark/complex.txt7
-rw-r--r--test/yarp/fixtures/whitequark/cond_begin.txt1
-rw-r--r--test/yarp/fixtures/whitequark/cond_begin_masgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/cond_eflipflop.txt3
-rw-r--r--test/yarp/fixtures/whitequark/cond_iflipflop.txt3
-rw-r--r--test/yarp/fixtures/whitequark/cond_match_current_line.txt3
-rw-r--r--test/yarp/fixtures/whitequark/const_op_asgn.txt9
-rw-r--r--test/yarp/fixtures/whitequark/const_scoped.txt1
-rw-r--r--test/yarp/fixtures/whitequark/const_toplevel.txt1
-rw-r--r--test/yarp/fixtures/whitequark/const_unscoped.txt1
-rw-r--r--test/yarp/fixtures/whitequark/cpath.txt3
-rw-r--r--test/yarp/fixtures/whitequark/cvar.txt1
-rw-r--r--test/yarp/fixtures/whitequark/cvasgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/dedenting_heredoc.txt75
-rw-r--r--test/yarp/fixtures/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt4
-rw-r--r--test/yarp/fixtures/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt4
-rw-r--r--test/yarp/fixtures/whitequark/def.txt11
-rw-r--r--test/yarp/fixtures/whitequark/defined.txt5
-rw-r--r--test/yarp/fixtures/whitequark/defs.txt9
-rw-r--r--test/yarp/fixtures/whitequark/empty_stmt.txt1
-rw-r--r--test/yarp/fixtures/whitequark/endless_comparison_method.txt11
-rw-r--r--test/yarp/fixtures/whitequark/endless_method.txt7
-rw-r--r--test/yarp/fixtures/whitequark/endless_method_command_syntax.txt15
-rw-r--r--test/yarp/fixtures/whitequark/endless_method_forwarded_args_legacy.txt1
-rw-r--r--test/yarp/fixtures/whitequark/endless_method_with_rescue_mod.txt3
-rw-r--r--test/yarp/fixtures/whitequark/endless_method_without_args.txt7
-rw-r--r--test/yarp/fixtures/whitequark/ensure.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ensure_empty.txt1
-rw-r--r--test/yarp/fixtures/whitequark/false.txt1
-rw-r--r--test/yarp/fixtures/whitequark/float.txt3
-rw-r--r--test/yarp/fixtures/whitequark/for.txt3
-rw-r--r--test/yarp/fixtures/whitequark/for_mlhs.txt1
-rw-r--r--test/yarp/fixtures/whitequark/forward_arg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/forward_arg_with_open_args.txt27
-rw-r--r--test/yarp/fixtures/whitequark/forward_args_legacy.txt5
-rw-r--r--test/yarp/fixtures/whitequark/forwarded_argument_with_kwrestarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/forwarded_argument_with_restarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/forwarded_kwrestarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/forwarded_restarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/gvar.txt1
-rw-r--r--test/yarp/fixtures/whitequark/gvasgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/hash_empty.txt1
-rw-r--r--test/yarp/fixtures/whitequark/hash_hashrocket.txt3
-rw-r--r--test/yarp/fixtures/whitequark/hash_kwsplat.txt1
-rw-r--r--test/yarp/fixtures/whitequark/hash_label.txt1
-rw-r--r--test/yarp/fixtures/whitequark/hash_label_end.txt5
-rw-r--r--test/yarp/fixtures/whitequark/hash_pair_value_omission.txt5
-rw-r--r--test/yarp/fixtures/whitequark/heredoc.txt14
-rw-r--r--test/yarp/fixtures/whitequark/if.txt3
-rw-r--r--test/yarp/fixtures/whitequark/if_else.txt3
-rw-r--r--test/yarp/fixtures/whitequark/if_elsif.txt1
-rw-r--r--test/yarp/fixtures/whitequark/if_masgn__24.txt1
-rw-r--r--test/yarp/fixtures/whitequark/if_mod.txt1
-rw-r--r--test/yarp/fixtures/whitequark/if_nl_then.txt2
-rw-r--r--test/yarp/fixtures/whitequark/if_while_after_class__since_32.txt7
-rw-r--r--test/yarp/fixtures/whitequark/int.txt5
-rw-r--r--test/yarp/fixtures/whitequark/int___LINE__.txt1
-rw-r--r--test/yarp/fixtures/whitequark/interp_digit_var.txt87
-rw-r--r--test/yarp/fixtures/whitequark/ivar.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ivasgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/keyword_argument_omission.txt1
-rw-r--r--test/yarp/fixtures/whitequark/kwarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/kwbegin_compstmt.txt1
-rw-r--r--test/yarp/fixtures/whitequark/kwnilarg.txt5
-rw-r--r--test/yarp/fixtures/whitequark/kwoptarg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt1
-rw-r--r--test/yarp/fixtures/whitequark/kwrestarg_named.txt1
-rw-r--r--test/yarp/fixtures/whitequark/kwrestarg_unnamed.txt1
-rw-r--r--test/yarp/fixtures/whitequark/lbrace_arg_after_command_args.txt1
-rw-r--r--test/yarp/fixtures/whitequark/lparenarg_after_lvar__since_25.txt3
-rw-r--r--test/yarp/fixtures/whitequark/lvar.txt1
-rw-r--r--test/yarp/fixtures/whitequark/lvar_injecting_match.txt1
-rw-r--r--test/yarp/fixtures/whitequark/lvasgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/masgn.txt5
-rw-r--r--test/yarp/fixtures/whitequark/masgn_attr.txt5
-rw-r--r--test/yarp/fixtures/whitequark/masgn_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/masgn_const.txt3
-rw-r--r--test/yarp/fixtures/whitequark/masgn_nested.txt3
-rw-r--r--test/yarp/fixtures/whitequark/masgn_splat.txt19
-rw-r--r--test/yarp/fixtures/whitequark/method_definition_in_while_cond.txt7
-rw-r--r--test/yarp/fixtures/whitequark/module.txt1
-rw-r--r--test/yarp/fixtures/whitequark/multiple_pattern_matches.txt5
-rw-r--r--test/yarp/fixtures/whitequark/newline_in_hash_argument.txt14
-rw-r--r--test/yarp/fixtures/whitequark/next.txt7
-rw-r--r--test/yarp/fixtures/whitequark/next_block.txt1
-rw-r--r--test/yarp/fixtures/whitequark/nil.txt1
-rw-r--r--test/yarp/fixtures/whitequark/nil_expression.txt3
-rw-r--r--test/yarp/fixtures/whitequark/non_lvar_injecting_match.txt1
-rw-r--r--test/yarp/fixtures/whitequark/not.txt5
-rw-r--r--test/yarp/fixtures/whitequark/not_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/not_masgn__24.txt1
-rw-r--r--test/yarp/fixtures/whitequark/nth_ref.txt1
-rw-r--r--test/yarp/fixtures/whitequark/numbered_args_after_27.txt7
-rw-r--r--test/yarp/fixtures/whitequark/numparam_outside_block.txt9
-rw-r--r--test/yarp/fixtures/whitequark/op_asgn.txt5
-rw-r--r--test/yarp/fixtures/whitequark/op_asgn_cmd.txt7
-rw-r--r--test/yarp/fixtures/whitequark/op_asgn_index.txt1
-rw-r--r--test/yarp/fixtures/whitequark/op_asgn_index_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/optarg.txt3
-rw-r--r--test/yarp/fixtures/whitequark/or.txt3
-rw-r--r--test/yarp/fixtures/whitequark/or_asgn.txt3
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_272.txt1
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_490.txt5
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_507.txt1
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_518.txt2
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_525.txt1
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_604.txt1
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_640.txt4
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_645.txt1
-rw-r--r--test/yarp/fixtures/whitequark/parser_bug_830.txt1
-rw-r--r--test/yarp/fixtures/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt3
-rw-r--r--test/yarp/fixtures/whitequark/parser_slash_slash_n_escaping_in_literals.txt62
-rw-r--r--test/yarp/fixtures/whitequark/pattern_matching__FILE__LINE_literals.txt4
-rw-r--r--test/yarp/fixtures/whitequark/pattern_matching_blank_else.txt1
-rw-r--r--test/yarp/fixtures/whitequark/pattern_matching_else.txt1
-rw-r--r--test/yarp/fixtures/whitequark/pattern_matching_single_line.txt3
-rw-r--r--test/yarp/fixtures/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt11
-rw-r--r--test/yarp/fixtures/whitequark/postexe.txt1
-rw-r--r--test/yarp/fixtures/whitequark/preexe.txt1
-rw-r--r--test/yarp/fixtures/whitequark/procarg0.txt3
-rw-r--r--test/yarp/fixtures/whitequark/range_exclusive.txt1
-rw-r--r--test/yarp/fixtures/whitequark/range_inclusive.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rational.txt3
-rw-r--r--test/yarp/fixtures/whitequark/redo.txt1
-rw-r--r--test/yarp/fixtures/whitequark/regex_interp.txt1
-rw-r--r--test/yarp/fixtures/whitequark/regex_plain.txt1
-rw-r--r--test/yarp/fixtures/whitequark/resbody_list.txt1
-rw-r--r--test/yarp/fixtures/whitequark/resbody_list_mrhs.txt1
-rw-r--r--test/yarp/fixtures/whitequark/resbody_list_var.txt1
-rw-r--r--test/yarp/fixtures/whitequark/resbody_var.txt3
-rw-r--r--test/yarp/fixtures/whitequark/rescue.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_else.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_else_ensure.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_ensure.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_in_lambda_block.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_mod.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_mod_asgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_mod_masgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_mod_op_assign.txt1
-rw-r--r--test/yarp/fixtures/whitequark/rescue_without_begin_end.txt1
-rw-r--r--test/yarp/fixtures/whitequark/restarg_named.txt1
-rw-r--r--test/yarp/fixtures/whitequark/restarg_unnamed.txt1
-rw-r--r--test/yarp/fixtures/whitequark/retry.txt1
-rw-r--r--test/yarp/fixtures/whitequark/return.txt7
-rw-r--r--test/yarp/fixtures/whitequark/return_block.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_10279.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_10653.txt5
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11107.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11380.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11873.txt23
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11873_a.txt39
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11873_b.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11989.txt3
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_11990.txt3
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_12073.txt3
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_12402.txt27
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_12669.txt7
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_12686.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_13547.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_14690.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_15789.txt3
-rw-r--r--test/yarp/fixtures/whitequark/ruby_bug_9669.txt8
-rw-r--r--test/yarp/fixtures/whitequark/sclass.txt1
-rw-r--r--test/yarp/fixtures/whitequark/self.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_attr_asgn.txt7
-rw-r--r--test/yarp/fixtures/whitequark/send_attr_asgn_conditional.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_binary_op.txt41
-rw-r--r--test/yarp/fixtures/whitequark/send_block_chain_cmd.txt13
-rw-r--r--test/yarp/fixtures/whitequark/send_block_conditional.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_call.txt3
-rw-r--r--test/yarp/fixtures/whitequark/send_conditional.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_index.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_index_asgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_index_asgn_legacy.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_index_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_index_legacy.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_lambda.txt5
-rw-r--r--test/yarp/fixtures/whitequark/send_lambda_args.txt3
-rw-r--r--test/yarp/fixtures/whitequark/send_lambda_args_noparen.txt3
-rw-r--r--test/yarp/fixtures/whitequark/send_lambda_args_shadow.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_lambda_legacy.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_op_asgn_conditional.txt1
-rw-r--r--test/yarp/fixtures/whitequark/send_plain.txt5
-rw-r--r--test/yarp/fixtures/whitequark/send_plain_cmd.txt5
-rw-r--r--test/yarp/fixtures/whitequark/send_self.txt5
-rw-r--r--test/yarp/fixtures/whitequark/send_self_block.txt7
-rw-r--r--test/yarp/fixtures/whitequark/send_unary_op.txt5
-rw-r--r--test/yarp/fixtures/whitequark/slash_newline_in_heredocs.txt13
-rw-r--r--test/yarp/fixtures/whitequark/space_args_arg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/space_args_arg_block.txt5
-rw-r--r--test/yarp/fixtures/whitequark/space_args_arg_call.txt1
-rw-r--r--test/yarp/fixtures/whitequark/space_args_arg_newline.txt2
-rw-r--r--test/yarp/fixtures/whitequark/space_args_block.txt1
-rw-r--r--test/yarp/fixtures/whitequark/space_args_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/string___FILE__.txt1
-rw-r--r--test/yarp/fixtures/whitequark/string_concat.txt1
-rw-r--r--test/yarp/fixtures/whitequark/string_dvar.txt1
-rw-r--r--test/yarp/fixtures/whitequark/string_interp.txt1
-rw-r--r--test/yarp/fixtures/whitequark/string_plain.txt3
-rw-r--r--test/yarp/fixtures/whitequark/super.txt5
-rw-r--r--test/yarp/fixtures/whitequark/super_block.txt3
-rw-r--r--test/yarp/fixtures/whitequark/symbol_interp.txt1
-rw-r--r--test/yarp/fixtures/whitequark/symbol_plain.txt3
-rw-r--r--test/yarp/fixtures/whitequark/ternary.txt1
-rw-r--r--test/yarp/fixtures/whitequark/ternary_ambiguous_symbol.txt1
-rw-r--r--test/yarp/fixtures/whitequark/trailing_forward_arg.txt1
-rw-r--r--test/yarp/fixtures/whitequark/true.txt1
-rw-r--r--test/yarp/fixtures/whitequark/unary_num_pow_precedence.txt5
-rw-r--r--test/yarp/fixtures/whitequark/undef.txt1
-rw-r--r--test/yarp/fixtures/whitequark/unless.txt3
-rw-r--r--test/yarp/fixtures/whitequark/unless_else.txt3
-rw-r--r--test/yarp/fixtures/whitequark/unless_mod.txt1
-rw-r--r--test/yarp/fixtures/whitequark/until.txt3
-rw-r--r--test/yarp/fixtures/whitequark/until_mod.txt1
-rw-r--r--test/yarp/fixtures/whitequark/until_post.txt1
-rw-r--r--test/yarp/fixtures/whitequark/var_and_asgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/var_op_asgn.txt7
-rw-r--r--test/yarp/fixtures/whitequark/var_op_asgn_cmd.txt1
-rw-r--r--test/yarp/fixtures/whitequark/var_or_asgn.txt1
-rw-r--r--test/yarp/fixtures/whitequark/when_multi.txt1
-rw-r--r--test/yarp/fixtures/whitequark/when_splat.txt1
-rw-r--r--test/yarp/fixtures/whitequark/when_then.txt1
-rw-r--r--test/yarp/fixtures/whitequark/while.txt3
-rw-r--r--test/yarp/fixtures/whitequark/while_mod.txt1
-rw-r--r--test/yarp/fixtures/whitequark/while_post.txt1
-rw-r--r--test/yarp/fixtures/whitequark/xstring_interp.txt1
-rw-r--r--test/yarp/fixtures/whitequark/xstring_plain.txt1
-rw-r--r--test/yarp/fixtures/whitequark/yield.txt7
-rw-r--r--test/yarp/fixtures/whitequark/zsuper.txt1
-rw-r--r--test/yarp/fixtures/xstring.txt7
-rw-r--r--test/yarp/fixtures/yield.txt7
-rw-r--r--test/yarp/heredoc_dedent_test.rb18
-rw-r--r--test/yarp/language_server_test.rb363
-rw-r--r--test/yarp/location_test.rb766
-rw-r--r--test/yarp/memsize_test.rb13
-rw-r--r--test/yarp/parse_test.rb114
-rw-r--r--test/yarp/regexp_test.rb187
-rw-r--r--test/yarp/ripper_compat_test.rb21
-rw-r--r--test/yarp/snapshots/alias.txt74
-rw-r--r--test/yarp/snapshots/arithmetic.txt107
-rw-r--r--test/yarp/snapshots/arrays.txt696
-rw-r--r--test/yarp/snapshots/begin_ensure.txt69
-rw-r--r--test/yarp/snapshots/begin_rescue.txt595
-rw-r--r--test/yarp/snapshots/blocks.txt621
-rw-r--r--test/yarp/snapshots/boolean_operators.txt24
-rw-r--r--test/yarp/snapshots/booleans.txt4
-rw-r--r--test/yarp/snapshots/break.txt158
-rw-r--r--test/yarp/snapshots/case.txt207
-rw-r--r--test/yarp/snapshots/classes.txt280
-rw-r--r--test/yarp/snapshots/comments.txt64
-rw-r--r--test/yarp/snapshots/constants.txt916
-rw-r--r--test/yarp/snapshots/dash_heredocs.txt121
-rw-r--r--test/yarp/snapshots/defined.txt33
-rw-r--r--test/yarp/snapshots/dos_endings.txt81
-rw-r--r--test/yarp/snapshots/embdoc_no_newline_at_end.txt1
-rw-r--r--test/yarp/snapshots/for.txt128
-rw-r--r--test/yarp/snapshots/global_variables.txt50
-rw-r--r--test/yarp/snapshots/hashes.txt110
-rw-r--r--test/yarp/snapshots/heredoc_with_trailing_newline.txt6
-rw-r--r--test/yarp/snapshots/heredocs_nested.txt22
-rw-r--r--test/yarp/snapshots/heredocs_with_ignored_newlines.txt24
-rw-r--r--test/yarp/snapshots/heredocs_with_ignored_newlines_and_non_empty.txt10
-rw-r--r--test/yarp/snapshots/if.txt230
-rw-r--r--test/yarp/snapshots/integer_operations.txt383
-rw-r--r--test/yarp/snapshots/keyword_method_names.txt143
-rw-r--r--test/yarp/snapshots/keywords.txt11
-rw-r--r--test/yarp/snapshots/lambda.txt109
-rw-r--r--test/yarp/snapshots/method_calls.txt1570
-rw-r--r--test/yarp/snapshots/methods.txt1406
-rw-r--r--test/yarp/snapshots/modules.txt125
-rw-r--r--test/yarp/snapshots/next.txt88
-rw-r--r--test/yarp/snapshots/nils.txt20
-rw-r--r--test/yarp/snapshots/non_alphanumeric_methods.txt477
-rw-r--r--test/yarp/snapshots/not.txt151
-rw-r--r--test/yarp/snapshots/numbers.txt75
-rw-r--r--test/yarp/snapshots/patterns.txt4088
-rw-r--r--test/yarp/snapshots/procs.txt218
-rw-r--r--test/yarp/snapshots/range_begin_open_exclusive.txt6
-rw-r--r--test/yarp/snapshots/range_begin_open_inclusive.txt6
-rw-r--r--test/yarp/snapshots/range_end_open_exclusive.txt6
-rw-r--r--test/yarp/snapshots/range_end_open_inclusive.txt6
-rw-r--r--test/yarp/snapshots/ranges.txt106
-rw-r--r--test/yarp/snapshots/regex.txt143
-rw-r--r--test/yarp/snapshots/rescue.txt306
-rw-r--r--test/yarp/snapshots/return.txt92
-rw-r--r--test/yarp/snapshots/seattlerb/BEGIN.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/__ENCODING__.txt1
-rw-r--r--test/yarp/snapshots/seattlerb/alias_gvar_backref.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/alias_resword.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/and_multi.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/aref_args_assocs.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/aref_args_lit_assocs.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/args_kw_block.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/array_line_breaks.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/array_lits_trailing_calls.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/assoc__bare.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/assoc_label.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/attr_asgn_colon_id.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/attrasgn_array_arg.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/attrasgn_array_lhs.txt57
-rw-r--r--test/yarp/snapshots/seattlerb/attrasgn_primary_dot_constant.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/backticks_interpolation_line.txt38
-rw-r--r--test/yarp/snapshots/seattlerb/bang_eq.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/bdot2.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/bdot3.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/begin_ensure_no_bodies.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_bodies.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_no_bodies.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/begin_rescue_ensure_no_bodies.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg__bare.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_kwsplat.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_opt_arg_block.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_opt_splat.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_opt_splat_arg_block_omfg.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_optional.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_scope.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_scope2.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_arg_splat_arg.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_args_kwargs.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_args_no_kwargs.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_args_opt1.txt47
-rw-r--r--test/yarp/snapshots/seattlerb/block_args_opt2.txt46
-rw-r--r--test/yarp/snapshots/seattlerb/block_args_opt2_2.txt54
-rw-r--r--test/yarp/snapshots/seattlerb/block_args_opt3.txt55
-rw-r--r--test/yarp/snapshots/seattlerb/block_break.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/block_call_defn_call_block_call.txt61
-rw-r--r--test/yarp/snapshots/seattlerb/block_call_dot_op2_brace_block.txt77
-rw-r--r--test/yarp/snapshots/seattlerb/block_call_dot_op2_cmd_args_do_block.txt79
-rw-r--r--test/yarp/snapshots/seattlerb/block_call_operation_colon.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/block_call_operation_dot.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/block_call_paren_call_block_call.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_command_operation_colon.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/block_command_operation_dot.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/block_decomp_anon_splat_arg.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_decomp_arg_splat.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_decomp_arg_splat_arg.txt44
-rw-r--r--test/yarp/snapshots/seattlerb/block_decomp_splat.txt39
-rw-r--r--test/yarp/snapshots/seattlerb/block_kw.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_kw__required.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/block_kwarg_lvar.txt38
-rw-r--r--test/yarp/snapshots/seattlerb/block_kwarg_lvar_multiple.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/block_next.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/block_opt_arg.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_opt_splat.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_opt_splat_arg_block_omfg.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_optarg.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_paren_splat.txt43
-rw-r--r--test/yarp/snapshots/seattlerb/block_reg_optarg.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/block_return.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/block_scope.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/block_splat_reg.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/bug169.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/bug179.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/bug190.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/bug191.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/bug202.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/bug236.txt65
-rw-r--r--test/yarp/snapshots/seattlerb/bug290.txt15
-rw-r--r--test/yarp/snapshots/seattlerb/bug_187.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/bug_215.txt9
-rw-r--r--test/yarp/snapshots/seattlerb/bug_249.txt76
-rw-r--r--test/yarp/snapshots/seattlerb/bug_and.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/bug_args__19.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/bug_args_masgn.txt41
-rw-r--r--test/yarp/snapshots/seattlerb/bug_args_masgn2.txt46
-rw-r--r--test/yarp/snapshots/seattlerb/bug_args_masgn_outer_parens__19.txt45
-rw-r--r--test/yarp/snapshots/seattlerb/bug_call_arglist_parens.txt87
-rw-r--r--test/yarp/snapshots/seattlerb/bug_case_when_regexp.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/bug_comma.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/bug_cond_pct.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/bug_hash_args.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/bug_hash_args_trailing_comma.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/bug_hash_interp_array.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/bug_masgn_right.txt41
-rw-r--r--test/yarp/snapshots/seattlerb/bug_not_parens.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/bug_op_asgn_rescue.txt15
-rw-r--r--test/yarp/snapshots/seattlerb/call_and.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_arg_assoc.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/call_arg_assoc_kwsplat.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/call_arg_kwsplat.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/call_args_assoc_quoted.txt82
-rw-r--r--test/yarp/snapshots/seattlerb/call_args_assoc_trailing_comma.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/call_args_command.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/call_array_arg.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/call_array_block_call.txt33
-rw-r--r--test/yarp/snapshots/seattlerb/call_array_lambda_block_call.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/call_array_lit_inline_hash.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/call_assoc.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/call_assoc_new.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/call_assoc_new_if_multiline.txt34
-rw-r--r--test/yarp/snapshots/seattlerb/call_assoc_trailing_comma.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/call_bang_command_call.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/call_bang_squiggle.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_begin_call_block_call.txt47
-rw-r--r--test/yarp/snapshots/seattlerb/call_block_arg_named.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/call_carat.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_colon2.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_colon_parens.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_div.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_dot_parens.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_env.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_eq3.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_gt.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_kwsplat.txt20
-rw-r--r--test/yarp/snapshots/seattlerb/call_leading_dots.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/call_leading_dots_comment.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/call_lt.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_lte.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_not.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_pipe.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_rshift.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_self_brackets.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_spaceship.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_stabby_do_end_with_block.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/call_stabby_with_braces_block.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/call_star.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_star2.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_trailing_comma.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/call_trailing_dots.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/call_unary_bang.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/case_in.txt607
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_31.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_37.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_42.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_42_2.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_47.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_67.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_86.txt33
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_86_2.txt33
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_array_pat_const.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_array_pat_const2.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_array_pat_paren_assign.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_const.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_else.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_find.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_find_array.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_hash_pat.txt34
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_hash_pat_assign.txt43
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_assign.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_true.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_hash_pat_rest.txt33
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_hash_pat_rest_solo.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_if_unless_post_mod.txt39
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_multiple.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/case_in_or.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/class_comments.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/cond_unary_minus.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/const_2_op_asgn_or2.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/const_3_op_asgn_or.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/const_op_asgn_and1.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/const_op_asgn_and2.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/const_op_asgn_or.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/dasgn_icky2.txt47
-rw-r--r--test/yarp/snapshots/seattlerb/defined_eh_parens.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/defn_arg_asplat_arg.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_arg_forward_args.txt41
-rw-r--r--test/yarp/snapshots/seattlerb/defn_args_forward_args.txt44
-rw-r--r--test/yarp/snapshots/seattlerb/defn_comments.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/defn_endless_command.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/defn_endless_command_rescue.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/defn_forward_args.txt38
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_env.txt45
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_kwarg.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_lvar.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_no_parens.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_kwarg_val.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_no_kwargs.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_oneliner.txt38
-rw-r--r--test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/defn_oneliner_noargs.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/defn_oneliner_noargs_parentheses.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/defn_oneliner_rescue.txt132
-rw-r--r--test/yarp/snapshots/seattlerb/defn_opt_last_arg.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/defn_opt_reg.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/defn_opt_splat_arg.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/defn_powarg.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_reg_opt_reg.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/defn_splat_arg.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defn_unary_not.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/defns_reserved.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/defs_as_arg_with_do_block_inside.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/defs_comments.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/defs_endless_command.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/defs_endless_command_rescue.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/defs_kwarg.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/defs_oneliner.txt38
-rw-r--r--test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/defs_oneliner_rescue.txt132
-rw-r--r--test/yarp/snapshots/seattlerb/do_bug.txt46
-rw-r--r--test/yarp/snapshots/seattlerb/do_lambda.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/dot2_nil__26.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/dot3_nil__26.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/dstr_evstr.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/dstr_evstr_empty_end.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/dstr_lex_state.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/dstr_str.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/dsym_esc_to_sym.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/dsym_to_sym.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/eq_begin_line_numbers.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/evstr_evstr.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/evstr_str.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/expr_not_bang.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/f_kw.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/f_kw__required.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/flip2_env_lvar.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/float_with_if_modifier.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc__backslash_dos_format.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_backslash_nl.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_bad_hex_escape.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_bad_oct_escape.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_comma_arg.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_lineno.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt56
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_lines.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_empty.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_interp.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_no_indent.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs_extra.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_squiggly_visually_blank_lines.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_trailing_slash_continued_call.txt20
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_unicode.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes_windows.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns_windows.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt15
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt15
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_not_global_interpolation.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns_windows.txt15
-rw-r--r--test/yarp/snapshots/seattlerb/heredoc_wtf_I_hate_you.txt51
-rw-r--r--test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers.txt131
-rw-r--r--test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers2.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/i_have_no_freakin_clue.txt49
-rw-r--r--test/yarp/snapshots/seattlerb/if_elsif.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/if_symbol.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/in_expr_no_case.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/index_0.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/index_0_opasgn.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/integer_with_if_modifier.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/interpolated_symbol_array_line_breaks.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/interpolated_word_array_line_breaks.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_1.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_10_1.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_10_2.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_11_1.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_11_2.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_2__19.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_3.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_4.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_5.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_6.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_7_1.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_7_2.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_8_1.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_8_2.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_9_1.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_args_9_2.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/iter_kwarg.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/iter_kwarg_kwsplat.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me.txt44
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me2.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me3.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me4.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me5.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_10.txt44
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_11.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_12.txt41
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_6.txt45
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_7.txt41
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_8.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/kill_me_9.txt43
-rw-r--r--test/yarp/snapshots/seattlerb/label_vs_string.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/lambda_do_vs_brace.txt63
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_arg_rescue_arg.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_call_bracket_rescue_arg.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_call_nobracket_rescue_arg.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_command.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_env.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_ivar_env.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_lasgn_command_call.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/lasgn_middle_splat.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/magic_encoding_comment.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_anon_splat_arg.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_arg_colon_arg.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_arg_ident.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_arg_splat_arg.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_colon2.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_colon3.txt25
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_command_call.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_double_paren.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_lhs_splat.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_paren.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_splat_arg.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_splat_arg_arg.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_star.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/masgn_var_star_var.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/messy_op_asgn_lineno.txt55
-rw-r--r--test/yarp/snapshots/seattlerb/method_call_assoc_trailing_comma.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/method_call_trailing_comma.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_back_anonsplat.txt15
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_back_splat.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_front_anonsplat.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_front_splat.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_keyword.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_mid_anonsplat.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_mid_splat.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/mlhs_rescue.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/module_comments.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/motherfuckin_leading_dots.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/motherfuckin_leading_dots2.txt7
-rw-r--r--test/yarp/snapshots/seattlerb/multiline_hash_declaration.txt62
-rw-r--r--test/yarp/snapshots/seattlerb/non_interpolated_symbol_array_line_breaks.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/non_interpolated_word_array_line_breaks.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_command_call.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_dot_ident_command_call.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_index_command_call.txt32
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_primary_colon_const_command_call.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier1.txt21
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier_command_call.txt33
-rw-r--r--test/yarp/snapshots/seattlerb/op_asgn_val_dot_ident_command_call.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/parse_def_special_name.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/parse_if_not_canonical.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/parse_if_not_noncanonical.txt40
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_block.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_block_inline_comment.txt8
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_block_inline_comment_leading_newlines.txt8
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_block_inline_multiline_comment.txt8
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_call_ivar_line_break_paren.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_call_no_args.txt48
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_defn_complex.txt49
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_defn_no_parens.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_defn_no_parens_args.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_dot2.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_dot2_open.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_dot3.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_dot3_open.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_dstr_escaped_newline.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_dstr_soft_newline.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_evstr_after_break.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_hash_lit.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_heredoc.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_heredoc_evstr.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_heredoc_regexp_chars.txt32
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_iter_call_no_parens.txt50
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_iter_call_parens.txt50
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_multiline_str.txt7
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_multiline_str_literal_n.txt7
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_newlines.txt1
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_op_asgn.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_postexe.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_preexe.txt13
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_rescue.txt43
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_return.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_str_with_newline_escape.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_to_ary.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/parse_line_trailing_newlines.txt7
-rw-r--r--test/yarp/snapshots/seattlerb/parse_opt_call_args_assocs_comma.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/parse_opt_call_args_lit_comma.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_019.txt32
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_044.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_051.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_058.txt46
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_058_2.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_069.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/parse_pattern_076.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/parse_until_not_canonical.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/parse_until_not_noncanonical.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/parse_while_not_canonical.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/parse_while_not_noncanonical.txt42
-rw-r--r--test/yarp/snapshots/seattlerb/pctW_lineno.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/pct_Q_backslash_nl.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/pct_nl.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/pipe_semicolon.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/pipe_space.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/qWords_space.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/qsymbols.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/qsymbols_empty.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/qsymbols_empty_space.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/qsymbols_interp.txt33
-rw-r--r--test/yarp/snapshots/seattlerb/quoted_symbol_hash_arg.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/quoted_symbol_keys.txt14
-rw-r--r--test/yarp/snapshots/seattlerb/qw_escape.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/qw_escape_term.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/qwords_empty.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/read_escape_unicode_curlies.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/read_escape_unicode_h4.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/regexp.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/regexp_esc_C_slash.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/regexp_esc_u.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/regexp_escape_extended.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/regexp_unicode_curlies.txt7
-rw-r--r--test/yarp/snapshots/seattlerb/required_kwarg_no_value.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/rescue_do_end_ensure_result.txt47
-rw-r--r--test/yarp/snapshots/seattlerb/rescue_do_end_no_raise.txt52
-rw-r--r--test/yarp/snapshots/seattlerb/rescue_do_end_raised.txt47
-rw-r--r--test/yarp/snapshots/seattlerb/rescue_do_end_rescued.txt62
-rw-r--r--test/yarp/snapshots/seattlerb/rescue_in_block.txt48
-rw-r--r--test/yarp/snapshots/seattlerb/rescue_parens.txt48
-rw-r--r--test/yarp/snapshots/seattlerb/return_call_assocs.txt142
-rw-r--r--test/yarp/snapshots/seattlerb/rhs_asgn.txt10
-rw-r--r--test/yarp/snapshots/seattlerb/ruby21_numbers.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/safe_attrasgn.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_attrasgn_constant.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_call.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_call_after_newline.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_call_dot_parens.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_call_newline.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_call_operator.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/safe_call_rhs_newline.txt22
-rw-r--r--test/yarp/snapshots/seattlerb/safe_calls.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/safe_op_asgn.txt31
-rw-r--r--test/yarp/snapshots/seattlerb/safe_op_asgn2.txt20
-rw-r--r--test/yarp/snapshots/seattlerb/slashy_newlines_within_string.txt36
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_arg_no_paren.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt29
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_block_iter_call.txt45
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_block_iter_call_no_target_with_arg.txt35
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_block_kw.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_block_kw__required.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/stabby_proc_scope.txt24
-rw-r--r--test/yarp/snapshots/seattlerb/str_backslashes.txt23
-rw-r--r--test/yarp/snapshots/seattlerb/str_double_double_escaped_newline.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_double_escaped_newline.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_double_newline.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_evstr.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/str_evstr_escape.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/str_heredoc_interp.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/str_interp_ternary_or_label.txt89
-rw-r--r--test/yarp/snapshots/seattlerb/str_lit_concat_bad_encodings.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_newline_hash_line_number.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/str_pct_Q_nested.txt28
-rw-r--r--test/yarp/snapshots/seattlerb/str_pct_nested_nested.txt26
-rw-r--r--test/yarp/snapshots/seattlerb/str_pct_q.txt6
-rw-r--r--test/yarp/snapshots/seattlerb/str_single_double_escaped_newline.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_single_escaped_newline.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_single_newline.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/str_str.txt17
-rw-r--r--test/yarp/snapshots/seattlerb/str_str_str.txt18
-rw-r--r--test/yarp/snapshots/seattlerb/super_arg.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/symbol_empty.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/symbol_list.txt41
-rw-r--r--test/yarp/snapshots/seattlerb/symbols.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/symbols_empty.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/symbols_empty_space.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/symbols_interp.txt12
-rw-r--r--test/yarp/snapshots/seattlerb/thingy.txt27
-rw-r--r--test/yarp/snapshots/seattlerb/uminus_float.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/unary_minus.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/unary_plus.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/unary_plus_on_literal.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/unary_tilde.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/utf8_bom.txt16
-rw-r--r--test/yarp/snapshots/seattlerb/when_splat.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/words_interp.txt19
-rw-r--r--test/yarp/snapshots/seattlerb/wtf.txt48
-rw-r--r--test/yarp/snapshots/seattlerb/wtf_7.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/wtf_8.txt30
-rw-r--r--test/yarp/snapshots/seattlerb/yield_arg.txt11
-rw-r--r--test/yarp/snapshots/seattlerb/yield_call_assocs.txt154
-rw-r--r--test/yarp/snapshots/seattlerb/yield_empty_parens.txt4
-rw-r--r--test/yarp/snapshots/seattlerb/zomg_sometimes_i_hate_this_project.txt81
-rw-r--r--test/yarp/snapshots/single_quote_heredocs.txt15
-rw-r--r--test/yarp/snapshots/strings.txt201
-rw-r--r--test/yarp/snapshots/super.txt25
-rw-r--r--test/yarp/snapshots/symbols.txt147
-rw-r--r--test/yarp/snapshots/ternary_operator.txt134
-rw-r--r--test/yarp/snapshots/tilde_heredocs.txt136
-rw-r--r--test/yarp/snapshots/undef.txt50
-rw-r--r--test/yarp/snapshots/unescaping.txt23
-rw-r--r--test/yarp/snapshots/unless.txt83
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/alias.txt15
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/assignment.txt718
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/block.txt1286
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/case.txt402
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/class.txt162
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/control.txt83
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/def.txt1019
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/defined.txt40
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/defs.txt297
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/dstr.txt205
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/empty.txt1
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/empty_begin.txt4
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/flipflop.txt149
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/for.txt130
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/hookexe.txt22
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/if.txt201
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/kwbegin.txt379
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/lambda.txt112
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/literal.txt755
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/module.txt78
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/opasgn.txt429
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/pattern.txt291
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/pragma.txt9
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/range.txt31
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/rescue.txt72
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/send.txt2029
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/since/27.txt42
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/since/30.txt56
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/since/31.txt75
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/since/32.txt79
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/singletons.txt9
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/super.txt239
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/unary.txt217
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/undef.txt14
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/variables.txt23
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/while.txt599
-rw-r--r--test/yarp/snapshots/unparser/corpus/literal/yield.txt23
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/and.txt77
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/block.txt165
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/def.txt77
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/dstr.txt257
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/kwbegin.txt184
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/literal.txt93
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/send.txt117
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/undef.txt11
-rw-r--r--test/yarp/snapshots/unparser/corpus/semantic/while.txt177
-rw-r--r--test/yarp/snapshots/until.txt60
-rw-r--r--test/yarp/snapshots/variables.txt232
-rw-r--r--test/yarp/snapshots/while.txt185
-rw-r--r--test/yarp/snapshots/whitequark/__ENCODING__.txt1
-rw-r--r--test/yarp/snapshots/whitequark/__ENCODING___legacy_.txt1
-rw-r--r--test/yarp/snapshots/whitequark/alias.txt10
-rw-r--r--test/yarp/snapshots/whitequark/alias_gvar.txt15
-rw-r--r--test/yarp/snapshots/whitequark/ambiuous_quoted_label_in_ternary_operator.txt30
-rw-r--r--test/yarp/snapshots/whitequark/and.txt15
-rw-r--r--test/yarp/snapshots/whitequark/and_asgn.txt37
-rw-r--r--test/yarp/snapshots/whitequark/and_or_masgn.txt61
-rw-r--r--test/yarp/snapshots/whitequark/anonymous_blockarg.txt40
-rw-r--r--test/yarp/snapshots/whitequark/arg.txt48
-rw-r--r--test/yarp/snapshots/whitequark/arg_duplicate_ignored.txt49
-rw-r--r--test/yarp/snapshots/whitequark/arg_label.txt90
-rw-r--r--test/yarp/snapshots/whitequark/arg_scope.txt22
-rw-r--r--test/yarp/snapshots/whitequark/args.txt776
-rw-r--r--test/yarp/snapshots/whitequark/args_args_assocs.txt59
-rw-r--r--test/yarp/snapshots/whitequark/args_args_assocs_comma.txt25
-rw-r--r--test/yarp/snapshots/whitequark/args_args_comma.txt18
-rw-r--r--test/yarp/snapshots/whitequark/args_args_star.txt73
-rw-r--r--test/yarp/snapshots/whitequark/args_assocs.txt125
-rw-r--r--test/yarp/snapshots/whitequark/args_assocs_comma.txt24
-rw-r--r--test/yarp/snapshots/whitequark/args_assocs_legacy.txt125
-rw-r--r--test/yarp/snapshots/whitequark/args_block_pass.txt21
-rw-r--r--test/yarp/snapshots/whitequark/args_cmd.txt40
-rw-r--r--test/yarp/snapshots/whitequark/args_star.txt61
-rw-r--r--test/yarp/snapshots/whitequark/array_assocs.txt28
-rw-r--r--test/yarp/snapshots/whitequark/array_plain.txt10
-rw-r--r--test/yarp/snapshots/whitequark/array_splat.txt32
-rw-r--r--test/yarp/snapshots/whitequark/array_symbols.txt11
-rw-r--r--test/yarp/snapshots/whitequark/array_symbols_empty.txt7
-rw-r--r--test/yarp/snapshots/whitequark/array_symbols_interp.txt57
-rw-r--r--test/yarp/snapshots/whitequark/array_words.txt11
-rw-r--r--test/yarp/snapshots/whitequark/array_words_empty.txt7
-rw-r--r--test/yarp/snapshots/whitequark/array_words_interp.txt62
-rw-r--r--test/yarp/snapshots/whitequark/asgn_cmd.txt45
-rw-r--r--test/yarp/snapshots/whitequark/asgn_mrhs.txt52
-rw-r--r--test/yarp/snapshots/whitequark/back_ref.txt1
-rw-r--r--test/yarp/snapshots/whitequark/bang.txt16
-rw-r--r--test/yarp/snapshots/whitequark/bang_cmd.txt28
-rw-r--r--test/yarp/snapshots/whitequark/begin_cmdarg.txt43
-rw-r--r--test/yarp/snapshots/whitequark/beginless_erange_after_newline.txt7
-rw-r--r--test/yarp/snapshots/whitequark/beginless_irange_after_newline.txt7
-rw-r--r--test/yarp/snapshots/whitequark/beginless_range.txt7
-rw-r--r--test/yarp/snapshots/whitequark/blockarg.txt26
-rw-r--r--test/yarp/snapshots/whitequark/blockargs.txt1052
-rw-r--r--test/yarp/snapshots/whitequark/break.txt40
-rw-r--r--test/yarp/snapshots/whitequark/break_block.txt33
-rw-r--r--test/yarp/snapshots/whitequark/bug_435.txt34
-rw-r--r--test/yarp/snapshots/whitequark/bug_447.txt29
-rw-r--r--test/yarp/snapshots/whitequark/bug_452.txt43
-rw-r--r--test/yarp/snapshots/whitequark/bug_466.txt54
-rw-r--r--test/yarp/snapshots/whitequark/bug_473.txt26
-rw-r--r--test/yarp/snapshots/whitequark/bug_480.txt29
-rw-r--r--test/yarp/snapshots/whitequark/bug_481.txt41
-rw-r--r--test/yarp/snapshots/whitequark/bug_ascii_8bit_in_literal.txt6
-rw-r--r--test/yarp/snapshots/whitequark/bug_cmd_string_lookahead.txt18
-rw-r--r--test/yarp/snapshots/whitequark/bug_cmdarg.txt83
-rw-r--r--test/yarp/snapshots/whitequark/bug_def_no_paren_eql_begin.txt18
-rw-r--r--test/yarp/snapshots/whitequark/bug_do_block_in_call_args.txt42
-rw-r--r--test/yarp/snapshots/whitequark/bug_do_block_in_cmdarg.txt34
-rw-r--r--test/yarp/snapshots/whitequark/bug_do_block_in_hash_brace.txt249
-rw-r--r--test/yarp/snapshots/whitequark/bug_heredoc_do.txt18
-rw-r--r--test/yarp/snapshots/whitequark/bug_interp_single.txt27
-rw-r--r--test/yarp/snapshots/whitequark/bug_lambda_leakage.txt25
-rw-r--r--test/yarp/snapshots/whitequark/bug_regex_verification.txt6
-rw-r--r--test/yarp/snapshots/whitequark/bug_rescue_empty_else.txt20
-rw-r--r--test/yarp/snapshots/whitequark/bug_while_not_parens_do.txt24
-rw-r--r--test/yarp/snapshots/whitequark/case_cond.txt28
-rw-r--r--test/yarp/snapshots/whitequark/case_cond_else.txt34
-rw-r--r--test/yarp/snapshots/whitequark/case_expr.txt28
-rw-r--r--test/yarp/snapshots/whitequark/case_expr_else.txt44
-rw-r--r--test/yarp/snapshots/whitequark/casgn_scoped.txt14
-rw-r--r--test/yarp/snapshots/whitequark/casgn_toplevel.txt10
-rw-r--r--test/yarp/snapshots/whitequark/casgn_unscoped.txt10
-rw-r--r--test/yarp/snapshots/whitequark/character.txt4
-rw-r--r--test/yarp/snapshots/whitequark/class.txt23
-rw-r--r--test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt115
-rw-r--r--test/yarp/snapshots/whitequark/class_super.txt14
-rw-r--r--test/yarp/snapshots/whitequark/class_super_label.txt26
-rw-r--r--test/yarp/snapshots/whitequark/comments_before_leading_dot__27.txt49
-rw-r--r--test/yarp/snapshots/whitequark/complex.txt9
-rw-r--r--test/yarp/snapshots/whitequark/cond_begin.txt20
-rw-r--r--test/yarp/snapshots/whitequark/cond_begin_masgn.txt36
-rw-r--r--test/yarp/snapshots/whitequark/cond_eflipflop.txt49
-rw-r--r--test/yarp/snapshots/whitequark/cond_iflipflop.txt49
-rw-r--r--test/yarp/snapshots/whitequark/cond_match_current_line.txt29
-rw-r--r--test/yarp/snapshots/whitequark/const_op_asgn.txt73
-rw-r--r--test/yarp/snapshots/whitequark/const_scoped.txt10
-rw-r--r--test/yarp/snapshots/whitequark/const_toplevel.txt6
-rw-r--r--test/yarp/snapshots/whitequark/const_unscoped.txt1
-rw-r--r--test/yarp/snapshots/whitequark/cpath.txt23
-rw-r--r--test/yarp/snapshots/whitequark/cvar.txt1
-rw-r--r--test/yarp/snapshots/whitequark/cvasgn.txt6
-rw-r--r--test/yarp/snapshots/whitequark/dedenting_heredoc.txt323
-rw-r--r--test/yarp/snapshots/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt10
-rw-r--r--test/yarp/snapshots/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt10
-rw-r--r--test/yarp/snapshots/whitequark/def.txt83
-rw-r--r--test/yarp/snapshots/whitequark/defined.txt23
-rw-r--r--test/yarp/snapshots/whitequark/defs.txt74
-rw-r--r--test/yarp/snapshots/whitequark/empty_stmt.txt1
-rw-r--r--test/yarp/snapshots/whitequark/endless_comparison_method.txt203
-rw-r--r--test/yarp/snapshots/whitequark/endless_method.txt97
-rw-r--r--test/yarp/snapshots/whitequark/endless_method_command_syntax.txt316
-rw-r--r--test/yarp/snapshots/whitequark/endless_method_forwarded_args_legacy.txt38
-rw-r--r--test/yarp/snapshots/whitequark/endless_method_with_rescue_mod.txt43
-rw-r--r--test/yarp/snapshots/whitequark/endless_method_without_args.txt69
-rw-r--r--test/yarp/snapshots/whitequark/ensure.txt31
-rw-r--r--test/yarp/snapshots/whitequark/ensure_empty.txt13
-rw-r--r--test/yarp/snapshots/whitequark/false.txt1
-rw-r--r--test/yarp/snapshots/whitequark/float.txt17
-rw-r--r--test/yarp/snapshots/whitequark/for.txt59
-rw-r--r--test/yarp/snapshots/whitequark/for_mlhs.txt36
-rw-r--r--test/yarp/snapshots/whitequark/forward_arg.txt38
-rw-r--r--test/yarp/snapshots/whitequark/forward_arg_with_open_args.txt338
-rw-r--r--test/yarp/snapshots/whitequark/forward_args_legacy.txt88
-rw-r--r--test/yarp/snapshots/whitequark/forwarded_argument_with_kwrestarg.txt43
-rw-r--r--test/yarp/snapshots/whitequark/forwarded_argument_with_restarg.txt41
-rw-r--r--test/yarp/snapshots/whitequark/forwarded_kwrestarg.txt42
-rw-r--r--test/yarp/snapshots/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt47
-rw-r--r--test/yarp/snapshots/whitequark/forwarded_restarg.txt38
-rw-r--r--test/yarp/snapshots/whitequark/gvar.txt4
-rw-r--r--test/yarp/snapshots/whitequark/gvasgn.txt6
-rw-r--r--test/yarp/snapshots/whitequark/hash_empty.txt4
-rw-r--r--test/yarp/snapshots/whitequark/hash_hashrocket.txt24
-rw-r--r--test/yarp/snapshots/whitequark/hash_kwsplat.txt18
-rw-r--r--test/yarp/snapshots/whitequark/hash_label.txt14
-rw-r--r--test/yarp/snapshots/whitequark/hash_label_end.txt53
-rw-r--r--test/yarp/snapshots/whitequark/hash_pair_value_omission.txt37
-rw-r--r--test/yarp/snapshots/whitequark/heredoc.txt20
-rw-r--r--test/yarp/snapshots/whitequark/if.txt23
-rw-r--r--test/yarp/snapshots/whitequark/if_else.txt55
-rw-r--r--test/yarp/snapshots/whitequark/if_elsif.txt24
-rw-r--r--test/yarp/snapshots/whitequark/if_masgn__24.txt35
-rw-r--r--test/yarp/snapshots/whitequark/if_mod.txt14
-rw-r--r--test/yarp/snapshots/whitequark/if_nl_then.txt14
-rw-r--r--test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt83
-rw-r--r--test/yarp/snapshots/whitequark/int.txt18
-rw-r--r--test/yarp/snapshots/whitequark/int___LINE__.txt1
-rw-r--r--test/yarp/snapshots/whitequark/interp_digit_var.txt131
-rw-r--r--test/yarp/snapshots/whitequark/ivar.txt4
-rw-r--r--test/yarp/snapshots/whitequark/ivasgn.txt6
-rw-r--r--test/yarp/snapshots/whitequark/keyword_argument_omission.txt29
-rw-r--r--test/yarp/snapshots/whitequark/kwarg.txt26
-rw-r--r--test/yarp/snapshots/whitequark/kwbegin_compstmt.txt26
-rw-r--r--test/yarp/snapshots/whitequark/kwnilarg.txt75
-rw-r--r--test/yarp/snapshots/whitequark/kwoptarg.txt26
-rw-r--r--test/yarp/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt42
-rw-r--r--test/yarp/snapshots/whitequark/kwrestarg_named.txt26
-rw-r--r--test/yarp/snapshots/whitequark/kwrestarg_unnamed.txt26
-rw-r--r--test/yarp/snapshots/whitequark/lbrace_arg_after_command_args.txt42
-rw-r--r--test/yarp/snapshots/whitequark/lparenarg_after_lvar__since_25.txt83
-rw-r--r--test/yarp/snapshots/whitequark/lvar.txt6
-rw-r--r--test/yarp/snapshots/whitequark/lvar_injecting_match.txt25
-rw-r--r--test/yarp/snapshots/whitequark/lvasgn.txt13
-rw-r--r--test/yarp/snapshots/whitequark/masgn.txt42
-rw-r--r--test/yarp/snapshots/whitequark/masgn_attr.txt71
-rw-r--r--test/yarp/snapshots/whitequark/masgn_cmd.txt23
-rw-r--r--test/yarp/snapshots/whitequark/masgn_const.txt33
-rw-r--r--test/yarp/snapshots/whitequark/masgn_nested.txt34
-rw-r--r--test/yarp/snapshots/whitequark/masgn_splat.txt161
-rw-r--r--test/yarp/snapshots/whitequark/method_definition_in_while_cond.txt143
-rw-r--r--test/yarp/snapshots/whitequark/module.txt12
-rw-r--r--test/yarp/snapshots/whitequark/multiple_pattern_matches.txt97
-rw-r--r--test/yarp/snapshots/whitequark/newline_in_hash_argument.txt85
-rw-r--r--test/yarp/snapshots/whitequark/next.txt40
-rw-r--r--test/yarp/snapshots/whitequark/next_block.txt33
-rw-r--r--test/yarp/snapshots/whitequark/nil.txt1
-rw-r--r--test/yarp/snapshots/whitequark/nil_expression.txt7
-rw-r--r--test/yarp/snapshots/whitequark/non_lvar_injecting_match.txt28
-rw-r--r--test/yarp/snapshots/whitequark/not.txt38
-rw-r--r--test/yarp/snapshots/whitequark/not_cmd.txt28
-rw-r--r--test/yarp/snapshots/whitequark/not_masgn__24.txt39
-rw-r--r--test/yarp/snapshots/whitequark/nth_ref.txt4
-rw-r--r--test/yarp/snapshots/whitequark/numbered_args_after_27.txt177
-rw-r--r--test/yarp/snapshots/whitequark/numparam_outside_block.txt51
-rw-r--r--test/yarp/snapshots/whitequark/op_asgn.txt53
-rw-r--r--test/yarp/snapshots/whitequark/op_asgn_cmd.txt151
-rw-r--r--test/yarp/snapshots/whitequark/op_asgn_index.txt21
-rw-r--r--test/yarp/snapshots/whitequark/op_asgn_index_cmd.txt43
-rw-r--r--test/yarp/snapshots/whitequark/optarg.txt63
-rw-r--r--test/yarp/snapshots/whitequark/or.txt15
-rw-r--r--test/yarp/snapshots/whitequark/or_asgn.txt37
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_272.txt35
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_490.txt95
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_507.txt30
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_518.txt14
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_525.txt52
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_604.txt30
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_640.txt10
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_645.txt29
-rw-r--r--test/yarp/snapshots/whitequark/parser_bug_830.txt6
-rw-r--r--test/yarp/snapshots/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt12
-rw-r--r--test/yarp/snapshots/whitequark/parser_slash_slash_n_escaping_in_literals.txt78
-rw-r--r--test/yarp/snapshots/whitequark/pattern_matching__FILE__LINE_literals.txt42
-rw-r--r--test/yarp/snapshots/whitequark/pattern_matching_blank_else.txt17
-rw-r--r--test/yarp/snapshots/whitequark/pattern_matching_else.txt21
-rw-r--r--test/yarp/snapshots/whitequark/pattern_matching_single_line.txt31
-rw-r--r--test/yarp/snapshots/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt143
-rw-r--r--test/yarp/snapshots/whitequark/postexe.txt11
-rw-r--r--test/yarp/snapshots/whitequark/preexe.txt11
-rw-r--r--test/yarp/snapshots/whitequark/procarg0.txt70
-rw-r--r--test/yarp/snapshots/whitequark/range_exclusive.txt6
-rw-r--r--test/yarp/snapshots/whitequark/range_inclusive.txt6
-rw-r--r--test/yarp/snapshots/whitequark/rational.txt7
-rw-r--r--test/yarp/snapshots/whitequark/redo.txt1
-rw-r--r--test/yarp/snapshots/whitequark/regex_interp.txt19
-rw-r--r--test/yarp/snapshots/whitequark/regex_plain.txt6
-rw-r--r--test/yarp/snapshots/whitequark/resbody_list.txt34
-rw-r--r--test/yarp/snapshots/whitequark/resbody_list_mrhs.txt45
-rw-r--r--test/yarp/snapshots/whitequark/resbody_list_var.txt44
-rw-r--r--test/yarp/snapshots/whitequark/resbody_var.txt73
-rw-r--r--test/yarp/snapshots/whitequark/rescue.txt34
-rw-r--r--test/yarp/snapshots/whitequark/rescue_else.txt50
-rw-r--r--test/yarp/snapshots/whitequark/rescue_else_ensure.txt66
-rw-r--r--test/yarp/snapshots/whitequark/rescue_ensure.txt50
-rw-r--r--test/yarp/snapshots/whitequark/rescue_in_lambda_block.txt18
-rw-r--r--test/yarp/snapshots/whitequark/rescue_mod.txt10
-rw-r--r--test/yarp/snapshots/whitequark/rescue_mod_asgn.txt16
-rw-r--r--test/yarp/snapshots/whitequark/rescue_mod_masgn.txt21
-rw-r--r--test/yarp/snapshots/whitequark/rescue_mod_op_assign.txt16
-rw-r--r--test/yarp/snapshots/whitequark/rescue_without_begin_end.txt60
-rw-r--r--test/yarp/snapshots/whitequark/restarg_named.txt26
-rw-r--r--test/yarp/snapshots/whitequark/restarg_unnamed.txt26
-rw-r--r--test/yarp/snapshots/whitequark/retry.txt1
-rw-r--r--test/yarp/snapshots/whitequark/return.txt40
-rw-r--r--test/yarp/snapshots/whitequark/return_block.txt33
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_10279.txt20
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_10653.txt131
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11107.txt35
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11380.txt32
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11873.txt665
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11873_a.txt1025
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11873_b.txt82
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11989.txt22
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_11990.txt25
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_12073.txt71
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_12402.txt543
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_12669.txt105
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_12686.txt38
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_13547.txt16
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_14690.txt46
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_15789.txt109
-rw-r--r--test/yarp/snapshots/whitequark/ruby_bug_9669.txt41
-rw-r--r--test/yarp/snapshots/whitequark/sclass.txt13
-rw-r--r--test/yarp/snapshots/whitequark/self.txt1
-rw-r--r--test/yarp/snapshots/whitequark/send_attr_asgn.txt47
-rw-r--r--test/yarp/snapshots/whitequark/send_attr_asgn_conditional.txt16
-rw-r--r--test/yarp/snapshots/whitequark/send_binary_op.txt336
-rw-r--r--test/yarp/snapshots/whitequark/send_block_chain_cmd.txt194
-rw-r--r--test/yarp/snapshots/whitequark/send_block_conditional.txt16
-rw-r--r--test/yarp/snapshots/whitequark/send_call.txt27
-rw-r--r--test/yarp/snapshots/whitequark/send_conditional.txt16
-rw-r--r--test/yarp/snapshots/whitequark/send_index.txt16
-rw-r--r--test/yarp/snapshots/whitequark/send_index_asgn.txt18
-rw-r--r--test/yarp/snapshots/whitequark/send_index_asgn_legacy.txt18
-rw-r--r--test/yarp/snapshots/whitequark/send_index_cmd.txt40
-rw-r--r--test/yarp/snapshots/whitequark/send_index_legacy.txt16
-rw-r--r--test/yarp/snapshots/whitequark/send_lambda.txt26
-rw-r--r--test/yarp/snapshots/whitequark/send_lambda_args.txt43
-rw-r--r--test/yarp/snapshots/whitequark/send_lambda_args_noparen.txt43
-rw-r--r--test/yarp/snapshots/whitequark/send_lambda_args_shadow.txt24
-rw-r--r--test/yarp/snapshots/whitequark/send_lambda_legacy.txt4
-rw-r--r--test/yarp/snapshots/whitequark/send_op_asgn_conditional.txt20
-rw-r--r--test/yarp/snapshots/whitequark/send_plain.txt38
-rw-r--r--test/yarp/snapshots/whitequark/send_plain_cmd.txt44
-rw-r--r--test/yarp/snapshots/whitequark/send_self.txt18
-rw-r--r--test/yarp/snapshots/whitequark/send_self_block.txt49
-rw-r--r--test/yarp/snapshots/whitequark/send_unary_op.txt38
-rw-r--r--test/yarp/snapshots/whitequark/slash_newline_in_heredocs.txt20
-rw-r--r--test/yarp/snapshots/whitequark/space_args_arg.txt22
-rw-r--r--test/yarp/snapshots/whitequark/space_args_arg_block.txt56
-rw-r--r--test/yarp/snapshots/whitequark/space_args_arg_call.txt32
-rw-r--r--test/yarp/snapshots/whitequark/space_args_arg_newline.txt22
-rw-r--r--test/yarp/snapshots/whitequark/space_args_block.txt16
-rw-r--r--test/yarp/snapshots/whitequark/space_args_cmd.txt46
-rw-r--r--test/yarp/snapshots/whitequark/string___FILE__.txt6
-rw-r--r--test/yarp/snapshots/whitequark/string_concat.txt17
-rw-r--r--test/yarp/snapshots/whitequark/string_dvar.txt20
-rw-r--r--test/yarp/snapshots/whitequark/string_interp.txt18
-rw-r--r--test/yarp/snapshots/whitequark/string_plain.txt7
-rw-r--r--test/yarp/snapshots/whitequark/super.txt24
-rw-r--r--test/yarp/snapshots/whitequark/super_block.txt18
-rw-r--r--test/yarp/snapshots/whitequark/symbol_interp.txt28
-rw-r--r--test/yarp/snapshots/whitequark/symbol_plain.txt7
-rw-r--r--test/yarp/snapshots/whitequark/ternary.txt16
-rw-r--r--test/yarp/snapshots/whitequark/ternary_ambiguous_symbol.txt29
-rw-r--r--test/yarp/snapshots/whitequark/trailing_forward_arg.txt43
-rw-r--r--test/yarp/snapshots/whitequark/true.txt1
-rw-r--r--test/yarp/snapshots/whitequark/unary_num_pow_precedence.txt58
-rw-r--r--test/yarp/snapshots/whitequark/undef.txt20
-rw-r--r--test/yarp/snapshots/whitequark/unless.txt23
-rw-r--r--test/yarp/snapshots/whitequark/unless_else.txt55
-rw-r--r--test/yarp/snapshots/whitequark/unless_mod.txt14
-rw-r--r--test/yarp/snapshots/whitequark/until.txt39
-rw-r--r--test/yarp/snapshots/whitequark/until_mod.txt12
-rw-r--r--test/yarp/snapshots/whitequark/until_post.txt31
-rw-r--r--test/yarp/snapshots/whitequark/var_and_asgn.txt11
-rw-r--r--test/yarp/snapshots/whitequark/var_op_asgn.txt44
-rw-r--r--test/yarp/snapshots/whitequark/var_op_asgn_cmd.txt22
-rw-r--r--test/yarp/snapshots/whitequark/var_or_asgn.txt11
-rw-r--r--test/yarp/snapshots/whitequark/when_multi.txt29
-rw-r--r--test/yarp/snapshots/whitequark/when_splat.txt60
-rw-r--r--test/yarp/snapshots/whitequark/when_then.txt28
-rw-r--r--test/yarp/snapshots/whitequark/while.txt39
-rw-r--r--test/yarp/snapshots/whitequark/while_mod.txt12
-rw-r--r--test/yarp/snapshots/whitequark/while_post.txt31
-rw-r--r--test/yarp/snapshots/whitequark/xstring_interp.txt18
-rw-r--r--test/yarp/snapshots/whitequark/xstring_plain.txt6
-rw-r--r--test/yarp/snapshots/whitequark/yield.txt23
-rw-r--r--test/yarp/snapshots/whitequark/zsuper.txt4
-rw-r--r--test/yarp/snapshots/xstring.txt31
-rw-r--r--test/yarp/snapshots/yield.txt23
-rw-r--r--test/yarp/unescape_test.rb152
-rw-r--r--test/yarp/version_test.rb9
-rw-r--r--test/yarp/yarp_test_helper.rb98
1821 files changed, 66213 insertions, 0 deletions
diff --git a/test/yarp/comments_test.rb b/test/yarp/comments_test.rb
new file mode 100644
index 0000000000..bd8beead92
--- /dev/null
+++ b/test/yarp/comments_test.rb
@@ -0,0 +1,47 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class CommentsTest < Test::Unit::TestCase
+ include ::YARP::DSL
+
+ def test_comment_inline
+ assert_comment "# comment", :inline
+ end
+
+ def test_comment___END__
+ source = <<~RUBY
+ __END__
+ comment
+ RUBY
+
+ assert_comment source, :__END__
+ end
+
+ def test_comment_embedded_document
+ source = <<~RUBY
+ =begin
+ comment
+ =end
+ RUBY
+
+ assert_comment source, :embdoc
+ end
+
+ def test_comment_embedded_document_with_content_on_same_line
+ source = <<~RUBY
+ =begin other stuff
+ =end
+ RUBY
+
+ assert_comment source, :embdoc
+ end
+
+ private
+
+ def assert_comment(source, type)
+ result = YARP.parse(source)
+ assert result.errors.empty?, result.errors.map(&:message).join("\n")
+ result => YARP::ParseResult[comments: [YARP::Comment[type: type]]]
+ end
+end
diff --git a/test/yarp/compile_test.rb b/test/yarp/compile_test.rb
new file mode 100644
index 0000000000..d0be863db5
--- /dev/null
+++ b/test/yarp/compile_test.rb
@@ -0,0 +1,212 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class CompileTest < Test::Unit::TestCase
+ def test_AliasNode
+ assert_compiles("alias foo bar")
+ end
+
+ def test_AndNode
+ assert_compiles("true && false")
+ end
+
+ def test_ArrayNode
+ assert_compiles("[]")
+ assert_compiles("[foo, bar, baz]")
+ end
+
+ def test_AssocNode
+ assert_compiles("{ foo: bar }")
+ end
+
+ def test_BlockNode
+ assert_compiles("foo { bar }")
+ end
+
+ def test_BlockNode_with_optionals
+ assert_compiles("foo { |x = 1| bar }")
+ end
+
+ def test_CallNode
+ assert_compiles("foo")
+ assert_compiles("foo(bar)")
+ end
+
+ def test_ClassVariableReadNode
+ assert_compiles("@@foo")
+ end
+
+ def test_ClassVariableWriteNode
+ assert_compiles("@@foo = 1")
+ end
+
+ def test_FalseNode
+ assert_compiles("false")
+ end
+
+ def test_GlobalVariableReadNode
+ assert_compiles("$foo")
+ end
+
+ def test_GlobalVariableWriteNode
+ assert_compiles("$foo = 1")
+ end
+
+ def test_HashNode
+ assert_compiles("{ foo: bar }")
+ end
+
+ def test_InstanceVariableReadNode
+ assert_compiles("@foo")
+ end
+
+ def test_InstanceVariableWriteNode
+ assert_compiles("@foo = 1")
+ end
+
+ def test_IntegerNode
+ assert_compiles("1")
+ assert_compiles("1_000")
+ end
+
+ def test_InterpolatedStringNode
+ assert_compiles("\"foo \#{bar} baz\"")
+ end
+
+ def test_LocalVariableWriteNode
+ assert_compiles("foo = 1")
+ end
+
+ def test_LocalVariableReadNode
+ assert_compiles("[foo = 1, foo]")
+ end
+
+ def test_NilNode
+ assert_compiles("nil")
+ end
+
+ def test_OrNode
+ assert_compiles("true || false")
+ end
+
+ def test_ParenthesesNode
+ assert_compiles("()")
+ end
+
+ def test_ProgramNode
+ assert_compiles("")
+ end
+
+ def test_RangeNode
+ assert_compiles("foo..bar")
+ assert_compiles("foo...bar")
+ assert_compiles("(foo..)")
+ assert_compiles("(foo...)")
+ assert_compiles("(..bar)")
+ assert_compiles("(...bar)")
+ end
+
+ def test_SelfNode
+ assert_compiles("self")
+ end
+
+ def test_StringNode
+ assert_compiles("\"foo\"")
+ end
+
+ def test_SymbolNode
+ assert_compiles(":foo")
+ end
+
+ def test_TrueNode
+ assert_compiles("true")
+ end
+
+ def test_UndefNode
+ assert_compiles("undef :foo, :bar, :baz")
+ end
+
+ def test_XStringNode
+ assert_compiles("`foo`")
+ end
+
+ private
+
+ def assert_compiles(source)
+ assert_equal_iseqs(rubyvm_compile(source), YARP.compile(source))
+ end
+
+ # Instruction sequences have 13 elements in their lists. We don't currently
+ # support all of the fields, so we can't compare the iseqs directly. Instead,
+ # we compare the elements that we do support.
+ def assert_equal_iseqs(expected, actual)
+ # The first element is the magic comment string.
+ assert_equal expected[0], actual[0]
+
+ # The next three elements are the major, minor, and patch version numbers.
+ # TODO: Insert this check once Ruby 3.3 is released, and the TruffleRuby
+ # GitHub workflow also checks against Ruby 3.3
+ # assert_equal expected[1...4], actual[1...4]
+
+ # The next element is a set of options for the iseq. It has lots of
+ # different information, some of which we support and some of which we
+ # don't.
+ assert_equal expected[4][:arg_size], actual[4][:arg_size], "Unexpected difference in arg_size"
+ assert_equal expected[4][:stack_max], actual[4][:stack_max], "Unexpected difference in stack_max"
+
+ assert_kind_of Integer, actual[4][:local_size]
+ assert_kind_of Integer, actual[4][:node_id]
+
+ assert_equal expected[4][:code_location].length, actual[4][:code_location].length, "Unexpected difference in code_location length"
+ assert_equal expected[4][:node_ids].length, actual[4][:node_ids].length, "Unexpected difference in node_ids length"
+
+ # Then we have the name of the iseq, the relative file path, the absolute
+ # file path, and the line number. We don't have this working quite yet.
+ assert_kind_of String, actual[5]
+ assert_kind_of String, actual[6]
+ assert_kind_of String, actual[7]
+ assert_kind_of Integer, actual[8]
+
+ # Next we have the type of the iseq.
+ assert_equal expected[9], actual[9]
+
+ # Next we have the list of local variables. We don't support this yet.
+ assert_kind_of Array, actual[10]
+
+ # Next we have the argument options. These are used in block and method
+ # iseqs to reflect how the arguments are passed.
+ assert_equal expected[11], actual[11], "Unexpected difference in argument options"
+
+ # Next we have the catch table entries. We don't have this working yet.
+ assert_kind_of Array, actual[12]
+
+ # Finally we have the actual instructions. We support some of this, but omit
+ # line numbers and some tracepoint events.
+ expected[13].each do |insn|
+ case insn
+ in [:send, opnds, expected_block] unless expected_block.nil?
+ actual[13].shift => [:send, ^(opnds), actual_block]
+ assert_equal_iseqs expected_block, actual_block
+ in Array | :RUBY_EVENT_B_CALL | :RUBY_EVENT_B_RETURN | /^label_\d+/
+ assert_equal insn, actual[13].shift
+ in Integer | /^RUBY_EVENT_/
+ # skip these for now
+ else
+ flunk "Unexpected instruction: #{insn.inspect}"
+ end
+ end
+ end
+
+ def rubyvm_compile(source)
+ options = {
+ peephole_optimization: false,
+ specialized_instruction: false,
+ operands_unification: false,
+ instructions_unification: false,
+ frozen_string_literal: false
+ }
+
+ RubyVM::InstructionSequence.compile(source, **options).to_a
+ end
+end
diff --git a/test/yarp/encoding_test.rb b/test/yarp/encoding_test.rb
new file mode 100644
index 0000000000..02ff97f4be
--- /dev/null
+++ b/test/yarp/encoding_test.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class EncodingTest < Test::Unit::TestCase
+ %w[
+ ascii
+ ascii-8bit
+ big5
+ binary
+ euc-jp
+ gbk
+ iso-8859-1
+ iso-8859-2
+ iso-8859-3
+ iso-8859-4
+ iso-8859-5
+ iso-8859-6
+ iso-8859-7
+ iso-8859-8
+ iso-8859-9
+ iso-8859-10
+ iso-8859-11
+ iso-8859-13
+ iso-8859-14
+ iso-8859-15
+ iso-8859-16
+ koi8-r
+ shift_jis
+ sjis
+ us-ascii
+ utf-8
+ windows-31j
+ windows-1251
+ windows-1252
+ CP1251
+ CP1252
+ ].each do |encoding|
+ define_method "test_encoding_#{encoding}" do
+ result = YARP.parse("# encoding: #{encoding}\nident")
+ actual = result.value.statements.body.first.name.encoding
+ assert_equal Encoding.find(encoding), actual
+ end
+ end
+
+ def test_coding
+ result = YARP.parse("# coding: utf-8\nident")
+ actual = result.value.statements.body.first.name.encoding
+ assert_equal Encoding.find("utf-8"), actual
+ end
+
+ def test_emacs_style
+ result = YARP.parse("# -*- coding: utf-8 -*-\nident")
+ actual = result.value.statements.body.first.name.encoding
+ assert_equal Encoding.find("utf-8"), actual
+ end
+
+ def test_utf_8_variations
+ %w[
+ utf-8-unix
+ utf-8-dos
+ utf-8-mac
+ utf-8-*
+ ].each do |encoding|
+ result = YARP.parse("# coding: #{encoding}\nident")
+ actual = result.value.statements.body.first.name.encoding
+ assert_equal Encoding.find("utf-8"), actual
+ end
+ end
+end
diff --git a/test/yarp/errors_test.rb b/test/yarp/errors_test.rb
new file mode 100644
index 0000000000..4e5f8cb936
--- /dev/null
+++ b/test/yarp/errors_test.rb
@@ -0,0 +1,984 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class ErrorsTest < Test::Unit::TestCase
+ include ::YARP::DSL
+
+ def test_constant_path_with_invalid_token_after
+ assert_error_messages "A::$b", [
+ "Expected identifier or constant after '::'",
+ "Expected a newline or semicolon after statement."
+ ]
+ end
+
+ def test_module_name_recoverable
+ expected = ModuleNode(
+ [],
+ Location(),
+ ConstantReadNode(),
+ StatementsNode(
+ [ModuleNode([], Location(), MissingNode(), nil, Location())]
+ ),
+ Location()
+ )
+
+ assert_errors expected, "module Parent module end", [
+ "Expected to find a module name after `module`."
+ ]
+ end
+
+ def test_for_loops_index_missing
+ expected = ForNode(
+ MissingNode(),
+ expression("1..10"),
+ StatementsNode([expression("i")]),
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "for in 1..10\ni\nend", ["Expected index after for."]
+ end
+
+ def test_for_loops_only_end
+ expected = ForNode(
+ MissingNode(),
+ MissingNode(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "for end", ["Expected index after for.", "Expected keyword in.", "Expected collection."]
+ end
+
+ def test_pre_execution_missing_brace
+ expected = PreExecutionNode(
+ StatementsNode([expression("1")]),
+ Location(),
+ Location(),
+ Location()
+ )
+
+ assert_errors expected, "BEGIN 1 }", ["Expected '{' after 'BEGIN'."]
+ end
+
+ def test_pre_execution_context
+ expected = PreExecutionNode(
+ StatementsNode([
+ CallNode(
+ expression("1"),
+ nil,
+ Location(),
+ nil,
+ ArgumentsNode([MissingNode()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )
+ ]),
+ Location(),
+ Location(),
+ Location()
+ )
+
+ assert_errors expected, "BEGIN { 1 + }", ["Expected a value after the operator."]
+ end
+
+ def test_unterminated_embdoc
+ assert_errors expression("1"), "1\n=begin\n", ["Unterminated embdoc"]
+ end
+
+ def test_unterminated_i_list
+ assert_errors expression("%i["), "%i[", ["Expected a closing delimiter for a `%i` list."]
+ end
+
+ def test_unterminated_w_list
+ assert_errors expression("%w["), "%w[", ["Expected a closing delimiter for a `%w` list."]
+ end
+
+ def test_unterminated_W_list
+ assert_errors expression("%W["), "%W[", ["Expected a closing delimiter for a `%W` list."]
+ end
+
+ def test_unterminated_regular_expression
+ assert_errors expression("/hello"), "/hello", ["Expected a closing delimiter for a regular expression."]
+ end
+
+ def test_unterminated_xstring
+ assert_errors expression("`hello"), "`hello", ["Expected a closing delimiter for an xstring."]
+ end
+
+ def test_unterminated_string
+ assert_errors expression('"hello'), '"hello', ["Expected a closing delimiter for an interpolated string."]
+ end
+
+ def test_unterminated_s_symbol
+ assert_errors expression("%s[abc"), "%s[abc", ["Expected a closing delimiter for a dynamic symbol."]
+ end
+
+ def test_unterminated_parenthesized_expression
+ assert_errors expression('(1 + 2'), '(1 + 2', ["Expected to be able to parse an expression.", "Expected a closing parenthesis."]
+ end
+
+ def test_1_2_3
+ assert_errors expression("(1, 2, 3)"), "(1, 2, 3)", [
+ "Expected to be able to parse an expression.",
+ "Expected a closing parenthesis.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression."
+ ]
+ end
+
+ def test_return_1_2_3
+ assert_error_messages "return(1, 2, 3)", [
+ "Expected to be able to parse an expression.",
+ "Expected a closing parenthesis.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression."
+ ]
+ end
+
+ def test_return_1
+ assert_errors expression("return 1,;"), "return 1,;", ["Expected to be able to parse an argument."]
+ end
+
+ def test_next_1_2_3
+ assert_errors expression("next(1, 2, 3)"), "next(1, 2, 3)", [
+ "Expected to be able to parse an expression.",
+ "Expected a closing parenthesis.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression."
+ ]
+ end
+
+ def test_next_1
+ assert_errors expression("next 1,;"), "next 1,;", ["Expected to be able to parse an argument."]
+ end
+
+ def test_break_1_2_3
+ errors = [
+ "Expected to be able to parse an expression.",
+ "Expected a closing parenthesis.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression."
+ ]
+
+ assert_errors expression("break(1, 2, 3)"), "break(1, 2, 3)", errors
+ end
+
+ def test_break_1
+ assert_errors expression("break 1,;"), "break 1,;", ["Expected to be able to parse an argument."]
+ end
+
+ def test_argument_forwarding_when_parent_is_not_forwarding
+ assert_errors expression('def a(x, y, z); b(...); end'), 'def a(x, y, z); b(...); end', ["unexpected ... when parent method is not forwarding."]
+ end
+
+ def test_argument_forwarding_only_effects_its_own_internals
+ assert_errors expression('def a(...); b(...); end; def c(x, y, z); b(...); end'), 'def a(...); b(...); end; def c(x, y, z); b(...); end', ["unexpected ... when parent method is not forwarding."]
+ end
+
+ def test_top_level_constant_with_downcased_identifier
+ assert_error_messages "::foo", [
+ "Expected a constant after ::.",
+ "Expected a newline or semicolon after statement."
+ ]
+ end
+
+ def test_top_level_constant_starting_with_downcased_identifier
+ assert_error_messages "::foo::A", [
+ "Expected a constant after ::.",
+ "Expected a newline or semicolon after statement."
+ ]
+ end
+
+ def test_aliasing_global_variable_with_non_global_variable
+ assert_errors expression("alias $a b"), "alias $a b", ["Expected a global variable."]
+ end
+
+ def test_aliasing_non_global_variable_with_global_variable
+ assert_errors expression("alias a $b"), "alias a $b", ["Expected a bare word or symbol argument."]
+ end
+
+ def test_aliasing_global_variable_with_global_number_variable
+ assert_errors expression("alias $a $1"), "alias $a $1", ["Can't make alias for number variables."]
+ end
+
+ def test_def_with_expression_receiver_and_no_identifier
+ assert_errors expression("def (a); end"), "def (a); end", [
+ "Expected '.' or '::' after receiver"
+ ]
+ end
+
+ def test_def_with_multiple_statements_receiver
+ assert_errors expression("def (\na\nb\n).c; end"), "def (\na\nb\n).c; end", [
+ "Expected closing ')' for receiver.",
+ "Expected '.' or '::' after receiver",
+ "Expected to be able to parse an expression.",
+ "Expected to be able to parse an expression."
+ ]
+ end
+
+ def test_def_with_empty_expression_receiver
+ assert_errors expression("def ().a; end"), "def ().a; end", ["Expected to be able to parse receiver."]
+ end
+
+ def test_block_beginning_with_brace_and_ending_with_end
+ assert_error_messages "x.each { x end", [
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression.",
+ "Expected to be able to parse an expression.",
+ "Expected block beginning with '{' to end with '}'."
+ ]
+ end
+
+ def test_double_splat_followed_by_splat_argument
+ expected = CallNode(
+ nil,
+ nil,
+ Location(),
+ Location(),
+ ArgumentsNode(
+ [KeywordHashNode(
+ [AssocSplatNode(
+ CallNode(
+ nil,
+ nil,
+ Location(),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "kwargs"
+ ),
+ Location()
+ )]
+ ),
+ SplatNode(
+ Location(),
+ CallNode(nil, nil, Location(), nil, nil, nil, nil, 0, "args")
+ )]
+ ),
+ Location(),
+ nil,
+ 0,
+ "a"
+ )
+
+ assert_errors expected, "a(**kwargs, *args)", ["Unexpected splat argument after double splat."]
+ end
+
+ def test_arguments_after_block
+ expected = CallNode(
+ nil,
+ nil,
+ Location(),
+ Location(),
+ ArgumentsNode([
+ BlockArgumentNode(expression("block"), Location()),
+ expression("foo")
+ ]),
+ Location(),
+ nil,
+ 0,
+ "a"
+ )
+
+ assert_errors expected, "a(&block, foo)", ["Unexpected argument after block argument."]
+ end
+
+ def test_arguments_binding_power_for_and
+ assert_error_messages "foo(*bar and baz)", [
+ "Expected a ')' to close the argument list.",
+ "Expected a newline or semicolon after statement.",
+ "Expected to be able to parse an expression."
+ ]
+ end
+
+ def test_splat_argument_after_keyword_argument
+ expected = CallNode(
+ nil,
+ nil,
+ Location(),
+ Location(),
+ ArgumentsNode(
+ [KeywordHashNode(
+ [AssocNode(
+ SymbolNode(nil, Location(), Location(), "foo"),
+ CallNode(nil, nil, Location(), nil, nil, nil, nil, 0, "bar"),
+ nil
+ )]
+ ),
+ SplatNode(
+ Location(),
+ CallNode(nil, nil, Location(), nil, nil, nil, nil, 0, "args")
+ )]
+ ),
+ Location(),
+ nil,
+ 0,
+ "a"
+ )
+
+ assert_errors expected, "a(foo: bar, *args)", ["Unexpected splat argument after double splat."]
+ end
+
+ def test_module_definition_in_method_body
+ expected = DefNode(
+ Location(),
+ nil,
+ nil,
+ StatementsNode([ModuleNode([], Location(), ConstantReadNode(), nil, Location())]),
+ [],
+ Location(),
+ nil,
+ nil,
+ nil,
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo;module A;end;end", ["Module definition in method body"]
+ end
+
+ def test_module_definition_in_method_body_within_block
+ expected = DefNode(
+ Location(),
+ nil,
+ nil,
+ StatementsNode(
+ [CallNode(
+ nil,
+ nil,
+ Location(),
+ nil,
+ nil,
+ nil,
+ BlockNode(
+ [],
+ nil,
+ StatementsNode([ModuleNode([], Location(), ConstantReadNode(), nil, Location())]),
+ Location(),
+ Location()
+ ),
+ 0,
+ "bar"
+ )]
+ ),
+ [],
+ Location(),
+ nil,
+ nil,
+ nil,
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "
+ def foo
+ bar do
+ module Foo;end
+ end
+ end
+ ", ["Module definition in method body"]
+ end
+
+ def test_class_definition_in_method_body
+ expected = DefNode(
+ Location(),
+ nil,
+ nil,
+ StatementsNode(
+ [ClassNode(
+ [],
+ Location(),
+ ConstantReadNode(),
+ nil,
+ nil,
+ nil,
+ Location()
+ )]
+ ),
+ [],
+ Location(),
+ nil,
+ nil,
+ nil,
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo;class A;end;end", ["Class definition in method body"]
+ end
+
+ def test_bad_arguments
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([], [], [], nil, [], nil, nil),
+ nil,
+ [],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(A, @a, $A, @@a);end", [
+ "Formal argument cannot be a constant",
+ "Formal argument cannot be an instance variable",
+ "Formal argument cannot be a global variable",
+ "Formal argument cannot be a class variable",
+ ]
+ end
+
+ def test_cannot_assign_to_a_reserved_numbered_parameter
+ expected = BeginNode(
+ Location(),
+ StatementsNode([
+ LocalVariableWriteNode(:_1, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_2, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_3, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_4, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_5, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_6, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_7, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_8, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_9, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location()),
+ LocalVariableWriteNode(:_10, 0, SymbolNode(Location(), Location(), nil, "a"), Location(), Location())
+ ]),
+ nil,
+ nil,
+ nil,
+ Location()
+ )
+
+ assert_errors expected, <<~RUBY, Array.new(9, "reserved for numbered parameter")
+ begin
+ _1=:a;_2=:a;_3=:a;_4=:a;_5=:a
+ _6=:a;_7=:a;_8=:a;_9=:a;_10=:a
+ end
+ RUBY
+ end
+
+ def test_do_not_allow_trailing_commas_in_method_parameters
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [RequiredParameterNode(:a), RequiredParameterNode(:b), RequiredParameterNode(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b, :c],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(a,b,c,);end", [
+ "Unexpected ','."
+ ]
+ end
+
+ def test_do_not_allow_trailing_commas_in_lambda_parameters
+ expected = LambdaNode(
+ [:a, :b],
+ Location(),
+ BlockParametersNode(
+ ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], nil, [], nil, nil),
+ [],
+ Location(),
+ Location()
+ ),
+ nil
+ )
+ assert_errors expected, "-> (a, b, ) {}", [
+ "Unexpected ','."
+ ]
+ end
+
+ def test_do_not_allow_multiple_codepoints_in_a_single_character_literal
+ expected = StringNode(Location(), Location(), nil, "\u0001\u0002")
+
+ assert_errors expected, '?\u{0001 0002}', [
+ "Multiple codepoints at single character literal"
+ ]
+ end
+
+ def test_do_not_allow_more_than_6_hexadecimal_digits_in_u_Unicode_character_notation
+ expected = StringNode(Location(), Location(), Location(), "\u0001")
+
+ assert_errors expected, '"\u{0000001}"', [
+ "invalid Unicode escape.",
+ "invalid Unicode escape."
+ ]
+ end
+
+ def test_do_not_allow_characters_other_than_0_9_a_f_and_A_F_in_u_Unicode_character_notation
+ expected = StringNode(Location(), Location(), Location(), "\u0000z}")
+
+ assert_errors expected, '"\u{000z}"', [
+ "unterminated Unicode escape",
+ "unterminated Unicode escape"
+ ]
+ end
+
+ def test_method_parameters_after_block
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [RequiredParameterNode(:a)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(Location(), Location())
+ ),
+ nil,
+ [:block, :a],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+ assert_errors expected, "def foo(&block, a)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_method_with_arguments_after_anonymous_block
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([], [], [RequiredParameterNode(:a)], nil, [], nil, BlockParameterNode(nil, Location())),
+ nil,
+ [:&, :a],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(&, a)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_method_parameters_after_arguments_forwarding
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [RequiredParameterNode(:a)],
+ nil,
+ [],
+ ForwardingParameterNode(),
+ nil
+ ),
+ nil,
+ [:"...", :a],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+ assert_errors expected, "def foo(..., a)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_keywords_parameters_before_required_parameters
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [RequiredParameterNode(:a)],
+ nil,
+ [KeywordParameterNode(Location(), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :a],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+ assert_errors expected, "def foo(b:, a)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_rest_keywords_parameters_before_required_parameters
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(Location(), nil)],
+ KeywordRestParameterNode(Location(), Location()),
+ nil
+ ),
+ nil,
+ [:rest, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+ assert_errors expected, "def foo(**rest, b:)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_double_arguments_forwarding
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([], [], [], nil, [], ForwardingParameterNode(), nil),
+ nil,
+ [:"..."],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(..., ...)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_multiple_error_in_parameters_order
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [RequiredParameterNode(:a)],
+ nil,
+ [KeywordParameterNode(Location(), nil)],
+ KeywordRestParameterNode(Location(), Location()),
+ nil
+ ),
+ nil,
+ [:args, :a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(**args, a, b:)\nend", ["Unexpected parameter order", "Unexpected parameter order"]
+ end
+
+ def test_switching_to_optional_arguments_twice
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [RequiredParameterNode(:a)],
+ nil,
+ [KeywordParameterNode(Location(), nil)],
+ KeywordRestParameterNode(Location(), Location()),
+ nil
+ ),
+ nil,
+ [:args, :a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location(),
+ )
+
+ assert_errors expected, "def foo(**args, a, b:)\nend", ["Unexpected parameter order", "Unexpected parameter order"]
+ end
+
+ def test_switching_to_named_arguments_twice
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [],
+ [],
+ [RequiredParameterNode(:a)],
+ nil,
+ [KeywordParameterNode(Location(), nil)],
+ KeywordRestParameterNode(Location(), Location()),
+ nil
+ ),
+ nil,
+ [:args, :a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location(),
+ )
+
+ assert_errors expected, "def foo(**args, a, b:)\nend", ["Unexpected parameter order", "Unexpected parameter order"]
+ end
+
+ def test_returning_to_optional_parameters_multiple_times
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode(
+ [RequiredParameterNode(:a)],
+ [
+ OptionalParameterNode(:b, Location(), Location(), IntegerNode()),
+ OptionalParameterNode(:d, Location(), Location(), IntegerNode())
+ ],
+ [RequiredParameterNode(:c), RequiredParameterNode(:e)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b, :c, :d, :e],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location(),
+ )
+
+ assert_errors expected, "def foo(a, b = 1, c, d = 2, e)\nend", ["Unexpected parameter order"]
+ end
+
+ def test_case_without_when_clauses_errors_on_else_clause
+ expected = CaseNode(
+ SymbolNode(Location(), Location(), nil, "a"),
+ [],
+ ElseNode(Location(), nil, Location()),
+ Location(),
+ Location()
+ )
+
+ assert_errors expected, "case :a\nelse\nend", ["Unexpected else without no when clauses in case statement."]
+ end
+
+ def test_setter_method_cannot_be_defined_in_an_endless_method_definition
+ expected = DefNode(
+ Location(),
+ nil,
+ nil,
+ StatementsNode([IntegerNode()]),
+ [],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ Location(),
+ nil
+ )
+
+ assert_errors expected, "def a=() = 42", ["Setter method cannot be defined in an endless method definition"]
+ end
+
+ def test_do_not_allow_forward_arguments_in_lambda_literals
+ expected = LambdaNode(
+ [:"..."],
+ Location(),
+ BlockParametersNode(ParametersNode([], [], [], nil, [], ForwardingParameterNode(), nil), [], Location(), Location()),
+ nil
+ )
+
+ assert_errors expected, "->(...) {}", ["Unexpected ..."]
+ end
+
+ def test_do_not_allow_forward_arguments_in_blocks
+ expected = CallNode(
+ nil,
+ nil,
+ Location(),
+ nil,
+ nil,
+ nil,
+ BlockNode(
+ [:"..."],
+ BlockParametersNode(ParametersNode([], [], [], nil, [], ForwardingParameterNode(), nil), [], Location(), Location()),
+ nil,
+ Location(),
+ Location()
+ ),
+ 0,
+ "a"
+ )
+
+ assert_errors expected, "a {|...|}", ["Unexpected ..."]
+ end
+
+ def test_dont_allow_return_inside_class_body
+ expected = ClassNode(
+ [],
+ Location(),
+ ConstantReadNode(),
+ nil,
+ nil,
+ StatementsNode([ReturnNode(Location(), nil)]),
+ Location()
+ )
+
+ assert_errors expected, "class A; return; end", ["Invalid return in class/module body"]
+ end
+
+ def test_dont_allow_return_inside_module_body
+ expected = ModuleNode(
+ [],
+ Location(),
+ ConstantReadNode(),
+ StatementsNode([ReturnNode(Location(), nil)]),
+ Location()
+ )
+
+ assert_errors expected, "module A; return; end", ["Invalid return in class/module body"]
+ end
+
+ def test_dont_allow_setting_to_back_and_nth_reference
+ expected = BeginNode(
+ Location(),
+ StatementsNode([
+ GlobalVariableWriteNode(Location(), Location(), NilNode()),
+ GlobalVariableWriteNode(Location(), Location(), NilNode())
+ ]),
+ nil,
+ nil,
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "begin\n$+ = nil\n$1466 = nil\nend", ["Can't set variable", "Can't set variable"]
+ end
+
+ def test_duplicated_parameter_names
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b), RequiredParameterNode(:a)], [], [], nil, [], nil, nil),
+ nil,
+ [:a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(a,b,a);end", ["Duplicated parameter name."]
+
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], RestParameterNode(Location(), Location()), [], nil, nil),
+ nil,
+ [:a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(a,b,*a);end", ["Duplicated parameter name."]
+
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], nil, [], KeywordRestParameterNode(Location(), Location()), nil),
+ nil,
+ [:a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(a,b,**a);end", ["Duplicated parameter name."]
+
+ expected = DefNode(
+ Location(),
+ nil,
+ ParametersNode([RequiredParameterNode(:a), RequiredParameterNode(:b)], [], [], nil, [], nil, BlockParameterNode(Location(), Location())),
+ nil,
+ [:a, :b],
+ Location(),
+ nil,
+ Location(),
+ Location(),
+ nil,
+ Location()
+ )
+
+ assert_errors expected, "def foo(a,b,&a);end", ["Duplicated parameter name."]
+ end
+
+ private
+
+ def assert_errors(expected, source, errors)
+ assert_nil Ripper.sexp_raw(source)
+
+ result = YARP.parse(source)
+ result => YARP::ParseResult[value: YARP::ProgramNode[statements: YARP::StatementsNode[body: [*, node]]]]
+
+ assert_equal_nodes(expected, node, compare_location: false)
+ assert_equal(errors, result.errors.map(&:message))
+ end
+
+ def assert_error_messages(source, errors)
+ assert_nil Ripper.sexp_raw(source)
+ result = YARP.parse(source)
+ assert_equal(errors, result.errors.map(&:message))
+ end
+
+ def expression(source)
+ YARP.parse(source) => YARP::ParseResult[value: YARP::ProgramNode[statements: YARP::StatementsNode[body: [*, node]]]]
+ node
+ end
+end
diff --git a/test/yarp/fixtures/alias.txt b/test/yarp/fixtures/alias.txt
new file mode 100644
index 0000000000..376dacd7cc
--- /dev/null
+++ b/test/yarp/fixtures/alias.txt
@@ -0,0 +1,23 @@
+alias :foo :bar
+
+alias %s[abc] %s[def]
+
+alias :'abc' :'def'
+
+alias :"abc#{1}" :'def'
+
+alias $a $'
+
+alias foo bar
+
+alias $foo $bar
+
+alias foo if
+
+alias foo <=>
+
+alias :== :eql?
+
+alias A B
+
+alias :A :B
diff --git a/test/yarp/fixtures/arithmetic.txt b/test/yarp/fixtures/arithmetic.txt
new file mode 100644
index 0000000000..6f86f92d47
--- /dev/null
+++ b/test/yarp/fixtures/arithmetic.txt
@@ -0,0 +1,8 @@
+foo !bar
+
+-foo*bar
+
++foo**bar
+
+foo ~bar
+
diff --git a/test/yarp/fixtures/arrays.txt b/test/yarp/fixtures/arrays.txt
new file mode 100644
index 0000000000..e277ad5b34
--- /dev/null
+++ b/test/yarp/fixtures/arrays.txt
@@ -0,0 +1,80 @@
+[*a]
+
+foo[bar, baz] = 1, 2, 3
+
+[a: [:b, :c]]
+
+
+
+[:a, :b,
+:c,1,
+
+
+
+:d,
+]
+
+
+[:a, :b,
+:c,1,
+
+
+
+:d
+
+
+]
+
+[foo => bar]
+
+foo[bar][baz] = qux
+
+foo[bar][baz]
+
+[
+]
+
+foo[bar, baz]
+
+foo[bar, baz] = qux
+
+foo[0], bar[0] = 1, 2
+
+foo[bar[baz] = qux]
+
+foo[bar]
+
+foo[bar] = baz
+
+[**{}]
+
+[**kw]
+
+[1, **kw]
+
+[1, **kw, **{}, **kw]
+
+[
+ foo => bar,
+]
+
+
+%i#one two three#
+
+%w#one two three#
+
+%x#one two three#
+
+
+%i@one two three@
+
+%w@one two three@
+
+%x@one two three@
+
+
+%i{one two three}
+
+%w{one two three}
+
+%x{one two three}
diff --git a/test/yarp/fixtures/begin_ensure.txt b/test/yarp/fixtures/begin_ensure.txt
new file mode 100644
index 0000000000..1c6f9dac35
--- /dev/null
+++ b/test/yarp/fixtures/begin_ensure.txt
@@ -0,0 +1,14 @@
+begin
+a
+ensure
+b
+end
+
+begin; a; ensure; b; end
+
+begin a
+ ensure b
+ end
+
+begin a; ensure b; end
+
diff --git a/test/yarp/fixtures/begin_rescue.txt b/test/yarp/fixtures/begin_rescue.txt
new file mode 100644
index 0000000000..0a56fbef9f
--- /dev/null
+++ b/test/yarp/fixtures/begin_rescue.txt
@@ -0,0 +1,79 @@
+begin; a; rescue; b; else; c; end
+
+begin; a; rescue; b; else; c; ensure; d; end
+
+begin
+a
+end
+
+begin; a; end
+
+begin a
+ end
+
+begin a; end
+
+begin
+a
+rescue
+b
+rescue
+c
+rescue
+d
+end
+
+begin
+ a
+rescue Exception => ex
+ b
+rescue AnotherException, OneMoreException => ex
+ c
+end
+
+begin
+ a
+rescue Exception => ex
+ b
+ensure
+ b
+end
+
+%!abc!
+
+begin
+a
+rescue
+b
+end
+
+begin;a;rescue;b;end
+
+begin
+a;rescue
+b;end
+
+begin
+a
+rescue Exception
+b
+end
+
+begin
+a
+rescue Exception, CustomException
+b
+end
+
+begin
+ a
+rescue Exception, CustomException => ex
+ b
+end
+
+begin
+ a
+rescue Exception => ex
+ b
+end
+
diff --git a/test/yarp/fixtures/blocks.txt b/test/yarp/fixtures/blocks.txt
new file mode 100644
index 0000000000..e33d95c150
--- /dev/null
+++ b/test/yarp/fixtures/blocks.txt
@@ -0,0 +1,54 @@
+foo[bar] { baz }
+
+foo[bar] do
+baz
+end
+
+x.reduce(0) { |x, memo| memo += x }
+
+foo do end
+
+foo bar, (baz do end)
+
+foo bar do end
+
+foo bar baz do end
+
+foo do |a = b[1]|
+end
+
+foo do
+rescue
+end
+
+foo do
+ bar do
+ baz do
+ end
+ end
+end
+
+foo[bar] { baz }
+
+foo { |x, y = 2, z:| x }
+
+foo { |x| }
+
+fork = 1
+fork do |a|
+end
+
+fork { |a| }
+
+C do
+end
+
+C {}
+
+foo lambda { |
+ a: 1,
+ b: 2
+ |
+}
+
+foo do |bar,| end
diff --git a/test/yarp/fixtures/boolean_operators.txt b/test/yarp/fixtures/boolean_operators.txt
new file mode 100644
index 0000000000..dd0b9c9f01
--- /dev/null
+++ b/test/yarp/fixtures/boolean_operators.txt
@@ -0,0 +1,5 @@
+a &&= b
+
+a += b
+
+a ||= b
diff --git a/test/yarp/fixtures/booleans.txt b/test/yarp/fixtures/booleans.txt
new file mode 100644
index 0000000000..d9417254b6
--- /dev/null
+++ b/test/yarp/fixtures/booleans.txt
@@ -0,0 +1,3 @@
+false
+
+true
diff --git a/test/yarp/fixtures/break.txt b/test/yarp/fixtures/break.txt
new file mode 100644
index 0000000000..61859d8a8a
--- /dev/null
+++ b/test/yarp/fixtures/break.txt
@@ -0,0 +1,25 @@
+break
+
+break (1), (2), (3)
+
+break 1
+
+break 1, 2,
+3
+
+break 1, 2, 3
+
+break [1, 2, 3]
+
+break(
+ 1
+ 2
+)
+
+break()
+
+break(1)
+
+foo { break 42 } == 42
+
+foo { |a| break } == 42
diff --git a/test/yarp/fixtures/case.txt b/test/yarp/fixtures/case.txt
new file mode 100644
index 0000000000..76d11313ee
--- /dev/null
+++ b/test/yarp/fixtures/case.txt
@@ -0,0 +1,30 @@
+case :hi
+when :hi
+end
+
+case true; when true; puts :hi; when false; puts :bye; end
+
+case; when *foo; end
+
+case :hi
+when :hi
+else
+:b
+end
+
+case this; when FooBar, BazBonk; end
+
+case
+when foo == bar
+end
+
+case
+when a
+else
+ # empty
+end
+
+case type;
+ ;when :b;
+ ; else;
+ end
diff --git a/test/yarp/fixtures/classes.txt b/test/yarp/fixtures/classes.txt
new file mode 100644
index 0000000000..056cb00e82
--- /dev/null
+++ b/test/yarp/fixtures/classes.txt
@@ -0,0 +1,35 @@
+class A a = 1 end
+
+class A; ensure; end
+
+class A; rescue; else; ensure; end
+
+class A < B
+a = 1
+end
+
+class << not foo
+end
+
+class A; class << self; ensure; end; end
+
+class A; class << self; rescue; else; ensure; end; end
+
+class << foo.bar
+end
+
+class << foo.bar;end
+
+class << self
+end
+
+class << self;end
+
+class << self
+1 + 2
+end
+
+class << self;1 + 2;end
+
+class A < B[1]
+end
diff --git a/test/yarp/fixtures/comments.txt b/test/yarp/fixtures/comments.txt
new file mode 100644
index 0000000000..9bd853e927
--- /dev/null
+++ b/test/yarp/fixtures/comments.txt
@@ -0,0 +1,24 @@
+a
+ # Comment
+b
+
+c # Comment
+d
+
+e
+# Comment
+ .f
+
+g
+ # Comment
+.h
+
+i # Comment
+.j
+
+k # Comment
+ .l
+
+m
+ # Comment
+ &.n
diff --git a/test/yarp/fixtures/constants.txt b/test/yarp/fixtures/constants.txt
new file mode 100644
index 0000000000..8c7c6d227b
--- /dev/null
+++ b/test/yarp/fixtures/constants.txt
@@ -0,0 +1,169 @@
+A::B
+
+A::B::C
+
+a::B
+
+A::B = 1
+
+A = 1
+
+ABC
+
+Foo 1
+
+::A::foo
+
+::A = 1
+
+::A::B = 1
+
+::A::B
+
+::A
+
+A::false
+
+A::B::true
+
+A::&
+
+A::`
+
+A::!
+
+A::!=
+
+A::^
+
+A::==
+
+A::===
+
+A::=~
+
+A::>
+
+A::>=
+
+A::>>
+
+A::<<
+
+A::\
+
+A::alias
+
+A::and
+
+A::begin
+
+A::BEGIN
+
+A::break
+
+A::class
+
+A::def
+
+A::defined
+
+A::do
+
+A::else
+
+A::elsif
+
+A::end
+
+A::END
+
+A::ensure
+
+A::false
+
+A::for
+
+A::if
+
+A::in
+
+A::next
+
+A::nil
+
+A::not
+
+A::or
+
+A::redo
+
+A::rescue
+
+A::retry
+
+A::return
+
+A::self
+
+A::super
+
+A::then
+
+A::true
+
+A::undef
+
+A::unless
+
+A::until
+
+A::when
+
+A::while
+
+A::yield
+
+A::__ENCODING__
+
+A::__FILE__
+
+A::__LINE__
+
+A::<
+
+A::<=>
+
+A::<<
+
+A::-
+
+A::%
+
+A::%i
+
+A::%w
+
+A::%x
+
+A::%I
+
+A::%W
+
+A::|
+
+A::+
+
+A::/
+
+A::*
+
+A::**
+
+A::~
+
+A::_::
+
+A::_..
+
+A::__END__
diff --git a/test/yarp/fixtures/dash_heredocs.txt b/test/yarp/fixtures/dash_heredocs.txt
new file mode 100644
index 0000000000..a05df93023
--- /dev/null
+++ b/test/yarp/fixtures/dash_heredocs.txt
@@ -0,0 +1,44 @@
+<<-EOF
+ a
+EOF
+
+<<-FIRST + <<-SECOND
+ a
+FIRST
+ b
+SECOND
+
+<<-`EOF`
+ a
+#{b}
+EOF
+
+<<-EOF #comment
+ a
+EOF
+
+<<-EOF
+ a
+ b
+ EOF
+
+<<-"EOF"
+ a
+#{b}
+EOF
+
+<<-EOF
+ a
+#{b}
+EOF
+
+%#abc#
+
+<<-EOF
+ a
+ b
+EOF
+
+<<-'EOF'
+ a #{1}
+EOF
diff --git a/test/yarp/fixtures/defined.txt b/test/yarp/fixtures/defined.txt
new file mode 100644
index 0000000000..9cf153a853
--- /dev/null
+++ b/test/yarp/fixtures/defined.txt
@@ -0,0 +1,7 @@
+defined? 1 and defined? 2
+
+defined?(x %= 2)
+
+defined?(foo and bar)
+
+defined? 1
diff --git a/test/yarp/fixtures/dos_endings.txt b/test/yarp/fixtures/dos_endings.txt
new file mode 100644
index 0000000000..c105522fa1
--- /dev/null
+++ b/test/yarp/fixtures/dos_endings.txt
@@ -0,0 +1,20 @@
+puts "hi"\
+ "there"
+
+%I{a\
+b}
+
+<<-E
+ 1 \
+ 2
+ 3
+E
+
+x = %
+
+
+
+a = foo(<<~EOF.chop)
+
+ baz
+ EOF
diff --git a/test/yarp/fixtures/embdoc_no_newline_at_end.txt b/test/yarp/fixtures/embdoc_no_newline_at_end.txt
new file mode 100644
index 0000000000..7dc2e32d73
--- /dev/null
+++ b/test/yarp/fixtures/embdoc_no_newline_at_end.txt
@@ -0,0 +1,2 @@
+=begin
+=end \ No newline at end of file
diff --git a/test/yarp/fixtures/for.txt b/test/yarp/fixtures/for.txt
new file mode 100644
index 0000000000..b6eb2cb24f
--- /dev/null
+++ b/test/yarp/fixtures/for.txt
@@ -0,0 +1,19 @@
+for i in 1..10
+i
+end
+
+for i in 1..10; i; end
+
+for i,j in 1..10
+i
+end
+
+for i,j,k in 1..10
+i
+end
+
+for i in 1..10 do
+i
+end
+
+for i in 1..10; i; end
diff --git a/test/yarp/fixtures/global_variables.txt b/test/yarp/fixtures/global_variables.txt
new file mode 100644
index 0000000000..d2a631136f
--- /dev/null
+++ b/test/yarp/fixtures/global_variables.txt
@@ -0,0 +1,89 @@
+$global_variable
+
+$_
+
+$-w
+
+$LOAD_PATH
+
+$stdin
+
+$stdout
+
+$stderr
+
+$!
+
+$?
+
+$~
+
+$&
+
+$`
+
+$'
+
+$+
+
+$:
+
+$;
+
+$,
+
+$DEBUG
+
+$FILENAME
+
+$-0
+
+$LOADED_FEATURES
+
+$VERBOSE
+
+$-K
+
+:$global_variable
+
+:$_
+
+:$-w
+
+:$LOAD_PATH
+
+:$stdin
+
+:$stdout
+
+:$stderr
+
+:$!
+
+:$?
+
+:$~
+
+:$&
+
+:$`
+
+:$'
+
+:$+
+
+:$:
+
+:$;
+
+:$DEBUG
+
+:$FILENAME
+
+:$-0
+
+:$LOADED_FEATURES
+
+:$VERBOSE
+
+:$-K
diff --git a/test/yarp/fixtures/hashes.txt b/test/yarp/fixtures/hashes.txt
new file mode 100644
index 0000000000..42c430e43e
--- /dev/null
+++ b/test/yarp/fixtures/hashes.txt
@@ -0,0 +1,20 @@
+{}
+
+{
+}
+
+{ a => b, c => d }
+
+{ a => b, **c }
+
+{
+ a: b,
+ c: d
+
+
+
+ }
+
+{ a: b, c: d, **e, f: g }
+
+{ "a": !b? }
diff --git a/test/yarp/fixtures/heredoc_with_trailing_newline.txt b/test/yarp/fixtures/heredoc_with_trailing_newline.txt
new file mode 100644
index 0000000000..13771bf3ac
--- /dev/null
+++ b/test/yarp/fixtures/heredoc_with_trailing_newline.txt
@@ -0,0 +1,2 @@
+<<-END
+END \ No newline at end of file
diff --git a/test/yarp/fixtures/heredocs_nested.txt b/test/yarp/fixtures/heredocs_nested.txt
new file mode 100644
index 0000000000..eef7206d69
--- /dev/null
+++ b/test/yarp/fixtures/heredocs_nested.txt
@@ -0,0 +1,9 @@
+<<~RUBY
+pre
+#{
+<<RUBY
+ hello
+RUBY
+}
+post
+RUBY
diff --git a/test/yarp/fixtures/heredocs_with_ignored_newlines.txt b/test/yarp/fixtures/heredocs_with_ignored_newlines.txt
new file mode 100644
index 0000000000..8e12546ec7
--- /dev/null
+++ b/test/yarp/fixtures/heredocs_with_ignored_newlines.txt
@@ -0,0 +1,14 @@
+<<-HERE\
+HERE
+
+<<~THERE\
+ way over
+ <<HERE
+ not here
+ HERE
+
+ <<~BUT\
+ but
+ BUT
+ there
+THERE
diff --git a/test/yarp/fixtures/heredocs_with_ignored_newlines_and_non_empty.txt b/test/yarp/fixtures/heredocs_with_ignored_newlines_and_non_empty.txt
new file mode 100644
index 0000000000..aeacbd8126
--- /dev/null
+++ b/test/yarp/fixtures/heredocs_with_ignored_newlines_and_non_empty.txt
@@ -0,0 +1,4 @@
+<<-EOE
+ some
+ heredocs
+EOE \ No newline at end of file
diff --git a/test/yarp/fixtures/if.txt b/test/yarp/fixtures/if.txt
new file mode 100644
index 0000000000..895d668094
--- /dev/null
+++ b/test/yarp/fixtures/if.txt
@@ -0,0 +1,31 @@
+if true; 1; end
+
+if true
+1 else 2 end
+
+if true then true elsif false then false elsif nil then nil else self end
+
+1 if true
+
+break if true
+
+next if true
+
+return if true
+
+if exit_loop then break 42 end
+
+if foo
+then bar
+end
+
+a if b if c
+
+if true
+ a b:
+else
+end
+
+if type in 1
+elsif type in B
+end
diff --git a/test/yarp/fixtures/integer_operations.txt b/test/yarp/fixtures/integer_operations.txt
new file mode 100644
index 0000000000..37163acf30
--- /dev/null
+++ b/test/yarp/fixtures/integer_operations.txt
@@ -0,0 +1,63 @@
+!1
+
+~1
+
+1 != 2
+
+1 !~ 2
+
+1 % 2
+
+1 & 2
+
+1 * 2
+
+1**2
+
+1 + 2
+
+1 - 2
+
+1 / 2
+
+1/2/3
+
+1 < 2
+
+1 << 2
+
+1 <= 2
+
+1 <=> 2
+
+1 == 2
+
+1 === 2
+
+1 =~ 2
+
+1 > 2
+
+1 >= 2
+
+1 >> 2
+
+1 ^ 2
+
+1 | 2
+
+1 && 2
+
+1 and 2
+
+1 * 2 ** 3
+
+1 * 2 + 3
+
+1 or 2
+
+1 || 2
+
+1 + 2 * 3
+
+(1 + 1)
diff --git a/test/yarp/fixtures/keyword_method_names.txt b/test/yarp/fixtures/keyword_method_names.txt
new file mode 100644
index 0000000000..9154469441
--- /dev/null
+++ b/test/yarp/fixtures/keyword_method_names.txt
@@ -0,0 +1,29 @@
+def def
+end
+
+def self.ensure
+end
+
+private def foo
+ bar do
+ end
+end
+
+def m(a, **nil)
+end
+
+def __ENCODING__.a
+end
+
+%{abc}
+
+%"abc"
+
+def __FILE__.a
+end
+
+def __LINE__.a
+end
+
+def nil::a
+end
diff --git a/test/yarp/fixtures/keywords.txt b/test/yarp/fixtures/keywords.txt
new file mode 100644
index 0000000000..90cdfb41c7
--- /dev/null
+++ b/test/yarp/fixtures/keywords.txt
@@ -0,0 +1,11 @@
+redo
+
+retry
+
+self
+
+__ENCODING__
+
+__FILE__
+
+__LINE__
diff --git a/test/yarp/fixtures/lambda.txt b/test/yarp/fixtures/lambda.txt
new file mode 100644
index 0000000000..1071810aa1
--- /dev/null
+++ b/test/yarp/fixtures/lambda.txt
@@ -0,0 +1,7 @@
+->(
+ foo
+) {}
+
+->(x: "b#{a}") { }
+
+->(a: b * 3) {}
diff --git a/test/yarp/fixtures/method_calls.txt b/test/yarp/fixtures/method_calls.txt
new file mode 100644
index 0000000000..06ed1cb9cc
--- /dev/null
+++ b/test/yarp/fixtures/method_calls.txt
@@ -0,0 +1,139 @@
+foo.bar %{baz}
+
+a.b(c, d)
+
+a.b()
+
+foo
+ .bar
+ &.baz
+
+a!
+
+a.()
+
+a.(1, 2, 3)
+
+a::b
+
+foo.bar = 1
+
+a?
+
+a(&block)
+
+a(**kwargs)
+
+a.b.c
+
+a(b, c)
+
+a()
+
+a(*args)
+
+a b, c
+
+a.b c, d
+
+foo.foo, bar.bar = 1, 2
+
+a&.b
+
+a&.()
+
+a&.b(c)
+
+a&.b()
+
+foo :a, :b if bar? or baz and qux
+
+foo(:a,
+
+ :b
+)
+
+foo(*rest)
+
+foo(:a, :h => [:x, :y], :a => :b, &:bar)
+
+hi 123, { :there => :friend, **{}, whatup: :dog }
+
+foo :a, b: true do |a, b| puts a end
+
+hi there: :friend
+
+hi :there => :friend, **{}, whatup: :dog
+
+hi(:there => :friend, **{}, whatup: :dog)
+
+foo({ a: true, b: false, }, &:block)
+
+hi :there => :friend
+
+foo(:a,
+:b,
+)
+
+foo(
+:a,
+b: :c,
+)
+
+foo a: true, b: false, &:block
+
+some_func 1, kwarg: 2
+
+Kernel.Integer(10)
+
+x.each { }
+
+foo.map { $& }
+
+A::B::C :foo
+
+A::B::C(:foo)
+
+A::B::C(:foo) { }
+
+foo("a": -1)
+
+foo bar: { baz: qux do end }
+
+foo bar: { **kw do end }
+
+foo "#{bar.map do "baz" end}" do end
+
+foo class Bar baz do end end
+
+foo module Bar baz do end end
+
+foo [baz do end]
+
+p begin 1.times do 1 end end
+
+foo :a,
+ if x
+ bar do |a|
+ a
+ end
+ end
+
+foo :a,
+ while x
+ bar do |a|
+ a
+ end
+ end,
+ until x
+ baz do
+ end
+ end
+
+{} + A {}
+
+{} + A { |a| a }
+
+A {} + A {}
+
+lst << A {}
diff --git a/test/yarp/fixtures/methods.txt b/test/yarp/fixtures/methods.txt
new file mode 100644
index 0000000000..de17645bb5
--- /dev/null
+++ b/test/yarp/fixtures/methods.txt
@@ -0,0 +1,165 @@
+def foo((bar, baz))
+end
+
+def foo((bar, baz), optional = 1, (bin, bag))
+end
+
+
+def a; ensure; end
+
+def (b).a
+end
+
+def (a)::b
+end
+
+def false.a
+end
+
+def a(...)
+end
+
+def $var.a
+end
+
+def a.b
+end
+
+def @var.a
+end
+
+def a b:; end
+
+%,abc,
+
+def a(b:)
+end
+
+def a(**b)
+end
+
+def a(**)
+end
+
+a = 1; def a
+end
+
+def a b, c, d
+end
+
+def nil.a
+end
+
+def a b:, c: 1
+end
+
+def a(b:, c: 1)
+end
+
+def a(b:
+ 1, c:)
+end
+
+%.abc.
+
+def a b = 1, c = 2
+end
+
+def a()
+end
+
+def a b, c = 2
+end
+
+def a b
+end
+
+def a; rescue; else; ensure; end
+
+def a *b
+end
+
+def a(*)
+end
+
+def a
+b = 1
+end
+
+def self.a
+end
+
+def true.a
+end
+
+def a
+end
+
+def hi
+return :hi if true
+:bye
+end
+
+def foo = 1
+def bar = 2
+
+def foo(bar) = 123
+
+def foo = 123
+
+def a(*); b(*); end
+
+def a(...); b(...); end
+
+def a(...); b(1, 2, ...); end
+
+def (c = b).a
+end
+
+def a &b
+end
+
+def a(&)
+end
+
+def @@var.a
+end
+
+def (a = b).C
+end
+
+def self.Array_function; end
+
+Const = 1; def Const.a
+end
+
+def a(...); "foo#{b(...)}"; end
+
+def foo
+ {}.merge **bar, **baz, **qux
+end
+
+def bar(a: (1...10))
+end
+
+def bar(a: (...10))
+end
+
+def bar(a: (1...))
+end
+
+def bar(a = (1...10))
+end
+
+def bar(a = (...10))
+end
+
+def bar(a = (1...))
+end
+
+def method(a)
+ item >> a {}
+end
+
+def foo(_a, _a, b, c)
+end
diff --git a/test/yarp/fixtures/modules.txt b/test/yarp/fixtures/modules.txt
new file mode 100644
index 0000000000..76bd9bea43
--- /dev/null
+++ b/test/yarp/fixtures/modules.txt
@@ -0,0 +1,18 @@
+module A a = 1 end
+
+%Q{aaa #{bbb} ccc}
+
+module m::M
+end
+
+module A
+ x = 1; rescue; end
+
+module ::A
+end
+
+module A[]::B
+end
+
+module A[1]::B
+end
diff --git a/test/yarp/fixtures/next.txt b/test/yarp/fixtures/next.txt
new file mode 100644
index 0000000000..476f17ffe3
--- /dev/null
+++ b/test/yarp/fixtures/next.txt
@@ -0,0 +1,24 @@
+next
+
+next (1), (2), (3)
+
+next 1
+
+next 1, 2,
+3
+
+next 1, 2, 3
+
+next [1, 2, 3]
+
+next(
+ 1
+ 2
+)
+
+next
+1
+
+next()
+
+next(1)
diff --git a/test/yarp/fixtures/nils.txt b/test/yarp/fixtures/nils.txt
new file mode 100644
index 0000000000..8084db2534
--- /dev/null
+++ b/test/yarp/fixtures/nils.txt
@@ -0,0 +1,13 @@
+nil
+
+()
+
+(
+;
+;
+)
+
+END { 1 }
+
+BEGIN { 1 }
+
diff --git a/test/yarp/fixtures/non_alphanumeric_methods.txt b/test/yarp/fixtures/non_alphanumeric_methods.txt
new file mode 100644
index 0000000000..1da3fd852b
--- /dev/null
+++ b/test/yarp/fixtures/non_alphanumeric_methods.txt
@@ -0,0 +1,105 @@
+def !
+end
+
+def !=
+end
+
+def !~
+end
+
+def %
+end
+
+def self.+
+end
+
+def &
+end
+
+def *
+end
+
+def **
+end
+
+%|abc|
+
+def + **b
+end
+
+def +()
+end
+
+def + b
+end
+
+def self.+
+end
+
+def +
+end
+
+def +@
+end
+
+def -
+end
+
+def a.-;end
+
+def -@
+end
+
+def /
+end
+
+def <
+end
+
+def <<
+end
+
+def <=
+end
+
+def <=>
+end
+
+def ==
+end
+
+def ===
+end
+
+def =~
+end
+
+def >
+end
+
+def >=
+end
+
+def >>
+end
+
+def []
+end
+
+def []=
+end
+
+def ^
+end
+
+def `
+end
+
+def self.`
+end
+
+def |
+end
+
+def ~
+end
diff --git a/test/yarp/fixtures/not.txt b/test/yarp/fixtures/not.txt
new file mode 100644
index 0000000000..eeb976c410
--- /dev/null
+++ b/test/yarp/fixtures/not.txt
@@ -0,0 +1,20 @@
+not foo and not bar
+
+not(foo and bar)
+
+not foo
+
+not foo and not
+ bar
+
+
+not foo and
+ not
+ bar
+
+
+not foo and
+ not
+
+
+ bar
diff --git a/test/yarp/fixtures/numbers.txt b/test/yarp/fixtures/numbers.txt
new file mode 100644
index 0000000000..3c8bf07805
--- /dev/null
+++ b/test/yarp/fixtures/numbers.txt
@@ -0,0 +1,63 @@
+0
+
+1
+
+1.0
+
+2
+
+0b0
+
+0b1
+
+0b10
+
+0d0
+
+0d1
+
+0d2
+
+00
+
+01
+
+02
+
+0o0
+
+0o1
+
+0o2
+
+0x0
+
+0x1
+
+0x2
+
+1i
+
+1r
+
+-1
+
+1ri
+
+1.2ri
+
+-1ri
+
+-1.2ri
+
+0o1r
+
+0o1i
+
+0o1ri
+
+0d1r
+
+0d1i
+
+0b1ri
diff --git a/test/yarp/fixtures/patterns.txt b/test/yarp/fixtures/patterns.txt
new file mode 100644
index 0000000000..c779b85cea
--- /dev/null
+++ b/test/yarp/fixtures/patterns.txt
@@ -0,0 +1,191 @@
+foo => bar
+foo => 1
+foo => 1.0
+foo => 1i
+foo => 1r
+foo => :foo
+foo => %s[foo]
+foo => :"foo"
+foo => /foo/
+foo => `foo`
+foo => %x[foo]
+foo => %i[foo]
+foo => %I[foo]
+foo => %w[foo]
+foo => %W[foo]
+foo => %q[foo]
+foo => %Q[foo]
+foo => "foo"
+foo => nil
+foo => self
+foo => true
+foo => false
+foo => __FILE__
+foo => __LINE__
+foo => __ENCODING__
+foo => -> { bar }
+
+foo => 1 .. 1
+foo => 1.0 .. 1.0
+foo => 1i .. 1i
+foo => 1r .. 1r
+foo => :foo .. :foo
+foo => %s[foo] .. %s[foo]
+foo => :"foo" .. :"foo"
+foo => /foo/ .. /foo/
+foo => `foo` .. `foo`
+foo => %x[foo] .. %x[foo]
+foo => %i[foo] .. %i[foo]
+foo => %I[foo] .. %I[foo]
+foo => %w[foo] .. %w[foo]
+foo => %W[foo] .. %W[foo]
+foo => %q[foo] .. %q[foo]
+foo => %Q[foo] .. %Q[foo]
+foo => "foo" .. "foo"
+foo => nil .. nil
+foo => self .. self
+foo => true .. true
+foo => false .. false
+foo => __FILE__ .. __FILE__
+foo => __LINE__ .. __LINE__
+foo => __ENCODING__ .. __ENCODING__
+foo => -> { bar } .. -> { bar }
+
+foo => ^bar
+foo => ^@bar
+foo => ^@@bar
+foo => ^$bar
+
+foo => ^(1)
+foo => ^(nil)
+foo => ^("bar" + "baz")
+
+foo => Foo
+foo => Foo::Bar::Baz
+foo => ::Foo
+foo => ::Foo::Bar::Baz
+
+foo => Foo()
+foo => Foo(1)
+foo => Foo(1, 2, 3)
+foo => Foo(bar)
+foo => Foo(*bar, baz)
+foo => Foo(bar, *baz)
+foo => Foo(*bar, baz, *qux)
+
+foo => Foo[]
+foo => Foo[1]
+foo => Foo[1, 2, 3]
+foo => Foo[bar]
+foo => Foo[*bar, baz]
+foo => Foo[bar, *baz]
+foo => Foo[*bar, baz, *qux]
+
+foo => *bar
+foo => *bar, baz, qux
+foo => bar, *baz, qux
+foo => bar, baz, *qux
+foo => *bar, baz, *qux
+
+foo => []
+foo => [[[[[]]]]]
+
+foo => [*bar]
+foo => [*bar, baz, qux]
+foo => [bar, *baz, qux]
+foo => [bar, baz, *qux]
+foo => [*bar, baz, *qux]
+
+foo in bar
+foo in 1
+foo in 1.0
+foo in 1i
+foo in 1r
+foo in :foo
+foo in %s[foo]
+foo in :"foo"
+foo in /foo/
+foo in `foo`
+foo in %x[foo]
+foo in %i[foo]
+foo in %I[foo]
+foo in %w[foo]
+foo in %W[foo]
+foo in %q[foo]
+foo in %Q[foo]
+foo in "foo"
+foo in nil
+foo in self
+foo in true
+foo in false
+foo in __FILE__
+foo in __LINE__
+foo in __ENCODING__
+foo in -> { bar }
+
+case foo; in bar then end
+case foo; in 1 then end
+case foo; in 1.0 then end
+case foo; in 1i then end
+case foo; in 1r then end
+case foo; in :foo then end
+case foo; in %s[foo] then end
+case foo; in :"foo" then end
+case foo; in /foo/ then end
+case foo; in `foo` then end
+case foo; in %x[foo] then end
+case foo; in %i[foo] then end
+case foo; in %I[foo] then end
+case foo; in %w[foo] then end
+case foo; in %W[foo] then end
+case foo; in %q[foo] then end
+case foo; in %Q[foo] then end
+case foo; in "foo" then end
+case foo; in nil then end
+case foo; in self then end
+case foo; in true then end
+case foo; in false then end
+case foo; in __FILE__ then end
+case foo; in __LINE__ then end
+case foo; in __ENCODING__ then end
+case foo; in -> { bar } then end
+
+case foo; in bar if baz then end
+case foo; in 1 if baz then end
+case foo; in 1.0 if baz then end
+case foo; in 1i if baz then end
+case foo; in 1r if baz then end
+case foo; in :foo if baz then end
+case foo; in %s[foo] if baz then end
+case foo; in :"foo" if baz then end
+case foo; in /foo/ if baz then end
+case foo; in `foo` if baz then end
+case foo; in %x[foo] if baz then end
+case foo; in %i[foo] if baz then end
+case foo; in %I[foo] if baz then end
+case foo; in %w[foo] if baz then end
+case foo; in %W[foo] if baz then end
+case foo; in %q[foo] if baz then end
+case foo; in %Q[foo] if baz then end
+case foo; in "foo" if baz then end
+case foo; in nil if baz then end
+case foo; in self if baz then end
+case foo; in true if baz then end
+case foo; in false if baz then end
+case foo; in __FILE__ if baz then end
+case foo; in __LINE__ if baz then end
+case foo; in __ENCODING__ if baz then end
+case foo; in -> { bar } if baz then end
+
+if a in []
+end
+
+a => [
+ b
+]
+
+foo in A[
+ bar: B[
+ value: a
+ ]
+]
diff --git a/test/yarp/fixtures/procs.txt b/test/yarp/fixtures/procs.txt
new file mode 100644
index 0000000000..7ffb11e78a
--- /dev/null
+++ b/test/yarp/fixtures/procs.txt
@@ -0,0 +1,27 @@
+-> (a; b, c, d) { b }
+
+-> do
+ensure
+end
+
+-> do
+rescue
+else
+ensure
+end
+
+-> { foo }
+
+-> do; foo; end
+
+-> a, b = 1, c:, d:, &e { a }
+
+-> (a, b = 1, *c, d:, e:, **f, &g) { a }
+
+-> (a, b = 1, *c, d:, e:, **f, &g) do
+ a
+end
+
+-> (a) { -> b { a * b } }
+
+-> ((a, b), *c) { }
diff --git a/test/yarp/fixtures/range_begin_open_exclusive.txt b/test/yarp/fixtures/range_begin_open_exclusive.txt
new file mode 100644
index 0000000000..3b12672b4f
--- /dev/null
+++ b/test/yarp/fixtures/range_begin_open_exclusive.txt
@@ -0,0 +1 @@
+...2
diff --git a/test/yarp/fixtures/range_begin_open_inclusive.txt b/test/yarp/fixtures/range_begin_open_inclusive.txt
new file mode 100644
index 0000000000..052f45900b
--- /dev/null
+++ b/test/yarp/fixtures/range_begin_open_inclusive.txt
@@ -0,0 +1 @@
+..2
diff --git a/test/yarp/fixtures/range_end_open_exclusive.txt b/test/yarp/fixtures/range_end_open_exclusive.txt
new file mode 100644
index 0000000000..2ffd68afdb
--- /dev/null
+++ b/test/yarp/fixtures/range_end_open_exclusive.txt
@@ -0,0 +1 @@
+2...
diff --git a/test/yarp/fixtures/range_end_open_inclusive.txt b/test/yarp/fixtures/range_end_open_inclusive.txt
new file mode 100644
index 0000000000..48445391f6
--- /dev/null
+++ b/test/yarp/fixtures/range_end_open_inclusive.txt
@@ -0,0 +1 @@
+2..
diff --git a/test/yarp/fixtures/ranges.txt b/test/yarp/fixtures/ranges.txt
new file mode 100644
index 0000000000..55c0ade965
--- /dev/null
+++ b/test/yarp/fixtures/ranges.txt
@@ -0,0 +1,17 @@
+(...2)
+
+(..2)
+
+1...2
+
+foo[...2]
+
+{ foo: ...bar }
+
+(1...)
+
+1..2
+
+{ foo: ..bar }
+
+(1..)
diff --git a/test/yarp/fixtures/regex.txt b/test/yarp/fixtures/regex.txt
new file mode 100644
index 0000000000..fe7b848b1b
--- /dev/null
+++ b/test/yarp/fixtures/regex.txt
@@ -0,0 +1,28 @@
+foo /bar/
+
+%r{abc}i
+
+/a\b/
+
+/aaa #$bbb/
+
+/aaa #{bbb} ccc/
+
+[/(?<foo>bar)/ =~ baz, foo]
+
+/abc/i
+
+%r/[a-z$._?][\w$.?#@~]*:/i
+
+%r/([a-z$._?][\w$.?#@~]*)(\s+)(equ)/i
+
+%r/[a-z$._?][\w$.?#@~]*/i
+
+%r(
+(?:[\w#$%_']|\(\)|\(,\)|\[\]|[0-9])*
+ (?:[\w#$%_']+)
+)
+
+/(?#\))/ =~ "hi"
+
+%r#pound#
diff --git a/test/yarp/fixtures/rescue.txt b/test/yarp/fixtures/rescue.txt
new file mode 100644
index 0000000000..0d26fd2523
--- /dev/null
+++ b/test/yarp/fixtures/rescue.txt
@@ -0,0 +1,31 @@
+foo rescue nil
+
+foo rescue
+nil
+
+break rescue nil
+
+next rescue nil
+
+return rescue nil
+
+foo rescue nil || 1
+
+foo rescue nil ? 1 : 2
+
+begin; a; rescue *b; end
+
+foo do |x|
+ bar(y) rescue ArgumentError fail "baz"
+end
+
+if a = foo rescue nil
+ bar
+end
+
+def some_method = other_method 42 rescue nil
+
+def a
+ a b:
+rescue
+end
diff --git a/test/yarp/fixtures/return.txt b/test/yarp/fixtures/return.txt
new file mode 100644
index 0000000000..a8b5b95fab
--- /dev/null
+++ b/test/yarp/fixtures/return.txt
@@ -0,0 +1,24 @@
+return
+
+return (1), (2), (3)
+
+return *1
+
+return 1
+
+return 1, 2,
+3
+
+return 1, 2, 3
+
+return [1, 2, 3]
+
+return(
+ 1
+ 2
+)
+
+return()
+
+return(1)
+
diff --git a/test/yarp/fixtures/seattlerb/BEGIN.txt b/test/yarp/fixtures/seattlerb/BEGIN.txt
new file mode 100644
index 0000000000..bed5755901
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/BEGIN.txt
@@ -0,0 +1 @@
+BEGIN { 42 }
diff --git a/test/yarp/fixtures/seattlerb/README.rdoc b/test/yarp/fixtures/seattlerb/README.rdoc
new file mode 100644
index 0000000000..649e4e4c2f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/README.rdoc
@@ -0,0 +1,113 @@
+= ruby_parser
+
+home :: https://github.com/seattlerb/ruby_parser
+bugs :: https://github.com/seattlerb/ruby_parser/issues
+rdoc :: http://docs.seattlerb.org/ruby_parser
+
+== DESCRIPTION:
+
+ruby_parser (RP) is a ruby parser written in pure ruby (utilizing
+racc--which does by default use a C extension). It outputs
+s-expressions which can be manipulated and converted back to ruby via
+the ruby2ruby gem.
+
+As an example:
+
+ def conditional1 arg1
+ return 1 if arg1 == 0
+ return 0
+ end
+
+becomes:
+
+ s(:defn, :conditional1, s(:args, :arg1),
+ s(:if,
+ s(:call, s(:lvar, :arg1), :==, s(:lit, 0)),
+ s(:return, s(:lit, 1)),
+ nil),
+ s(:return, s(:lit, 0)))
+
+Tested against 801,039 files from the latest of all rubygems (as of 2013-05):
+
+* 1.8 parser is at 99.9739% accuracy, 3.651 sigma
+* 1.9 parser is at 99.9940% accuracy, 4.013 sigma
+* 2.0 parser is at 99.9939% accuracy, 4.008 sigma
+* 2.6 parser is at 99.9972% accuracy, 4.191 sigma
+* 3.0 parser has a 100% parse rate.
+ * Tested against 2,672,412 unique ruby files across 167k gems.
+ * As do all the others now, basically.
+
+== FEATURES/PROBLEMS:
+
+* Pure ruby, no compiles.
+* Includes preceding comment data for defn/defs/class/module nodes!
+* Incredibly simple interface.
+* Output is 100% equivalent to ParseTree.
+ * Can utilize PT's SexpProcessor and UnifiedRuby for language processing.
+* Known Issue: Speed is now pretty good, but can always improve:
+ * RP parses a corpus of 3702 files in 125s (avg 108 Kb/s)
+ * MRI+PT parsed the same in 67.38s (avg 200.89 Kb/s)
+* Known Issue: Code is much better, but still has a long way to go.
+* Known Issue: Totally awesome.
+* Known Issue: line number values can be slightly off. Parsing LR sucks.
+
+== SYNOPSIS:
+
+ RubyParser.new.parse "1+1"
+ # => s(:call, s(:lit, 1), :+, s(:lit, 1))
+
+You can also use Ruby19Parser, Ruby18Parser, or RubyParser.for_current_ruby:
+
+ RubyParser.for_current_ruby.parse "1+1"
+ # => s(:call, s(:lit, 1), :+, s(:lit, 1))
+
+== DEVELOPER NOTES:
+
+To add a new version:
+
+* New parser should be generated from lib/ruby[3]_parser.yy.
+* Extend lib/ruby[3]_parser.yy with new class name.
+* Add new version number to V2/V3 in Rakefile for rule creation.
+* Add new `ruby_parse "x.y.z"` line to Rakefile for rake compare (line ~300).
+* Require generated parser in lib/ruby_parser.rb.
+* Add new V## = ::Ruby##Parser; end to ruby_parser.rb (bottom of file).
+* Add empty TestRubyParserShared##Plus module and TestRubyParserV## to test/test_ruby_parser.rb.
+* Extend Manifest.txt with generated file names.
+* Add new version number to sexp_processor's pt_testcase.rb in all_versions
+
+Until all of these are done, you won't have a clean test run.
+
+== REQUIREMENTS:
+
+* ruby. woot.
+* sexp_processor for Sexp and SexpProcessor classes, and testing.
+* racc full package for parser development (compiling .y to .rb).
+
+== INSTALL:
+
+* sudo gem install ruby_parser
+
+== LICENSE:
+
+(The MIT License)
+
+Copyright (c) Ryan Davis, seattle.rb
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+'Software'), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/test/yarp/fixtures/seattlerb/__ENCODING__.txt b/test/yarp/fixtures/seattlerb/__ENCODING__.txt
new file mode 100644
index 0000000000..d6debf2f92
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/__ENCODING__.txt
@@ -0,0 +1 @@
+__ENCODING__
diff --git a/test/yarp/fixtures/seattlerb/alias_gvar_backref.txt b/test/yarp/fixtures/seattlerb/alias_gvar_backref.txt
new file mode 100644
index 0000000000..016bd94fe0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/alias_gvar_backref.txt
@@ -0,0 +1 @@
+alias $MATCH $&
diff --git a/test/yarp/fixtures/seattlerb/alias_resword.txt b/test/yarp/fixtures/seattlerb/alias_resword.txt
new file mode 100644
index 0000000000..63e782614b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/alias_resword.txt
@@ -0,0 +1 @@
+alias in out
diff --git a/test/yarp/fixtures/seattlerb/and_multi.txt b/test/yarp/fixtures/seattlerb/and_multi.txt
new file mode 100644
index 0000000000..8902086cac
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/and_multi.txt
@@ -0,0 +1,3 @@
+true and
+not false and
+true
diff --git a/test/yarp/fixtures/seattlerb/aref_args_assocs.txt b/test/yarp/fixtures/seattlerb/aref_args_assocs.txt
new file mode 100644
index 0000000000..3244eebafc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/aref_args_assocs.txt
@@ -0,0 +1 @@
+[1 => 2]
diff --git a/test/yarp/fixtures/seattlerb/aref_args_lit_assocs.txt b/test/yarp/fixtures/seattlerb/aref_args_lit_assocs.txt
new file mode 100644
index 0000000000..0b6ffa7e2c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/aref_args_lit_assocs.txt
@@ -0,0 +1 @@
+[1, 2 => 3]
diff --git a/test/yarp/fixtures/seattlerb/args_kw_block.txt b/test/yarp/fixtures/seattlerb/args_kw_block.txt
new file mode 100644
index 0000000000..cb6ab39852
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/args_kw_block.txt
@@ -0,0 +1 @@
+def f(a: 1, &b); end
diff --git a/test/yarp/fixtures/seattlerb/array_line_breaks.txt b/test/yarp/fixtures/seattlerb/array_line_breaks.txt
new file mode 100644
index 0000000000..be9f2d9cb8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/array_line_breaks.txt
@@ -0,0 +1,4 @@
+[
+'a',
+'b']
+1
diff --git a/test/yarp/fixtures/seattlerb/array_lits_trailing_calls.txt b/test/yarp/fixtures/seattlerb/array_lits_trailing_calls.txt
new file mode 100644
index 0000000000..868384a407
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/array_lits_trailing_calls.txt
@@ -0,0 +1,3 @@
+%w[].b
+
+[].b
diff --git a/test/yarp/fixtures/seattlerb/assoc__bare.txt b/test/yarp/fixtures/seattlerb/assoc__bare.txt
new file mode 100644
index 0000000000..96c2940f31
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/assoc__bare.txt
@@ -0,0 +1 @@
+{ y: }
diff --git a/test/yarp/fixtures/seattlerb/assoc_label.txt b/test/yarp/fixtures/seattlerb/assoc_label.txt
new file mode 100644
index 0000000000..372dc75031
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/assoc_label.txt
@@ -0,0 +1 @@
+a(b:1)
diff --git a/test/yarp/fixtures/seattlerb/attr_asgn_colon_id.txt b/test/yarp/fixtures/seattlerb/attr_asgn_colon_id.txt
new file mode 100644
index 0000000000..f63c2f5dcb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/attr_asgn_colon_id.txt
@@ -0,0 +1 @@
+A::b = 1
diff --git a/test/yarp/fixtures/seattlerb/attrasgn_array_arg.txt b/test/yarp/fixtures/seattlerb/attrasgn_array_arg.txt
new file mode 100644
index 0000000000..db9e2db063
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/attrasgn_array_arg.txt
@@ -0,0 +1 @@
+a[[1, 2]] = 3
diff --git a/test/yarp/fixtures/seattlerb/attrasgn_array_lhs.txt b/test/yarp/fixtures/seattlerb/attrasgn_array_lhs.txt
new file mode 100644
index 0000000000..0b8e31632d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/attrasgn_array_lhs.txt
@@ -0,0 +1 @@
+[1, 2, 3, 4][from .. to] = ["a", "b", "c"]
diff --git a/test/yarp/fixtures/seattlerb/attrasgn_primary_dot_constant.txt b/test/yarp/fixtures/seattlerb/attrasgn_primary_dot_constant.txt
new file mode 100644
index 0000000000..380a718963
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/attrasgn_primary_dot_constant.txt
@@ -0,0 +1 @@
+a.B = 1
diff --git a/test/yarp/fixtures/seattlerb/backticks_interpolation_line.txt b/test/yarp/fixtures/seattlerb/backticks_interpolation_line.txt
new file mode 100644
index 0000000000..b3ba31c72a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/backticks_interpolation_line.txt
@@ -0,0 +1 @@
+x `#{y}`
diff --git a/test/yarp/fixtures/seattlerb/bang_eq.txt b/test/yarp/fixtures/seattlerb/bang_eq.txt
new file mode 100644
index 0000000000..0283460e46
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bang_eq.txt
@@ -0,0 +1 @@
+1 != 2
diff --git a/test/yarp/fixtures/seattlerb/bdot2.txt b/test/yarp/fixtures/seattlerb/bdot2.txt
new file mode 100644
index 0000000000..4fb2692299
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bdot2.txt
@@ -0,0 +1,3 @@
+..10
+; ..a
+; c
diff --git a/test/yarp/fixtures/seattlerb/bdot3.txt b/test/yarp/fixtures/seattlerb/bdot3.txt
new file mode 100644
index 0000000000..8079cf9872
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bdot3.txt
@@ -0,0 +1,3 @@
+...10
+; ...a
+; c
diff --git a/test/yarp/fixtures/seattlerb/begin_ensure_no_bodies.txt b/test/yarp/fixtures/seattlerb/begin_ensure_no_bodies.txt
new file mode 100644
index 0000000000..51dde02ea3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/begin_ensure_no_bodies.txt
@@ -0,0 +1,3 @@
+begin
+ensure
+end
diff --git a/test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_bodies.txt b/test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_bodies.txt
new file mode 100644
index 0000000000..ae6e2c3636
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_bodies.txt
@@ -0,0 +1,9 @@
+begin
+ 1
+rescue
+ 2
+else
+ 3
+ensure
+ 4
+end
diff --git a/test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_no_bodies.txt b/test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_no_bodies.txt
new file mode 100644
index 0000000000..456d9a5d6e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/begin_rescue_else_ensure_no_bodies.txt
@@ -0,0 +1,9 @@
+begin
+
+rescue
+
+else
+
+ensure
+
+end
diff --git a/test/yarp/fixtures/seattlerb/begin_rescue_ensure_no_bodies.txt b/test/yarp/fixtures/seattlerb/begin_rescue_ensure_no_bodies.txt
new file mode 100644
index 0000000000..896e3c030a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/begin_rescue_ensure_no_bodies.txt
@@ -0,0 +1,4 @@
+begin
+rescue
+ensure
+end
diff --git a/test/yarp/fixtures/seattlerb/block_arg__bare.txt b/test/yarp/fixtures/seattlerb/block_arg__bare.txt
new file mode 100644
index 0000000000..6454b00345
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg__bare.txt
@@ -0,0 +1 @@
+def x(&); end
diff --git a/test/yarp/fixtures/seattlerb/block_arg_kwsplat.txt b/test/yarp/fixtures/seattlerb/block_arg_kwsplat.txt
new file mode 100644
index 0000000000..a9c255cc66
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_kwsplat.txt
@@ -0,0 +1 @@
+a { |**b| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_opt_arg_block.txt b/test/yarp/fixtures/seattlerb/block_arg_opt_arg_block.txt
new file mode 100644
index 0000000000..14cb02c68e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_opt_arg_block.txt
@@ -0,0 +1 @@
+a { |b, c=1, d, &e| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_opt_splat.txt b/test/yarp/fixtures/seattlerb/block_arg_opt_splat.txt
new file mode 100644
index 0000000000..a077ae1f34
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_opt_splat.txt
@@ -0,0 +1 @@
+a { |b, c = 1, *d| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_opt_splat_arg_block_omfg.txt b/test/yarp/fixtures/seattlerb/block_arg_opt_splat_arg_block_omfg.txt
new file mode 100644
index 0000000000..5016a7c6b9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_opt_splat_arg_block_omfg.txt
@@ -0,0 +1 @@
+a { |b, c=1, *d, e, &f| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_optional.txt b/test/yarp/fixtures/seattlerb/block_arg_optional.txt
new file mode 100644
index 0000000000..966afc5640
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_optional.txt
@@ -0,0 +1 @@
+a { |b = 1| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_scope.txt b/test/yarp/fixtures/seattlerb/block_arg_scope.txt
new file mode 100644
index 0000000000..2362e08559
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_scope.txt
@@ -0,0 +1 @@
+a { |b; c| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_scope2.txt b/test/yarp/fixtures/seattlerb/block_arg_scope2.txt
new file mode 100644
index 0000000000..f7222dc7b1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_scope2.txt
@@ -0,0 +1 @@
+a {|b; c, d| }
diff --git a/test/yarp/fixtures/seattlerb/block_arg_splat_arg.txt b/test/yarp/fixtures/seattlerb/block_arg_splat_arg.txt
new file mode 100644
index 0000000000..d7c31aae6b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_arg_splat_arg.txt
@@ -0,0 +1 @@
+a { |b, *c, d| }
diff --git a/test/yarp/fixtures/seattlerb/block_args_kwargs.txt b/test/yarp/fixtures/seattlerb/block_args_kwargs.txt
new file mode 100644
index 0000000000..467b577a7e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_args_kwargs.txt
@@ -0,0 +1 @@
+f { |**kwargs| kwargs }
diff --git a/test/yarp/fixtures/seattlerb/block_args_no_kwargs.txt b/test/yarp/fixtures/seattlerb/block_args_no_kwargs.txt
new file mode 100644
index 0000000000..5c9bfa3a62
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_args_no_kwargs.txt
@@ -0,0 +1 @@
+f { |**nil| }
diff --git a/test/yarp/fixtures/seattlerb/block_args_opt1.txt b/test/yarp/fixtures/seattlerb/block_args_opt1.txt
new file mode 100644
index 0000000000..372689e36a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_args_opt1.txt
@@ -0,0 +1 @@
+f { |a, b = 42| [a, b] }
diff --git a/test/yarp/fixtures/seattlerb/block_args_opt2.txt b/test/yarp/fixtures/seattlerb/block_args_opt2.txt
new file mode 100644
index 0000000000..10d0746646
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_args_opt2.txt
@@ -0,0 +1 @@
+a { | b=1, c=2 | }
diff --git a/test/yarp/fixtures/seattlerb/block_args_opt2_2.txt b/test/yarp/fixtures/seattlerb/block_args_opt2_2.txt
new file mode 100644
index 0000000000..563a9bf915
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_args_opt2_2.txt
@@ -0,0 +1 @@
+f { |a, b = 42, c = 24| [a, b, c] }
diff --git a/test/yarp/fixtures/seattlerb/block_args_opt3.txt b/test/yarp/fixtures/seattlerb/block_args_opt3.txt
new file mode 100644
index 0000000000..bb5a7c8458
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_args_opt3.txt
@@ -0,0 +1 @@
+f { |a, b = 42, c = 24, &d| [a, b, c, d] }
diff --git a/test/yarp/fixtures/seattlerb/block_break.txt b/test/yarp/fixtures/seattlerb/block_break.txt
new file mode 100644
index 0000000000..35eabee187
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_break.txt
@@ -0,0 +1 @@
+break foo arg do |bar| end
diff --git a/test/yarp/fixtures/seattlerb/block_call_defn_call_block_call.txt b/test/yarp/fixtures/seattlerb/block_call_defn_call_block_call.txt
new file mode 100644
index 0000000000..ff1b3a4c9f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_call_defn_call_block_call.txt
@@ -0,0 +1,4 @@
+a def b(c)
+ d
+ end
+ e.f do end
diff --git a/test/yarp/fixtures/seattlerb/block_call_dot_op2_brace_block.txt b/test/yarp/fixtures/seattlerb/block_call_dot_op2_brace_block.txt
new file mode 100644
index 0000000000..63da9ee7af
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_call_dot_op2_brace_block.txt
@@ -0,0 +1 @@
+a.b c() do d end.e do |f| g end
diff --git a/test/yarp/fixtures/seattlerb/block_call_dot_op2_cmd_args_do_block.txt b/test/yarp/fixtures/seattlerb/block_call_dot_op2_cmd_args_do_block.txt
new file mode 100644
index 0000000000..24e7d0f1f1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_call_dot_op2_cmd_args_do_block.txt
@@ -0,0 +1 @@
+a.b c() do d end.e f do |g| h end
diff --git a/test/yarp/fixtures/seattlerb/block_call_operation_colon.txt b/test/yarp/fixtures/seattlerb/block_call_operation_colon.txt
new file mode 100644
index 0000000000..593b9e1bc0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_call_operation_colon.txt
@@ -0,0 +1 @@
+a.b c do end::d
diff --git a/test/yarp/fixtures/seattlerb/block_call_operation_dot.txt b/test/yarp/fixtures/seattlerb/block_call_operation_dot.txt
new file mode 100644
index 0000000000..20b8e4fcb8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_call_operation_dot.txt
@@ -0,0 +1 @@
+a.b c do end.d
diff --git a/test/yarp/fixtures/seattlerb/block_call_paren_call_block_call.txt b/test/yarp/fixtures/seattlerb/block_call_paren_call_block_call.txt
new file mode 100644
index 0000000000..7f8be95100
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_call_paren_call_block_call.txt
@@ -0,0 +1,2 @@
+a (b)
+c.d do end
diff --git a/test/yarp/fixtures/seattlerb/block_command_operation_colon.txt b/test/yarp/fixtures/seattlerb/block_command_operation_colon.txt
new file mode 100644
index 0000000000..db221ad496
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_command_operation_colon.txt
@@ -0,0 +1 @@
+a :b do end::c :d
diff --git a/test/yarp/fixtures/seattlerb/block_command_operation_dot.txt b/test/yarp/fixtures/seattlerb/block_command_operation_dot.txt
new file mode 100644
index 0000000000..56b71677e8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_command_operation_dot.txt
@@ -0,0 +1 @@
+a :b do end.c :d
diff --git a/test/yarp/fixtures/seattlerb/block_decomp_anon_splat_arg.txt b/test/yarp/fixtures/seattlerb/block_decomp_anon_splat_arg.txt
new file mode 100644
index 0000000000..96f5d5d2ec
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_decomp_anon_splat_arg.txt
@@ -0,0 +1 @@
+f { |(*, a)| }
diff --git a/test/yarp/fixtures/seattlerb/block_decomp_arg_splat.txt b/test/yarp/fixtures/seattlerb/block_decomp_arg_splat.txt
new file mode 100644
index 0000000000..f8db3874de
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_decomp_arg_splat.txt
@@ -0,0 +1 @@
+a { |(b, *)| }
diff --git a/test/yarp/fixtures/seattlerb/block_decomp_arg_splat_arg.txt b/test/yarp/fixtures/seattlerb/block_decomp_arg_splat_arg.txt
new file mode 100644
index 0000000000..e64f4e8c3d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_decomp_arg_splat_arg.txt
@@ -0,0 +1 @@
+f { |(a, *b, c)| }
diff --git a/test/yarp/fixtures/seattlerb/block_decomp_splat.txt b/test/yarp/fixtures/seattlerb/block_decomp_splat.txt
new file mode 100644
index 0000000000..970f00a626
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_decomp_splat.txt
@@ -0,0 +1 @@
+f { |(*a)| }
diff --git a/test/yarp/fixtures/seattlerb/block_kw.txt b/test/yarp/fixtures/seattlerb/block_kw.txt
new file mode 100644
index 0000000000..bacfd32e80
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_kw.txt
@@ -0,0 +1 @@
+blah { |k:42| }
diff --git a/test/yarp/fixtures/seattlerb/block_kw__required.txt b/test/yarp/fixtures/seattlerb/block_kw__required.txt
new file mode 100644
index 0000000000..b84ab97037
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_kw__required.txt
@@ -0,0 +1 @@
+blah do |k:| end
diff --git a/test/yarp/fixtures/seattlerb/block_kwarg_lvar.txt b/test/yarp/fixtures/seattlerb/block_kwarg_lvar.txt
new file mode 100644
index 0000000000..390b9195e0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_kwarg_lvar.txt
@@ -0,0 +1 @@
+bl { |kw: :val| kw }
diff --git a/test/yarp/fixtures/seattlerb/block_kwarg_lvar_multiple.txt b/test/yarp/fixtures/seattlerb/block_kwarg_lvar_multiple.txt
new file mode 100644
index 0000000000..df3e4afde8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_kwarg_lvar_multiple.txt
@@ -0,0 +1 @@
+bl { |kw: :val, kw2: :val2 | kw }
diff --git a/test/yarp/fixtures/seattlerb/block_next.txt b/test/yarp/fixtures/seattlerb/block_next.txt
new file mode 100644
index 0000000000..760fcbf809
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_next.txt
@@ -0,0 +1 @@
+next foo arg do |bar| end
diff --git a/test/yarp/fixtures/seattlerb/block_opt_arg.txt b/test/yarp/fixtures/seattlerb/block_opt_arg.txt
new file mode 100644
index 0000000000..5e312fdf41
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_opt_arg.txt
@@ -0,0 +1 @@
+a { |b=1, c| }
diff --git a/test/yarp/fixtures/seattlerb/block_opt_splat.txt b/test/yarp/fixtures/seattlerb/block_opt_splat.txt
new file mode 100644
index 0000000000..772a3fc412
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_opt_splat.txt
@@ -0,0 +1 @@
+a { |b = 1, *c| }
diff --git a/test/yarp/fixtures/seattlerb/block_opt_splat_arg_block_omfg.txt b/test/yarp/fixtures/seattlerb/block_opt_splat_arg_block_omfg.txt
new file mode 100644
index 0000000000..76466f9d54
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_opt_splat_arg_block_omfg.txt
@@ -0,0 +1 @@
+a { |b=1, *c, d, &e| }
diff --git a/test/yarp/fixtures/seattlerb/block_optarg.txt b/test/yarp/fixtures/seattlerb/block_optarg.txt
new file mode 100644
index 0000000000..a471554da1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_optarg.txt
@@ -0,0 +1 @@
+a { |b = :c| }
diff --git a/test/yarp/fixtures/seattlerb/block_paren_splat.txt b/test/yarp/fixtures/seattlerb/block_paren_splat.txt
new file mode 100644
index 0000000000..3dd4bba1ed
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_paren_splat.txt
@@ -0,0 +1 @@
+a { |(b, *c)| }
diff --git a/test/yarp/fixtures/seattlerb/block_reg_optarg.txt b/test/yarp/fixtures/seattlerb/block_reg_optarg.txt
new file mode 100644
index 0000000000..c024651f78
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_reg_optarg.txt
@@ -0,0 +1 @@
+a { |b, c = :d| }
diff --git a/test/yarp/fixtures/seattlerb/block_return.txt b/test/yarp/fixtures/seattlerb/block_return.txt
new file mode 100644
index 0000000000..f30ba71d8f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_return.txt
@@ -0,0 +1 @@
+return foo arg do |bar| end
diff --git a/test/yarp/fixtures/seattlerb/block_scope.txt b/test/yarp/fixtures/seattlerb/block_scope.txt
new file mode 100644
index 0000000000..7a83d8ab87
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_scope.txt
@@ -0,0 +1 @@
+a { |;b| }
diff --git a/test/yarp/fixtures/seattlerb/block_splat_reg.txt b/test/yarp/fixtures/seattlerb/block_splat_reg.txt
new file mode 100644
index 0000000000..58f0619e5d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/block_splat_reg.txt
@@ -0,0 +1 @@
+a { |*b, c| }
diff --git a/test/yarp/fixtures/seattlerb/bug169.txt b/test/yarp/fixtures/seattlerb/bug169.txt
new file mode 100644
index 0000000000..db2e5ace5e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug169.txt
@@ -0,0 +1 @@
+m () {}
diff --git a/test/yarp/fixtures/seattlerb/bug179.txt b/test/yarp/fixtures/seattlerb/bug179.txt
new file mode 100644
index 0000000000..02ae07a3be
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug179.txt
@@ -0,0 +1 @@
+p ()..nil
diff --git a/test/yarp/fixtures/seattlerb/bug190.txt b/test/yarp/fixtures/seattlerb/bug190.txt
new file mode 100644
index 0000000000..861b2d305f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug190.txt
@@ -0,0 +1 @@
+%r'\''
diff --git a/test/yarp/fixtures/seattlerb/bug191.txt b/test/yarp/fixtures/seattlerb/bug191.txt
new file mode 100644
index 0000000000..03f7fd1228
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug191.txt
@@ -0,0 +1,3 @@
+a ? "": b
+
+a ? '': b
diff --git a/test/yarp/fixtures/seattlerb/bug202.txt b/test/yarp/fixtures/seattlerb/bug202.txt
new file mode 100644
index 0000000000..a3b06ffdfc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug202.txt
@@ -0,0 +1,2 @@
+$测试 = 1
+测试 = 1
diff --git a/test/yarp/fixtures/seattlerb/bug236.txt b/test/yarp/fixtures/seattlerb/bug236.txt
new file mode 100644
index 0000000000..cefe1eb058
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug236.txt
@@ -0,0 +1,3 @@
+x{|a,|}
+
+x{|a|}
diff --git a/test/yarp/fixtures/seattlerb/bug290.txt b/test/yarp/fixtures/seattlerb/bug290.txt
new file mode 100644
index 0000000000..dbcd28cd48
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug290.txt
@@ -0,0 +1,3 @@
+begin
+ foo
+end
diff --git a/test/yarp/fixtures/seattlerb/bug_187.txt b/test/yarp/fixtures/seattlerb/bug_187.txt
new file mode 100644
index 0000000000..1e1ecd8202
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_187.txt
@@ -0,0 +1,3 @@
+private def f
+a.b do end
+end
diff --git a/test/yarp/fixtures/seattlerb/bug_215.txt b/test/yarp/fixtures/seattlerb/bug_215.txt
new file mode 100644
index 0000000000..f0d09ba5ff
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_215.txt
@@ -0,0 +1 @@
+undef %s(foo)
diff --git a/test/yarp/fixtures/seattlerb/bug_249.txt b/test/yarp/fixtures/seattlerb/bug_249.txt
new file mode 100644
index 0000000000..ccccdf5326
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_249.txt
@@ -0,0 +1,4 @@
+mount (Class.new do
+def initialize
+end
+ end).new, :at => 'endpoint'
diff --git a/test/yarp/fixtures/seattlerb/bug_and.txt b/test/yarp/fixtures/seattlerb/bug_and.txt
new file mode 100644
index 0000000000..6243359a9e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_and.txt
@@ -0,0 +1,4 @@
+true and
+true
+
+true and []
diff --git a/test/yarp/fixtures/seattlerb/bug_args__19.txt b/test/yarp/fixtures/seattlerb/bug_args__19.txt
new file mode 100644
index 0000000000..08466554fd
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_args__19.txt
@@ -0,0 +1 @@
+f { |(a, b)| d }
diff --git a/test/yarp/fixtures/seattlerb/bug_args_masgn.txt b/test/yarp/fixtures/seattlerb/bug_args_masgn.txt
new file mode 100644
index 0000000000..e0a71e9197
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_args_masgn.txt
@@ -0,0 +1 @@
+f { |(a, b), c| }
diff --git a/test/yarp/fixtures/seattlerb/bug_args_masgn2.txt b/test/yarp/fixtures/seattlerb/bug_args_masgn2.txt
new file mode 100644
index 0000000000..2f12756bfe
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_args_masgn2.txt
@@ -0,0 +1 @@
+f { |((a, b), c), d| }
diff --git a/test/yarp/fixtures/seattlerb/bug_args_masgn_outer_parens__19.txt b/test/yarp/fixtures/seattlerb/bug_args_masgn_outer_parens__19.txt
new file mode 100644
index 0000000000..a2b0178676
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_args_masgn_outer_parens__19.txt
@@ -0,0 +1 @@
+f { |((k, v), i)| }
diff --git a/test/yarp/fixtures/seattlerb/bug_call_arglist_parens.txt b/test/yarp/fixtures/seattlerb/bug_call_arglist_parens.txt
new file mode 100644
index 0000000000..4f04368802
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_call_arglist_parens.txt
@@ -0,0 +1,11 @@
+ def f
+ g ( 1), 2
+ end
+
+
+ def f()
+ g (1), 2
+ end
+
+
+g ( 1), 2
diff --git a/test/yarp/fixtures/seattlerb/bug_case_when_regexp.txt b/test/yarp/fixtures/seattlerb/bug_case_when_regexp.txt
new file mode 100644
index 0000000000..2536696a42
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_case_when_regexp.txt
@@ -0,0 +1 @@
+case :x; when /x/ then end
diff --git a/test/yarp/fixtures/seattlerb/bug_comma.txt b/test/yarp/fixtures/seattlerb/bug_comma.txt
new file mode 100644
index 0000000000..d86f1ea9dd
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_comma.txt
@@ -0,0 +1 @@
+if test ?d, dir then end
diff --git a/test/yarp/fixtures/seattlerb/bug_cond_pct.txt b/test/yarp/fixtures/seattlerb/bug_cond_pct.txt
new file mode 100644
index 0000000000..1b4f90058e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_cond_pct.txt
@@ -0,0 +1 @@
+case; when %r%blahblah%; end
diff --git a/test/yarp/fixtures/seattlerb/bug_hash_args.txt b/test/yarp/fixtures/seattlerb/bug_hash_args.txt
new file mode 100644
index 0000000000..b815f8a666
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_hash_args.txt
@@ -0,0 +1 @@
+foo(:bar, baz: nil)
diff --git a/test/yarp/fixtures/seattlerb/bug_hash_args_trailing_comma.txt b/test/yarp/fixtures/seattlerb/bug_hash_args_trailing_comma.txt
new file mode 100644
index 0000000000..6057b245a5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_hash_args_trailing_comma.txt
@@ -0,0 +1 @@
+foo(:bar, baz: nil,)
diff --git a/test/yarp/fixtures/seattlerb/bug_hash_interp_array.txt b/test/yarp/fixtures/seattlerb/bug_hash_interp_array.txt
new file mode 100644
index 0000000000..01fe238056
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_hash_interp_array.txt
@@ -0,0 +1 @@
+{ "#{}": [] }
diff --git a/test/yarp/fixtures/seattlerb/bug_masgn_right.txt b/test/yarp/fixtures/seattlerb/bug_masgn_right.txt
new file mode 100644
index 0000000000..12ea7b8d62
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_masgn_right.txt
@@ -0,0 +1 @@
+f { |a, (b, c)| }
diff --git a/test/yarp/fixtures/seattlerb/bug_not_parens.txt b/test/yarp/fixtures/seattlerb/bug_not_parens.txt
new file mode 100644
index 0000000000..8847b7bec6
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_not_parens.txt
@@ -0,0 +1 @@
+not(a)
diff --git a/test/yarp/fixtures/seattlerb/bug_op_asgn_rescue.txt b/test/yarp/fixtures/seattlerb/bug_op_asgn_rescue.txt
new file mode 100644
index 0000000000..6a0b25cbdc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/bug_op_asgn_rescue.txt
@@ -0,0 +1 @@
+a ||= b rescue nil
diff --git a/test/yarp/fixtures/seattlerb/call_and.txt b/test/yarp/fixtures/seattlerb/call_and.txt
new file mode 100644
index 0000000000..c17be8f356
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_and.txt
@@ -0,0 +1 @@
+1 & 2
diff --git a/test/yarp/fixtures/seattlerb/call_arg_assoc.txt b/test/yarp/fixtures/seattlerb/call_arg_assoc.txt
new file mode 100644
index 0000000000..376c299be5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_arg_assoc.txt
@@ -0,0 +1 @@
+f(1, 2=>3)
diff --git a/test/yarp/fixtures/seattlerb/call_arg_assoc_kwsplat.txt b/test/yarp/fixtures/seattlerb/call_arg_assoc_kwsplat.txt
new file mode 100644
index 0000000000..a4be0fb62c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_arg_assoc_kwsplat.txt
@@ -0,0 +1 @@
+f(1, kw: 2, **3)
diff --git a/test/yarp/fixtures/seattlerb/call_arg_kwsplat.txt b/test/yarp/fixtures/seattlerb/call_arg_kwsplat.txt
new file mode 100644
index 0000000000..4848fd9e8d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_arg_kwsplat.txt
@@ -0,0 +1 @@
+a(b, **1)
diff --git a/test/yarp/fixtures/seattlerb/call_args_assoc_quoted.txt b/test/yarp/fixtures/seattlerb/call_args_assoc_quoted.txt
new file mode 100644
index 0000000000..0af2259577
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_args_assoc_quoted.txt
@@ -0,0 +1,5 @@
+x "#{k}":42
+
+x "k":42
+
+x 'k':42
diff --git a/test/yarp/fixtures/seattlerb/call_args_assoc_trailing_comma.txt b/test/yarp/fixtures/seattlerb/call_args_assoc_trailing_comma.txt
new file mode 100644
index 0000000000..6ad08f3238
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_args_assoc_trailing_comma.txt
@@ -0,0 +1 @@
+f(1, 2=>3,)
diff --git a/test/yarp/fixtures/seattlerb/call_args_command.txt b/test/yarp/fixtures/seattlerb/call_args_command.txt
new file mode 100644
index 0000000000..dd6df29c7b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_args_command.txt
@@ -0,0 +1 @@
+a.b c.d 1
diff --git a/test/yarp/fixtures/seattlerb/call_array_arg.txt b/test/yarp/fixtures/seattlerb/call_array_arg.txt
new file mode 100644
index 0000000000..5c724fa328
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_array_arg.txt
@@ -0,0 +1 @@
+1 == [:b, :c]
diff --git a/test/yarp/fixtures/seattlerb/call_array_block_call.txt b/test/yarp/fixtures/seattlerb/call_array_block_call.txt
new file mode 100644
index 0000000000..6d4c1b276e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_array_block_call.txt
@@ -0,0 +1 @@
+a [ nil, b do end ]
diff --git a/test/yarp/fixtures/seattlerb/call_array_lambda_block_call.txt b/test/yarp/fixtures/seattlerb/call_array_lambda_block_call.txt
new file mode 100644
index 0000000000..dc5b5807b2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_array_lambda_block_call.txt
@@ -0,0 +1,2 @@
+a [->() {}] do
+end
diff --git a/test/yarp/fixtures/seattlerb/call_array_lit_inline_hash.txt b/test/yarp/fixtures/seattlerb/call_array_lit_inline_hash.txt
new file mode 100644
index 0000000000..daba00947e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_array_lit_inline_hash.txt
@@ -0,0 +1 @@
+a([:b, :c => 1])
diff --git a/test/yarp/fixtures/seattlerb/call_assoc.txt b/test/yarp/fixtures/seattlerb/call_assoc.txt
new file mode 100644
index 0000000000..2adc1eee1c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_assoc.txt
@@ -0,0 +1 @@
+f(2=>3)
diff --git a/test/yarp/fixtures/seattlerb/call_assoc_new.txt b/test/yarp/fixtures/seattlerb/call_assoc_new.txt
new file mode 100644
index 0000000000..b8457bfdfc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_assoc_new.txt
@@ -0,0 +1 @@
+f(a:3)
diff --git a/test/yarp/fixtures/seattlerb/call_assoc_new_if_multiline.txt b/test/yarp/fixtures/seattlerb/call_assoc_new_if_multiline.txt
new file mode 100644
index 0000000000..fe0a37dabb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_assoc_new_if_multiline.txt
@@ -0,0 +1,5 @@
+a(b: if :c
+1
+else
+2
+end)
diff --git a/test/yarp/fixtures/seattlerb/call_assoc_trailing_comma.txt b/test/yarp/fixtures/seattlerb/call_assoc_trailing_comma.txt
new file mode 100644
index 0000000000..4d86a4541d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_assoc_trailing_comma.txt
@@ -0,0 +1 @@
+f(1=>2,)
diff --git a/test/yarp/fixtures/seattlerb/call_bang_command_call.txt b/test/yarp/fixtures/seattlerb/call_bang_command_call.txt
new file mode 100644
index 0000000000..4f3ba4b93c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_bang_command_call.txt
@@ -0,0 +1 @@
+! a.b 1
diff --git a/test/yarp/fixtures/seattlerb/call_bang_squiggle.txt b/test/yarp/fixtures/seattlerb/call_bang_squiggle.txt
new file mode 100644
index 0000000000..d7039f910a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_bang_squiggle.txt
@@ -0,0 +1 @@
+1 !~ 2
diff --git a/test/yarp/fixtures/seattlerb/call_begin_call_block_call.txt b/test/yarp/fixtures/seattlerb/call_begin_call_block_call.txt
new file mode 100644
index 0000000000..e9b43491fe
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_begin_call_block_call.txt
@@ -0,0 +1,3 @@
+a begin
+b.c do end
+end
diff --git a/test/yarp/fixtures/seattlerb/call_block_arg_named.txt b/test/yarp/fixtures/seattlerb/call_block_arg_named.txt
new file mode 100644
index 0000000000..08fea89d11
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_block_arg_named.txt
@@ -0,0 +1 @@
+x(&blk)
diff --git a/test/yarp/fixtures/seattlerb/call_carat.txt b/test/yarp/fixtures/seattlerb/call_carat.txt
new file mode 100644
index 0000000000..3e88c09837
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_carat.txt
@@ -0,0 +1 @@
+1 ^ 2
diff --git a/test/yarp/fixtures/seattlerb/call_colon2.txt b/test/yarp/fixtures/seattlerb/call_colon2.txt
new file mode 100644
index 0000000000..47aab7e637
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_colon2.txt
@@ -0,0 +1 @@
+A::b
diff --git a/test/yarp/fixtures/seattlerb/call_colon_parens.txt b/test/yarp/fixtures/seattlerb/call_colon_parens.txt
new file mode 100644
index 0000000000..51ed4df11b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_colon_parens.txt
@@ -0,0 +1 @@
+1::()
diff --git a/test/yarp/fixtures/seattlerb/call_div.txt b/test/yarp/fixtures/seattlerb/call_div.txt
new file mode 100644
index 0000000000..85b4d7b0b0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_div.txt
@@ -0,0 +1 @@
+1 / 2
diff --git a/test/yarp/fixtures/seattlerb/call_dot_parens.txt b/test/yarp/fixtures/seattlerb/call_dot_parens.txt
new file mode 100644
index 0000000000..0270596a07
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_dot_parens.txt
@@ -0,0 +1 @@
+1.()
diff --git a/test/yarp/fixtures/seattlerb/call_env.txt b/test/yarp/fixtures/seattlerb/call_env.txt
new file mode 100644
index 0000000000..dadc0d3861
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_env.txt
@@ -0,0 +1 @@
+a.happy
diff --git a/test/yarp/fixtures/seattlerb/call_eq3.txt b/test/yarp/fixtures/seattlerb/call_eq3.txt
new file mode 100644
index 0000000000..6a2fb465cb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_eq3.txt
@@ -0,0 +1 @@
+1 === 2
diff --git a/test/yarp/fixtures/seattlerb/call_gt.txt b/test/yarp/fixtures/seattlerb/call_gt.txt
new file mode 100644
index 0000000000..9d0a1caa90
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_gt.txt
@@ -0,0 +1 @@
+1 > 2
diff --git a/test/yarp/fixtures/seattlerb/call_kwsplat.txt b/test/yarp/fixtures/seattlerb/call_kwsplat.txt
new file mode 100644
index 0000000000..eda700c3e1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_kwsplat.txt
@@ -0,0 +1 @@
+a(**1)
diff --git a/test/yarp/fixtures/seattlerb/call_leading_dots.txt b/test/yarp/fixtures/seattlerb/call_leading_dots.txt
new file mode 100644
index 0000000000..1e7b2e5179
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_leading_dots.txt
@@ -0,0 +1,3 @@
+a
+.b
+.c
diff --git a/test/yarp/fixtures/seattlerb/call_leading_dots_comment.txt b/test/yarp/fixtures/seattlerb/call_leading_dots_comment.txt
new file mode 100644
index 0000000000..c5deec5642
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_leading_dots_comment.txt
@@ -0,0 +1,4 @@
+a
+.b
+#.c
+.d
diff --git a/test/yarp/fixtures/seattlerb/call_lt.txt b/test/yarp/fixtures/seattlerb/call_lt.txt
new file mode 100644
index 0000000000..17e69c79b5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_lt.txt
@@ -0,0 +1 @@
+1 < 2
diff --git a/test/yarp/fixtures/seattlerb/call_lte.txt b/test/yarp/fixtures/seattlerb/call_lte.txt
new file mode 100644
index 0000000000..7574027634
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_lte.txt
@@ -0,0 +1 @@
+1 <= 2
diff --git a/test/yarp/fixtures/seattlerb/call_not.txt b/test/yarp/fixtures/seattlerb/call_not.txt
new file mode 100644
index 0000000000..51e4742f55
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_not.txt
@@ -0,0 +1 @@
+not 42
diff --git a/test/yarp/fixtures/seattlerb/call_pipe.txt b/test/yarp/fixtures/seattlerb/call_pipe.txt
new file mode 100644
index 0000000000..1555910665
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_pipe.txt
@@ -0,0 +1 @@
+1 | 2
diff --git a/test/yarp/fixtures/seattlerb/call_rshift.txt b/test/yarp/fixtures/seattlerb/call_rshift.txt
new file mode 100644
index 0000000000..9ff1def4e0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_rshift.txt
@@ -0,0 +1 @@
+1 >> 2
diff --git a/test/yarp/fixtures/seattlerb/call_self_brackets.txt b/test/yarp/fixtures/seattlerb/call_self_brackets.txt
new file mode 100644
index 0000000000..6533df2ce0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_self_brackets.txt
@@ -0,0 +1 @@
+self[1]
diff --git a/test/yarp/fixtures/seattlerb/call_spaceship.txt b/test/yarp/fixtures/seattlerb/call_spaceship.txt
new file mode 100644
index 0000000000..905c3a1c46
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_spaceship.txt
@@ -0,0 +1 @@
+1 <=> 2
diff --git a/test/yarp/fixtures/seattlerb/call_stabby_do_end_with_block.txt b/test/yarp/fixtures/seattlerb/call_stabby_do_end_with_block.txt
new file mode 100644
index 0000000000..2d1afdad28
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_stabby_do_end_with_block.txt
@@ -0,0 +1 @@
+a -> do 1 end do 2 end
diff --git a/test/yarp/fixtures/seattlerb/call_stabby_with_braces_block.txt b/test/yarp/fixtures/seattlerb/call_stabby_with_braces_block.txt
new file mode 100644
index 0000000000..0d995a04d1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_stabby_with_braces_block.txt
@@ -0,0 +1 @@
+a -> { 1 } do 2 end
diff --git a/test/yarp/fixtures/seattlerb/call_star.txt b/test/yarp/fixtures/seattlerb/call_star.txt
new file mode 100644
index 0000000000..096ec022d4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_star.txt
@@ -0,0 +1 @@
+1 * 2
diff --git a/test/yarp/fixtures/seattlerb/call_star2.txt b/test/yarp/fixtures/seattlerb/call_star2.txt
new file mode 100644
index 0000000000..bef4719d3c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_star2.txt
@@ -0,0 +1 @@
+1 ** 2
diff --git a/test/yarp/fixtures/seattlerb/call_trailing_comma.txt b/test/yarp/fixtures/seattlerb/call_trailing_comma.txt
new file mode 100644
index 0000000000..e9a3ca35be
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_trailing_comma.txt
@@ -0,0 +1 @@
+f(1,)
diff --git a/test/yarp/fixtures/seattlerb/call_trailing_dots.txt b/test/yarp/fixtures/seattlerb/call_trailing_dots.txt
new file mode 100644
index 0000000000..960cdbb45f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_trailing_dots.txt
@@ -0,0 +1,3 @@
+a.
+b.
+c
diff --git a/test/yarp/fixtures/seattlerb/call_unary_bang.txt b/test/yarp/fixtures/seattlerb/call_unary_bang.txt
new file mode 100644
index 0000000000..91f702d4a9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/call_unary_bang.txt
@@ -0,0 +1 @@
+!1
diff --git a/test/yarp/fixtures/seattlerb/case_in.txt b/test/yarp/fixtures/seattlerb/case_in.txt
new file mode 100644
index 0000000000..f28c286348
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in.txt
@@ -0,0 +1,111 @@
+case :a
+in "b":
+end
+
+case :a
+in %I[a b]
+end
+
+case :a
+in %W[a b]
+end
+
+case :a
+in %i[a b]
+end
+
+case :a
+in %w[a b]
+end
+
+case :a
+in (...10)
+end
+
+case :a
+in (..10)
+end
+
+case :a
+in (1...)
+end
+
+case :a
+in (1...3)
+end
+
+case :a
+in (42)
+end
+
+case :a
+in **nil
+end
+
+case :a
+in /regexp/
+end
+
+case :a
+in :b, *_, :c
+end
+
+case :a
+in :b, [:c]
+end
+
+case :a
+in Symbol()
+end
+
+case :a
+in Symbol(*lhs, x, *rhs)
+end
+
+case :a
+in Symbol[*lhs, x, *rhs]
+end
+
+case :a
+in [->(b) { true }, c]
+end
+
+case :a
+in [:a, b, c, [:d, *e, nil]]
+end
+
+case :a
+in [A, *, B]
+end
+
+case :a
+in [[:b, c], [:d, ^e]]
+end
+
+case :a
+in []
+end
+
+case :a
+in [^(a)]
+end
+
+case :a
+in [^@a, ^$b, ^@@c]
+end
+
+case :a
+in `echo hi`
+end
+
+case :a
+in nil, nil, nil
+end
+
+case :a
+in { "b": }
+end
+
+case :a
+in {}
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_31.txt b/test/yarp/fixtures/seattlerb/case_in_31.txt
new file mode 100644
index 0000000000..b9bf25b132
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_31.txt
@@ -0,0 +1,4 @@
+case :a
+in [:b, *c]
+ :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_37.txt b/test/yarp/fixtures/seattlerb/case_in_37.txt
new file mode 100644
index 0000000000..25b6fb9261
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_37.txt
@@ -0,0 +1,4 @@
+case :a
+in { b: [Hash, *] }
+ :c
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_42.txt b/test/yarp/fixtures/seattlerb/case_in_42.txt
new file mode 100644
index 0000000000..bc6a2233f5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_42.txt
@@ -0,0 +1,3 @@
+case :a
+in :b, *_ then nil
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_42_2.txt b/test/yarp/fixtures/seattlerb/case_in_42_2.txt
new file mode 100644
index 0000000000..ce4b65a5d0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_42_2.txt
@@ -0,0 +1,3 @@
+case :a
+in A(*list) then nil
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_47.txt b/test/yarp/fixtures/seattlerb/case_in_47.txt
new file mode 100644
index 0000000000..60f17ed7ce
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_47.txt
@@ -0,0 +1,4 @@
+case :a
+in [*, :b, :c]
+ :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_67.txt b/test/yarp/fixtures/seattlerb/case_in_67.txt
new file mode 100644
index 0000000000..c1c55e68c7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_67.txt
@@ -0,0 +1,3 @@
+case :a
+in 1.. then nil
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_86.txt b/test/yarp/fixtures/seattlerb/case_in_86.txt
new file mode 100644
index 0000000000..63ba92e533
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_86.txt
@@ -0,0 +1,3 @@
+case [:a, :b]
+in ::NilClass, * then nil
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_86_2.txt b/test/yarp/fixtures/seattlerb/case_in_86_2.txt
new file mode 100644
index 0000000000..4ad16c451a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_86_2.txt
@@ -0,0 +1,3 @@
+case [:a, :b]
+in *, ::NilClass then nil
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_array_pat_const.txt b/test/yarp/fixtures/seattlerb/case_in_array_pat_const.txt
new file mode 100644
index 0000000000..8551e48e2c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_array_pat_const.txt
@@ -0,0 +1,4 @@
+case :a
+in B[c]
+ :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_array_pat_const2.txt b/test/yarp/fixtures/seattlerb/case_in_array_pat_const2.txt
new file mode 100644
index 0000000000..fca423ea61
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_array_pat_const2.txt
@@ -0,0 +1,4 @@
+case :a
+in B::C[d]
+ :e
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_array_pat_paren_assign.txt b/test/yarp/fixtures/seattlerb/case_in_array_pat_paren_assign.txt
new file mode 100644
index 0000000000..c56f728337
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_array_pat_paren_assign.txt
@@ -0,0 +1,4 @@
+case :a
+in B(C => d)
+ :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_const.txt b/test/yarp/fixtures/seattlerb/case_in_const.txt
new file mode 100644
index 0000000000..5b0dcc18e2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_const.txt
@@ -0,0 +1,4 @@
+case Array
+in Class
+ :b
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_else.txt b/test/yarp/fixtures/seattlerb/case_in_else.txt
new file mode 100644
index 0000000000..6f096862c5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_else.txt
@@ -0,0 +1,7 @@
+case Array
+in Class
+ :b
+else
+ :c
+end
+
diff --git a/test/yarp/fixtures/seattlerb/case_in_find.txt b/test/yarp/fixtures/seattlerb/case_in_find.txt
new file mode 100644
index 0000000000..476fcabe11
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_find.txt
@@ -0,0 +1,3 @@
+case :a
+ in *a, :+, *b
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_find_array.txt b/test/yarp/fixtures/seattlerb/case_in_find_array.txt
new file mode 100644
index 0000000000..5eb4010b7f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_find_array.txt
@@ -0,0 +1,3 @@
+case :a
+in [*, :b, c, *]
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_hash_pat.txt b/test/yarp/fixtures/seattlerb/case_in_hash_pat.txt
new file mode 100644
index 0000000000..cb012e8d99
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_hash_pat.txt
@@ -0,0 +1,5 @@
+case :a
+in { b: 'c', d: "e" } then
+ :f
+end
+
diff --git a/test/yarp/fixtures/seattlerb/case_in_hash_pat_assign.txt b/test/yarp/fixtures/seattlerb/case_in_hash_pat_assign.txt
new file mode 100644
index 0000000000..58fd59ff9c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_hash_pat_assign.txt
@@ -0,0 +1,4 @@
+case :a
+in { b: Integer => x, d: "e", f: } then
+ :g
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_assign.txt b/test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_assign.txt
new file mode 100644
index 0000000000..de3a10740c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_assign.txt
@@ -0,0 +1,4 @@
+case :a
+in B(a: 42)
+ :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_true.txt b/test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_true.txt
new file mode 100644
index 0000000000..449fd0d4d4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_hash_pat_paren_true.txt
@@ -0,0 +1,5 @@
+case :a
+in b: true then
+ :c
+end
+
diff --git a/test/yarp/fixtures/seattlerb/case_in_hash_pat_rest.txt b/test/yarp/fixtures/seattlerb/case_in_hash_pat_rest.txt
new file mode 100644
index 0000000000..6f67cb1d10
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_hash_pat_rest.txt
@@ -0,0 +1,3 @@
+case :a
+in b: c, **rest then :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_hash_pat_rest_solo.txt b/test/yarp/fixtures/seattlerb/case_in_hash_pat_rest_solo.txt
new file mode 100644
index 0000000000..91d0592412
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_hash_pat_rest_solo.txt
@@ -0,0 +1,3 @@
+case :a
+in **rest then :d
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_if_unless_post_mod.txt b/test/yarp/fixtures/seattlerb/case_in_if_unless_post_mod.txt
new file mode 100644
index 0000000000..dbe24a5c8a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_if_unless_post_mod.txt
@@ -0,0 +1,6 @@
+case :a
+in A if true
+ :C
+in D unless false
+ :E
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_multiple.txt b/test/yarp/fixtures/seattlerb/case_in_multiple.txt
new file mode 100644
index 0000000000..1b6dd06cfe
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_multiple.txt
@@ -0,0 +1,6 @@
+case :a
+in A::B
+ :C
+in D::E
+ :F
+end
diff --git a/test/yarp/fixtures/seattlerb/case_in_or.txt b/test/yarp/fixtures/seattlerb/case_in_or.txt
new file mode 100644
index 0000000000..875e37749f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/case_in_or.txt
@@ -0,0 +1,5 @@
+case :a
+in B | C
+ :d
+end
+
diff --git a/test/yarp/fixtures/seattlerb/class_comments.txt b/test/yarp/fixtures/seattlerb/class_comments.txt
new file mode 100644
index 0000000000..9701eca7e5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/class_comments.txt
@@ -0,0 +1,9 @@
+# blah 1
+# blah 2
+
+class X
+ # blah 3
+ def blah
+ # blah 4
+ end
+end
diff --git a/test/yarp/fixtures/seattlerb/cond_unary_minus.txt b/test/yarp/fixtures/seattlerb/cond_unary_minus.txt
new file mode 100644
index 0000000000..80293115da
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/cond_unary_minus.txt
@@ -0,0 +1 @@
+if -1; end
diff --git a/test/yarp/fixtures/seattlerb/const_2_op_asgn_or2.txt b/test/yarp/fixtures/seattlerb/const_2_op_asgn_or2.txt
new file mode 100644
index 0000000000..6912c2d76b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/const_2_op_asgn_or2.txt
@@ -0,0 +1 @@
+::X::Y ||= 1
diff --git a/test/yarp/fixtures/seattlerb/const_3_op_asgn_or.txt b/test/yarp/fixtures/seattlerb/const_3_op_asgn_or.txt
new file mode 100644
index 0000000000..bbcd25a369
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/const_3_op_asgn_or.txt
@@ -0,0 +1 @@
+::X ||= 1
diff --git a/test/yarp/fixtures/seattlerb/const_op_asgn_and1.txt b/test/yarp/fixtures/seattlerb/const_op_asgn_and1.txt
new file mode 100644
index 0000000000..3964df0ead
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/const_op_asgn_and1.txt
@@ -0,0 +1 @@
+::X &= 1
diff --git a/test/yarp/fixtures/seattlerb/const_op_asgn_and2.txt b/test/yarp/fixtures/seattlerb/const_op_asgn_and2.txt
new file mode 100644
index 0000000000..1bef4b4154
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/const_op_asgn_and2.txt
@@ -0,0 +1 @@
+::X &&= 1
diff --git a/test/yarp/fixtures/seattlerb/const_op_asgn_or.txt b/test/yarp/fixtures/seattlerb/const_op_asgn_or.txt
new file mode 100644
index 0000000000..729e425262
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/const_op_asgn_or.txt
@@ -0,0 +1 @@
+X::Y ||= 1
diff --git a/test/yarp/fixtures/seattlerb/dasgn_icky2.txt b/test/yarp/fixtures/seattlerb/dasgn_icky2.txt
new file mode 100644
index 0000000000..2f50d32304
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dasgn_icky2.txt
@@ -0,0 +1,8 @@
+a do
+ v = nil
+ begin
+ yield
+ rescue Exception => v
+ break
+ end
+end
diff --git a/test/yarp/fixtures/seattlerb/defined_eh_parens.txt b/test/yarp/fixtures/seattlerb/defined_eh_parens.txt
new file mode 100644
index 0000000000..5ca5d9f4c4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defined_eh_parens.txt
@@ -0,0 +1 @@
+defined?(42)
diff --git a/test/yarp/fixtures/seattlerb/defn_arg_asplat_arg.txt b/test/yarp/fixtures/seattlerb/defn_arg_asplat_arg.txt
new file mode 100644
index 0000000000..f629a5de60
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_arg_asplat_arg.txt
@@ -0,0 +1 @@
+def call(interp, *, args) end
diff --git a/test/yarp/fixtures/seattlerb/defn_arg_forward_args.txt b/test/yarp/fixtures/seattlerb/defn_arg_forward_args.txt
new file mode 100644
index 0000000000..500e2e1fe0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_arg_forward_args.txt
@@ -0,0 +1 @@
+def a(x, ...); b(x, ...); end
diff --git a/test/yarp/fixtures/seattlerb/defn_args_forward_args.txt b/test/yarp/fixtures/seattlerb/defn_args_forward_args.txt
new file mode 100644
index 0000000000..fc1ee138de
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_args_forward_args.txt
@@ -0,0 +1 @@
+def a(x, y, z, ...); b(:get, z, ...); end
diff --git a/test/yarp/fixtures/seattlerb/defn_comments.txt b/test/yarp/fixtures/seattlerb/defn_comments.txt
new file mode 100644
index 0000000000..04c7ea1a10
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_comments.txt
@@ -0,0 +1,5 @@
+# blah 1
+# blah 2
+
+def blah
+end
diff --git a/test/yarp/fixtures/seattlerb/defn_endless_command.txt b/test/yarp/fixtures/seattlerb/defn_endless_command.txt
new file mode 100644
index 0000000000..172de2ca6c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_endless_command.txt
@@ -0,0 +1 @@
+def some_method = other_method 42
diff --git a/test/yarp/fixtures/seattlerb/defn_endless_command_rescue.txt b/test/yarp/fixtures/seattlerb/defn_endless_command_rescue.txt
new file mode 100644
index 0000000000..05ed392e38
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_endless_command_rescue.txt
@@ -0,0 +1 @@
+def some_method = other_method 42 rescue 24
diff --git a/test/yarp/fixtures/seattlerb/defn_forward_args.txt b/test/yarp/fixtures/seattlerb/defn_forward_args.txt
new file mode 100644
index 0000000000..46ed199875
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_forward_args.txt
@@ -0,0 +1 @@
+def a(...); b(...); end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_env.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_env.txt
new file mode 100644
index 0000000000..b512677195
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_env.txt
@@ -0,0 +1 @@
+def test(**testing) test_splat(**testing) end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_kwarg.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_kwarg.txt
new file mode 100644
index 0000000000..3962d2645c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_kwarg.txt
@@ -0,0 +1 @@
+def f(a, b: 1, c: 2) end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat.txt
new file mode 100644
index 0000000000..bd39819482
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat.txt
@@ -0,0 +1 @@
+def a(b: 1, **c) end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat_anon.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat_anon.txt
new file mode 100644
index 0000000000..aba71cba07
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_kwsplat_anon.txt
@@ -0,0 +1 @@
+def a(b: 1, **) end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_lvar.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_lvar.txt
new file mode 100644
index 0000000000..9eac108cca
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_lvar.txt
@@ -0,0 +1 @@
+def fun(kw: :val); kw; end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_no_parens.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_no_parens.txt
new file mode 100644
index 0000000000..481457bf0e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_no_parens.txt
@@ -0,0 +1,2 @@
+def f a: 1
+end
diff --git a/test/yarp/fixtures/seattlerb/defn_kwarg_val.txt b/test/yarp/fixtures/seattlerb/defn_kwarg_val.txt
new file mode 100644
index 0000000000..1a2803926f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_kwarg_val.txt
@@ -0,0 +1 @@
+def f(a, b:1) end
diff --git a/test/yarp/fixtures/seattlerb/defn_no_kwargs.txt b/test/yarp/fixtures/seattlerb/defn_no_kwargs.txt
new file mode 100644
index 0000000000..857ec8debb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_no_kwargs.txt
@@ -0,0 +1 @@
+def x(**nil); end
diff --git a/test/yarp/fixtures/seattlerb/defn_oneliner.txt b/test/yarp/fixtures/seattlerb/defn_oneliner.txt
new file mode 100644
index 0000000000..4aef08ce46
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_oneliner.txt
@@ -0,0 +1 @@
+def exec(cmd) = system(cmd)
diff --git a/test/yarp/fixtures/seattlerb/defn_oneliner_eq2.txt b/test/yarp/fixtures/seattlerb/defn_oneliner_eq2.txt
new file mode 100644
index 0000000000..1b1ce27a15
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_oneliner_eq2.txt
@@ -0,0 +1,3 @@
+class X
+ def ==(o) = 42
+end
diff --git a/test/yarp/fixtures/seattlerb/defn_oneliner_noargs.txt b/test/yarp/fixtures/seattlerb/defn_oneliner_noargs.txt
new file mode 100644
index 0000000000..cb4f76d244
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_oneliner_noargs.txt
@@ -0,0 +1 @@
+def exec = system
diff --git a/test/yarp/fixtures/seattlerb/defn_oneliner_noargs_parentheses.txt b/test/yarp/fixtures/seattlerb/defn_oneliner_noargs_parentheses.txt
new file mode 100644
index 0000000000..c582e896c1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_oneliner_noargs_parentheses.txt
@@ -0,0 +1 @@
+def exec() = system
diff --git a/test/yarp/fixtures/seattlerb/defn_oneliner_rescue.txt b/test/yarp/fixtures/seattlerb/defn_oneliner_rescue.txt
new file mode 100644
index 0000000000..ffe2228c9d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_oneliner_rescue.txt
@@ -0,0 +1,13 @@
+def exec(cmd)
+ system(cmd)
+rescue
+ nil
+end
+
+
+def exec(cmd)
+ system(cmd) rescue nil
+end
+
+
+def exec(cmd) = system(cmd) rescue nil
diff --git a/test/yarp/fixtures/seattlerb/defn_opt_last_arg.txt b/test/yarp/fixtures/seattlerb/defn_opt_last_arg.txt
new file mode 100644
index 0000000000..91500bf137
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_opt_last_arg.txt
@@ -0,0 +1,2 @@
+def m arg = false
+end
diff --git a/test/yarp/fixtures/seattlerb/defn_opt_reg.txt b/test/yarp/fixtures/seattlerb/defn_opt_reg.txt
new file mode 100644
index 0000000000..c665674bc4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_opt_reg.txt
@@ -0,0 +1 @@
+def f(a=nil, b) end
diff --git a/test/yarp/fixtures/seattlerb/defn_opt_splat_arg.txt b/test/yarp/fixtures/seattlerb/defn_opt_splat_arg.txt
new file mode 100644
index 0000000000..876398b478
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_opt_splat_arg.txt
@@ -0,0 +1 @@
+def f (a = 1, *b, c) end
diff --git a/test/yarp/fixtures/seattlerb/defn_powarg.txt b/test/yarp/fixtures/seattlerb/defn_powarg.txt
new file mode 100644
index 0000000000..73415f0db9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_powarg.txt
@@ -0,0 +1 @@
+def f(**opts) end
diff --git a/test/yarp/fixtures/seattlerb/defn_reg_opt_reg.txt b/test/yarp/fixtures/seattlerb/defn_reg_opt_reg.txt
new file mode 100644
index 0000000000..69f501a38e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_reg_opt_reg.txt
@@ -0,0 +1 @@
+def f(a, b = :c, d) end
diff --git a/test/yarp/fixtures/seattlerb/defn_splat_arg.txt b/test/yarp/fixtures/seattlerb/defn_splat_arg.txt
new file mode 100644
index 0000000000..a2a84bed30
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_splat_arg.txt
@@ -0,0 +1 @@
+def f(*, a) end
diff --git a/test/yarp/fixtures/seattlerb/defn_unary_not.txt b/test/yarp/fixtures/seattlerb/defn_unary_not.txt
new file mode 100644
index 0000000000..fb83c84a13
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defn_unary_not.txt
@@ -0,0 +1 @@
+def !@; true; end
diff --git a/test/yarp/fixtures/seattlerb/defns_reserved.txt b/test/yarp/fixtures/seattlerb/defns_reserved.txt
new file mode 100644
index 0000000000..7de9322f0d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defns_reserved.txt
@@ -0,0 +1 @@
+def self.return; end
diff --git a/test/yarp/fixtures/seattlerb/defs_as_arg_with_do_block_inside.txt b/test/yarp/fixtures/seattlerb/defs_as_arg_with_do_block_inside.txt
new file mode 100644
index 0000000000..4d493d73dd
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_as_arg_with_do_block_inside.txt
@@ -0,0 +1 @@
+p def self.b; x.y do; end; end
diff --git a/test/yarp/fixtures/seattlerb/defs_comments.txt b/test/yarp/fixtures/seattlerb/defs_comments.txt
new file mode 100644
index 0000000000..52b9b4a6b3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_comments.txt
@@ -0,0 +1,5 @@
+# blah 1
+# blah 2
+
+def self.blah
+end
diff --git a/test/yarp/fixtures/seattlerb/defs_endless_command.txt b/test/yarp/fixtures/seattlerb/defs_endless_command.txt
new file mode 100644
index 0000000000..3b605657de
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_endless_command.txt
@@ -0,0 +1 @@
+def x.some_method = other_method 42
diff --git a/test/yarp/fixtures/seattlerb/defs_endless_command_rescue.txt b/test/yarp/fixtures/seattlerb/defs_endless_command_rescue.txt
new file mode 100644
index 0000000000..6ece366db0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_endless_command_rescue.txt
@@ -0,0 +1 @@
+def x.some_method = other_method 42 rescue 24
diff --git a/test/yarp/fixtures/seattlerb/defs_kwarg.txt b/test/yarp/fixtures/seattlerb/defs_kwarg.txt
new file mode 100644
index 0000000000..59970a371e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_kwarg.txt
@@ -0,0 +1,2 @@
+def self.a b: 1
+end
diff --git a/test/yarp/fixtures/seattlerb/defs_oneliner.txt b/test/yarp/fixtures/seattlerb/defs_oneliner.txt
new file mode 100644
index 0000000000..1867edcfbf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_oneliner.txt
@@ -0,0 +1 @@
+def self.exec(cmd) = system(cmd)
diff --git a/test/yarp/fixtures/seattlerb/defs_oneliner_eq2.txt b/test/yarp/fixtures/seattlerb/defs_oneliner_eq2.txt
new file mode 100644
index 0000000000..1e55f68bf3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_oneliner_eq2.txt
@@ -0,0 +1,3 @@
+class X
+ def self.==(o) = 42
+end
diff --git a/test/yarp/fixtures/seattlerb/defs_oneliner_rescue.txt b/test/yarp/fixtures/seattlerb/defs_oneliner_rescue.txt
new file mode 100644
index 0000000000..7a04012b8f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/defs_oneliner_rescue.txt
@@ -0,0 +1,13 @@
+def self.exec(cmd)
+ system(cmd)
+rescue
+ nil
+end
+
+
+def self.exec(cmd)
+ system(cmd) rescue nil
+end
+
+
+def self.exec(cmd) = system(cmd) rescue nil
diff --git a/test/yarp/fixtures/seattlerb/do_bug.txt b/test/yarp/fixtures/seattlerb/do_bug.txt
new file mode 100644
index 0000000000..a274e72baf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/do_bug.txt
@@ -0,0 +1,4 @@
+a 1
+a.b do |c|
+ # do nothing
+end
diff --git a/test/yarp/fixtures/seattlerb/do_lambda.txt b/test/yarp/fixtures/seattlerb/do_lambda.txt
new file mode 100644
index 0000000000..06d2a38d30
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/do_lambda.txt
@@ -0,0 +1 @@
+->() do end
diff --git a/test/yarp/fixtures/seattlerb/dot2_nil__26.txt b/test/yarp/fixtures/seattlerb/dot2_nil__26.txt
new file mode 100644
index 0000000000..cc070eb69f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dot2_nil__26.txt
@@ -0,0 +1 @@
+a..
diff --git a/test/yarp/fixtures/seattlerb/dot3_nil__26.txt b/test/yarp/fixtures/seattlerb/dot3_nil__26.txt
new file mode 100644
index 0000000000..7f4aef7af7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dot3_nil__26.txt
@@ -0,0 +1 @@
+a...
diff --git a/test/yarp/fixtures/seattlerb/dstr_evstr.txt b/test/yarp/fixtures/seattlerb/dstr_evstr.txt
new file mode 100644
index 0000000000..5fe4a858c1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dstr_evstr.txt
@@ -0,0 +1 @@
+"#{'a'}#{b}"
diff --git a/test/yarp/fixtures/seattlerb/dstr_evstr_empty_end.txt b/test/yarp/fixtures/seattlerb/dstr_evstr_empty_end.txt
new file mode 100644
index 0000000000..7a55030fa8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dstr_evstr_empty_end.txt
@@ -0,0 +1 @@
+:"#{field}"
diff --git a/test/yarp/fixtures/seattlerb/dstr_lex_state.txt b/test/yarp/fixtures/seattlerb/dstr_lex_state.txt
new file mode 100644
index 0000000000..6cac1d8e95
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dstr_lex_state.txt
@@ -0,0 +1 @@
+"#{p:a}"
diff --git a/test/yarp/fixtures/seattlerb/dstr_str.txt b/test/yarp/fixtures/seattlerb/dstr_str.txt
new file mode 100644
index 0000000000..226ce2b191
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dstr_str.txt
@@ -0,0 +1 @@
+"#{'a'} b"
diff --git a/test/yarp/fixtures/seattlerb/dsym_esc_to_sym.txt b/test/yarp/fixtures/seattlerb/dsym_esc_to_sym.txt
new file mode 100644
index 0000000000..e5781453c1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dsym_esc_to_sym.txt
@@ -0,0 +1 @@
+:"Variet\303\240"
diff --git a/test/yarp/fixtures/seattlerb/dsym_to_sym.txt b/test/yarp/fixtures/seattlerb/dsym_to_sym.txt
new file mode 100644
index 0000000000..813c90342c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/dsym_to_sym.txt
@@ -0,0 +1,3 @@
+alias :"<<" :">>"
+
+alias :<< :>>
diff --git a/test/yarp/fixtures/seattlerb/eq_begin_line_numbers.txt b/test/yarp/fixtures/seattlerb/eq_begin_line_numbers.txt
new file mode 100644
index 0000000000..aae82e1207
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/eq_begin_line_numbers.txt
@@ -0,0 +1,6 @@
+1
+=begin
+comment
+comment
+=end
+2
diff --git a/test/yarp/fixtures/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt b/test/yarp/fixtures/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt
new file mode 100644
index 0000000000..88ff599e91
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt
@@ -0,0 +1,3 @@
+h[k]=begin
+ 42
+ end
diff --git a/test/yarp/fixtures/seattlerb/evstr_evstr.txt b/test/yarp/fixtures/seattlerb/evstr_evstr.txt
new file mode 100644
index 0000000000..cf0b5ee873
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/evstr_evstr.txt
@@ -0,0 +1 @@
+"#{a}#{b}"
diff --git a/test/yarp/fixtures/seattlerb/evstr_str.txt b/test/yarp/fixtures/seattlerb/evstr_str.txt
new file mode 100644
index 0000000000..5746909b19
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/evstr_str.txt
@@ -0,0 +1 @@
+"#{a} b"
diff --git a/test/yarp/fixtures/seattlerb/expr_not_bang.txt b/test/yarp/fixtures/seattlerb/expr_not_bang.txt
new file mode 100644
index 0000000000..6ed80c76d3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/expr_not_bang.txt
@@ -0,0 +1 @@
+! a b
diff --git a/test/yarp/fixtures/seattlerb/f_kw.txt b/test/yarp/fixtures/seattlerb/f_kw.txt
new file mode 100644
index 0000000000..4dd42662b8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/f_kw.txt
@@ -0,0 +1 @@
+def x k:42; end
diff --git a/test/yarp/fixtures/seattlerb/f_kw__required.txt b/test/yarp/fixtures/seattlerb/f_kw__required.txt
new file mode 100644
index 0000000000..2e1e258ff0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/f_kw__required.txt
@@ -0,0 +1 @@
+def x k:; end
diff --git a/test/yarp/fixtures/seattlerb/flip2_env_lvar.txt b/test/yarp/fixtures/seattlerb/flip2_env_lvar.txt
new file mode 100644
index 0000000000..619b2c915e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/flip2_env_lvar.txt
@@ -0,0 +1 @@
+if a..b then end
diff --git a/test/yarp/fixtures/seattlerb/float_with_if_modifier.txt b/test/yarp/fixtures/seattlerb/float_with_if_modifier.txt
new file mode 100644
index 0000000000..6a62d4a308
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/float_with_if_modifier.txt
@@ -0,0 +1 @@
+1.0if true
diff --git a/test/yarp/fixtures/seattlerb/heredoc__backslash_dos_format.txt b/test/yarp/fixtures/seattlerb/heredoc__backslash_dos_format.txt
new file mode 100644
index 0000000000..cfbcb2a11d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc__backslash_dos_format.txt
@@ -0,0 +1,5 @@
+str = <<-XXX
+before\
+after
+XXX
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_backslash_nl.txt b/test/yarp/fixtures/seattlerb/heredoc_backslash_nl.txt
new file mode 100644
index 0000000000..0cc5b35fd5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_backslash_nl.txt
@@ -0,0 +1,8 @@
+" why would someone do this? \
+ blah
+"
+
+<<-DESC
+ why would someone do this? \
+ blah
+DESC
diff --git a/test/yarp/fixtures/seattlerb/heredoc_bad_hex_escape.txt b/test/yarp/fixtures/seattlerb/heredoc_bad_hex_escape.txt
new file mode 100644
index 0000000000..2c386cc6a9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_bad_hex_escape.txt
@@ -0,0 +1,3 @@
+s = <<eos
+a\xE9b
+eos
diff --git a/test/yarp/fixtures/seattlerb/heredoc_bad_oct_escape.txt b/test/yarp/fixtures/seattlerb/heredoc_bad_oct_escape.txt
new file mode 100644
index 0000000000..235a041e90
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_bad_oct_escape.txt
@@ -0,0 +1,5 @@
+s = <<-EOS
+a\247b
+cöd
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_comma_arg.txt b/test/yarp/fixtures/seattlerb/heredoc_comma_arg.txt
new file mode 100644
index 0000000000..c230b12f65
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_comma_arg.txt
@@ -0,0 +1,7 @@
+[" some text
+",]
+
+[<<-FILE,
+ some text
+FILE
+]
diff --git a/test/yarp/fixtures/seattlerb/heredoc_lineno.txt b/test/yarp/fixtures/seattlerb/heredoc_lineno.txt
new file mode 100644
index 0000000000..73a2e3806b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_lineno.txt
@@ -0,0 +1,7 @@
+c = <<'CCC'
+line2
+line3
+line4
+CCC
+
+d = 42
diff --git a/test/yarp/fixtures/seattlerb/heredoc_nested.txt b/test/yarp/fixtures/seattlerb/heredoc_nested.txt
new file mode 100644
index 0000000000..508d6d3c05
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_nested.txt
@@ -0,0 +1,7 @@
+[<<A,
+#{<<B}
+b
+B
+a
+A
+0]
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly.txt
new file mode 100644
index 0000000000..e630ff62b4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly.txt
@@ -0,0 +1,7 @@
+a = <<~"EOF"
+ x
+ y
+ z
+ EOF
+
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt
new file mode 100644
index 0000000000..61b62157db
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt
@@ -0,0 +1,4 @@
+a = foo(<<~EOF.chop)
+
+ #{bar}baz
+ EOF
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_lines.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_lines.txt
new file mode 100644
index 0000000000..0d89134c87
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_blank_lines.txt
@@ -0,0 +1,7 @@
+a = <<~EOF
+ x
+
+ z
+EOF
+
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_empty.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_empty.txt
new file mode 100644
index 0000000000..4602d757fb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_empty.txt
@@ -0,0 +1,2 @@
+<<~A
+A
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_interp.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_interp.txt
new file mode 100644
index 0000000000..47ff3c9070
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_interp.txt
@@ -0,0 +1,5 @@
+a = <<~EOF
+ w
+ x#{42} y
+ z
+ EOF
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_no_indent.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_no_indent.txt
new file mode 100644
index 0000000000..7076f6ef71
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_no_indent.txt
@@ -0,0 +1,3 @@
+<<~A
+a
+A
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs.txt
new file mode 100644
index 0000000000..b193f0473b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs.txt
@@ -0,0 +1,6 @@
+a = <<~"EOF"
+ blah blah
+ blah blah
+ EOF
+
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs_extra.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs_extra.txt
new file mode 100644
index 0000000000..5b75dd2b59
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_tabs_extra.txt
@@ -0,0 +1,6 @@
+a = <<~"EOF"
+ blah blah
+ blah blah
+ EOF
+
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_squiggly_visually_blank_lines.txt b/test/yarp/fixtures/seattlerb/heredoc_squiggly_visually_blank_lines.txt
new file mode 100644
index 0000000000..0d89134c87
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_squiggly_visually_blank_lines.txt
@@ -0,0 +1,7 @@
+a = <<~EOF
+ x
+
+ z
+EOF
+
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_trailing_slash_continued_call.txt b/test/yarp/fixtures/seattlerb/heredoc_trailing_slash_continued_call.txt
new file mode 100644
index 0000000000..12c8fac126
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_trailing_slash_continued_call.txt
@@ -0,0 +1,4 @@
+<<END\
+blah
+END
+.strip
diff --git a/test/yarp/fixtures/seattlerb/heredoc_unicode.txt b/test/yarp/fixtures/seattlerb/heredoc_unicode.txt
new file mode 100644
index 0000000000..216a5cfe24
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_unicode.txt
@@ -0,0 +1,4 @@
+<<OOTPÜT
+.
+OOTPÜT
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes.txt b/test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes.txt
new file mode 100644
index 0000000000..cb4967d154
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes.txt
@@ -0,0 +1,5 @@
+<<EOS
+foo\rbar
+baz\r
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes_windows.txt b/test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes_windows.txt
new file mode 100644
index 0000000000..75ed936b5d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_carriage_return_escapes_windows.txt
@@ -0,0 +1,5 @@
+<<EOS
+foo\rbar
+baz\r
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt b/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt
new file mode 100644
index 0000000000..1c58c05cc5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt
@@ -0,0 +1,4 @@
+<<'eot'
+body
+eot
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns.txt b/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns.txt
new file mode 100644
index 0000000000..706cb0d5c0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns.txt
@@ -0,0 +1,5 @@
+<<EOS
+foo bar
+baz
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns_windows.txt b/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns_windows.txt
new file mode 100644
index 0000000000..8ed84799b1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_extra_carriage_returns_windows.txt
@@ -0,0 +1,5 @@
+<<EOS
+foo bar
+baz
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt b/test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt
new file mode 100644
index 0000000000..250e606f45
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt
@@ -0,0 +1,4 @@
+<<EOS
+foo\r#@bar
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt b/test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt
new file mode 100644
index 0000000000..12f97aff5e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt
@@ -0,0 +1,4 @@
+<<EOS
+foo\r#@bar
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_not_global_interpolation.txt b/test/yarp/fixtures/seattlerb/heredoc_with_not_global_interpolation.txt
new file mode 100644
index 0000000000..f94c2c9e27
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_not_global_interpolation.txt
@@ -0,0 +1,3 @@
+<<-HEREDOC
+#${
+HEREDOC
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns.txt b/test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns.txt
new file mode 100644
index 0000000000..468ba85cf7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns.txt
@@ -0,0 +1,6 @@
+<<EOS
+
+
+\r
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns_windows.txt b/test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns_windows.txt
new file mode 100644
index 0000000000..e973eff110
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_with_only_carriage_returns_windows.txt
@@ -0,0 +1,6 @@
+<<EOS
+
+
+\r
+EOS
+
diff --git a/test/yarp/fixtures/seattlerb/heredoc_wtf_I_hate_you.txt b/test/yarp/fixtures/seattlerb/heredoc_wtf_I_hate_you.txt
new file mode 100644
index 0000000000..5c73907cae
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/heredoc_wtf_I_hate_you.txt
@@ -0,0 +1,4 @@
+p <<-END+'b
+ a
+ END
+ c'+'d'
diff --git a/test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers.txt b/test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers.txt
new file mode 100644
index 0000000000..8008127dc9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers.txt
@@ -0,0 +1,13 @@
+if true
+ p 1
+ a.b 2
+ c.d 3, 4
+ e.f 5
+ g.h 6, 7
+ p(1)
+ a.b(2)
+ c.d(3, 4)
+ e.f(5)
+ g.h(6, 7)
+end
+
diff --git a/test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers2.txt b/test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers2.txt
new file mode 100644
index 0000000000..898a70fb75
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/i_fucking_hate_line_numbers2.txt
@@ -0,0 +1,8 @@
+if true then
+ p('a')
+ b = 1
+ p b
+ c =1
+end
+a
+
diff --git a/test/yarp/fixtures/seattlerb/i_have_no_freakin_clue.txt b/test/yarp/fixtures/seattlerb/i_have_no_freakin_clue.txt
new file mode 100644
index 0000000000..3259097492
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/i_have_no_freakin_clue.txt
@@ -0,0 +1,2 @@
+1 ? b('') : 2
+a d: 3
diff --git a/test/yarp/fixtures/seattlerb/if_elsif.txt b/test/yarp/fixtures/seattlerb/if_elsif.txt
new file mode 100644
index 0000000000..bc1c0a2b3d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/if_elsif.txt
@@ -0,0 +1 @@
+if 1; elsif 2; end
diff --git a/test/yarp/fixtures/seattlerb/if_symbol.txt b/test/yarp/fixtures/seattlerb/if_symbol.txt
new file mode 100644
index 0000000000..8d6e958ede
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/if_symbol.txt
@@ -0,0 +1 @@
+if f :x; end
diff --git a/test/yarp/fixtures/seattlerb/in_expr_no_case.txt b/test/yarp/fixtures/seattlerb/in_expr_no_case.txt
new file mode 100644
index 0000000000..40db7f868b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/in_expr_no_case.txt
@@ -0,0 +1 @@
+'woot' in String
diff --git a/test/yarp/fixtures/seattlerb/index_0.txt b/test/yarp/fixtures/seattlerb/index_0.txt
new file mode 100644
index 0000000000..050d4566ba
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/index_0.txt
@@ -0,0 +1 @@
+a[] = b
diff --git a/test/yarp/fixtures/seattlerb/index_0_opasgn.txt b/test/yarp/fixtures/seattlerb/index_0_opasgn.txt
new file mode 100644
index 0000000000..7189f0c3ea
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/index_0_opasgn.txt
@@ -0,0 +1 @@
+a[] += b
diff --git a/test/yarp/fixtures/seattlerb/integer_with_if_modifier.txt b/test/yarp/fixtures/seattlerb/integer_with_if_modifier.txt
new file mode 100644
index 0000000000..bf2f621e92
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/integer_with_if_modifier.txt
@@ -0,0 +1 @@
+1_234if true
diff --git a/test/yarp/fixtures/seattlerb/interpolated_symbol_array_line_breaks.txt b/test/yarp/fixtures/seattlerb/interpolated_symbol_array_line_breaks.txt
new file mode 100644
index 0000000000..f4c7cb9662
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/interpolated_symbol_array_line_breaks.txt
@@ -0,0 +1,5 @@
+%I(
+a
+b
+)
+1
diff --git a/test/yarp/fixtures/seattlerb/interpolated_word_array_line_breaks.txt b/test/yarp/fixtures/seattlerb/interpolated_word_array_line_breaks.txt
new file mode 100644
index 0000000000..d52b4789cf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/interpolated_word_array_line_breaks.txt
@@ -0,0 +1,5 @@
+%W(
+a
+b
+)
+1
diff --git a/test/yarp/fixtures/seattlerb/iter_args_1.txt b/test/yarp/fixtures/seattlerb/iter_args_1.txt
new file mode 100644
index 0000000000..c890ef62c3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_1.txt
@@ -0,0 +1 @@
+f { |a,b| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_10_1.txt b/test/yarp/fixtures/seattlerb/iter_args_10_1.txt
new file mode 100644
index 0000000000..3f558c5392
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_10_1.txt
@@ -0,0 +1 @@
+f { |a, b = 42, *c| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_10_2.txt b/test/yarp/fixtures/seattlerb/iter_args_10_2.txt
new file mode 100644
index 0000000000..4158e79d14
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_10_2.txt
@@ -0,0 +1 @@
+f { |a, b = 42, *c, &d| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_11_1.txt b/test/yarp/fixtures/seattlerb/iter_args_11_1.txt
new file mode 100644
index 0000000000..f86175c1a0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_11_1.txt
@@ -0,0 +1 @@
+f { |a, b = 42, *c, d| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_11_2.txt b/test/yarp/fixtures/seattlerb/iter_args_11_2.txt
new file mode 100644
index 0000000000..e4b017e44a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_11_2.txt
@@ -0,0 +1 @@
+f { |a, b = 42, *c, d, &e| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_2__19.txt b/test/yarp/fixtures/seattlerb/iter_args_2__19.txt
new file mode 100644
index 0000000000..84dd744243
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_2__19.txt
@@ -0,0 +1 @@
+f { |(a, b)| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_3.txt b/test/yarp/fixtures/seattlerb/iter_args_3.txt
new file mode 100644
index 0000000000..261968ff13
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_3.txt
@@ -0,0 +1 @@
+f { |a, (b, c), d| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_4.txt b/test/yarp/fixtures/seattlerb/iter_args_4.txt
new file mode 100644
index 0000000000..7db4d43ad3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_4.txt
@@ -0,0 +1 @@
+f { |a, *b, c| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_5.txt b/test/yarp/fixtures/seattlerb/iter_args_5.txt
new file mode 100644
index 0000000000..088fcdfcc5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_5.txt
@@ -0,0 +1 @@
+f { |a, &b| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_6.txt b/test/yarp/fixtures/seattlerb/iter_args_6.txt
new file mode 100644
index 0000000000..e980ec064b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_6.txt
@@ -0,0 +1 @@
+f { |a, b=42, c| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_7_1.txt b/test/yarp/fixtures/seattlerb/iter_args_7_1.txt
new file mode 100644
index 0000000000..e1dbf4b312
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_7_1.txt
@@ -0,0 +1 @@
+f { |a = 42, *b| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_7_2.txt b/test/yarp/fixtures/seattlerb/iter_args_7_2.txt
new file mode 100644
index 0000000000..e46e78e00e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_7_2.txt
@@ -0,0 +1 @@
+f { |a = 42, *b, &c| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_8_1.txt b/test/yarp/fixtures/seattlerb/iter_args_8_1.txt
new file mode 100644
index 0000000000..a0ec82ea5b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_8_1.txt
@@ -0,0 +1 @@
+f { |a = 42, *b, c| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_8_2.txt b/test/yarp/fixtures/seattlerb/iter_args_8_2.txt
new file mode 100644
index 0000000000..a1839fe706
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_8_2.txt
@@ -0,0 +1 @@
+f { |a = 42, *b, c, &d| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_9_1.txt b/test/yarp/fixtures/seattlerb/iter_args_9_1.txt
new file mode 100644
index 0000000000..13e5b20fe7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_9_1.txt
@@ -0,0 +1 @@
+f { |a = 42, b| }
diff --git a/test/yarp/fixtures/seattlerb/iter_args_9_2.txt b/test/yarp/fixtures/seattlerb/iter_args_9_2.txt
new file mode 100644
index 0000000000..83f6e1e029
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_args_9_2.txt
@@ -0,0 +1 @@
+f { |a = 42, b, &c| }
diff --git a/test/yarp/fixtures/seattlerb/iter_kwarg.txt b/test/yarp/fixtures/seattlerb/iter_kwarg.txt
new file mode 100644
index 0000000000..d4296cad76
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_kwarg.txt
@@ -0,0 +1 @@
+a { |b: 1| }
diff --git a/test/yarp/fixtures/seattlerb/iter_kwarg_kwsplat.txt b/test/yarp/fixtures/seattlerb/iter_kwarg_kwsplat.txt
new file mode 100644
index 0000000000..dd0ea13a6f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/iter_kwarg_kwsplat.txt
@@ -0,0 +1 @@
+a { |b: 1, **c| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me.txt b/test/yarp/fixtures/seattlerb/kill_me.txt
new file mode 100644
index 0000000000..9f95860b82
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me.txt
@@ -0,0 +1 @@
+f { |a, (b, *c)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me2.txt b/test/yarp/fixtures/seattlerb/kill_me2.txt
new file mode 100644
index 0000000000..8abfe3f634
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me2.txt
@@ -0,0 +1 @@
+f { |*a, b| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me3.txt b/test/yarp/fixtures/seattlerb/kill_me3.txt
new file mode 100644
index 0000000000..6f43ab7b1d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me3.txt
@@ -0,0 +1 @@
+f { |*a, b, &c| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me4.txt b/test/yarp/fixtures/seattlerb/kill_me4.txt
new file mode 100644
index 0000000000..7070e1e964
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me4.txt
@@ -0,0 +1 @@
+a=b ? true: false
diff --git a/test/yarp/fixtures/seattlerb/kill_me5.txt b/test/yarp/fixtures/seattlerb/kill_me5.txt
new file mode 100644
index 0000000000..6d52692481
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me5.txt
@@ -0,0 +1 @@
+f ->() { g do end }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_10.txt b/test/yarp/fixtures/seattlerb/kill_me_10.txt
new file mode 100644
index 0000000000..89974f5114
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_10.txt
@@ -0,0 +1 @@
+f { |a, (*b, c)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_11.txt b/test/yarp/fixtures/seattlerb/kill_me_11.txt
new file mode 100644
index 0000000000..911d037961
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_11.txt
@@ -0,0 +1 @@
+f { |a, (*)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_12.txt b/test/yarp/fixtures/seattlerb/kill_me_12.txt
new file mode 100644
index 0000000000..2405a80ec1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_12.txt
@@ -0,0 +1 @@
+f { |a, (*, b)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_6.txt b/test/yarp/fixtures/seattlerb/kill_me_6.txt
new file mode 100644
index 0000000000..3a45ae86fb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_6.txt
@@ -0,0 +1 @@
+f { |a, (b, *c, d)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_7.txt b/test/yarp/fixtures/seattlerb/kill_me_7.txt
new file mode 100644
index 0000000000..55272a1fc4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_7.txt
@@ -0,0 +1 @@
+f { |a, (b, *)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_8.txt b/test/yarp/fixtures/seattlerb/kill_me_8.txt
new file mode 100644
index 0000000000..76740db4ff
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_8.txt
@@ -0,0 +1 @@
+f { |a, (b, *, c)| }
diff --git a/test/yarp/fixtures/seattlerb/kill_me_9.txt b/test/yarp/fixtures/seattlerb/kill_me_9.txt
new file mode 100644
index 0000000000..b65f7fd052
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/kill_me_9.txt
@@ -0,0 +1 @@
+f { |a, (*b)| }
diff --git a/test/yarp/fixtures/seattlerb/label_vs_string.txt b/test/yarp/fixtures/seattlerb/label_vs_string.txt
new file mode 100644
index 0000000000..27ba8b64de
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/label_vs_string.txt
@@ -0,0 +1,2 @@
+_buf << ':
+'
diff --git a/test/yarp/fixtures/seattlerb/lambda_do_vs_brace.txt b/test/yarp/fixtures/seattlerb/lambda_do_vs_brace.txt
new file mode 100644
index 0000000000..bbf663a46a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lambda_do_vs_brace.txt
@@ -0,0 +1,7 @@
+f -> do end
+
+f -> {}
+
+f ->() do end
+
+f ->() {}
diff --git a/test/yarp/fixtures/seattlerb/lasgn_arg_rescue_arg.txt b/test/yarp/fixtures/seattlerb/lasgn_arg_rescue_arg.txt
new file mode 100644
index 0000000000..0dad496c28
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_arg_rescue_arg.txt
@@ -0,0 +1 @@
+a = 1 rescue 2
diff --git a/test/yarp/fixtures/seattlerb/lasgn_call_bracket_rescue_arg.txt b/test/yarp/fixtures/seattlerb/lasgn_call_bracket_rescue_arg.txt
new file mode 100644
index 0000000000..3f63c0b748
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_call_bracket_rescue_arg.txt
@@ -0,0 +1 @@
+a = b(1) rescue 2
diff --git a/test/yarp/fixtures/seattlerb/lasgn_call_nobracket_rescue_arg.txt b/test/yarp/fixtures/seattlerb/lasgn_call_nobracket_rescue_arg.txt
new file mode 100644
index 0000000000..0e86f1587d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_call_nobracket_rescue_arg.txt
@@ -0,0 +1 @@
+a = b 1 rescue 2
diff --git a/test/yarp/fixtures/seattlerb/lasgn_command.txt b/test/yarp/fixtures/seattlerb/lasgn_command.txt
new file mode 100644
index 0000000000..aca35b880c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_command.txt
@@ -0,0 +1 @@
+a = b.c 1
diff --git a/test/yarp/fixtures/seattlerb/lasgn_env.txt b/test/yarp/fixtures/seattlerb/lasgn_env.txt
new file mode 100644
index 0000000000..aec10273e5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_env.txt
@@ -0,0 +1 @@
+a = 42
diff --git a/test/yarp/fixtures/seattlerb/lasgn_ivar_env.txt b/test/yarp/fixtures/seattlerb/lasgn_ivar_env.txt
new file mode 100644
index 0000000000..2fa8471c01
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_ivar_env.txt
@@ -0,0 +1 @@
+@a = 42
diff --git a/test/yarp/fixtures/seattlerb/lasgn_lasgn_command_call.txt b/test/yarp/fixtures/seattlerb/lasgn_lasgn_command_call.txt
new file mode 100644
index 0000000000..5147131852
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_lasgn_command_call.txt
@@ -0,0 +1 @@
+a = b = c 1
diff --git a/test/yarp/fixtures/seattlerb/lasgn_middle_splat.txt b/test/yarp/fixtures/seattlerb/lasgn_middle_splat.txt
new file mode 100644
index 0000000000..bb378ca680
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/lasgn_middle_splat.txt
@@ -0,0 +1 @@
+a = b, *c, d
diff --git a/test/yarp/fixtures/seattlerb/magic_encoding_comment.txt b/test/yarp/fixtures/seattlerb/magic_encoding_comment.txt
new file mode 100644
index 0000000000..a02711ea05
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/magic_encoding_comment.txt
@@ -0,0 +1,4 @@
+# encoding: utf-8
+class ExampleUTF8ClassNameVarietà; def self.è; così = :però; end
+end
+
diff --git a/test/yarp/fixtures/seattlerb/masgn_anon_splat_arg.txt b/test/yarp/fixtures/seattlerb/masgn_anon_splat_arg.txt
new file mode 100644
index 0000000000..b796a742ed
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_anon_splat_arg.txt
@@ -0,0 +1 @@
+*, a = b
diff --git a/test/yarp/fixtures/seattlerb/masgn_arg_colon_arg.txt b/test/yarp/fixtures/seattlerb/masgn_arg_colon_arg.txt
new file mode 100644
index 0000000000..e0919793d4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_arg_colon_arg.txt
@@ -0,0 +1 @@
+a, b::c = d
diff --git a/test/yarp/fixtures/seattlerb/masgn_arg_ident.txt b/test/yarp/fixtures/seattlerb/masgn_arg_ident.txt
new file mode 100644
index 0000000000..45f248d854
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_arg_ident.txt
@@ -0,0 +1 @@
+a, b.C = d
diff --git a/test/yarp/fixtures/seattlerb/masgn_arg_splat_arg.txt b/test/yarp/fixtures/seattlerb/masgn_arg_splat_arg.txt
new file mode 100644
index 0000000000..05fe7c4d5f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_arg_splat_arg.txt
@@ -0,0 +1 @@
+a, *b, c = d
diff --git a/test/yarp/fixtures/seattlerb/masgn_colon2.txt b/test/yarp/fixtures/seattlerb/masgn_colon2.txt
new file mode 100644
index 0000000000..4e4f838d7d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_colon2.txt
@@ -0,0 +1 @@
+a, b::C = 1, 2
diff --git a/test/yarp/fixtures/seattlerb/masgn_colon3.txt b/test/yarp/fixtures/seattlerb/masgn_colon3.txt
new file mode 100644
index 0000000000..46098ba8c5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_colon3.txt
@@ -0,0 +1 @@
+::A, ::B = 1, 2
diff --git a/test/yarp/fixtures/seattlerb/masgn_command_call.txt b/test/yarp/fixtures/seattlerb/masgn_command_call.txt
new file mode 100644
index 0000000000..6da01e8a31
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_command_call.txt
@@ -0,0 +1 @@
+a, = b.c 1
diff --git a/test/yarp/fixtures/seattlerb/masgn_double_paren.txt b/test/yarp/fixtures/seattlerb/masgn_double_paren.txt
new file mode 100644
index 0000000000..ffac0a85a3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_double_paren.txt
@@ -0,0 +1 @@
+((a,b))=c
diff --git a/test/yarp/fixtures/seattlerb/masgn_lhs_splat.txt b/test/yarp/fixtures/seattlerb/masgn_lhs_splat.txt
new file mode 100644
index 0000000000..2419ef1671
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_lhs_splat.txt
@@ -0,0 +1 @@
+*a = 1, 2, 3
diff --git a/test/yarp/fixtures/seattlerb/masgn_paren.txt b/test/yarp/fixtures/seattlerb/masgn_paren.txt
new file mode 100644
index 0000000000..3889b9ff48
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_paren.txt
@@ -0,0 +1 @@
+(a, b) = c.d
diff --git a/test/yarp/fixtures/seattlerb/masgn_splat_arg.txt b/test/yarp/fixtures/seattlerb/masgn_splat_arg.txt
new file mode 100644
index 0000000000..a7c91425b0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_splat_arg.txt
@@ -0,0 +1 @@
+*a, b = c
diff --git a/test/yarp/fixtures/seattlerb/masgn_splat_arg_arg.txt b/test/yarp/fixtures/seattlerb/masgn_splat_arg_arg.txt
new file mode 100644
index 0000000000..46196bd703
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_splat_arg_arg.txt
@@ -0,0 +1 @@
+*a, b, c = d
diff --git a/test/yarp/fixtures/seattlerb/masgn_star.txt b/test/yarp/fixtures/seattlerb/masgn_star.txt
new file mode 100644
index 0000000000..c5eea37de2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_star.txt
@@ -0,0 +1 @@
+* = 1
diff --git a/test/yarp/fixtures/seattlerb/masgn_var_star_var.txt b/test/yarp/fixtures/seattlerb/masgn_var_star_var.txt
new file mode 100644
index 0000000000..04089c36ac
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/masgn_var_star_var.txt
@@ -0,0 +1 @@
+a, *, b = c
diff --git a/test/yarp/fixtures/seattlerb/messy_op_asgn_lineno.txt b/test/yarp/fixtures/seattlerb/messy_op_asgn_lineno.txt
new file mode 100644
index 0000000000..a7d1035ae3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/messy_op_asgn_lineno.txt
@@ -0,0 +1 @@
+a (B::C *= d e)
diff --git a/test/yarp/fixtures/seattlerb/method_call_assoc_trailing_comma.txt b/test/yarp/fixtures/seattlerb/method_call_assoc_trailing_comma.txt
new file mode 100644
index 0000000000..86f0fbdfc9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/method_call_assoc_trailing_comma.txt
@@ -0,0 +1 @@
+a.f(1=>2,)
diff --git a/test/yarp/fixtures/seattlerb/method_call_trailing_comma.txt b/test/yarp/fixtures/seattlerb/method_call_trailing_comma.txt
new file mode 100644
index 0000000000..1a155fba12
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/method_call_trailing_comma.txt
@@ -0,0 +1 @@
+a.f(1,)
diff --git a/test/yarp/fixtures/seattlerb/mlhs_back_anonsplat.txt b/test/yarp/fixtures/seattlerb/mlhs_back_anonsplat.txt
new file mode 100644
index 0000000000..7389b95563
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_back_anonsplat.txt
@@ -0,0 +1 @@
+a, b, c, * = f
diff --git a/test/yarp/fixtures/seattlerb/mlhs_back_splat.txt b/test/yarp/fixtures/seattlerb/mlhs_back_splat.txt
new file mode 100644
index 0000000000..ec5d23889a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_back_splat.txt
@@ -0,0 +1 @@
+a, b, c, *s = f
diff --git a/test/yarp/fixtures/seattlerb/mlhs_front_anonsplat.txt b/test/yarp/fixtures/seattlerb/mlhs_front_anonsplat.txt
new file mode 100644
index 0000000000..67e569438c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_front_anonsplat.txt
@@ -0,0 +1 @@
+*, x, y, z = f
diff --git a/test/yarp/fixtures/seattlerb/mlhs_front_splat.txt b/test/yarp/fixtures/seattlerb/mlhs_front_splat.txt
new file mode 100644
index 0000000000..dabadc382d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_front_splat.txt
@@ -0,0 +1 @@
+*s, x, y, z = f
diff --git a/test/yarp/fixtures/seattlerb/mlhs_keyword.txt b/test/yarp/fixtures/seattlerb/mlhs_keyword.txt
new file mode 100644
index 0000000000..899e7f8ed3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_keyword.txt
@@ -0,0 +1 @@
+a.!=(true, true)
diff --git a/test/yarp/fixtures/seattlerb/mlhs_mid_anonsplat.txt b/test/yarp/fixtures/seattlerb/mlhs_mid_anonsplat.txt
new file mode 100644
index 0000000000..a70a7e531b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_mid_anonsplat.txt
@@ -0,0 +1 @@
+a, b, c, *, x, y, z = f
diff --git a/test/yarp/fixtures/seattlerb/mlhs_mid_splat.txt b/test/yarp/fixtures/seattlerb/mlhs_mid_splat.txt
new file mode 100644
index 0000000000..2d23fd3966
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_mid_splat.txt
@@ -0,0 +1 @@
+a, b, c, *s, x, y, z = f
diff --git a/test/yarp/fixtures/seattlerb/mlhs_rescue.txt b/test/yarp/fixtures/seattlerb/mlhs_rescue.txt
new file mode 100644
index 0000000000..b4c79ae32e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/mlhs_rescue.txt
@@ -0,0 +1 @@
+a, b = f rescue 42
diff --git a/test/yarp/fixtures/seattlerb/module_comments.txt b/test/yarp/fixtures/seattlerb/module_comments.txt
new file mode 100644
index 0000000000..f8d5aae571
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/module_comments.txt
@@ -0,0 +1,10 @@
+# blah 1
+
+ # blah 2
+
+module X
+ # blah 3
+ def blah
+ # blah 4
+ end
+end
diff --git a/test/yarp/fixtures/seattlerb/motherfuckin_leading_dots.txt b/test/yarp/fixtures/seattlerb/motherfuckin_leading_dots.txt
new file mode 100644
index 0000000000..332dc8225c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/motherfuckin_leading_dots.txt
@@ -0,0 +1,2 @@
+a
+.b
diff --git a/test/yarp/fixtures/seattlerb/motherfuckin_leading_dots2.txt b/test/yarp/fixtures/seattlerb/motherfuckin_leading_dots2.txt
new file mode 100644
index 0000000000..fe73f641fe
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/motherfuckin_leading_dots2.txt
@@ -0,0 +1,2 @@
+1
+..3
diff --git a/test/yarp/fixtures/seattlerb/multiline_hash_declaration.txt b/test/yarp/fixtures/seattlerb/multiline_hash_declaration.txt
new file mode 100644
index 0000000000..21530307d2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/multiline_hash_declaration.txt
@@ -0,0 +1,8 @@
+f(state:
+ {
+})
+
+f(state: {
+})
+
+f(state: {})
diff --git a/test/yarp/fixtures/seattlerb/non_interpolated_symbol_array_line_breaks.txt b/test/yarp/fixtures/seattlerb/non_interpolated_symbol_array_line_breaks.txt
new file mode 100644
index 0000000000..1e14673f4e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/non_interpolated_symbol_array_line_breaks.txt
@@ -0,0 +1,5 @@
+%i(
+a
+b
+)
+1
diff --git a/test/yarp/fixtures/seattlerb/non_interpolated_word_array_line_breaks.txt b/test/yarp/fixtures/seattlerb/non_interpolated_word_array_line_breaks.txt
new file mode 100644
index 0000000000..79c1418770
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/non_interpolated_word_array_line_breaks.txt
@@ -0,0 +1,5 @@
+%w(
+a
+b
+)
+1
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_command_call.txt b/test/yarp/fixtures/seattlerb/op_asgn_command_call.txt
new file mode 100644
index 0000000000..92c989cb0d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_command_call.txt
@@ -0,0 +1 @@
+a ||= b.c 2
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_dot_ident_command_call.txt b/test/yarp/fixtures/seattlerb/op_asgn_dot_ident_command_call.txt
new file mode 100644
index 0000000000..89cfccda66
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_dot_ident_command_call.txt
@@ -0,0 +1 @@
+A.B ||= c 1
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_index_command_call.txt b/test/yarp/fixtures/seattlerb/op_asgn_index_command_call.txt
new file mode 100644
index 0000000000..2bfced81fe
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_index_command_call.txt
@@ -0,0 +1 @@
+a[:b] ||= c 1, 2
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_const_command_call.txt b/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_const_command_call.txt
new file mode 100644
index 0000000000..a567f60e83
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_const_command_call.txt
@@ -0,0 +1 @@
+A::B *= c d
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier1.txt b/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier1.txt
new file mode 100644
index 0000000000..0784b49167
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier1.txt
@@ -0,0 +1 @@
+A::b += 1
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier_command_call.txt b/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier_command_call.txt
new file mode 100644
index 0000000000..c0f16eb3c1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_primary_colon_identifier_command_call.txt
@@ -0,0 +1 @@
+A::b *= c d
diff --git a/test/yarp/fixtures/seattlerb/op_asgn_val_dot_ident_command_call.txt b/test/yarp/fixtures/seattlerb/op_asgn_val_dot_ident_command_call.txt
new file mode 100644
index 0000000000..69057abf04
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/op_asgn_val_dot_ident_command_call.txt
@@ -0,0 +1 @@
+a.b ||= c 1
diff --git a/test/yarp/fixtures/seattlerb/parse_def_special_name.txt b/test/yarp/fixtures/seattlerb/parse_def_special_name.txt
new file mode 100644
index 0000000000..8d7d06c688
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_def_special_name.txt
@@ -0,0 +1 @@
+def next; end
diff --git a/test/yarp/fixtures/seattlerb/parse_if_not_canonical.txt b/test/yarp/fixtures/seattlerb/parse_if_not_canonical.txt
new file mode 100644
index 0000000000..1fd9bb7327
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_if_not_canonical.txt
@@ -0,0 +1,2 @@
+if not var.nil? then 'foo' else 'bar'
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_if_not_noncanonical.txt b/test/yarp/fixtures/seattlerb/parse_if_not_noncanonical.txt
new file mode 100644
index 0000000000..1fd9bb7327
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_if_not_noncanonical.txt
@@ -0,0 +1,2 @@
+if not var.nil? then 'foo' else 'bar'
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_block.txt b/test/yarp/fixtures/seattlerb/parse_line_block.txt
new file mode 100644
index 0000000000..21664649db
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_block.txt
@@ -0,0 +1,2 @@
+a = 42
+p a
diff --git a/test/yarp/fixtures/seattlerb/parse_line_block_inline_comment.txt b/test/yarp/fixtures/seattlerb/parse_line_block_inline_comment.txt
new file mode 100644
index 0000000000..f55ced714f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_block_inline_comment.txt
@@ -0,0 +1,3 @@
+a
+b # comment
+c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_block_inline_comment_leading_newlines.txt b/test/yarp/fixtures/seattlerb/parse_line_block_inline_comment_leading_newlines.txt
new file mode 100644
index 0000000000..6f1fee62a0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_block_inline_comment_leading_newlines.txt
@@ -0,0 +1,7 @@
+
+
+
+a
+b # comment
+# another comment
+c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_block_inline_multiline_comment.txt b/test/yarp/fixtures/seattlerb/parse_line_block_inline_multiline_comment.txt
new file mode 100644
index 0000000000..b00de34dc0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_block_inline_multiline_comment.txt
@@ -0,0 +1,4 @@
+a
+b # comment
+# another comment
+c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt b/test/yarp/fixtures/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt
new file mode 100644
index 0000000000..73785eb794
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt
@@ -0,0 +1,2 @@
+a @b
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_call_ivar_line_break_paren.txt b/test/yarp/fixtures/seattlerb/parse_line_call_ivar_line_break_paren.txt
new file mode 100644
index 0000000000..6f136e6d6f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_call_ivar_line_break_paren.txt
@@ -0,0 +1,2 @@
+a(@b
+)
diff --git a/test/yarp/fixtures/seattlerb/parse_line_call_no_args.txt b/test/yarp/fixtures/seattlerb/parse_line_call_no_args.txt
new file mode 100644
index 0000000000..7900afd4b8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_call_no_args.txt
@@ -0,0 +1,3 @@
+f do |x, y|
+ x + y
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_defn_complex.txt b/test/yarp/fixtures/seattlerb/parse_line_defn_complex.txt
new file mode 100644
index 0000000000..244a8e862b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_defn_complex.txt
@@ -0,0 +1,5 @@
+def x(y)
+ p(y)
+ y *= 2
+ return y;
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_defn_no_parens.txt b/test/yarp/fixtures/seattlerb/parse_line_defn_no_parens.txt
new file mode 100644
index 0000000000..373ca7fbec
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_defn_no_parens.txt
@@ -0,0 +1,6 @@
+def f
+
+end
+
+def f
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_defn_no_parens_args.txt b/test/yarp/fixtures/seattlerb/parse_line_defn_no_parens_args.txt
new file mode 100644
index 0000000000..10f004a149
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_defn_no_parens_args.txt
@@ -0,0 +1,2 @@
+def f a
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_dot2.txt b/test/yarp/fixtures/seattlerb/parse_line_dot2.txt
new file mode 100644
index 0000000000..61c7554221
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_dot2.txt
@@ -0,0 +1,5 @@
+0..
+4
+a..
+b
+c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_dot2_open.txt b/test/yarp/fixtures/seattlerb/parse_line_dot2_open.txt
new file mode 100644
index 0000000000..b3e1e5aaf9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_dot2_open.txt
@@ -0,0 +1,3 @@
+0..
+; a..
+; c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_dot3.txt b/test/yarp/fixtures/seattlerb/parse_line_dot3.txt
new file mode 100644
index 0000000000..d1866b41de
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_dot3.txt
@@ -0,0 +1,5 @@
+0...
+4
+a...
+b
+c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_dot3_open.txt b/test/yarp/fixtures/seattlerb/parse_line_dot3_open.txt
new file mode 100644
index 0000000000..38e7634b21
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_dot3_open.txt
@@ -0,0 +1,3 @@
+0...
+; a...
+; c
diff --git a/test/yarp/fixtures/seattlerb/parse_line_dstr_escaped_newline.txt b/test/yarp/fixtures/seattlerb/parse_line_dstr_escaped_newline.txt
new file mode 100644
index 0000000000..29c1754915
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_dstr_escaped_newline.txt
@@ -0,0 +1,3 @@
+"a\n#{
+}"
+true
diff --git a/test/yarp/fixtures/seattlerb/parse_line_dstr_soft_newline.txt b/test/yarp/fixtures/seattlerb/parse_line_dstr_soft_newline.txt
new file mode 100644
index 0000000000..e4dbd7bcb2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_dstr_soft_newline.txt
@@ -0,0 +1,4 @@
+"a
+#{
+}"
+true
diff --git a/test/yarp/fixtures/seattlerb/parse_line_evstr_after_break.txt b/test/yarp/fixtures/seattlerb/parse_line_evstr_after_break.txt
new file mode 100644
index 0000000000..c1d91a51c4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_evstr_after_break.txt
@@ -0,0 +1,2 @@
+"a"\
+"#{b}"
diff --git a/test/yarp/fixtures/seattlerb/parse_line_hash_lit.txt b/test/yarp/fixtures/seattlerb/parse_line_hash_lit.txt
new file mode 100644
index 0000000000..25f8c90a06
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_hash_lit.txt
@@ -0,0 +1,3 @@
+{
+:s1 => 1,
+}
diff --git a/test/yarp/fixtures/seattlerb/parse_line_heredoc.txt b/test/yarp/fixtures/seattlerb/parse_line_heredoc.txt
new file mode 100644
index 0000000000..201339534c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_heredoc.txt
@@ -0,0 +1,5 @@
+ string = <<-HEREDOC.strip
+ very long string
+ HEREDOC
+ puts string
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_heredoc_evstr.txt b/test/yarp/fixtures/seattlerb/parse_line_heredoc_evstr.txt
new file mode 100644
index 0000000000..d50844db4b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_heredoc_evstr.txt
@@ -0,0 +1,4 @@
+<<-A
+a
+#{b}
+A
diff --git a/test/yarp/fixtures/seattlerb/parse_line_heredoc_hardnewline.txt b/test/yarp/fixtures/seattlerb/parse_line_heredoc_hardnewline.txt
new file mode 100644
index 0000000000..3fbf0f2c26
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_heredoc_hardnewline.txt
@@ -0,0 +1,7 @@
+<<-EOFOO
+\n\n\n\n\n\n\n\n\n
+EOFOO
+
+class Foo
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_heredoc_regexp_chars.txt b/test/yarp/fixtures/seattlerb/parse_line_heredoc_regexp_chars.txt
new file mode 100644
index 0000000000..5dab9cf4e7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_heredoc_regexp_chars.txt
@@ -0,0 +1,5 @@
+ string = <<-"^D"
+ very long string
+ ^D
+ puts string
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_iter_call_no_parens.txt b/test/yarp/fixtures/seattlerb/parse_line_iter_call_no_parens.txt
new file mode 100644
index 0000000000..bf1b33c8a2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_iter_call_no_parens.txt
@@ -0,0 +1,3 @@
+f a do |x, y|
+ x + y
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_iter_call_parens.txt b/test/yarp/fixtures/seattlerb/parse_line_iter_call_parens.txt
new file mode 100644
index 0000000000..25e9ea1c67
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_iter_call_parens.txt
@@ -0,0 +1,3 @@
+f(a) do |x, y|
+ x + y
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_line_multiline_str.txt b/test/yarp/fixtures/seattlerb/parse_line_multiline_str.txt
new file mode 100644
index 0000000000..cdefb3c9b7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_multiline_str.txt
@@ -0,0 +1,3 @@
+"a
+b"
+1
diff --git a/test/yarp/fixtures/seattlerb/parse_line_multiline_str_literal_n.txt b/test/yarp/fixtures/seattlerb/parse_line_multiline_str_literal_n.txt
new file mode 100644
index 0000000000..a179ba8c9c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_multiline_str_literal_n.txt
@@ -0,0 +1,2 @@
+"a\nb"
+1
diff --git a/test/yarp/fixtures/seattlerb/parse_line_newlines.txt b/test/yarp/fixtures/seattlerb/parse_line_newlines.txt
new file mode 100644
index 0000000000..28b0c286e8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_newlines.txt
@@ -0,0 +1,3 @@
+true
+
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_op_asgn.txt b/test/yarp/fixtures/seattlerb/parse_line_op_asgn.txt
new file mode 100644
index 0000000000..f2691c2ce4
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_op_asgn.txt
@@ -0,0 +1,4 @@
+ foo +=
+ bar
+ baz
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_postexe.txt b/test/yarp/fixtures/seattlerb/parse_line_postexe.txt
new file mode 100644
index 0000000000..fd8b318d19
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_postexe.txt
@@ -0,0 +1,3 @@
+END {
+foo
+}
diff --git a/test/yarp/fixtures/seattlerb/parse_line_preexe.txt b/test/yarp/fixtures/seattlerb/parse_line_preexe.txt
new file mode 100644
index 0000000000..b3eda77ebc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_preexe.txt
@@ -0,0 +1,3 @@
+BEGIN {
+foo
+}
diff --git a/test/yarp/fixtures/seattlerb/parse_line_rescue.txt b/test/yarp/fixtures/seattlerb/parse_line_rescue.txt
new file mode 100644
index 0000000000..a583160ce2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_rescue.txt
@@ -0,0 +1,8 @@
+begin
+ a
+rescue
+ b
+rescue
+ c
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_return.txt b/test/yarp/fixtures/seattlerb/parse_line_return.txt
new file mode 100644
index 0000000000..81021c2644
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_return.txt
@@ -0,0 +1,6 @@
+ def blah
+ if true then
+ return 42
+ end
+ end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_line_str_with_newline_escape.txt b/test/yarp/fixtures/seattlerb/parse_line_str_with_newline_escape.txt
new file mode 100644
index 0000000000..b2b6bb8234
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_str_with_newline_escape.txt
@@ -0,0 +1 @@
+a("\n", true)
diff --git a/test/yarp/fixtures/seattlerb/parse_line_to_ary.txt b/test/yarp/fixtures/seattlerb/parse_line_to_ary.txt
new file mode 100644
index 0000000000..590d0abd14
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_to_ary.txt
@@ -0,0 +1,3 @@
+a,
+b = c
+d
diff --git a/test/yarp/fixtures/seattlerb/parse_line_trailing_newlines.txt b/test/yarp/fixtures/seattlerb/parse_line_trailing_newlines.txt
new file mode 100644
index 0000000000..422c2b7ab3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_line_trailing_newlines.txt
@@ -0,0 +1,2 @@
+a
+b
diff --git a/test/yarp/fixtures/seattlerb/parse_opt_call_args_assocs_comma.txt b/test/yarp/fixtures/seattlerb/parse_opt_call_args_assocs_comma.txt
new file mode 100644
index 0000000000..649c109ea1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_opt_call_args_assocs_comma.txt
@@ -0,0 +1 @@
+1[2=>3,]
diff --git a/test/yarp/fixtures/seattlerb/parse_opt_call_args_lit_comma.txt b/test/yarp/fixtures/seattlerb/parse_opt_call_args_lit_comma.txt
new file mode 100644
index 0000000000..741cd4ffd1
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_opt_call_args_lit_comma.txt
@@ -0,0 +1 @@
+1[2,]
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_019.txt b/test/yarp/fixtures/seattlerb/parse_pattern_019.txt
new file mode 100644
index 0000000000..1e8a75902d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_019.txt
@@ -0,0 +1,5 @@
+case 0
+in -1..1
+ true
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_044.txt b/test/yarp/fixtures/seattlerb/parse_pattern_044.txt
new file mode 100644
index 0000000000..a6a0ac6c1c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_044.txt
@@ -0,0 +1,5 @@
+case obj
+in Object[]
+ true
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_051.txt b/test/yarp/fixtures/seattlerb/parse_pattern_051.txt
new file mode 100644
index 0000000000..b7cf769f50
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_051.txt
@@ -0,0 +1,5 @@
+case [0, 1, 2]
+in [0, 1,]
+ true
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_058.txt b/test/yarp/fixtures/seattlerb/parse_pattern_058.txt
new file mode 100644
index 0000000000..bd7537098e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_058.txt
@@ -0,0 +1,5 @@
+case {a: 0}
+in {a:, **rest}
+ [a, rest]
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_058_2.txt b/test/yarp/fixtures/seattlerb/parse_pattern_058_2.txt
new file mode 100644
index 0000000000..eb1b3cd8ab
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_058_2.txt
@@ -0,0 +1,5 @@
+case {a: 0}
+in {a:, **}
+ [a]
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_069.txt b/test/yarp/fixtures/seattlerb/parse_pattern_069.txt
new file mode 100644
index 0000000000..f43dff8959
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_069.txt
@@ -0,0 +1,5 @@
+case :a
+in Object[b: 1]
+ 1
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_pattern_076.txt b/test/yarp/fixtures/seattlerb/parse_pattern_076.txt
new file mode 100644
index 0000000000..bb947605b3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_pattern_076.txt
@@ -0,0 +1,5 @@
+case {a: 1}
+in {a: 1, **nil}
+ true
+end
+
diff --git a/test/yarp/fixtures/seattlerb/parse_until_not_canonical.txt b/test/yarp/fixtures/seattlerb/parse_until_not_canonical.txt
new file mode 100644
index 0000000000..4de38968dc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_until_not_canonical.txt
@@ -0,0 +1,3 @@
+until not var.nil?
+ 'foo'
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_until_not_noncanonical.txt b/test/yarp/fixtures/seattlerb/parse_until_not_noncanonical.txt
new file mode 100644
index 0000000000..4de38968dc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_until_not_noncanonical.txt
@@ -0,0 +1,3 @@
+until not var.nil?
+ 'foo'
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_while_not_canonical.txt b/test/yarp/fixtures/seattlerb/parse_while_not_canonical.txt
new file mode 100644
index 0000000000..5aa464167f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_while_not_canonical.txt
@@ -0,0 +1,3 @@
+while not var.nil?
+ 'foo'
+end
diff --git a/test/yarp/fixtures/seattlerb/parse_while_not_noncanonical.txt b/test/yarp/fixtures/seattlerb/parse_while_not_noncanonical.txt
new file mode 100644
index 0000000000..5aa464167f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/parse_while_not_noncanonical.txt
@@ -0,0 +1,3 @@
+while not var.nil?
+ 'foo'
+end
diff --git a/test/yarp/fixtures/seattlerb/pctW_lineno.txt b/test/yarp/fixtures/seattlerb/pctW_lineno.txt
new file mode 100644
index 0000000000..b222ff0174
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/pctW_lineno.txt
@@ -0,0 +1,5 @@
+%W(a\nb
+c d
+e\
+f
+gy h\y i\y)
diff --git a/test/yarp/fixtures/seattlerb/pct_Q_backslash_nl.txt b/test/yarp/fixtures/seattlerb/pct_Q_backslash_nl.txt
new file mode 100644
index 0000000000..d88e1fd21c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/pct_Q_backslash_nl.txt
@@ -0,0 +1,2 @@
+%Q{ \
+}
diff --git a/test/yarp/fixtures/seattlerb/pct_nl.txt b/test/yarp/fixtures/seattlerb/pct_nl.txt
new file mode 100644
index 0000000000..2cee1cdd44
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/pct_nl.txt
@@ -0,0 +1,3 @@
+x = %
+
+
diff --git a/test/yarp/fixtures/seattlerb/pct_w_heredoc_interp_nested.txt b/test/yarp/fixtures/seattlerb/pct_w_heredoc_interp_nested.txt
new file mode 100644
index 0000000000..4e084661bf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/pct_w_heredoc_interp_nested.txt
@@ -0,0 +1,4 @@
+%W( 1 #{<<A} 3
+2
+A
+ 4 5 )
diff --git a/test/yarp/fixtures/seattlerb/pipe_semicolon.txt b/test/yarp/fixtures/seattlerb/pipe_semicolon.txt
new file mode 100644
index 0000000000..e692cc434f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/pipe_semicolon.txt
@@ -0,0 +1 @@
+a.b do | ; c | end
diff --git a/test/yarp/fixtures/seattlerb/pipe_space.txt b/test/yarp/fixtures/seattlerb/pipe_space.txt
new file mode 100644
index 0000000000..7f0df799b9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/pipe_space.txt
@@ -0,0 +1 @@
+a.b do | | end
diff --git a/test/yarp/fixtures/seattlerb/qWords_space.txt b/test/yarp/fixtures/seattlerb/qWords_space.txt
new file mode 100644
index 0000000000..a8299ba3f8
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qWords_space.txt
@@ -0,0 +1 @@
+%W( )
diff --git a/test/yarp/fixtures/seattlerb/qsymbols.txt b/test/yarp/fixtures/seattlerb/qsymbols.txt
new file mode 100644
index 0000000000..cb9ff09ae0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qsymbols.txt
@@ -0,0 +1 @@
+%I(a b c)
diff --git a/test/yarp/fixtures/seattlerb/qsymbols_empty.txt b/test/yarp/fixtures/seattlerb/qsymbols_empty.txt
new file mode 100644
index 0000000000..10a3279907
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qsymbols_empty.txt
@@ -0,0 +1 @@
+%I()
diff --git a/test/yarp/fixtures/seattlerb/qsymbols_empty_space.txt b/test/yarp/fixtures/seattlerb/qsymbols_empty_space.txt
new file mode 100644
index 0000000000..819f16ad06
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qsymbols_empty_space.txt
@@ -0,0 +1 @@
+%I( )
diff --git a/test/yarp/fixtures/seattlerb/qsymbols_interp.txt b/test/yarp/fixtures/seattlerb/qsymbols_interp.txt
new file mode 100644
index 0000000000..2f34883867
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qsymbols_interp.txt
@@ -0,0 +1 @@
+%I(a b#{1+1} c)
diff --git a/test/yarp/fixtures/seattlerb/quoted_symbol_hash_arg.txt b/test/yarp/fixtures/seattlerb/quoted_symbol_hash_arg.txt
new file mode 100644
index 0000000000..4f1295ef18
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/quoted_symbol_hash_arg.txt
@@ -0,0 +1 @@
+puts 'a': {}
diff --git a/test/yarp/fixtures/seattlerb/quoted_symbol_keys.txt b/test/yarp/fixtures/seattlerb/quoted_symbol_keys.txt
new file mode 100644
index 0000000000..c6a946723d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/quoted_symbol_keys.txt
@@ -0,0 +1 @@
+{ 'a': :b }
diff --git a/test/yarp/fixtures/seattlerb/qw_escape.txt b/test/yarp/fixtures/seattlerb/qw_escape.txt
new file mode 100644
index 0000000000..a94a0e5dcb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qw_escape.txt
@@ -0,0 +1 @@
+%q(\')
diff --git a/test/yarp/fixtures/seattlerb/qw_escape_term.txt b/test/yarp/fixtures/seattlerb/qw_escape_term.txt
new file mode 100644
index 0000000000..9734fc3421
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qw_escape_term.txt
@@ -0,0 +1 @@
+%q|blah blah \| blah blah|
diff --git a/test/yarp/fixtures/seattlerb/qwords_empty.txt b/test/yarp/fixtures/seattlerb/qwords_empty.txt
new file mode 100644
index 0000000000..69cc6679d6
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/qwords_empty.txt
@@ -0,0 +1 @@
+%w()
diff --git a/test/yarp/fixtures/seattlerb/read_escape_unicode_curlies.txt b/test/yarp/fixtures/seattlerb/read_escape_unicode_curlies.txt
new file mode 100644
index 0000000000..427b94cc4d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/read_escape_unicode_curlies.txt
@@ -0,0 +1 @@
+?\u{00a0}
diff --git a/test/yarp/fixtures/seattlerb/read_escape_unicode_h4.txt b/test/yarp/fixtures/seattlerb/read_escape_unicode_h4.txt
new file mode 100644
index 0000000000..71aa7a4347
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/read_escape_unicode_h4.txt
@@ -0,0 +1 @@
+?\u00a0
diff --git a/test/yarp/fixtures/seattlerb/regexp.txt b/test/yarp/fixtures/seattlerb/regexp.txt
new file mode 100644
index 0000000000..bc06458c5c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/regexp.txt
@@ -0,0 +1,9 @@
+/wtf/
+
+/wtf/m
+
+/wtf/n
+
+/wtf/nm
+
+/wtf/nmnmnmnm
diff --git a/test/yarp/fixtures/seattlerb/regexp_esc_C_slash.txt b/test/yarp/fixtures/seattlerb/regexp_esc_C_slash.txt
new file mode 100644
index 0000000000..1fd9207c66
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/regexp_esc_C_slash.txt
@@ -0,0 +1 @@
+/\cC\d/
diff --git a/test/yarp/fixtures/seattlerb/regexp_esc_u.txt b/test/yarp/fixtures/seattlerb/regexp_esc_u.txt
new file mode 100644
index 0000000000..b91704fb0a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/regexp_esc_u.txt
@@ -0,0 +1 @@
+/[\u0021-\u0027]/
diff --git a/test/yarp/fixtures/seattlerb/regexp_escape_extended.txt b/test/yarp/fixtures/seattlerb/regexp_escape_extended.txt
new file mode 100644
index 0000000000..73dcbab69c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/regexp_escape_extended.txt
@@ -0,0 +1 @@
+/\“/
diff --git a/test/yarp/fixtures/seattlerb/regexp_unicode_curlies.txt b/test/yarp/fixtures/seattlerb/regexp_unicode_curlies.txt
new file mode 100644
index 0000000000..5a02bd92ca
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/regexp_unicode_curlies.txt
@@ -0,0 +1,3 @@
+/\u{c0de babe}/
+
+/\u{df}/
diff --git a/test/yarp/fixtures/seattlerb/required_kwarg_no_value.txt b/test/yarp/fixtures/seattlerb/required_kwarg_no_value.txt
new file mode 100644
index 0000000000..453bcbb33b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/required_kwarg_no_value.txt
@@ -0,0 +1,2 @@
+def x a:, b:
+end
diff --git a/test/yarp/fixtures/seattlerb/rescue_do_end_ensure_result.txt b/test/yarp/fixtures/seattlerb/rescue_do_end_ensure_result.txt
new file mode 100644
index 0000000000..7049be66c5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rescue_do_end_ensure_result.txt
@@ -0,0 +1,5 @@
+proc do
+ :begin
+ensure
+ :ensure
+end.call
diff --git a/test/yarp/fixtures/seattlerb/rescue_do_end_no_raise.txt b/test/yarp/fixtures/seattlerb/rescue_do_end_no_raise.txt
new file mode 100644
index 0000000000..5f16ec2f15
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rescue_do_end_no_raise.txt
@@ -0,0 +1,9 @@
+tap do
+ :begin
+rescue
+ :rescue
+else
+ :else
+ensure
+ :ensure
+end
diff --git a/test/yarp/fixtures/seattlerb/rescue_do_end_raised.txt b/test/yarp/fixtures/seattlerb/rescue_do_end_raised.txt
new file mode 100644
index 0000000000..d04215eb48
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rescue_do_end_raised.txt
@@ -0,0 +1,5 @@
+tap do
+ raise
+ensure
+ :ensure
+end
diff --git a/test/yarp/fixtures/seattlerb/rescue_do_end_rescued.txt b/test/yarp/fixtures/seattlerb/rescue_do_end_rescued.txt
new file mode 100644
index 0000000000..4b377511f0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rescue_do_end_rescued.txt
@@ -0,0 +1,9 @@
+tap do
+ raise
+rescue
+ :rescue
+else
+ :else
+ensure
+ :ensure
+end
diff --git a/test/yarp/fixtures/seattlerb/rescue_in_block.txt b/test/yarp/fixtures/seattlerb/rescue_in_block.txt
new file mode 100644
index 0000000000..c6e834aa1e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rescue_in_block.txt
@@ -0,0 +1,4 @@
+blah do
+rescue
+ stuff
+end
diff --git a/test/yarp/fixtures/seattlerb/rescue_parens.txt b/test/yarp/fixtures/seattlerb/rescue_parens.txt
new file mode 100644
index 0000000000..f0eb4db417
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rescue_parens.txt
@@ -0,0 +1 @@
+a (b rescue c)
diff --git a/test/yarp/fixtures/seattlerb/return_call_assocs.txt b/test/yarp/fixtures/seattlerb/return_call_assocs.txt
new file mode 100644
index 0000000000..34ea778f17
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/return_call_assocs.txt
@@ -0,0 +1,11 @@
+return 1, :z => 1
+
+return 1, :z => 1, :w => 2
+
+return y :z=>1
+
+return y z:1
+
+return y(z:1)
+
+return y(z=>1)
diff --git a/test/yarp/fixtures/seattlerb/rhs_asgn.txt b/test/yarp/fixtures/seattlerb/rhs_asgn.txt
new file mode 100644
index 0000000000..ca581031e2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/rhs_asgn.txt
@@ -0,0 +1 @@
+42 => n
diff --git a/test/yarp/fixtures/seattlerb/ruby21_numbers.txt b/test/yarp/fixtures/seattlerb/ruby21_numbers.txt
new file mode 100644
index 0000000000..34ceb63a0c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/ruby21_numbers.txt
@@ -0,0 +1 @@
+[1i, 2r, 3ri]
diff --git a/test/yarp/fixtures/seattlerb/safe_attrasgn.txt b/test/yarp/fixtures/seattlerb/safe_attrasgn.txt
new file mode 100644
index 0000000000..1279e02cfc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_attrasgn.txt
@@ -0,0 +1 @@
+a&.b = 1
diff --git a/test/yarp/fixtures/seattlerb/safe_attrasgn_constant.txt b/test/yarp/fixtures/seattlerb/safe_attrasgn_constant.txt
new file mode 100644
index 0000000000..3a17ac6bcf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_attrasgn_constant.txt
@@ -0,0 +1 @@
+a&.B = 1
diff --git a/test/yarp/fixtures/seattlerb/safe_call.txt b/test/yarp/fixtures/seattlerb/safe_call.txt
new file mode 100644
index 0000000000..8ecd27e0fe
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_call.txt
@@ -0,0 +1 @@
+a&.b
diff --git a/test/yarp/fixtures/seattlerb/safe_call_after_newline.txt b/test/yarp/fixtures/seattlerb/safe_call_after_newline.txt
new file mode 100644
index 0000000000..58e3fba554
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_call_after_newline.txt
@@ -0,0 +1,2 @@
+a
+&.b
diff --git a/test/yarp/fixtures/seattlerb/safe_call_dot_parens.txt b/test/yarp/fixtures/seattlerb/safe_call_dot_parens.txt
new file mode 100644
index 0000000000..5def076640
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_call_dot_parens.txt
@@ -0,0 +1 @@
+a&.()
diff --git a/test/yarp/fixtures/seattlerb/safe_call_newline.txt b/test/yarp/fixtures/seattlerb/safe_call_newline.txt
new file mode 100644
index 0000000000..8778b46585
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_call_newline.txt
@@ -0,0 +1,2 @@
+a&.b
+
diff --git a/test/yarp/fixtures/seattlerb/safe_call_operator.txt b/test/yarp/fixtures/seattlerb/safe_call_operator.txt
new file mode 100644
index 0000000000..f3fe2b0392
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_call_operator.txt
@@ -0,0 +1 @@
+a&.> 1
diff --git a/test/yarp/fixtures/seattlerb/safe_call_rhs_newline.txt b/test/yarp/fixtures/seattlerb/safe_call_rhs_newline.txt
new file mode 100644
index 0000000000..d3b07b77b2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_call_rhs_newline.txt
@@ -0,0 +1,2 @@
+c = a&.b
+
diff --git a/test/yarp/fixtures/seattlerb/safe_calls.txt b/test/yarp/fixtures/seattlerb/safe_calls.txt
new file mode 100644
index 0000000000..eafeace500
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_calls.txt
@@ -0,0 +1 @@
+a&.b&.c(1)
diff --git a/test/yarp/fixtures/seattlerb/safe_op_asgn.txt b/test/yarp/fixtures/seattlerb/safe_op_asgn.txt
new file mode 100644
index 0000000000..8915a1cccf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_op_asgn.txt
@@ -0,0 +1 @@
+a&.b += x 1
diff --git a/test/yarp/fixtures/seattlerb/safe_op_asgn2.txt b/test/yarp/fixtures/seattlerb/safe_op_asgn2.txt
new file mode 100644
index 0000000000..0960b2548b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/safe_op_asgn2.txt
@@ -0,0 +1,2 @@
+a&.b ||=
+x;
diff --git a/test/yarp/fixtures/seattlerb/slashy_newlines_within_string.txt b/test/yarp/fixtures/seattlerb/slashy_newlines_within_string.txt
new file mode 100644
index 0000000000..cdf7a70cb7
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/slashy_newlines_within_string.txt
@@ -0,0 +1,7 @@
+puts "hello\
+ my\
+ dear\
+ friend"
+
+a + b
+
diff --git a/test/yarp/fixtures/seattlerb/stabby_arg_no_paren.txt b/test/yarp/fixtures/seattlerb/stabby_arg_no_paren.txt
new file mode 100644
index 0000000000..f16bed4ccf
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_arg_no_paren.txt
@@ -0,0 +1 @@
+->a{}
diff --git a/test/yarp/fixtures/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt b/test/yarp/fixtures/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt
new file mode 100644
index 0000000000..87a7c5dad3
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt
@@ -0,0 +1 @@
+->(b, c=1, *d, e, &f){}
diff --git a/test/yarp/fixtures/seattlerb/stabby_block_iter_call.txt b/test/yarp/fixtures/seattlerb/stabby_block_iter_call.txt
new file mode 100644
index 0000000000..5e9e3f5527
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_block_iter_call.txt
@@ -0,0 +1,4 @@
+x -> () do
+a.b do
+end
+end
diff --git a/test/yarp/fixtures/seattlerb/stabby_block_iter_call_no_target_with_arg.txt b/test/yarp/fixtures/seattlerb/stabby_block_iter_call_no_target_with_arg.txt
new file mode 100644
index 0000000000..7235394751
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_block_iter_call_no_target_with_arg.txt
@@ -0,0 +1,4 @@
+x -> () do
+a(1) do
+end
+end
diff --git a/test/yarp/fixtures/seattlerb/stabby_block_kw.txt b/test/yarp/fixtures/seattlerb/stabby_block_kw.txt
new file mode 100644
index 0000000000..74d9e0a328
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_block_kw.txt
@@ -0,0 +1 @@
+-> (k:42) { }
diff --git a/test/yarp/fixtures/seattlerb/stabby_block_kw__required.txt b/test/yarp/fixtures/seattlerb/stabby_block_kw__required.txt
new file mode 100644
index 0000000000..bd16ffa73c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_block_kw__required.txt
@@ -0,0 +1 @@
+-> (k:) { }
diff --git a/test/yarp/fixtures/seattlerb/stabby_proc_scope.txt b/test/yarp/fixtures/seattlerb/stabby_proc_scope.txt
new file mode 100644
index 0000000000..1f7f9ff52b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/stabby_proc_scope.txt
@@ -0,0 +1 @@
+->(a; b) {}
diff --git a/test/yarp/fixtures/seattlerb/str_backslashes.txt b/test/yarp/fixtures/seattlerb/str_backslashes.txt
new file mode 100644
index 0000000000..5fd6da361b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_backslashes.txt
@@ -0,0 +1 @@
+x '\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n'
diff --git a/test/yarp/fixtures/seattlerb/str_double_double_escaped_newline.txt b/test/yarp/fixtures/seattlerb/str_double_double_escaped_newline.txt
new file mode 100644
index 0000000000..2b022a55f6
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_double_double_escaped_newline.txt
@@ -0,0 +1 @@
+a "\\n";b
diff --git a/test/yarp/fixtures/seattlerb/str_double_escaped_newline.txt b/test/yarp/fixtures/seattlerb/str_double_escaped_newline.txt
new file mode 100644
index 0000000000..e439225344
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_double_escaped_newline.txt
@@ -0,0 +1 @@
+a "\n";b
diff --git a/test/yarp/fixtures/seattlerb/str_double_newline.txt b/test/yarp/fixtures/seattlerb/str_double_newline.txt
new file mode 100644
index 0000000000..2d439506ca
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_double_newline.txt
@@ -0,0 +1,2 @@
+a "
+";b
diff --git a/test/yarp/fixtures/seattlerb/str_evstr.txt b/test/yarp/fixtures/seattlerb/str_evstr.txt
new file mode 100644
index 0000000000..86c6d1526d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_evstr.txt
@@ -0,0 +1 @@
+"a #{b}"
diff --git a/test/yarp/fixtures/seattlerb/str_evstr_escape.txt b/test/yarp/fixtures/seattlerb/str_evstr_escape.txt
new file mode 100644
index 0000000000..517dfd4778
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_evstr_escape.txt
@@ -0,0 +1 @@
+"a #{b}\302\275"
diff --git a/test/yarp/fixtures/seattlerb/str_heredoc_interp.txt b/test/yarp/fixtures/seattlerb/str_heredoc_interp.txt
new file mode 100644
index 0000000000..aa2613008c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_heredoc_interp.txt
@@ -0,0 +1,5 @@
+<<""
+#{x}
+blah2
+
+
diff --git a/test/yarp/fixtures/seattlerb/str_interp_ternary_or_label.txt b/test/yarp/fixtures/seattlerb/str_interp_ternary_or_label.txt
new file mode 100644
index 0000000000..fe6637678f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_interp_ternary_or_label.txt
@@ -0,0 +1 @@
+"#{a.b? ? ""+a+"": ""}"
diff --git a/test/yarp/fixtures/seattlerb/str_lit_concat_bad_encodings.txt b/test/yarp/fixtures/seattlerb/str_lit_concat_bad_encodings.txt
new file mode 100644
index 0000000000..f4eb3971bb
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_lit_concat_bad_encodings.txt
@@ -0,0 +1,2 @@
+"\xE3\xD3\x8B\xE3\x83\xBC\x83\xE3\x83\xE3\x82\xB3\xA3\x82\x99" \
+ "\xE3\x83\xB3\xE3\x83\x8F\xE3\x82\x9A\xC3\xBD;foo@bar.com"
diff --git a/test/yarp/fixtures/seattlerb/str_newline_hash_line_number.txt b/test/yarp/fixtures/seattlerb/str_newline_hash_line_number.txt
new file mode 100644
index 0000000000..9c8f702000
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_newline_hash_line_number.txt
@@ -0,0 +1,2 @@
+"\n\n\n\n#"
+1
diff --git a/test/yarp/fixtures/seattlerb/str_pct_Q_nested.txt b/test/yarp/fixtures/seattlerb/str_pct_Q_nested.txt
new file mode 100644
index 0000000000..1f3d0613e5
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_pct_Q_nested.txt
@@ -0,0 +1 @@
+%Q[before [#{nest}] after]
diff --git a/test/yarp/fixtures/seattlerb/str_pct_nested_nested.txt b/test/yarp/fixtures/seattlerb/str_pct_nested_nested.txt
new file mode 100644
index 0000000000..cb12415215
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_pct_nested_nested.txt
@@ -0,0 +1 @@
+%{ { #{ "#{1}" } } }
diff --git a/test/yarp/fixtures/seattlerb/str_pct_q.txt b/test/yarp/fixtures/seattlerb/str_pct_q.txt
new file mode 100644
index 0000000000..65d71197c9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_pct_q.txt
@@ -0,0 +1 @@
+%q{a b c}
diff --git a/test/yarp/fixtures/seattlerb/str_single_double_escaped_newline.txt b/test/yarp/fixtures/seattlerb/str_single_double_escaped_newline.txt
new file mode 100644
index 0000000000..2ff0aec111
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_single_double_escaped_newline.txt
@@ -0,0 +1 @@
+a '\\n';b
diff --git a/test/yarp/fixtures/seattlerb/str_single_escaped_newline.txt b/test/yarp/fixtures/seattlerb/str_single_escaped_newline.txt
new file mode 100644
index 0000000000..5abb8d6334
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_single_escaped_newline.txt
@@ -0,0 +1 @@
+a '\n';b
diff --git a/test/yarp/fixtures/seattlerb/str_single_newline.txt b/test/yarp/fixtures/seattlerb/str_single_newline.txt
new file mode 100644
index 0000000000..1033cc7e96
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_single_newline.txt
@@ -0,0 +1,2 @@
+a '
+';b
diff --git a/test/yarp/fixtures/seattlerb/str_str.txt b/test/yarp/fixtures/seattlerb/str_str.txt
new file mode 100644
index 0000000000..388d777dc2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_str.txt
@@ -0,0 +1 @@
+"a #{'b'}"
diff --git a/test/yarp/fixtures/seattlerb/str_str_str.txt b/test/yarp/fixtures/seattlerb/str_str_str.txt
new file mode 100644
index 0000000000..d64e01dc5d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/str_str_str.txt
@@ -0,0 +1 @@
+"a #{'b'} c"
diff --git a/test/yarp/fixtures/seattlerb/super_arg.txt b/test/yarp/fixtures/seattlerb/super_arg.txt
new file mode 100644
index 0000000000..1b19ecd51c
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/super_arg.txt
@@ -0,0 +1 @@
+super 42
diff --git a/test/yarp/fixtures/seattlerb/symbol_empty.txt b/test/yarp/fixtures/seattlerb/symbol_empty.txt
new file mode 100644
index 0000000000..cbb260bb4e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/symbol_empty.txt
@@ -0,0 +1 @@
+:''
diff --git a/test/yarp/fixtures/seattlerb/symbol_list.txt b/test/yarp/fixtures/seattlerb/symbol_list.txt
new file mode 100644
index 0000000000..d357195184
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/symbol_list.txt
@@ -0,0 +1 @@
+%I[#{a} #{b}]
diff --git a/test/yarp/fixtures/seattlerb/symbols.txt b/test/yarp/fixtures/seattlerb/symbols.txt
new file mode 100644
index 0000000000..3ec930ce66
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/symbols.txt
@@ -0,0 +1 @@
+%i(a b c)
diff --git a/test/yarp/fixtures/seattlerb/symbols_empty.txt b/test/yarp/fixtures/seattlerb/symbols_empty.txt
new file mode 100644
index 0000000000..840948efb2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/symbols_empty.txt
@@ -0,0 +1 @@
+%i()
diff --git a/test/yarp/fixtures/seattlerb/symbols_empty_space.txt b/test/yarp/fixtures/seattlerb/symbols_empty_space.txt
new file mode 100644
index 0000000000..16c2e68a2b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/symbols_empty_space.txt
@@ -0,0 +1 @@
+%i( )
diff --git a/test/yarp/fixtures/seattlerb/symbols_interp.txt b/test/yarp/fixtures/seattlerb/symbols_interp.txt
new file mode 100644
index 0000000000..63116eb632
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/symbols_interp.txt
@@ -0,0 +1 @@
+%i(a b#{1+1} c)
diff --git a/test/yarp/fixtures/seattlerb/thingy.txt b/test/yarp/fixtures/seattlerb/thingy.txt
new file mode 100644
index 0000000000..5aa598c4be
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/thingy.txt
@@ -0,0 +1,3 @@
+f.(42)
+
+f::(42)
diff --git a/test/yarp/fixtures/seattlerb/uminus_float.txt b/test/yarp/fixtures/seattlerb/uminus_float.txt
new file mode 100644
index 0000000000..1344bfd9db
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/uminus_float.txt
@@ -0,0 +1 @@
+-0.0
diff --git a/test/yarp/fixtures/seattlerb/unary_minus.txt b/test/yarp/fixtures/seattlerb/unary_minus.txt
new file mode 100644
index 0000000000..66af866f85
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/unary_minus.txt
@@ -0,0 +1 @@
+-a
diff --git a/test/yarp/fixtures/seattlerb/unary_plus.txt b/test/yarp/fixtures/seattlerb/unary_plus.txt
new file mode 100644
index 0000000000..daea40b71e
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/unary_plus.txt
@@ -0,0 +1 @@
++a
diff --git a/test/yarp/fixtures/seattlerb/unary_plus_on_literal.txt b/test/yarp/fixtures/seattlerb/unary_plus_on_literal.txt
new file mode 100644
index 0000000000..752331df47
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/unary_plus_on_literal.txt
@@ -0,0 +1 @@
++:a
diff --git a/test/yarp/fixtures/seattlerb/unary_tilde.txt b/test/yarp/fixtures/seattlerb/unary_tilde.txt
new file mode 100644
index 0000000000..f0a507b437
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/unary_tilde.txt
@@ -0,0 +1 @@
+~a
diff --git a/test/yarp/fixtures/seattlerb/utf8_bom.txt b/test/yarp/fixtures/seattlerb/utf8_bom.txt
new file mode 100644
index 0000000000..c8e9e1cbae
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/utf8_bom.txt
@@ -0,0 +1,3 @@
+#!/usr/bin/env ruby -w
+p 0
+
diff --git a/test/yarp/fixtures/seattlerb/when_splat.txt b/test/yarp/fixtures/seattlerb/when_splat.txt
new file mode 100644
index 0000000000..6b79f5dad0
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/when_splat.txt
@@ -0,0 +1 @@
+case a; when *b then; end
diff --git a/test/yarp/fixtures/seattlerb/words_interp.txt b/test/yarp/fixtures/seattlerb/words_interp.txt
new file mode 100644
index 0000000000..f71486495b
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/words_interp.txt
@@ -0,0 +1 @@
+%W(#{1}b)
diff --git a/test/yarp/fixtures/seattlerb/wtf.txt b/test/yarp/fixtures/seattlerb/wtf.txt
new file mode 100644
index 0000000000..7396a9a76f
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/wtf.txt
@@ -0,0 +1 @@
+->(a, b=nil) { p [a, b] }
diff --git a/test/yarp/fixtures/seattlerb/wtf_7.txt b/test/yarp/fixtures/seattlerb/wtf_7.txt
new file mode 100644
index 0000000000..048358bbdc
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/wtf_7.txt
@@ -0,0 +1 @@
+a.b (1) {c}
diff --git a/test/yarp/fixtures/seattlerb/wtf_8.txt b/test/yarp/fixtures/seattlerb/wtf_8.txt
new file mode 100644
index 0000000000..ba1cbc235d
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/wtf_8.txt
@@ -0,0 +1 @@
+a::b (1) {c}
diff --git a/test/yarp/fixtures/seattlerb/yield_arg.txt b/test/yarp/fixtures/seattlerb/yield_arg.txt
new file mode 100644
index 0000000000..7e752f62e2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/yield_arg.txt
@@ -0,0 +1 @@
+yield 42
diff --git a/test/yarp/fixtures/seattlerb/yield_call_assocs.txt b/test/yarp/fixtures/seattlerb/yield_call_assocs.txt
new file mode 100644
index 0000000000..95963dfcf9
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/yield_call_assocs.txt
@@ -0,0 +1,11 @@
+yield 1, :z => 1
+
+yield 1, :z => 1, :w => 2
+
+yield y :z=>1
+
+yield y z:1
+
+yield y(z:1)
+
+yield y(z=>1)
diff --git a/test/yarp/fixtures/seattlerb/yield_empty_parens.txt b/test/yarp/fixtures/seattlerb/yield_empty_parens.txt
new file mode 100644
index 0000000000..cff86b243a
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/yield_empty_parens.txt
@@ -0,0 +1 @@
+yield()
diff --git a/test/yarp/fixtures/seattlerb/zomg_sometimes_i_hate_this_project.txt b/test/yarp/fixtures/seattlerb/zomg_sometimes_i_hate_this_project.txt
new file mode 100644
index 0000000000..112b75c5f2
--- /dev/null
+++ b/test/yarp/fixtures/seattlerb/zomg_sometimes_i_hate_this_project.txt
@@ -0,0 +1,5 @@
+ {
+ a: lambda { b ? c() : d },
+ e: nil,
+ }
+
diff --git a/test/yarp/fixtures/single_quote_heredocs.txt b/test/yarp/fixtures/single_quote_heredocs.txt
new file mode 100644
index 0000000000..0122b2726c
--- /dev/null
+++ b/test/yarp/fixtures/single_quote_heredocs.txt
@@ -0,0 +1,3 @@
+<<-'EOS'
+ cd L:\Work\MG3710IQPro\Develop
+EOS
diff --git a/test/yarp/fixtures/strings.txt b/test/yarp/fixtures/strings.txt
new file mode 100644
index 0000000000..9d6cc77fc7
--- /dev/null
+++ b/test/yarp/fixtures/strings.txt
@@ -0,0 +1,99 @@
+%%abc%
+
+%^abc^
+
+%&abc&
+
+%*abc*
+
+%_abc_
+
+%+abc+
+
+%-abc-
+
+%:abc:
+
+%;abc;
+
+%'abc'
+
+%~abc~
+
+%?abc?
+
+%w{ }
+
+%/abc/
+
+%`abc`
+
+"#@@foo"
+
+%\abc\
+
+%{aaa #{bbb} ccc}
+
+%[foo[]]
+
+"foo" +
+
+"bar"
+
+%q{abc}
+
+%s[abc]
+
+%{abc}
+
+''
+
+"abc"
+
+"#@---"
+
+"aaa #{bbb} ccc"
+
+'abc'
+
+%w[a b c]
+
+%w[a[] b[[]] c[]]
+
+%w[foo\ bar \#{1}]
+
+%w[foo\ bar baz]
+
+%W[a b#{c}d e]
+
+%W[a b c]
+
+%w[
+ a
+ b
+ c
+]
+
+'\' foo \' bar'
+
+'\\ foo \\ bar'
+
+"#$foo"
+
+"#@foo"
+
+"\x7 \x23 \x61"
+
+"\7 \43 \141"
+
+%[abc]
+
+%(abc)
+
+%@abc@
+
+%$abc$
+
+?a
+
+%Q{abc}
diff --git a/test/yarp/fixtures/super.txt b/test/yarp/fixtures/super.txt
new file mode 100644
index 0000000000..b685035970
--- /dev/null
+++ b/test/yarp/fixtures/super.txt
@@ -0,0 +1,7 @@
+super
+
+super()
+
+super(1)
+
+super(1, 2, 3)
diff --git a/test/yarp/fixtures/symbols.txt b/test/yarp/fixtures/symbols.txt
new file mode 100644
index 0000000000..7563eb874f
--- /dev/null
+++ b/test/yarp/fixtures/symbols.txt
@@ -0,0 +1,93 @@
+:'abc'
+
+:"#{var}"
+
+:"abc#{1}"
+
+[:Υ, :ά, :ŗ, :ρ]
+
+:-@
+
+:-
+
+:%
+
+:|
+
+:+@
+
+:+
+
+:/
+
+:**
+
+:*
+
+:~@
+
+[1, 1.0, 1r, 1i]
+
+:~
+
+:a
+
+%i[a b c]
+
+%i[a b#{1} #{2}c d#{3}f]
+
+%I[a b#{1} #{2}c d#{3}f]
+
+:@@a
+
+:👍
+
+%i[a\b]
+
+:$a
+
+:@a
+
+:do
+
+:&
+
+:`
+
+:!@
+
+:!~
+
+:!
+
+:[]
+
+:[]=
+
+:^
+
+:==
+
+:===
+
+:=~
+
+:>=
+
+:>>
+
+:>
+
+:<=>
+
+:<=
+
+:<<
+
+:<
+
+:__LINE__
+
+:__FILE__
+
+:__ENCODING__
diff --git a/test/yarp/fixtures/ternary_operator.txt b/test/yarp/fixtures/ternary_operator.txt
new file mode 100644
index 0000000000..ca00ead321
--- /dev/null
+++ b/test/yarp/fixtures/ternary_operator.txt
@@ -0,0 +1,13 @@
+a ? b : c
+
+a ? defined? b : defined? c
+
+empty??true:nil
+
+empty??false:nil
+
+empty??nil:nil
+
+a??nil:nil
+
+a ?var1 : var2
diff --git a/test/yarp/fixtures/tilde_heredocs.txt b/test/yarp/fixtures/tilde_heredocs.txt
new file mode 100644
index 0000000000..415d4d42c8
--- /dev/null
+++ b/test/yarp/fixtures/tilde_heredocs.txt
@@ -0,0 +1,91 @@
+<<~EOF
+ a
+EOF
+
+<<~EOF
+ a
+ b
+ c
+EOF
+
+<<~EOF
+ #{1} a
+EOF
+
+<<~EOF
+ a #{1}
+EOF
+
+<<~EOF
+ a
+ #{1}
+EOF
+
+<<~EOF
+ a
+ #{1}
+EOF
+
+<<~EOF
+ a
+ b
+EOF
+
+<<~EOF
+ a
+ b
+EOF
+
+<<~EOF
+ a
+ b
+EOF
+
+<<~'EOF'
+ a #{1}
+EOF
+
+<<~EOF
+ a
+ b
+EOF
+
+<<~EOF
+ a
+ b
+EOF
+
+<<~EOF
+ a
+ b
+EOF
+
+<<~EOF
+ a
+
+ b
+EOF
+
+<<~EOF
+ a
+
+ b
+EOF
+
+<<~EOF
+ a
+
+
+
+ b
+EOF
+
+<<~EOF
+
+ #{1}a
+ EOF
+
+<<~EOT
+ #{1}
+ b
+EOT
diff --git a/test/yarp/fixtures/undef.txt b/test/yarp/fixtures/undef.txt
new file mode 100644
index 0000000000..129c349433
--- /dev/null
+++ b/test/yarp/fixtures/undef.txt
@@ -0,0 +1,17 @@
+undef a
+
+undef a, b
+
+undef if
+
+undef <=>
+
+undef :a
+
+undef :a, :b, :c
+
+undef :'abc'
+
+undef :"abc#{1}"
+
+undef Constant
diff --git a/test/yarp/fixtures/unescaping.txt b/test/yarp/fixtures/unescaping.txt
new file mode 100644
index 0000000000..e2da5a696c
--- /dev/null
+++ b/test/yarp/fixtures/unescaping.txt
@@ -0,0 +1,9 @@
+["\c#{1}"]
+
+/\c#{1}/
+
+"\c#{1}"
+
+<<~HERE
+ \c#{1}
+HERE
diff --git a/test/yarp/fixtures/unless.txt b/test/yarp/fixtures/unless.txt
new file mode 100644
index 0000000000..410d460e69
--- /dev/null
+++ b/test/yarp/fixtures/unless.txt
@@ -0,0 +1,14 @@
+unless true; 1; end
+
+unless true
+1 else 2 end
+
+1 unless true
+
+break unless true
+
+next unless true
+
+return unless true
+
+foo :a, :b unless bar?
diff --git a/test/yarp/fixtures/unparser/LICENSE b/test/yarp/fixtures/unparser/LICENSE
new file mode 100644
index 0000000000..44863d7afb
--- /dev/null
+++ b/test/yarp/fixtures/unparser/LICENSE
@@ -0,0 +1,20 @@
+Copyright (c) 2013 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/test/yarp/fixtures/unparser/corpus/literal/alias.txt b/test/yarp/fixtures/unparser/corpus/literal/alias.txt
new file mode 100644
index 0000000000..fb06a295e8
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/alias.txt
@@ -0,0 +1,2 @@
+alias $foo $bar
+alias :foo :bar
diff --git a/test/yarp/fixtures/unparser/corpus/literal/assignment.txt b/test/yarp/fixtures/unparser/corpus/literal/assignment.txt
new file mode 100644
index 0000000000..84a74e8928
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/assignment.txt
@@ -0,0 +1,53 @@
+$a = 1
+($a, $b) = [1, 2]
+((a,), b) = 1
+(*a) = []
+(*foo) = [1, 2]
+(@@a, @@b) = [1, 2]
+(@a, @b) = [1, 2]
+(a, (b, c)) = [1, [2, 3]]
+(a, *) = [1, 2]
+(a, *foo) = [1, 2]
+(a, b) = [1, 2]
+(a, b) = foo
+(a,) = foo
+(a.foo, a.bar) = [1, 2]
+(a[*foo], a[1]) = [1, 2]
+(a[0], a[1]) = [1, 2]
+(*c.foo) = 1
+::Foo = ::Bar
+@@a = 1
+@a = 1
+CONST = 1
+Name::Spaced::CONST = 1
+a = ((b, c) = 1)
+a = 1
+foo = foo()
+foo.[]=()
+foo.[]=(1, 2)
+foo.[]=true
+foo[*index] = value
+foo[1..2] = value
+foo[] = 1
+foo[a, b] = value
+foo[index] = value
+x = %()
+x.x=%()
+x[%()] = bar
+a[%()] ||= bar
+@a ||= %()
+x = <<-HEREDOC
+ #{}
+HEREDOC
+x.x=<<-HEREDOC
+ #{}
+HEREDOC
+x[] = <<-HEREDOC
+ #{}
+HEREDOC
+a[<<-HEREDOC] ||= bar
+ #{}
+HEREDOC
+@a ||= <<-HEREDOC
+ #{}
+HEREDOC
diff --git a/test/yarp/fixtures/unparser/corpus/literal/block.txt b/test/yarp/fixtures/unparser/corpus/literal/block.txt
new file mode 100644
index 0000000000..b2baf1dc12
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/block.txt
@@ -0,0 +1,96 @@
+foo {
+}
+foo { |a|
+}
+foo { |a,|
+}
+foo { |a,; x|
+}
+foo { |a, b|
+}
+foo(1) {
+ nil
+}
+foo { |a, *b|
+ nil
+}
+foo { |a, *|
+ nil
+}
+foo {
+ bar
+}
+foo.bar { |(a, b), c|
+ d
+}
+foo.bar { |*a; b|
+}
+foo.bar { |a; b|
+}
+foo.bar { |; a, b|
+}
+foo.bar { |*|
+ d
+}
+foo.bar { |(*)|
+ d
+}
+foo.bar { |((*))|
+ d
+}
+foo.bar { |(a, (*))|
+ d
+}
+foo.bar { |(a, b)|
+ d
+}
+foo.bar {
+}.baz
+m do
+rescue Exception => e
+end
+m do
+ foo
+rescue Exception => bar
+ bar
+end
+m do
+ bar
+rescue SomeError, *bar
+ baz
+end
+m do
+ bar
+rescue SomeError, *bar => exception
+ baz
+end
+m do
+ bar
+rescue *bar
+ baz
+end
+m do
+ bar
+rescue LoadError
+end
+m do
+ bar
+rescue
+else
+ baz
+end
+m do
+ bar
+rescue *bar => exception
+ baz
+end
+m do
+ensure
+end
+m do
+rescue
+ensure
+end
+bar {
+ _1 + _2
+}
diff --git a/test/yarp/fixtures/unparser/corpus/literal/case.txt b/test/yarp/fixtures/unparser/corpus/literal/case.txt
new file mode 100644
index 0000000000..c455fd7c39
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/case.txt
@@ -0,0 +1,37 @@
+case
+when bar
+ baz
+when baz
+ bar
+end
+case foo
+when bar
+when baz
+ bar
+end
+case foo
+when bar
+ baz
+when baz
+ bar
+end
+case foo
+when bar, baz
+ :other
+end
+case foo
+when *bar
+ :value
+end
+case foo
+when bar
+ baz
+else
+ :foo
+end
+case foo
+when *bar | baz
+end
+case foo
+when *bar.baz=1
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/class.txt b/test/yarp/fixtures/unparser/corpus/literal/class.txt
new file mode 100644
index 0000000000..f0198625e9
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/class.txt
@@ -0,0 +1,35 @@
+class A
+end
+
+class << a
+end
+
+class << a
+ b
+end
+
+class A::B
+end
+
+class A::B::C
+end
+
+class A < B
+end
+
+class A < B::C
+end
+
+class A::B < C::D
+end
+
+class A
+ include(B.new)
+
+ def foo
+ :bar
+ end
+end
+
+class ::A
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/control.txt b/test/yarp/fixtures/unparser/corpus/literal/control.txt
new file mode 100644
index 0000000000..648782bc96
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/control.txt
@@ -0,0 +1,15 @@
+next
+return
+break
+retry
+redo
+return 1
+return 1, 2
+return true ? 1 : 2
+break true ? 1 : 2
+next true ? 1 : 2
+return true, if true
+ 1
+else
+ 2
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/def.txt b/test/yarp/fixtures/unparser/corpus/literal/def.txt
new file mode 100644
index 0000000000..61339bd4a6
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/def.txt
@@ -0,0 +1,134 @@
+def foo
+ a
+rescue
+ b
+else
+ c
+ensure
+ d
+end
+
+def foo
+ a rescue b
+rescue
+ b
+else
+ c
+ensure
+ d
+end
+
+def foo(bar:, baz:)
+end
+
+def foo
+end
+
+def foo
+ bar
+end
+
+def foo
+ foo
+rescue
+ bar
+ensure
+ baz
+end
+
+def foo
+ bar
+ensure
+ baz
+end
+
+def foo
+ bar
+rescue
+ baz
+end
+
+def foo(bar)
+ bar
+end
+
+def foo(bar, baz)
+ bar
+end
+
+def foo(bar = ())
+ bar
+end
+
+def foo(bar = (baz; nil))
+end
+
+def foo(bar = true)
+ bar
+end
+
+def foo(bar, baz = true)
+ bar
+end
+
+def foo(bar: 1)
+end
+
+def foo(bar: baz)
+end
+
+def foo(bar: bar())
+end
+
+def foo(*)
+ bar
+end
+
+def foo(*bar)
+ bar
+end
+
+def foo(bar, *baz)
+ bar
+end
+
+def foo(baz = true, *bor)
+ bar
+end
+
+def foo(baz = true, *bor, &block)
+ bar
+end
+
+def foo(bar, baz = true, *bor)
+ bar
+end
+
+def foo(&block)
+ bar
+end
+
+def foo(bar, &block)
+ bar
+end
+
+def foo
+ bar
+ baz
+end
+
+def f(((a)))
+end
+
+def foo(bar:, baz: "value")
+end
+
+def f
+ <<-HEREDOC
+ #{}
+ HEREDOC
+end
+
+def f
+ %()
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/defined.txt b/test/yarp/fixtures/unparser/corpus/literal/defined.txt
new file mode 100644
index 0000000000..65e7c370fd
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/defined.txt
@@ -0,0 +1,3 @@
+defined?(@foo)
+defined?(Foo)
+defined?(((a, b) = [1, 2]))
diff --git a/test/yarp/fixtures/unparser/corpus/literal/defs.txt b/test/yarp/fixtures/unparser/corpus/literal/defs.txt
new file mode 100644
index 0000000000..b70aa9efc5
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/defs.txt
@@ -0,0 +1,40 @@
+def self.foo
+end
+
+def self.foo
+ bar
+end
+
+def self.foo
+ bar
+ baz
+end
+
+def Foo.bar
+ bar
+end
+
+def (foo { |bar|
+}).bar
+ bar
+end
+
+def (foo(1)).bar
+ bar
+end
+
+def (Foo::Bar.baz).bar
+ baz
+end
+
+def (Foo::Bar).bar
+ baz
+end
+
+def Foo.bar
+ baz
+end
+
+def foo.bar
+ baz
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/dstr.txt b/test/yarp/fixtures/unparser/corpus/literal/dstr.txt
new file mode 100644
index 0000000000..8a912d28ed
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/dstr.txt
@@ -0,0 +1,37 @@
+if true
+ "#{}a"
+end
+if true
+ <<-HEREDOC
+a
+#{}a
+b
+ HEREDOC
+ x
+end
+<<-HEREDOC
+\#{}\#{}
+#{}
+#{}
+#{}
+HEREDOC
+<<-HEREDOC rescue nil
+#{}
+a
+HEREDOC
+"a#$1"
+"a#$a"
+"a#@a"
+"a#@@a"
+if true
+ return <<-HEREDOC
+ #{42}
+ HEREDOC
+end
+foo(<<-HEREDOC)
+ #{bar}
+HEREDOC
+foo(<<-HEREDOC) { |x|
+ #{bar}
+HEREDOC
+}
diff --git a/test/yarp/fixtures/unparser/corpus/literal/empty.txt b/test/yarp/fixtures/unparser/corpus/literal/empty.txt
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/empty.txt
diff --git a/test/yarp/fixtures/unparser/corpus/literal/empty_begin.txt b/test/yarp/fixtures/unparser/corpus/literal/empty_begin.txt
new file mode 100644
index 0000000000..6a452c185a
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/empty_begin.txt
@@ -0,0 +1 @@
+()
diff --git a/test/yarp/fixtures/unparser/corpus/literal/flipflop.txt b/test/yarp/fixtures/unparser/corpus/literal/flipflop.txt
new file mode 100644
index 0000000000..8badd39d57
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/flipflop.txt
@@ -0,0 +1,6 @@
+if ((i == 4)..(i == 4))
+ foo
+end
+if ((i == 4)...(i == 4))
+ foo
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/for.txt b/test/yarp/fixtures/unparser/corpus/literal/for.txt
new file mode 100644
index 0000000000..4c19a352d9
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/for.txt
@@ -0,0 +1,12 @@
+bar(for a in bar do
+ baz
+end)
+for a in bar do
+ baz
+end
+for (a, *b) in bar do
+ baz
+end
+for (a, b) in bar do
+ baz
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/hookexe.txt b/test/yarp/fixtures/unparser/corpus/literal/hookexe.txt
new file mode 100644
index 0000000000..08f14f47b3
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/hookexe.txt
@@ -0,0 +1,7 @@
+BEGIN {
+ foo
+}
+bar
+END {
+ baz
+}
diff --git a/test/yarp/fixtures/unparser/corpus/literal/if.txt b/test/yarp/fixtures/unparser/corpus/literal/if.txt
new file mode 100644
index 0000000000..0c13801f9e
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/if.txt
@@ -0,0 +1,36 @@
+if /foo/
+ bar
+end
+if 3
+ 9
+end
+if 4
+ 5
+else
+ 6
+end
+unless 3
+ nil
+end
+unless 3
+ 9
+end
+if foo
+end
+
+module A
+ foo = bar if foo
+end
+
+module B
+ foo = bar unless foo
+end
+unless foo
+ foo = bar
+end
+if foo { |pair|
+ pair
+}
+ pair = :foo
+ foo
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/kwbegin.txt b/test/yarp/fixtures/unparser/corpus/literal/kwbegin.txt
new file mode 100644
index 0000000000..6cc1e74ca6
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/kwbegin.txt
@@ -0,0 +1,80 @@
+begin
+rescue
+end
+
+begin
+ensure
+end
+
+begin
+ a
+end
+
+begin
+ a
+rescue
+ b
+end
+
+begin
+ a
+ b
+rescue
+ b
+end
+
+begin
+rescue A
+end
+
+begin
+rescue A => foo
+end
+
+begin
+ a
+rescue A
+ b
+rescue B
+ c
+ensure
+ d
+end
+
+begin
+ begin
+ foo
+ bar
+ rescue
+ end
+rescue
+ baz
+ bar
+end
+
+begin
+ raise(Exception) rescue foo = bar
+rescue Exception
+end
+
+begin
+ foo
+rescue => bar
+ bar
+end
+
+begin
+ foo
+rescue Exception, Other => bar
+ bar
+end
+
+begin
+ bar
+rescue SomeError, *bar => exception
+ baz
+end
+
+class << self
+ undef :bar rescue nil
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/lambda.txt b/test/yarp/fixtures/unparser/corpus/literal/lambda.txt
new file mode 100644
index 0000000000..4eb722dad1
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/lambda.txt
@@ -0,0 +1,13 @@
+lambda {
+}
+lambda { |a, b|
+ a
+}
+->() {
+}
+->(a) {
+}
+->(a, b) {
+}
+->(a, b; c) {
+}
diff --git a/test/yarp/fixtures/unparser/corpus/literal/literal.txt b/test/yarp/fixtures/unparser/corpus/literal/literal.txt
new file mode 100644
index 0000000000..2fc7cd1d79
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/literal.txt
@@ -0,0 +1,91 @@
+{ "foo" => <<-HEREDOC, "bar" => :baz }
+ #{}
+HEREDOC
+{ "foo" => %(), "bar" => :baz }
+["foo", %()]
+a(<<-HEREDOC).a
+ #{}
+HEREDOC
+a(%()).a
+{ "foo" => <<-HEREDOC, **baz }
+ #{}
+HEREDOC
+{ "foo" => %(), **baz }
+"#@a #@@a #$a"
+0
+++1
+1
+1
+1r
+1.5r
+1.3r
+5i
+-5i
+0.6i
+-0.6i
+1000000000000000000000000000000i
+1ri
+"foo" "bar"
+"foobar #{baz}"
+"foo#{1}bar"
+"\\\\#{}"
+"#{}\#{}"
+"\#{}#{}"
+"foo\\\#{@bar}"
+"\""
+"foo bar"
+"foo\nbar"
+`foo`
+`foo#{@bar}`
+`)`
+`\``
+`"`
+:foo
+:"A B"
+:foo
+:"A B"
+:"A\"B"
+:""
+/foo/
+/[^-+',.\/:@[:alnum:]\[\]]+/
+/foo#{@bar}/
+/foo#{@bar}/imx
+/#{"\u0000"}/
+/\n/
+/\n/
+/\n/x
+/\/\//x
+:"foo#{bar}baz"
+:"#{"foo"}"
+(0.0 / 0.0)..1
+1..(0.0 / 0.0)
+(0.0 / 0.0)..100
+-0.1
+0.1
+[1, 2]
+[1, (), n2]
+[1]
+[]
+[1, *@foo]
+[*@foo, 1]
+[*@foo, *@baz]
+{}
+{ () => () }
+{ 1 => 2 }
+{ 1 => 2, 3 => 4 }
+{ a: (1 rescue foo), b: 2 }
+{ a: 1, b: 2 }
+{ a: :a }
+{ :"a b" => 1 }
+{ :-@ => 1 }
+"#{}
+#{}\na"
+foo {
+ "#{}
+#{}\na"
+}
+:"a\\
+b"
+` x
+#{foo}
+#`
diff --git a/test/yarp/fixtures/unparser/corpus/literal/module.txt b/test/yarp/fixtures/unparser/corpus/literal/module.txt
new file mode 100644
index 0000000000..cec03f3bfd
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/module.txt
@@ -0,0 +1,16 @@
+module A
+end
+
+module A::B
+end
+
+module A::B::C
+end
+
+module A
+ include(B.new)
+
+ def foo
+ :bar
+ end
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/opasgn.txt b/test/yarp/fixtures/unparser/corpus/literal/opasgn.txt
new file mode 100644
index 0000000000..5858d773d0
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/opasgn.txt
@@ -0,0 +1,24 @@
+a += 2
+a -= 2
+a **= 2
+a *= 2
+a /= 2
+a &&= b
+a ||= 2
+(a ||= 2).bar
+(h ||= {})[k] = v
+a.b += 2
+a.b -= 2
+a.b **= 2
+a.b *= 2
+a.b /= 2
+a.b &&= b
+a.b ||= 2
+a[b] += 2
+a[b] -= 2
+a[b] **= 2
+a[b] *= 2
+a[b] /= 2
+a[b] &&= b
+a[b] ||= 2
+foo.A += 1
diff --git a/test/yarp/fixtures/unparser/corpus/literal/pattern.txt b/test/yarp/fixtures/unparser/corpus/literal/pattern.txt
new file mode 100644
index 0000000000..7cfaa4dc67
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/pattern.txt
@@ -0,0 +1,41 @@
+case foo
+in A[1, 2, *a, 3] then
+ true
+in [1, 2, ] then
+ y
+in A(x:) then
+ true
+in {**a} then
+ true
+in {} if true then
+ true
+in [x, y, *] then
+ true
+in {a: 1, aa: 2} then
+ true
+in {} then
+ true
+in {**nil} then
+ true
+in {"a": 1} then
+ true
+in 1 | 2 then
+ true
+in 1 => a then
+ true
+in ^x then
+ true
+in 1
+in 2 then
+ true
+else
+ true
+end
+case foo
+in A[1, 2, *a, 3]
+end
+case foo
+in A
+else
+end
+1 in [a]
diff --git a/test/yarp/fixtures/unparser/corpus/literal/pragma.txt b/test/yarp/fixtures/unparser/corpus/literal/pragma.txt
new file mode 100644
index 0000000000..4f6dd71b38
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/pragma.txt
@@ -0,0 +1,4 @@
+__ENCODING__
+__FILE__
+__LINE__
+__dir__
diff --git a/test/yarp/fixtures/unparser/corpus/literal/range.txt b/test/yarp/fixtures/unparser/corpus/literal/range.txt
new file mode 100644
index 0000000000..eb1f3874c0
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/range.txt
@@ -0,0 +1,4 @@
+(1..)
+1..2
+(1...)
+1...2
diff --git a/test/yarp/fixtures/unparser/corpus/literal/rescue.txt b/test/yarp/fixtures/unparser/corpus/literal/rescue.txt
new file mode 100644
index 0000000000..a787816808
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/rescue.txt
@@ -0,0 +1,3 @@
+foo rescue bar
+foo rescue return bar
+x = (foo rescue return bar)
diff --git a/test/yarp/fixtures/unparser/corpus/literal/send.txt b/test/yarp/fixtures/unparser/corpus/literal/send.txt
new file mode 100644
index 0000000000..4361cf73cb
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/send.txt
@@ -0,0 +1,83 @@
+module A
+ foo ||= ((a, _) = b)
+end
+
+module A
+ local = 1
+ local.bar
+end
+class A
+end.bar
+module A
+end.bar
+begin
+rescue
+end.bar
+case (def foo
+end; :bar)
+when bar
+end.baz
+case foo
+when bar
+end.baz
+class << self
+end.bar
+def self.foo
+end.bar
+def foo
+end.bar
+until foo
+end.bar
+while foo
+end.bar
+loop {
+}.bar
+if foo
+end.baz
+(/bar/ =~ :foo).foo
+(1..2).max
+(foo =~ /bar/).foo
+/bar/ =~ :foo
+/bar/ =~ foo
+1..2.max
+A.foo
+FOO()
+a&.b
+a.foo
+foo
+foo << (bar * baz)
+foo =~ /bar/
+foo(&(foo || bar))
+foo(&block)
+foo(*args, &block)
+foo(*arguments)
+foo(1, 2)
+foo(bar)
+foo(bar, *args)
+foo(foo =~ /bar/)
+foo.bar(&baz)
+foo.bar(*arga, foo, *argb)
+foo.bar(*args)
+foo.bar(*args, foo)
+foo.bar(:baz, &baz)
+foo.bar(baz: boz)
+foo.bar(foo, "baz" => boz)
+foo.bar(foo, *args)
+foo.bar(foo, *args, &block)
+foo.bar(foo, {})
+foo.bar({ foo: boz }, boz)
+foo.bar=:baz
+foo(a: b)
+foo.&(a: b)
+foo.&(**a)
+foo[*baz]
+foo[1, 2]
+foo[]
+self.foo
+self.foo=:bar
+(a + b) / (c - d)
+(a + b) / c.-(e, f)
+(a + b) / c.-(*f)
+x(**foo)
+foo&.!
+foo.~(b)
diff --git a/test/yarp/fixtures/unparser/corpus/literal/since/27.txt b/test/yarp/fixtures/unparser/corpus/literal/since/27.txt
new file mode 100644
index 0000000000..c332f9e48e
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/since/27.txt
@@ -0,0 +1,4 @@
+-> {
+ _1 + _2
+}
+(..1)
diff --git a/test/yarp/fixtures/unparser/corpus/literal/since/30.txt b/test/yarp/fixtures/unparser/corpus/literal/since/30.txt
new file mode 100644
index 0000000000..b73328a4b0
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/since/30.txt
@@ -0,0 +1,4 @@
+1 => [a]
+1 => [*]
+1 in [*, 42, *]
+1 in [*, a, *foo]
diff --git a/test/yarp/fixtures/unparser/corpus/literal/since/31.txt b/test/yarp/fixtures/unparser/corpus/literal/since/31.txt
new file mode 100644
index 0000000000..504eb94d5b
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/since/31.txt
@@ -0,0 +1,7 @@
+def foo(&)
+ bar(&)
+end
+
+def foo(a, &)
+ bar(&)
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/since/32.txt b/test/yarp/fixtures/unparser/corpus/literal/since/32.txt
new file mode 100644
index 0000000000..fa279f11cf
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/since/32.txt
@@ -0,0 +1,7 @@
+def foo(argument, **)
+ bar(argument, **)
+end
+
+def foo(argument, *)
+ bar(argument, *)
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/singletons.txt b/test/yarp/fixtures/unparser/corpus/literal/singletons.txt
new file mode 100644
index 0000000000..496e6a41ce
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/singletons.txt
@@ -0,0 +1,4 @@
+false
+nil
+self
+true
diff --git a/test/yarp/fixtures/unparser/corpus/literal/super.txt b/test/yarp/fixtures/unparser/corpus/literal/super.txt
new file mode 100644
index 0000000000..0e73e6f052
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/super.txt
@@ -0,0 +1,21 @@
+super
+super()
+super(a)
+super(a, b)
+super(&block)
+super(a, &block)
+super(a {
+ foo
+})
+super {
+ foo
+}
+super(a) {
+ foo
+}
+super() {
+ foo
+}
+super(a, b) {
+ foo
+}
diff --git a/test/yarp/fixtures/unparser/corpus/literal/unary.txt b/test/yarp/fixtures/unparser/corpus/literal/unary.txt
new file mode 100644
index 0000000000..77685cb71d
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/unary.txt
@@ -0,0 +1,8 @@
+!1
+!(!1)
+!(!(foo || bar))
+!(!1).baz
+~a
+-a
++a
+-(-a).foo
diff --git a/test/yarp/fixtures/unparser/corpus/literal/undef.txt b/test/yarp/fixtures/unparser/corpus/literal/undef.txt
new file mode 100644
index 0000000000..a65d8d0cc4
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/undef.txt
@@ -0,0 +1,2 @@
+undef :foo
+undef :foo, :bar
diff --git a/test/yarp/fixtures/unparser/corpus/literal/variables.txt b/test/yarp/fixtures/unparser/corpus/literal/variables.txt
new file mode 100644
index 0000000000..1de938f376
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/variables.txt
@@ -0,0 +1,10 @@
+a
+@a
+@@a
+$a
+$1
+$`
+CONST
+SCOPED::CONST
+::TOPLEVEL
+::TOPLEVEL::CONST
diff --git a/test/yarp/fixtures/unparser/corpus/literal/while.txt b/test/yarp/fixtures/unparser/corpus/literal/while.txt
new file mode 100644
index 0000000000..19a60ef5ff
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/while.txt
@@ -0,0 +1,73 @@
+module A
+ foo { |bar|
+ while foo
+ foo = bar
+ end
+ }
+end
+
+def foo
+ foo = bar while foo != baz
+end
+
+module A
+ foo = bar while foo
+end
+
+module A
+ foo = bar until foo
+end
+
+module A
+ while foo
+ foo = bar
+ end
+end
+
+module A
+ each { |baz|
+ while foo
+ foo = bar
+ end
+ }
+end
+
+module A
+ each { |foo|
+ while foo
+ foo = bar
+ end
+ }
+end
+x = (begin
+ foo
+end while baz)
+begin
+ foo
+end while baz
+begin
+ foo
+ bar
+end until baz
+begin
+ foo
+ bar
+end while baz
+while false
+end
+while false
+ 3
+end
+while (foo {
+})
+ :body
+end
+until false
+end
+until false
+ 3
+end
+until (foo {
+})
+ :body
+end
diff --git a/test/yarp/fixtures/unparser/corpus/literal/yield.txt b/test/yarp/fixtures/unparser/corpus/literal/yield.txt
new file mode 100644
index 0000000000..c0b5820842
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/literal/yield.txt
@@ -0,0 +1,3 @@
+yield
+yield(a)
+yield(a, b)
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/and.txt b/test/yarp/fixtures/unparser/corpus/semantic/and.txt
new file mode 100644
index 0000000000..43d1712445
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/and.txt
@@ -0,0 +1,8 @@
+a...b or c...d
+a...b and c...d
+
+if a...b or c...d
+end
+
+if a...b and c...d
+end
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/block.txt b/test/yarp/fixtures/unparser/corpus/semantic/block.txt
new file mode 100644
index 0000000000..5891690025
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/block.txt
@@ -0,0 +1,26 @@
+foo do
+end
+
+foo do
+rescue
+end
+
+foo do
+ nil rescue nil
+ nil
+end
+
+foo do |a|
+end
+
+foo(<<-DOC) do |a|
+ b
+DOC
+ a
+end
+
+foo(<<-DOC) do
+ b
+DOC
+ a
+end
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/def.txt b/test/yarp/fixtures/unparser/corpus/semantic/def.txt
new file mode 100644
index 0000000000..7574619392
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/def.txt
@@ -0,0 +1,7 @@
+def foo
+ (a - b)
+end
+
+def foo
+ a rescue Exception
+end
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/dstr.txt b/test/yarp/fixtures/unparser/corpus/semantic/dstr.txt
new file mode 100644
index 0000000000..919e736077
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/dstr.txt
@@ -0,0 +1,127 @@
+<<DOC
+DOC
+
+<<'DOC'
+DOC
+
+<<~DOC
+DOC
+
+<<~'DOC'
+DOC
+
+<<DOC
+ a
+DOC
+
+<<'DOC'
+ a
+DOC
+
+<<DOC
+ a
+ #{}
+DOC
+
+<<~DOC
+ a
+ #{}
+DOC
+
+<<~DOC
+ a
+ #{}
+ b
+DOC
+
+<<~DOC
+ a
+ b
+DOC
+
+<<'DOC'
+a
+
+b
+DOC
+
+<<'DOC'
+ a
+
+ b
+DOC
+
+<<'DOC'
+ a\nb
+DOC
+
+<<DOC
+#{}a
+ #{}a
+DOC
+
+<<DOC
+ #{}
+ \#{}
+DOC
+
+<<DOC
+ a#{}b
+ c
+DOC
+
+<<~DOC
+ #{}
+DOC
+
+if true
+ <<~DOC
+ #{}
+ DOC
+end
+
+if true
+ <<~DOC
+ b#{}
+ DOC
+end
+
+if true
+ <<~DOC
+ #{}a
+ DOC
+end
+
+if true
+ <<-'DOC'
+ a
+
+ b
+ DOC
+end
+
+"#{}a"
+
+%(\n"#{}"\n)
+
+%Q(-\n"#{}"\n)
+
+"a
+#{}
+b"
+
+"a\n#{}
+b"
+
+"a
+#{}\nb"
+
+'a' \
+"#{}"
+
+"" "" ""
+
+"a#{@a}" "b"
+"a#@a" "b"
+"a#$a" "b"
+"a#@@a" "b"
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/kwbegin.txt b/test/yarp/fixtures/unparser/corpus/semantic/kwbegin.txt
new file mode 100644
index 0000000000..d275a96a5c
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/kwbegin.txt
@@ -0,0 +1,42 @@
+begin
+rescue
+end
+
+begin
+rescue
+else
+end
+
+begin
+ a
+end
+
+begin
+ a
+rescue
+ b
+end
+
+begin
+ a
+ b
+rescue
+ b
+end
+
+begin
+rescue A
+else
+end
+
+begin; rescue A; else; end
+
+begin
+ a
+rescue A
+ b
+rescue B
+ c
+ensure
+ d
+end
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/literal.txt b/test/yarp/fixtures/unparser/corpus/semantic/literal.txt
new file mode 100644
index 0000000000..c424db5a53
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/literal.txt
@@ -0,0 +1,14 @@
+1.0r
+-0r
+0x1
+1_000
+1e10
+10e10000000000
+-10e10000000000
+?c
+%r(/)
+%r(\))
+%r(#{@bar}baz)
+10.2e10000000000
+-10.2e10000000000
+w(foo bar)
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/send.txt b/test/yarp/fixtures/unparser/corpus/semantic/send.txt
new file mode 100644
index 0000000000..a65b27d2f2
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/send.txt
@@ -0,0 +1,6 @@
+foo
+foo(1)
+
+a.===(b).c == d
+
+a == d.c.===(c)
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/undef.txt b/test/yarp/fixtures/unparser/corpus/semantic/undef.txt
new file mode 100644
index 0000000000..47debc3114
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/undef.txt
@@ -0,0 +1,2 @@
+undef foo
+undef foo, bar
diff --git a/test/yarp/fixtures/unparser/corpus/semantic/while.txt b/test/yarp/fixtures/unparser/corpus/semantic/while.txt
new file mode 100644
index 0000000000..a55dcc52fc
--- /dev/null
+++ b/test/yarp/fixtures/unparser/corpus/semantic/while.txt
@@ -0,0 +1,25 @@
+a until b? {}
+
+until b? {}
+ a
+end
+
+foo = bar while foo
+
+a until b && a { }
+
+while a = b
+ a
+end
+
+a until b(<<-FOO) do
+FOO
+ c
+end
+
+module A
+ foo = exp
+ while foo
+ foo = bar
+ end
+end
diff --git a/test/yarp/fixtures/until.txt b/test/yarp/fixtures/until.txt
new file mode 100644
index 0000000000..fa93819e25
--- /dev/null
+++ b/test/yarp/fixtures/until.txt
@@ -0,0 +1,11 @@
+until true; 1; end
+
+1 until true
+
+break until true
+
+next until true
+
+return until true
+
+foo :a, :b until bar?
diff --git a/test/yarp/fixtures/variables.txt b/test/yarp/fixtures/variables.txt
new file mode 100644
index 0000000000..276dc3b3f1
--- /dev/null
+++ b/test/yarp/fixtures/variables.txt
@@ -0,0 +1,46 @@
+@@abc
+
+@@abc = 1
+
+@@foo, @@bar = 1
+
+@@foo = 1, 2
+
+$abc = 1
+
+$abc
+
+@abc
+
+@abc = 1
+
+a
+
+abc = 1
+
+$foo, $bar = 1
+
+$foo = 1, 2
+
+@foo, @bar = 1
+
+@foo = 1, 2
+
+foo = 1; foo = 1, 2
+
+foo = 1, 2
+
+foo, * = 1, 2
+
+foo, = 1, 2
+
+foo, *bar = 1, 2
+
+foo, (bar, baz) = 1, [2, 3]
+
+foo = *bar
+
+Foo = 1, 2
+
+(a; b; c)
+
diff --git a/test/yarp/fixtures/while.txt b/test/yarp/fixtures/while.txt
new file mode 100644
index 0000000000..ed5ea0f45c
--- /dev/null
+++ b/test/yarp/fixtures/while.txt
@@ -0,0 +1,19 @@
+while true; 1; end
+
+1 while true
+
+break while true
+
+next while true
+
+return while true
+
+foo :a, :b while bar?
+
+while def self.foo a = tap do end; end; break; end
+
+while class Foo a = tap do end; end; break; end
+
+while class << self; tap do end; end; break; end
+
+while class << self; a = tap do end; end; break; end
diff --git a/test/yarp/fixtures/whitequark/LICENSE b/test/yarp/fixtures/whitequark/LICENSE
new file mode 100644
index 0000000000..971310e3d6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/LICENSE
@@ -0,0 +1,25 @@
+Copyright (c) 2013-2016 whitequark <whitequark@whitequark.org>
+
+Parts of the source are derived from ruby_parser:
+Copyright (c) Ryan Davis, seattle.rb
+
+MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/test/yarp/fixtures/whitequark/__ENCODING__.txt b/test/yarp/fixtures/whitequark/__ENCODING__.txt
new file mode 100644
index 0000000000..d6debf2f92
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/__ENCODING__.txt
@@ -0,0 +1 @@
+__ENCODING__
diff --git a/test/yarp/fixtures/whitequark/__ENCODING___legacy_.txt b/test/yarp/fixtures/whitequark/__ENCODING___legacy_.txt
new file mode 100644
index 0000000000..d6debf2f92
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/__ENCODING___legacy_.txt
@@ -0,0 +1 @@
+__ENCODING__
diff --git a/test/yarp/fixtures/whitequark/alias.txt b/test/yarp/fixtures/whitequark/alias.txt
new file mode 100644
index 0000000000..e33b120022
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/alias.txt
@@ -0,0 +1 @@
+alias :foo bar
diff --git a/test/yarp/fixtures/whitequark/alias_gvar.txt b/test/yarp/fixtures/whitequark/alias_gvar.txt
new file mode 100644
index 0000000000..b975d97f8e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/alias_gvar.txt
@@ -0,0 +1,3 @@
+alias $a $+
+
+alias $a $b
diff --git a/test/yarp/fixtures/whitequark/ambiuous_quoted_label_in_ternary_operator.txt b/test/yarp/fixtures/whitequark/ambiuous_quoted_label_in_ternary_operator.txt
new file mode 100644
index 0000000000..9b2e3afad5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ambiuous_quoted_label_in_ternary_operator.txt
@@ -0,0 +1 @@
+a ? b & '': nil
diff --git a/test/yarp/fixtures/whitequark/and.txt b/test/yarp/fixtures/whitequark/and.txt
new file mode 100644
index 0000000000..43fa6a65cd
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/and.txt
@@ -0,0 +1,3 @@
+foo && bar
+
+foo and bar
diff --git a/test/yarp/fixtures/whitequark/and_asgn.txt b/test/yarp/fixtures/whitequark/and_asgn.txt
new file mode 100644
index 0000000000..a979265914
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/and_asgn.txt
@@ -0,0 +1,3 @@
+foo.a &&= 1
+
+foo[0, 1] &&= 2
diff --git a/test/yarp/fixtures/whitequark/and_or_masgn.txt b/test/yarp/fixtures/whitequark/and_or_masgn.txt
new file mode 100644
index 0000000000..e346041604
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/and_or_masgn.txt
@@ -0,0 +1,3 @@
+foo && (a, b = bar)
+
+foo || (a, b = bar)
diff --git a/test/yarp/fixtures/whitequark/anonymous_blockarg.txt b/test/yarp/fixtures/whitequark/anonymous_blockarg.txt
new file mode 100644
index 0000000000..e3eaaad6ce
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/anonymous_blockarg.txt
@@ -0,0 +1 @@
+def foo(&); bar(&); end
diff --git a/test/yarp/fixtures/whitequark/arg.txt b/test/yarp/fixtures/whitequark/arg.txt
new file mode 100644
index 0000000000..b1984ad5c4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/arg.txt
@@ -0,0 +1,3 @@
+def f(foo); end
+
+def f(foo, bar); end
diff --git a/test/yarp/fixtures/whitequark/arg_duplicate_ignored.txt b/test/yarp/fixtures/whitequark/arg_duplicate_ignored.txt
new file mode 100644
index 0000000000..0f5cc33961
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/arg_duplicate_ignored.txt
@@ -0,0 +1,3 @@
+def foo(_, _); end
+
+def foo(_a, _a); end
diff --git a/test/yarp/fixtures/whitequark/arg_label.txt b/test/yarp/fixtures/whitequark/arg_label.txt
new file mode 100644
index 0000000000..82db416cb4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/arg_label.txt
@@ -0,0 +1,6 @@
+def foo
+ a:b end
+
+def foo() a:b end
+
+f { || a:b }
diff --git a/test/yarp/fixtures/whitequark/arg_scope.txt b/test/yarp/fixtures/whitequark/arg_scope.txt
new file mode 100644
index 0000000000..6c67ab72e3
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/arg_scope.txt
@@ -0,0 +1 @@
+lambda{|;a|a}
diff --git a/test/yarp/fixtures/whitequark/args.txt b/test/yarp/fixtures/whitequark/args.txt
new file mode 100644
index 0000000000..773be477d3
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args.txt
@@ -0,0 +1,63 @@
+def f &b; end
+
+def f (((a))); end
+
+def f ((*)); end
+
+def f ((*, p)); end
+
+def f ((*r)); end
+
+def f ((*r, p)); end
+
+def f ((a, *)); end
+
+def f ((a, *, p)); end
+
+def f ((a, *r)); end
+
+def f ((a, *r, p)); end
+
+def f ((a, a1)); end
+
+def f (foo: 1, &b); end
+
+def f (foo: 1, bar: 2, **baz, &b); end
+
+def f **baz, &b; end
+
+def f *, **; end
+
+def f *r, &b; end
+
+def f *r, p, &b; end
+
+def f ; end
+
+def f a, &b; end
+
+def f a, *r, &b; end
+
+def f a, *r, p, &b; end
+
+def f a, o=1, &b; end
+
+def f a, o=1, *r, &b; end
+
+def f a, o=1, *r, p, &b; end
+
+def f a, o=1, p, &b; end
+
+def f foo:
+; end
+
+def f foo: -1
+; end
+
+def f o=1, &b; end
+
+def f o=1, *r, &b; end
+
+def f o=1, *r, p, &b; end
+
+def f o=1, p, &b; end
diff --git a/test/yarp/fixtures/whitequark/args_args_assocs.txt b/test/yarp/fixtures/whitequark/args_args_assocs.txt
new file mode 100644
index 0000000000..445f899442
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_args_assocs.txt
@@ -0,0 +1,3 @@
+fun(foo, :foo => 1)
+
+fun(foo, :foo => 1, &baz)
diff --git a/test/yarp/fixtures/whitequark/args_args_assocs_comma.txt b/test/yarp/fixtures/whitequark/args_args_assocs_comma.txt
new file mode 100644
index 0000000000..b566a59037
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_args_assocs_comma.txt
@@ -0,0 +1 @@
+foo[bar, :baz => 1,]
diff --git a/test/yarp/fixtures/whitequark/args_args_comma.txt b/test/yarp/fixtures/whitequark/args_args_comma.txt
new file mode 100644
index 0000000000..80770716dd
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_args_comma.txt
@@ -0,0 +1 @@
+foo[bar,]
diff --git a/test/yarp/fixtures/whitequark/args_args_star.txt b/test/yarp/fixtures/whitequark/args_args_star.txt
new file mode 100644
index 0000000000..d4dc9cc579
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_args_star.txt
@@ -0,0 +1,3 @@
+fun(foo, *bar)
+
+fun(foo, *bar, &baz)
diff --git a/test/yarp/fixtures/whitequark/args_assocs.txt b/test/yarp/fixtures/whitequark/args_assocs.txt
new file mode 100644
index 0000000000..b33e131181
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_assocs.txt
@@ -0,0 +1,11 @@
+fun(:foo => 1)
+
+fun(:foo => 1, &baz)
+
+self.[]= foo, :a => 1
+
+self[:bar => 1]
+
+super(:foo => 42)
+
+yield(:foo => 42)
diff --git a/test/yarp/fixtures/whitequark/args_assocs_comma.txt b/test/yarp/fixtures/whitequark/args_assocs_comma.txt
new file mode 100644
index 0000000000..15e5cd65dc
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_assocs_comma.txt
@@ -0,0 +1 @@
+foo[:baz => 1,]
diff --git a/test/yarp/fixtures/whitequark/args_assocs_legacy.txt b/test/yarp/fixtures/whitequark/args_assocs_legacy.txt
new file mode 100644
index 0000000000..b33e131181
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_assocs_legacy.txt
@@ -0,0 +1,11 @@
+fun(:foo => 1)
+
+fun(:foo => 1, &baz)
+
+self.[]= foo, :a => 1
+
+self[:bar => 1]
+
+super(:foo => 42)
+
+yield(:foo => 42)
diff --git a/test/yarp/fixtures/whitequark/args_block_pass.txt b/test/yarp/fixtures/whitequark/args_block_pass.txt
new file mode 100644
index 0000000000..35d7d23885
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_block_pass.txt
@@ -0,0 +1 @@
+fun(&bar)
diff --git a/test/yarp/fixtures/whitequark/args_cmd.txt b/test/yarp/fixtures/whitequark/args_cmd.txt
new file mode 100644
index 0000000000..dd0c8891d0
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_cmd.txt
@@ -0,0 +1 @@
+fun(f bar)
diff --git a/test/yarp/fixtures/whitequark/args_star.txt b/test/yarp/fixtures/whitequark/args_star.txt
new file mode 100644
index 0000000000..ce1e6f8465
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/args_star.txt
@@ -0,0 +1,3 @@
+fun(*bar)
+
+fun(*bar, &baz)
diff --git a/test/yarp/fixtures/whitequark/array_assocs.txt b/test/yarp/fixtures/whitequark/array_assocs.txt
new file mode 100644
index 0000000000..fcecfcdefc
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_assocs.txt
@@ -0,0 +1,3 @@
+[ 1 => 2 ]
+
+[ 1, 2 => 3 ]
diff --git a/test/yarp/fixtures/whitequark/array_plain.txt b/test/yarp/fixtures/whitequark/array_plain.txt
new file mode 100644
index 0000000000..44e2ace7e5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_plain.txt
@@ -0,0 +1 @@
+[1, 2]
diff --git a/test/yarp/fixtures/whitequark/array_splat.txt b/test/yarp/fixtures/whitequark/array_splat.txt
new file mode 100644
index 0000000000..144c1eb124
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_splat.txt
@@ -0,0 +1,5 @@
+[*foo]
+
+[1, *foo, 2]
+
+[1, *foo]
diff --git a/test/yarp/fixtures/whitequark/array_symbols.txt b/test/yarp/fixtures/whitequark/array_symbols.txt
new file mode 100644
index 0000000000..a9f9df0404
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_symbols.txt
@@ -0,0 +1 @@
+%i[foo bar]
diff --git a/test/yarp/fixtures/whitequark/array_symbols_empty.txt b/test/yarp/fixtures/whitequark/array_symbols_empty.txt
new file mode 100644
index 0000000000..da3a89ee9b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_symbols_empty.txt
@@ -0,0 +1,3 @@
+%I()
+
+%i[]
diff --git a/test/yarp/fixtures/whitequark/array_symbols_interp.txt b/test/yarp/fixtures/whitequark/array_symbols_interp.txt
new file mode 100644
index 0000000000..d4950d0c05
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_symbols_interp.txt
@@ -0,0 +1,3 @@
+%I[foo #{bar}]
+
+%I[foo#{bar}]
diff --git a/test/yarp/fixtures/whitequark/array_words.txt b/test/yarp/fixtures/whitequark/array_words.txt
new file mode 100644
index 0000000000..a07380cadc
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_words.txt
@@ -0,0 +1 @@
+%w[foo bar]
diff --git a/test/yarp/fixtures/whitequark/array_words_empty.txt b/test/yarp/fixtures/whitequark/array_words_empty.txt
new file mode 100644
index 0000000000..7568263f4a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_words_empty.txt
@@ -0,0 +1,3 @@
+%W()
+
+%w[]
diff --git a/test/yarp/fixtures/whitequark/array_words_interp.txt b/test/yarp/fixtures/whitequark/array_words_interp.txt
new file mode 100644
index 0000000000..1460f7dc03
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/array_words_interp.txt
@@ -0,0 +1,3 @@
+%W[foo #{bar}]
+
+%W[foo #{bar}foo#@baz]
diff --git a/test/yarp/fixtures/whitequark/asgn_cmd.txt b/test/yarp/fixtures/whitequark/asgn_cmd.txt
new file mode 100644
index 0000000000..81f8cc1c8d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/asgn_cmd.txt
@@ -0,0 +1,3 @@
+foo = bar = m foo
+
+foo = m foo
diff --git a/test/yarp/fixtures/whitequark/asgn_mrhs.txt b/test/yarp/fixtures/whitequark/asgn_mrhs.txt
new file mode 100644
index 0000000000..f0b0055e55
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/asgn_mrhs.txt
@@ -0,0 +1,5 @@
+foo = *bar
+
+foo = bar, 1
+
+foo = baz, *bar
diff --git a/test/yarp/fixtures/whitequark/back_ref.txt b/test/yarp/fixtures/whitequark/back_ref.txt
new file mode 100644
index 0000000000..03166e10ee
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/back_ref.txt
@@ -0,0 +1 @@
+$+
diff --git a/test/yarp/fixtures/whitequark/bang.txt b/test/yarp/fixtures/whitequark/bang.txt
new file mode 100644
index 0000000000..6cf9410cf5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bang.txt
@@ -0,0 +1 @@
+!foo
diff --git a/test/yarp/fixtures/whitequark/bang_cmd.txt b/test/yarp/fixtures/whitequark/bang_cmd.txt
new file mode 100644
index 0000000000..0a5252c001
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bang_cmd.txt
@@ -0,0 +1 @@
+!m foo
diff --git a/test/yarp/fixtures/whitequark/begin_cmdarg.txt b/test/yarp/fixtures/whitequark/begin_cmdarg.txt
new file mode 100644
index 0000000000..a5873668e9
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/begin_cmdarg.txt
@@ -0,0 +1 @@
+p begin 1.times do 1 end end
diff --git a/test/yarp/fixtures/whitequark/beginless_erange_after_newline.txt b/test/yarp/fixtures/whitequark/beginless_erange_after_newline.txt
new file mode 100644
index 0000000000..ae6c75564a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/beginless_erange_after_newline.txt
@@ -0,0 +1,2 @@
+foo
+...100
diff --git a/test/yarp/fixtures/whitequark/beginless_irange_after_newline.txt b/test/yarp/fixtures/whitequark/beginless_irange_after_newline.txt
new file mode 100644
index 0000000000..bfc8d5e5e8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/beginless_irange_after_newline.txt
@@ -0,0 +1,2 @@
+foo
+..100
diff --git a/test/yarp/fixtures/whitequark/beginless_range.txt b/test/yarp/fixtures/whitequark/beginless_range.txt
new file mode 100644
index 0000000000..ef52703b8a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/beginless_range.txt
@@ -0,0 +1,3 @@
+...100
+
+..100
diff --git a/test/yarp/fixtures/whitequark/blockarg.txt b/test/yarp/fixtures/whitequark/blockarg.txt
new file mode 100644
index 0000000000..63552e97be
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/blockarg.txt
@@ -0,0 +1 @@
+def f(&block); end
diff --git a/test/yarp/fixtures/whitequark/blockargs.txt b/test/yarp/fixtures/whitequark/blockargs.txt
new file mode 100644
index 0000000000..cdd2c4f331
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/blockargs.txt
@@ -0,0 +1,71 @@
+f{ }
+
+f{ | | }
+
+f{ |&b| }
+
+f{ |**baz, &b| }
+
+f{ |*, &b| }
+
+f{ |*r, p, &b| }
+
+f{ |*s, &b| }
+
+f{ |*s| }
+
+f{ |*| }
+
+f{ |;
+a
+| }
+
+f{ |;a| }
+
+f{ |a, &b| }
+
+f{ |a, *, &b| }
+
+f{ |a, *r, p, &b| }
+
+f{ |a, *s, &b| }
+
+f{ |a, *s| }
+
+f{ |a, *| }
+
+f{ |a, b,| }
+
+f{ |a, c| }
+
+f{ |a, o=1, &b| }
+
+f{ |a, o=1, *r, p, &b| }
+
+f{ |a, o=1, o1=2, *r, &b| }
+
+f{ |a, o=1, p, &b| }
+
+f{ |a,| }
+
+f{ |a| }
+
+f{ |a| }
+
+f{ |a| }
+
+f{ |foo: 1, &b| }
+
+f{ |foo: 1, bar: 2, **baz, &b| }
+
+f{ |foo:| }
+
+f{ |o=1, &b| }
+
+f{ |o=1, *r, &b| }
+
+f{ |o=1, *r, p, &b| }
+
+f{ |o=1, p, &b| }
+
+f{ || }
diff --git a/test/yarp/fixtures/whitequark/break.txt b/test/yarp/fixtures/whitequark/break.txt
new file mode 100644
index 0000000000..da51ec7c31
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/break.txt
@@ -0,0 +1,7 @@
+break
+
+break foo
+
+break()
+
+break(foo)
diff --git a/test/yarp/fixtures/whitequark/break_block.txt b/test/yarp/fixtures/whitequark/break_block.txt
new file mode 100644
index 0000000000..4b58c58d5e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/break_block.txt
@@ -0,0 +1 @@
+break fun foo do end
diff --git a/test/yarp/fixtures/whitequark/bug_435.txt b/test/yarp/fixtures/whitequark/bug_435.txt
new file mode 100644
index 0000000000..3e4e0d5abd
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_435.txt
@@ -0,0 +1 @@
+"#{-> foo {}}"
diff --git a/test/yarp/fixtures/whitequark/bug_447.txt b/test/yarp/fixtures/whitequark/bug_447.txt
new file mode 100644
index 0000000000..7da59bbc2f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_447.txt
@@ -0,0 +1,3 @@
+m [] do end
+
+m [], 1 do end
diff --git a/test/yarp/fixtures/whitequark/bug_452.txt b/test/yarp/fixtures/whitequark/bug_452.txt
new file mode 100644
index 0000000000..8b41dd6027
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_452.txt
@@ -0,0 +1 @@
+td (1_500).toString(); td.num do; end
diff --git a/test/yarp/fixtures/whitequark/bug_466.txt b/test/yarp/fixtures/whitequark/bug_466.txt
new file mode 100644
index 0000000000..ad02ad38ae
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_466.txt
@@ -0,0 +1 @@
+foo "#{(1+1).to_i}" do; end
diff --git a/test/yarp/fixtures/whitequark/bug_473.txt b/test/yarp/fixtures/whitequark/bug_473.txt
new file mode 100644
index 0000000000..0d2ea883a1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_473.txt
@@ -0,0 +1 @@
+m "#{[]}"
diff --git a/test/yarp/fixtures/whitequark/bug_480.txt b/test/yarp/fixtures/whitequark/bug_480.txt
new file mode 100644
index 0000000000..0558b2c957
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_480.txt
@@ -0,0 +1 @@
+m "#{}#{()}"
diff --git a/test/yarp/fixtures/whitequark/bug_481.txt b/test/yarp/fixtures/whitequark/bug_481.txt
new file mode 100644
index 0000000000..6328e9dbbd
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_481.txt
@@ -0,0 +1 @@
+m def x(); end; 1.tap do end
diff --git a/test/yarp/fixtures/whitequark/bug_ascii_8bit_in_literal.txt b/test/yarp/fixtures/whitequark/bug_ascii_8bit_in_literal.txt
new file mode 100644
index 0000000000..85399bd19a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_ascii_8bit_in_literal.txt
@@ -0,0 +1,2 @@
+# coding:utf-8
+ "\xD0\xBF\xD1\x80\xD0\xBE\xD0\xB2\xD0\xB5\xD1\x80\xD0\xBA\xD0\xB0"
diff --git a/test/yarp/fixtures/whitequark/bug_cmd_string_lookahead.txt b/test/yarp/fixtures/whitequark/bug_cmd_string_lookahead.txt
new file mode 100644
index 0000000000..7e9e54c518
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_cmd_string_lookahead.txt
@@ -0,0 +1 @@
+desc "foo" do end
diff --git a/test/yarp/fixtures/whitequark/bug_cmdarg.txt b/test/yarp/fixtures/whitequark/bug_cmdarg.txt
new file mode 100644
index 0000000000..0281cd6668
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_cmdarg.txt
@@ -0,0 +1,5 @@
+assert do: true
+
+assert dogs
+
+f x: -> do meth do end end
diff --git a/test/yarp/fixtures/whitequark/bug_def_no_paren_eql_begin.txt b/test/yarp/fixtures/whitequark/bug_def_no_paren_eql_begin.txt
new file mode 100644
index 0000000000..615dc88217
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_def_no_paren_eql_begin.txt
@@ -0,0 +1,4 @@
+def foo
+=begin
+=end
+end
diff --git a/test/yarp/fixtures/whitequark/bug_do_block_in_call_args.txt b/test/yarp/fixtures/whitequark/bug_do_block_in_call_args.txt
new file mode 100644
index 0000000000..21340fd6e8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_do_block_in_call_args.txt
@@ -0,0 +1 @@
+bar def foo; self.each do end end
diff --git a/test/yarp/fixtures/whitequark/bug_do_block_in_cmdarg.txt b/test/yarp/fixtures/whitequark/bug_do_block_in_cmdarg.txt
new file mode 100644
index 0000000000..7dece50408
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_do_block_in_cmdarg.txt
@@ -0,0 +1 @@
+tap (proc do end)
diff --git a/test/yarp/fixtures/whitequark/bug_do_block_in_hash_brace.txt b/test/yarp/fixtures/whitequark/bug_do_block_in_hash_brace.txt
new file mode 100644
index 0000000000..6c4dd205d2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_do_block_in_hash_brace.txt
@@ -0,0 +1,9 @@
+p :foo, {"a": proc do end, b: proc do end}
+
+p :foo, {** proc do end, b: proc do end}
+
+p :foo, {:a => proc do end, b: proc do end}
+
+p :foo, {a: proc do end, b: proc do end}
+
+p :foo, {proc do end => proc do end, b: proc do end}
diff --git a/test/yarp/fixtures/whitequark/bug_heredoc_do.txt b/test/yarp/fixtures/whitequark/bug_heredoc_do.txt
new file mode 100644
index 0000000000..06fef0a99f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_heredoc_do.txt
@@ -0,0 +1,3 @@
+f <<-TABLE do
+TABLE
+end
diff --git a/test/yarp/fixtures/whitequark/bug_interp_single.txt b/test/yarp/fixtures/whitequark/bug_interp_single.txt
new file mode 100644
index 0000000000..be0b1a8542
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_interp_single.txt
@@ -0,0 +1,3 @@
+"#{1}"
+
+%W"#{1}"
diff --git a/test/yarp/fixtures/whitequark/bug_lambda_leakage.txt b/test/yarp/fixtures/whitequark/bug_lambda_leakage.txt
new file mode 100644
index 0000000000..372b36929a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_lambda_leakage.txt
@@ -0,0 +1 @@
+->(scope) {}; scope
diff --git a/test/yarp/fixtures/whitequark/bug_regex_verification.txt b/test/yarp/fixtures/whitequark/bug_regex_verification.txt
new file mode 100644
index 0000000000..f8483c8b10
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_regex_verification.txt
@@ -0,0 +1 @@
+/#)/x
diff --git a/test/yarp/fixtures/whitequark/bug_rescue_empty_else.txt b/test/yarp/fixtures/whitequark/bug_rescue_empty_else.txt
new file mode 100644
index 0000000000..e8c81edc57
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_rescue_empty_else.txt
@@ -0,0 +1 @@
+begin; rescue LoadError; else; end
diff --git a/test/yarp/fixtures/whitequark/bug_while_not_parens_do.txt b/test/yarp/fixtures/whitequark/bug_while_not_parens_do.txt
new file mode 100644
index 0000000000..628c36ef13
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/bug_while_not_parens_do.txt
@@ -0,0 +1 @@
+while not (true) do end
diff --git a/test/yarp/fixtures/whitequark/case_cond.txt b/test/yarp/fixtures/whitequark/case_cond.txt
new file mode 100644
index 0000000000..a236b27ebd
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/case_cond.txt
@@ -0,0 +1 @@
+case; when foo; 'foo'; end
diff --git a/test/yarp/fixtures/whitequark/case_cond_else.txt b/test/yarp/fixtures/whitequark/case_cond_else.txt
new file mode 100644
index 0000000000..06eefa4a1b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/case_cond_else.txt
@@ -0,0 +1 @@
+case; when foo; 'foo'; else 'bar'; end
diff --git a/test/yarp/fixtures/whitequark/case_expr.txt b/test/yarp/fixtures/whitequark/case_expr.txt
new file mode 100644
index 0000000000..472672c781
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/case_expr.txt
@@ -0,0 +1 @@
+case foo; when 'bar'; bar; end
diff --git a/test/yarp/fixtures/whitequark/case_expr_else.txt b/test/yarp/fixtures/whitequark/case_expr_else.txt
new file mode 100644
index 0000000000..3c55826134
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/case_expr_else.txt
@@ -0,0 +1 @@
+case foo; when 'bar'; bar; else baz; end
diff --git a/test/yarp/fixtures/whitequark/casgn_scoped.txt b/test/yarp/fixtures/whitequark/casgn_scoped.txt
new file mode 100644
index 0000000000..964d0f4c9b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/casgn_scoped.txt
@@ -0,0 +1 @@
+Bar::Foo = 10
diff --git a/test/yarp/fixtures/whitequark/casgn_toplevel.txt b/test/yarp/fixtures/whitequark/casgn_toplevel.txt
new file mode 100644
index 0000000000..047a3b6745
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/casgn_toplevel.txt
@@ -0,0 +1 @@
+::Foo = 10
diff --git a/test/yarp/fixtures/whitequark/casgn_unscoped.txt b/test/yarp/fixtures/whitequark/casgn_unscoped.txt
new file mode 100644
index 0000000000..5632cf64ee
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/casgn_unscoped.txt
@@ -0,0 +1 @@
+Foo = 10
diff --git a/test/yarp/fixtures/whitequark/character.txt b/test/yarp/fixtures/whitequark/character.txt
new file mode 100644
index 0000000000..b22ffbb71a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/character.txt
@@ -0,0 +1 @@
+?a
diff --git a/test/yarp/fixtures/whitequark/class.txt b/test/yarp/fixtures/whitequark/class.txt
new file mode 100644
index 0000000000..a30a248e96
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/class.txt
@@ -0,0 +1,3 @@
+class Foo end
+
+class Foo; end
diff --git a/test/yarp/fixtures/whitequark/class_definition_in_while_cond.txt b/test/yarp/fixtures/whitequark/class_definition_in_while_cond.txt
new file mode 100644
index 0000000000..10427314b5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/class_definition_in_while_cond.txt
@@ -0,0 +1,7 @@
+while class << self; a = tap do end; end; break; end
+
+while class << self; tap do end; end; break; end
+
+while class Foo a = tap do end; end; break; end
+
+while class Foo; tap do end; end; break; end
diff --git a/test/yarp/fixtures/whitequark/class_super.txt b/test/yarp/fixtures/whitequark/class_super.txt
new file mode 100644
index 0000000000..8829d82d36
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/class_super.txt
@@ -0,0 +1 @@
+class Foo < Bar; end
diff --git a/test/yarp/fixtures/whitequark/class_super_label.txt b/test/yarp/fixtures/whitequark/class_super_label.txt
new file mode 100644
index 0000000000..5d47897ab6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/class_super_label.txt
@@ -0,0 +1 @@
+class Foo < a:b; end
diff --git a/test/yarp/fixtures/whitequark/comments_before_leading_dot__27.txt b/test/yarp/fixtures/whitequark/comments_before_leading_dot__27.txt
new file mode 100644
index 0000000000..208f2d87fe
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/comments_before_leading_dot__27.txt
@@ -0,0 +1,19 @@
+a #
+ #
+&.foo
+
+
+a #
+ #
+.foo
+
+
+a #
+#
+&.foo
+
+
+a #
+#
+.foo
+
diff --git a/test/yarp/fixtures/whitequark/complex.txt b/test/yarp/fixtures/whitequark/complex.txt
new file mode 100644
index 0000000000..1dbf2c13f4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/complex.txt
@@ -0,0 +1,7 @@
+42.1i
+
+42.1ri
+
+42i
+
+42ri
diff --git a/test/yarp/fixtures/whitequark/cond_begin.txt b/test/yarp/fixtures/whitequark/cond_begin.txt
new file mode 100644
index 0000000000..49d709b79c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cond_begin.txt
@@ -0,0 +1 @@
+if (bar); foo; end
diff --git a/test/yarp/fixtures/whitequark/cond_begin_masgn.txt b/test/yarp/fixtures/whitequark/cond_begin_masgn.txt
new file mode 100644
index 0000000000..f9b65026b4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cond_begin_masgn.txt
@@ -0,0 +1 @@
+if (bar; a, b = foo); end
diff --git a/test/yarp/fixtures/whitequark/cond_eflipflop.txt b/test/yarp/fixtures/whitequark/cond_eflipflop.txt
new file mode 100644
index 0000000000..1236c2dbb5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cond_eflipflop.txt
@@ -0,0 +1,3 @@
+!(foo...bar)
+
+if foo...bar; end
diff --git a/test/yarp/fixtures/whitequark/cond_iflipflop.txt b/test/yarp/fixtures/whitequark/cond_iflipflop.txt
new file mode 100644
index 0000000000..84bee71a74
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cond_iflipflop.txt
@@ -0,0 +1,3 @@
+!(foo..bar)
+
+if foo..bar; end
diff --git a/test/yarp/fixtures/whitequark/cond_match_current_line.txt b/test/yarp/fixtures/whitequark/cond_match_current_line.txt
new file mode 100644
index 0000000000..21878c7bd8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cond_match_current_line.txt
@@ -0,0 +1,3 @@
+!/wat/
+
+if /wat/; end
diff --git a/test/yarp/fixtures/whitequark/const_op_asgn.txt b/test/yarp/fixtures/whitequark/const_op_asgn.txt
new file mode 100644
index 0000000000..e72e7adee8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/const_op_asgn.txt
@@ -0,0 +1,9 @@
+::A += 1
+
+A += 1
+
+B::A += 1
+
+def x; ::A ||= 1; end
+
+def x; self::A ||= 1; end
diff --git a/test/yarp/fixtures/whitequark/const_scoped.txt b/test/yarp/fixtures/whitequark/const_scoped.txt
new file mode 100644
index 0000000000..4b03d85fc0
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/const_scoped.txt
@@ -0,0 +1 @@
+Bar::Foo
diff --git a/test/yarp/fixtures/whitequark/const_toplevel.txt b/test/yarp/fixtures/whitequark/const_toplevel.txt
new file mode 100644
index 0000000000..f783ae752b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/const_toplevel.txt
@@ -0,0 +1 @@
+::Foo
diff --git a/test/yarp/fixtures/whitequark/const_unscoped.txt b/test/yarp/fixtures/whitequark/const_unscoped.txt
new file mode 100644
index 0000000000..bc56c4d894
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/const_unscoped.txt
@@ -0,0 +1 @@
+Foo
diff --git a/test/yarp/fixtures/whitequark/cpath.txt b/test/yarp/fixtures/whitequark/cpath.txt
new file mode 100644
index 0000000000..a4041692d1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cpath.txt
@@ -0,0 +1,3 @@
+module ::Foo; end
+
+module Bar::Foo; end
diff --git a/test/yarp/fixtures/whitequark/cvar.txt b/test/yarp/fixtures/whitequark/cvar.txt
new file mode 100644
index 0000000000..4997896e4a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cvar.txt
@@ -0,0 +1 @@
+@@foo
diff --git a/test/yarp/fixtures/whitequark/cvasgn.txt b/test/yarp/fixtures/whitequark/cvasgn.txt
new file mode 100644
index 0000000000..8f7e19c4fe
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/cvasgn.txt
@@ -0,0 +1 @@
+@@var = 10
diff --git a/test/yarp/fixtures/whitequark/dedenting_heredoc.txt b/test/yarp/fixtures/whitequark/dedenting_heredoc.txt
new file mode 100644
index 0000000000..2840ec3e1c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/dedenting_heredoc.txt
@@ -0,0 +1,75 @@
+p <<~"E"
+ x
+ #{" y"}
+E
+
+p <<~"E"
+ x
+ #{foo}
+E
+
+p <<~E
+ x
+ y
+E
+
+p <<~E
+ x
+ y
+E
+
+p <<~E
+ x
+ y
+E
+
+p <<~E
+ x
+ y
+E
+
+p <<~E
+ x
+ \ y
+E
+
+p <<~E
+ x
+ \ y
+E
+
+p <<~E
+ E
+
+p <<~E
+ x
+
+y
+E
+
+p <<~E
+ x
+
+ y
+E
+
+p <<~E
+ x
+ y
+E
+
+p <<~E
+ x
+E
+
+p <<~E
+ ð
+E
+
+p <<~E
+E
+
+p <<~`E`
+ x
+ #{foo}
+E
diff --git a/test/yarp/fixtures/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt b/test/yarp/fixtures/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt
new file mode 100644
index 0000000000..0427715d61
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt
@@ -0,0 +1,4 @@
+<<~'FOO'
+ baz\\
+ qux
+FOO
diff --git a/test/yarp/fixtures/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt b/test/yarp/fixtures/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt
new file mode 100644
index 0000000000..fd7bc02419
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt
@@ -0,0 +1,4 @@
+<<~'FOO'
+ baz\
+ qux
+FOO
diff --git a/test/yarp/fixtures/whitequark/def.txt b/test/yarp/fixtures/whitequark/def.txt
new file mode 100644
index 0000000000..d96a4238b3
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/def.txt
@@ -0,0 +1,11 @@
+def BEGIN; end
+
+def END; end
+
+def String; end
+
+def String=; end
+
+def foo; end
+
+def until; end
diff --git a/test/yarp/fixtures/whitequark/defined.txt b/test/yarp/fixtures/whitequark/defined.txt
new file mode 100644
index 0000000000..5cf93e22e3
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/defined.txt
@@ -0,0 +1,5 @@
+defined? @foo
+
+defined? foo
+
+defined?(foo)
diff --git a/test/yarp/fixtures/whitequark/defs.txt b/test/yarp/fixtures/whitequark/defs.txt
new file mode 100644
index 0000000000..e0b7aa86eb
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/defs.txt
@@ -0,0 +1,9 @@
+def (foo).foo; end
+
+def String.foo; end
+
+def String::foo; end
+
+def self.foo; end
+
+def self::foo; end
diff --git a/test/yarp/fixtures/whitequark/empty_stmt.txt b/test/yarp/fixtures/whitequark/empty_stmt.txt
new file mode 100644
index 0000000000..8b13789179
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/empty_stmt.txt
@@ -0,0 +1 @@
+
diff --git a/test/yarp/fixtures/whitequark/endless_comparison_method.txt b/test/yarp/fixtures/whitequark/endless_comparison_method.txt
new file mode 100644
index 0000000000..e10c3a6ced
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/endless_comparison_method.txt
@@ -0,0 +1,11 @@
+def !=(other) = do_something
+
+def !=(other) = do_something
+
+def <=(other) = do_something
+
+def ==(other) = do_something
+
+def ===(other) = do_something
+
+def >=(other) = do_something
diff --git a/test/yarp/fixtures/whitequark/endless_method.txt b/test/yarp/fixtures/whitequark/endless_method.txt
new file mode 100644
index 0000000000..7002526229
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/endless_method.txt
@@ -0,0 +1,7 @@
+def foo() = 42
+
+def inc(x) = x + 1
+
+def obj.foo() = 42
+
+def obj.inc(x) = x + 1
diff --git a/test/yarp/fixtures/whitequark/endless_method_command_syntax.txt b/test/yarp/fixtures/whitequark/endless_method_command_syntax.txt
new file mode 100644
index 0000000000..d9dad2d747
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/endless_method_command_syntax.txt
@@ -0,0 +1,15 @@
+def foo = puts "Hello"
+
+def foo() = puts "Hello"
+
+def foo(x) = puts x
+
+def obj.foo = puts "Hello"
+
+def obj.foo() = puts "Hello"
+
+def obj.foo(x) = puts x
+
+def rescued(x) = raise "to be caught" rescue "instance #{x}"
+
+def self.rescued(x) = raise "to be caught" rescue "class #{x}"
diff --git a/test/yarp/fixtures/whitequark/endless_method_forwarded_args_legacy.txt b/test/yarp/fixtures/whitequark/endless_method_forwarded_args_legacy.txt
new file mode 100644
index 0000000000..5955e40b5b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/endless_method_forwarded_args_legacy.txt
@@ -0,0 +1 @@
+def foo(...) = bar(...)
diff --git a/test/yarp/fixtures/whitequark/endless_method_with_rescue_mod.txt b/test/yarp/fixtures/whitequark/endless_method_with_rescue_mod.txt
new file mode 100644
index 0000000000..93dc63a45d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/endless_method_with_rescue_mod.txt
@@ -0,0 +1,3 @@
+def m() = 1 rescue 2
+
+def self.m() = 1 rescue 2
diff --git a/test/yarp/fixtures/whitequark/endless_method_without_args.txt b/test/yarp/fixtures/whitequark/endless_method_without_args.txt
new file mode 100644
index 0000000000..90ea8f7c6d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/endless_method_without_args.txt
@@ -0,0 +1,7 @@
+def foo = 42
+
+def foo = 42 rescue nil
+
+def self.foo = 42
+
+def self.foo = 42 rescue nil
diff --git a/test/yarp/fixtures/whitequark/ensure.txt b/test/yarp/fixtures/whitequark/ensure.txt
new file mode 100644
index 0000000000..6c4b47c63c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ensure.txt
@@ -0,0 +1 @@
+begin; meth; ensure; bar; end
diff --git a/test/yarp/fixtures/whitequark/ensure_empty.txt b/test/yarp/fixtures/whitequark/ensure_empty.txt
new file mode 100644
index 0000000000..39a175c371
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ensure_empty.txt
@@ -0,0 +1 @@
+begin ensure end
diff --git a/test/yarp/fixtures/whitequark/false.txt b/test/yarp/fixtures/whitequark/false.txt
new file mode 100644
index 0000000000..c508d5366f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/false.txt
@@ -0,0 +1 @@
+false
diff --git a/test/yarp/fixtures/whitequark/float.txt b/test/yarp/fixtures/whitequark/float.txt
new file mode 100644
index 0000000000..8c7592a192
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/float.txt
@@ -0,0 +1,3 @@
+-1.33
+
+1.33
diff --git a/test/yarp/fixtures/whitequark/for.txt b/test/yarp/fixtures/whitequark/for.txt
new file mode 100644
index 0000000000..a27ae578da
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/for.txt
@@ -0,0 +1,3 @@
+for a in foo do p a; end
+
+for a in foo; p a; end
diff --git a/test/yarp/fixtures/whitequark/for_mlhs.txt b/test/yarp/fixtures/whitequark/for_mlhs.txt
new file mode 100644
index 0000000000..53cd5229a4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/for_mlhs.txt
@@ -0,0 +1 @@
+for a, b in foo; p a, b; end
diff --git a/test/yarp/fixtures/whitequark/forward_arg.txt b/test/yarp/fixtures/whitequark/forward_arg.txt
new file mode 100644
index 0000000000..c7590a8d53
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forward_arg.txt
@@ -0,0 +1 @@
+def foo(...); bar(...); end
diff --git a/test/yarp/fixtures/whitequark/forward_arg_with_open_args.txt b/test/yarp/fixtures/whitequark/forward_arg_with_open_args.txt
new file mode 100644
index 0000000000..fd4c06bcb5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forward_arg_with_open_args.txt
@@ -0,0 +1,27 @@
+(def foo ...
+ bar(...)
+end)
+
+(def foo ...; bar(...); end)
+
+def foo ...
+end
+
+def foo ...; bar(...); end
+
+def foo a, ...
+ bar(...)
+end
+
+def foo a, ...; bar(...); end
+
+def foo a, b = 1, ...
+end
+
+def foo b = 1, ...
+ bar(...)
+end
+
+def foo b = 1, ...; bar(...); end
+
+def foo(a, ...) bar(...) end
diff --git a/test/yarp/fixtures/whitequark/forward_args_legacy.txt b/test/yarp/fixtures/whitequark/forward_args_legacy.txt
new file mode 100644
index 0000000000..0d9162457f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forward_args_legacy.txt
@@ -0,0 +1,5 @@
+def foo(...); bar(...); end
+
+def foo(...); end
+
+def foo(...); super(...); end
diff --git a/test/yarp/fixtures/whitequark/forwarded_argument_with_kwrestarg.txt b/test/yarp/fixtures/whitequark/forwarded_argument_with_kwrestarg.txt
new file mode 100644
index 0000000000..7dbf472232
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forwarded_argument_with_kwrestarg.txt
@@ -0,0 +1 @@
+def foo(argument, **); bar(argument, **); end
diff --git a/test/yarp/fixtures/whitequark/forwarded_argument_with_restarg.txt b/test/yarp/fixtures/whitequark/forwarded_argument_with_restarg.txt
new file mode 100644
index 0000000000..f734bfd9ec
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forwarded_argument_with_restarg.txt
@@ -0,0 +1 @@
+def foo(argument, *); bar(argument, *); end
diff --git a/test/yarp/fixtures/whitequark/forwarded_kwrestarg.txt b/test/yarp/fixtures/whitequark/forwarded_kwrestarg.txt
new file mode 100644
index 0000000000..16cd8b2913
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forwarded_kwrestarg.txt
@@ -0,0 +1 @@
+def foo(**); bar(**); end
diff --git a/test/yarp/fixtures/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt b/test/yarp/fixtures/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt
new file mode 100644
index 0000000000..52759b838f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt
@@ -0,0 +1 @@
+def foo(**); bar(**, from_foo: true); end
diff --git a/test/yarp/fixtures/whitequark/forwarded_restarg.txt b/test/yarp/fixtures/whitequark/forwarded_restarg.txt
new file mode 100644
index 0000000000..65ac2cc1ed
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/forwarded_restarg.txt
@@ -0,0 +1 @@
+def foo(*); bar(*); end
diff --git a/test/yarp/fixtures/whitequark/gvar.txt b/test/yarp/fixtures/whitequark/gvar.txt
new file mode 100644
index 0000000000..bbf13489ad
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/gvar.txt
@@ -0,0 +1 @@
+$foo
diff --git a/test/yarp/fixtures/whitequark/gvasgn.txt b/test/yarp/fixtures/whitequark/gvasgn.txt
new file mode 100644
index 0000000000..2bcc22cdd1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/gvasgn.txt
@@ -0,0 +1 @@
+$var = 10
diff --git a/test/yarp/fixtures/whitequark/hash_empty.txt b/test/yarp/fixtures/whitequark/hash_empty.txt
new file mode 100644
index 0000000000..ffcd4415b0
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/hash_empty.txt
@@ -0,0 +1 @@
+{ }
diff --git a/test/yarp/fixtures/whitequark/hash_hashrocket.txt b/test/yarp/fixtures/whitequark/hash_hashrocket.txt
new file mode 100644
index 0000000000..2cbb3bd96d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/hash_hashrocket.txt
@@ -0,0 +1,3 @@
+{ 1 => 2 }
+
+{ 1 => 2, :foo => "bar" }
diff --git a/test/yarp/fixtures/whitequark/hash_kwsplat.txt b/test/yarp/fixtures/whitequark/hash_kwsplat.txt
new file mode 100644
index 0000000000..921aa97c7c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/hash_kwsplat.txt
@@ -0,0 +1 @@
+{ foo: 2, **bar }
diff --git a/test/yarp/fixtures/whitequark/hash_label.txt b/test/yarp/fixtures/whitequark/hash_label.txt
new file mode 100644
index 0000000000..3aacae4b69
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/hash_label.txt
@@ -0,0 +1 @@
+{ foo: 2 }
diff --git a/test/yarp/fixtures/whitequark/hash_label_end.txt b/test/yarp/fixtures/whitequark/hash_label_end.txt
new file mode 100644
index 0000000000..ac9f7c4b41
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/hash_label_end.txt
@@ -0,0 +1,5 @@
+f(a ? "a":1)
+
+{ 'foo': 2 }
+
+{ 'foo': 2, 'bar': {}}
diff --git a/test/yarp/fixtures/whitequark/hash_pair_value_omission.txt b/test/yarp/fixtures/whitequark/hash_pair_value_omission.txt
new file mode 100644
index 0000000000..9d8ccb5877
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/hash_pair_value_omission.txt
@@ -0,0 +1,5 @@
+{BAR:}
+
+{a:, b:}
+
+{puts:}
diff --git a/test/yarp/fixtures/whitequark/heredoc.txt b/test/yarp/fixtures/whitequark/heredoc.txt
new file mode 100644
index 0000000000..1bfc963f94
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/heredoc.txt
@@ -0,0 +1,14 @@
+<<'HERE'
+foo
+bar
+HERE
+
+<<HERE
+foo
+bar
+HERE
+
+<<`HERE`
+foo
+bar
+HERE
diff --git a/test/yarp/fixtures/whitequark/if.txt b/test/yarp/fixtures/whitequark/if.txt
new file mode 100644
index 0000000000..3de3525286
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if.txt
@@ -0,0 +1,3 @@
+if foo then bar; end
+
+if foo; bar; end
diff --git a/test/yarp/fixtures/whitequark/if_else.txt b/test/yarp/fixtures/whitequark/if_else.txt
new file mode 100644
index 0000000000..62bab8138c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if_else.txt
@@ -0,0 +1,3 @@
+if foo then bar; else baz; end
+
+if foo; bar; else baz; end
diff --git a/test/yarp/fixtures/whitequark/if_elsif.txt b/test/yarp/fixtures/whitequark/if_elsif.txt
new file mode 100644
index 0000000000..4d71e82214
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if_elsif.txt
@@ -0,0 +1 @@
+if foo; bar; elsif baz; 1; else 2; end
diff --git a/test/yarp/fixtures/whitequark/if_masgn__24.txt b/test/yarp/fixtures/whitequark/if_masgn__24.txt
new file mode 100644
index 0000000000..0c2c8bb04f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if_masgn__24.txt
@@ -0,0 +1 @@
+if (a, b = foo); end
diff --git a/test/yarp/fixtures/whitequark/if_mod.txt b/test/yarp/fixtures/whitequark/if_mod.txt
new file mode 100644
index 0000000000..da177b5606
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if_mod.txt
@@ -0,0 +1 @@
+bar if foo
diff --git a/test/yarp/fixtures/whitequark/if_nl_then.txt b/test/yarp/fixtures/whitequark/if_nl_then.txt
new file mode 100644
index 0000000000..b68107bad2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if_nl_then.txt
@@ -0,0 +1,2 @@
+if foo
+then bar end
diff --git a/test/yarp/fixtures/whitequark/if_while_after_class__since_32.txt b/test/yarp/fixtures/whitequark/if_while_after_class__since_32.txt
new file mode 100644
index 0000000000..1552494d28
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/if_while_after_class__since_32.txt
@@ -0,0 +1,7 @@
+class if true; Object end::Kernel; end
+
+class while true; break Object end::Kernel; end
+
+module if true; Object end::Kernel; end
+
+module while true; break Object end::Kernel; end
diff --git a/test/yarp/fixtures/whitequark/int.txt b/test/yarp/fixtures/whitequark/int.txt
new file mode 100644
index 0000000000..6d419918c6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/int.txt
@@ -0,0 +1,5 @@
++42
+
+-42
+
+42
diff --git a/test/yarp/fixtures/whitequark/int___LINE__.txt b/test/yarp/fixtures/whitequark/int___LINE__.txt
new file mode 100644
index 0000000000..05dcf7afe0
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/int___LINE__.txt
@@ -0,0 +1 @@
+__LINE__
diff --git a/test/yarp/fixtures/whitequark/interp_digit_var.txt b/test/yarp/fixtures/whitequark/interp_digit_var.txt
new file mode 100644
index 0000000000..37487ddbaf
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/interp_digit_var.txt
@@ -0,0 +1,87 @@
+ "#@1"
+
+ "#@@1"
+
+ %I[#@1]
+
+ %I[#@@1]
+
+ %Q{#@1}
+
+ %Q{#@@1}
+
+ %W[#@1]
+
+ %W[#@@1]
+
+ %i[ #@1 ]
+
+ %i[ #@@1 ]
+
+ %q{#@1}
+
+ %q{#@@1}
+
+ %r{#@1}
+
+ %r{#@@1}
+
+ %s{#@1}
+
+ %s{#@@1}
+
+ %w[ #@1 ]
+
+ %w[ #@@1 ]
+
+ %x{#@1}
+
+ %x{#@@1}
+
+ %{#@1}
+
+ %{#@@1}
+
+ '#@1'
+
+ '#@@1'
+
+ /#@1/
+
+ /#@@1/
+
+ :"#@1"
+
+ :"#@@1"
+
+ :'#@1'
+
+ :'#@@1'
+
+ `#@1`
+
+ `#@@1`
+
+<<-"HERE"
+#@1
+HERE
+
+<<-"HERE"
+#@@1
+HERE
+
+<<-'HERE'
+#@1
+HERE
+
+<<-'HERE'
+#@@1
+HERE
+
+<<-`HERE`
+#@1
+HERE
+
+<<-`HERE`
+#@@1
+HERE
diff --git a/test/yarp/fixtures/whitequark/ivar.txt b/test/yarp/fixtures/whitequark/ivar.txt
new file mode 100644
index 0000000000..9149fc67f9
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ivar.txt
@@ -0,0 +1 @@
+@foo
diff --git a/test/yarp/fixtures/whitequark/ivasgn.txt b/test/yarp/fixtures/whitequark/ivasgn.txt
new file mode 100644
index 0000000000..ac291799db
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ivasgn.txt
@@ -0,0 +1 @@
+@var = 10
diff --git a/test/yarp/fixtures/whitequark/keyword_argument_omission.txt b/test/yarp/fixtures/whitequark/keyword_argument_omission.txt
new file mode 100644
index 0000000000..47883dc9a5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/keyword_argument_omission.txt
@@ -0,0 +1 @@
+foo(a:, b:)
diff --git a/test/yarp/fixtures/whitequark/kwarg.txt b/test/yarp/fixtures/whitequark/kwarg.txt
new file mode 100644
index 0000000000..ca02a1fd2a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwarg.txt
@@ -0,0 +1 @@
+def f(foo:); end
diff --git a/test/yarp/fixtures/whitequark/kwbegin_compstmt.txt b/test/yarp/fixtures/whitequark/kwbegin_compstmt.txt
new file mode 100644
index 0000000000..33ceff2489
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwbegin_compstmt.txt
@@ -0,0 +1 @@
+begin foo!; bar! end
diff --git a/test/yarp/fixtures/whitequark/kwnilarg.txt b/test/yarp/fixtures/whitequark/kwnilarg.txt
new file mode 100644
index 0000000000..8fc482d5af
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwnilarg.txt
@@ -0,0 +1,5 @@
+->(**nil) {}
+
+def f(**nil); end
+
+m { |**nil| }
diff --git a/test/yarp/fixtures/whitequark/kwoptarg.txt b/test/yarp/fixtures/whitequark/kwoptarg.txt
new file mode 100644
index 0000000000..dc3ce728d6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwoptarg.txt
@@ -0,0 +1 @@
+def f(foo: 1); end
diff --git a/test/yarp/fixtures/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt b/test/yarp/fixtures/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
new file mode 100644
index 0000000000..99dcc7239b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
@@ -0,0 +1 @@
+def f(a: nil, **); b(**) end
diff --git a/test/yarp/fixtures/whitequark/kwrestarg_named.txt b/test/yarp/fixtures/whitequark/kwrestarg_named.txt
new file mode 100644
index 0000000000..e17a661001
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwrestarg_named.txt
@@ -0,0 +1 @@
+def f(**foo); end
diff --git a/test/yarp/fixtures/whitequark/kwrestarg_unnamed.txt b/test/yarp/fixtures/whitequark/kwrestarg_unnamed.txt
new file mode 100644
index 0000000000..1b26b1d2ac
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/kwrestarg_unnamed.txt
@@ -0,0 +1 @@
+def f(**); end
diff --git a/test/yarp/fixtures/whitequark/lbrace_arg_after_command_args.txt b/test/yarp/fixtures/whitequark/lbrace_arg_after_command_args.txt
new file mode 100644
index 0000000000..277c200c9f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/lbrace_arg_after_command_args.txt
@@ -0,0 +1 @@
+let (:a) { m do; end }
diff --git a/test/yarp/fixtures/whitequark/lparenarg_after_lvar__since_25.txt b/test/yarp/fixtures/whitequark/lparenarg_after_lvar__since_25.txt
new file mode 100644
index 0000000000..dc3a98b1c8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/lparenarg_after_lvar__since_25.txt
@@ -0,0 +1,3 @@
+foo (-1.3).abs
+
+meth (-1.3).abs
diff --git a/test/yarp/fixtures/whitequark/lvar.txt b/test/yarp/fixtures/whitequark/lvar.txt
new file mode 100644
index 0000000000..257cc5642c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/lvar.txt
@@ -0,0 +1 @@
+foo
diff --git a/test/yarp/fixtures/whitequark/lvar_injecting_match.txt b/test/yarp/fixtures/whitequark/lvar_injecting_match.txt
new file mode 100644
index 0000000000..ba814a1088
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/lvar_injecting_match.txt
@@ -0,0 +1 @@
+/(?<match>bar)/ =~ 'bar'; match
diff --git a/test/yarp/fixtures/whitequark/lvasgn.txt b/test/yarp/fixtures/whitequark/lvasgn.txt
new file mode 100644
index 0000000000..330b8eff27
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/lvasgn.txt
@@ -0,0 +1 @@
+var = 10; var
diff --git a/test/yarp/fixtures/whitequark/masgn.txt b/test/yarp/fixtures/whitequark/masgn.txt
new file mode 100644
index 0000000000..032124287c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/masgn.txt
@@ -0,0 +1,5 @@
+(foo, bar) = 1, 2
+
+foo, bar = 1, 2
+
+foo, bar, baz = 1, 2
diff --git a/test/yarp/fixtures/whitequark/masgn_attr.txt b/test/yarp/fixtures/whitequark/masgn_attr.txt
new file mode 100644
index 0000000000..91a703ef44
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/masgn_attr.txt
@@ -0,0 +1,5 @@
+self.A, foo = foo
+
+self.a, self[1, 2] = foo
+
+self::a, foo = foo
diff --git a/test/yarp/fixtures/whitequark/masgn_cmd.txt b/test/yarp/fixtures/whitequark/masgn_cmd.txt
new file mode 100644
index 0000000000..18e096f1ee
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/masgn_cmd.txt
@@ -0,0 +1 @@
+foo, bar = m foo
diff --git a/test/yarp/fixtures/whitequark/masgn_const.txt b/test/yarp/fixtures/whitequark/masgn_const.txt
new file mode 100644
index 0000000000..3b6fba588a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/masgn_const.txt
@@ -0,0 +1,3 @@
+::A, foo = foo
+
+self::A, foo = foo
diff --git a/test/yarp/fixtures/whitequark/masgn_nested.txt b/test/yarp/fixtures/whitequark/masgn_nested.txt
new file mode 100644
index 0000000000..a1ccf4e385
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/masgn_nested.txt
@@ -0,0 +1,3 @@
+((b, )) = foo
+
+a, (b, c) = foo
diff --git a/test/yarp/fixtures/whitequark/masgn_splat.txt b/test/yarp/fixtures/whitequark/masgn_splat.txt
new file mode 100644
index 0000000000..a15dab10f2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/masgn_splat.txt
@@ -0,0 +1,19 @@
+* = bar
+
+*, c, d = bar
+
+*b = bar
+
+*b, c = bar
+
+@foo, @@bar = *foo
+
+a, * = bar
+
+a, *, c = bar
+
+a, *b = bar
+
+a, *b, c = bar
+
+a, b = *foo, bar
diff --git a/test/yarp/fixtures/whitequark/method_definition_in_while_cond.txt b/test/yarp/fixtures/whitequark/method_definition_in_while_cond.txt
new file mode 100644
index 0000000000..6ec38906a1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/method_definition_in_while_cond.txt
@@ -0,0 +1,7 @@
+while def foo a = tap do end; end; break; end
+
+while def foo; tap do end; end; break; end
+
+while def self.foo a = tap do end; end; break; end
+
+while def self.foo; tap do end; end; break; end
diff --git a/test/yarp/fixtures/whitequark/module.txt b/test/yarp/fixtures/whitequark/module.txt
new file mode 100644
index 0000000000..f999df3791
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/module.txt
@@ -0,0 +1 @@
+module Foo; end
diff --git a/test/yarp/fixtures/whitequark/multiple_pattern_matches.txt b/test/yarp/fixtures/whitequark/multiple_pattern_matches.txt
new file mode 100644
index 0000000000..54a4bb4774
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/multiple_pattern_matches.txt
@@ -0,0 +1,5 @@
+{a: 0} => a:
+{a: 0} => a:
+
+{a: 0} in a:
+{a: 0} in a:
diff --git a/test/yarp/fixtures/whitequark/newline_in_hash_argument.txt b/test/yarp/fixtures/whitequark/newline_in_hash_argument.txt
new file mode 100644
index 0000000000..1681844331
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/newline_in_hash_argument.txt
@@ -0,0 +1,14 @@
+case foo
+in a:
+0
+true
+in "b":
+0
+true
+end
+
+obj.set "foo":
+1
+
+obj.set foo:
+1
diff --git a/test/yarp/fixtures/whitequark/next.txt b/test/yarp/fixtures/whitequark/next.txt
new file mode 100644
index 0000000000..7556ac2b74
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/next.txt
@@ -0,0 +1,7 @@
+next
+
+next foo
+
+next()
+
+next(foo)
diff --git a/test/yarp/fixtures/whitequark/next_block.txt b/test/yarp/fixtures/whitequark/next_block.txt
new file mode 100644
index 0000000000..d3b51dfa21
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/next_block.txt
@@ -0,0 +1 @@
+next fun foo do end
diff --git a/test/yarp/fixtures/whitequark/nil.txt b/test/yarp/fixtures/whitequark/nil.txt
new file mode 100644
index 0000000000..607602cfc6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/nil.txt
@@ -0,0 +1 @@
+nil
diff --git a/test/yarp/fixtures/whitequark/nil_expression.txt b/test/yarp/fixtures/whitequark/nil_expression.txt
new file mode 100644
index 0000000000..aabf53f005
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/nil_expression.txt
@@ -0,0 +1,3 @@
+()
+
+begin end
diff --git a/test/yarp/fixtures/whitequark/non_lvar_injecting_match.txt b/test/yarp/fixtures/whitequark/non_lvar_injecting_match.txt
new file mode 100644
index 0000000000..f1eb7d3c2c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/non_lvar_injecting_match.txt
@@ -0,0 +1 @@
+/#{1}(?<match>bar)/ =~ 'bar'
diff --git a/test/yarp/fixtures/whitequark/not.txt b/test/yarp/fixtures/whitequark/not.txt
new file mode 100644
index 0000000000..d87f68f48c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/not.txt
@@ -0,0 +1,5 @@
+not foo
+
+not()
+
+not(foo)
diff --git a/test/yarp/fixtures/whitequark/not_cmd.txt b/test/yarp/fixtures/whitequark/not_cmd.txt
new file mode 100644
index 0000000000..685ec209ee
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/not_cmd.txt
@@ -0,0 +1 @@
+not m foo
diff --git a/test/yarp/fixtures/whitequark/not_masgn__24.txt b/test/yarp/fixtures/whitequark/not_masgn__24.txt
new file mode 100644
index 0000000000..cb93b9103d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/not_masgn__24.txt
@@ -0,0 +1 @@
+!(a, b = foo)
diff --git a/test/yarp/fixtures/whitequark/nth_ref.txt b/test/yarp/fixtures/whitequark/nth_ref.txt
new file mode 100644
index 0000000000..16ef65b105
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/nth_ref.txt
@@ -0,0 +1 @@
+$10
diff --git a/test/yarp/fixtures/whitequark/numbered_args_after_27.txt b/test/yarp/fixtures/whitequark/numbered_args_after_27.txt
new file mode 100644
index 0000000000..96fe7a32e2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/numbered_args_after_27.txt
@@ -0,0 +1,7 @@
+-> do _1 + _9 end
+
+-> { _1 + _9}
+
+m do _1 + _9 end
+
+m { _1 + _9 }
diff --git a/test/yarp/fixtures/whitequark/numparam_outside_block.txt b/test/yarp/fixtures/whitequark/numparam_outside_block.txt
new file mode 100644
index 0000000000..37cbce182d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/numparam_outside_block.txt
@@ -0,0 +1,9 @@
+_1
+
+class << foo; _1; end
+
+class A; _1; end
+
+def self.m; _1; end
+
+module A; _1; end
diff --git a/test/yarp/fixtures/whitequark/op_asgn.txt b/test/yarp/fixtures/whitequark/op_asgn.txt
new file mode 100644
index 0000000000..a5a28b1010
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/op_asgn.txt
@@ -0,0 +1,5 @@
+foo.A += 1
+
+foo.a += 1
+
+foo::a += 1
diff --git a/test/yarp/fixtures/whitequark/op_asgn_cmd.txt b/test/yarp/fixtures/whitequark/op_asgn_cmd.txt
new file mode 100644
index 0000000000..017aa9bef7
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/op_asgn_cmd.txt
@@ -0,0 +1,7 @@
+foo.A += m foo
+
+foo.a += m foo
+
+foo::A += m foo
+
+foo::a += m foo
diff --git a/test/yarp/fixtures/whitequark/op_asgn_index.txt b/test/yarp/fixtures/whitequark/op_asgn_index.txt
new file mode 100644
index 0000000000..92cfb225fc
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/op_asgn_index.txt
@@ -0,0 +1 @@
+foo[0, 1] += 2
diff --git a/test/yarp/fixtures/whitequark/op_asgn_index_cmd.txt b/test/yarp/fixtures/whitequark/op_asgn_index_cmd.txt
new file mode 100644
index 0000000000..161b244bd4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/op_asgn_index_cmd.txt
@@ -0,0 +1 @@
+foo[0, 1] += m foo
diff --git a/test/yarp/fixtures/whitequark/optarg.txt b/test/yarp/fixtures/whitequark/optarg.txt
new file mode 100644
index 0000000000..9d60609961
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/optarg.txt
@@ -0,0 +1,3 @@
+def f foo = 1; end
+
+def f(foo=1, bar=2); end
diff --git a/test/yarp/fixtures/whitequark/or.txt b/test/yarp/fixtures/whitequark/or.txt
new file mode 100644
index 0000000000..c2042ebb41
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/or.txt
@@ -0,0 +1,3 @@
+foo or bar
+
+foo || bar
diff --git a/test/yarp/fixtures/whitequark/or_asgn.txt b/test/yarp/fixtures/whitequark/or_asgn.txt
new file mode 100644
index 0000000000..6e4ecc9f93
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/or_asgn.txt
@@ -0,0 +1,3 @@
+foo.a ||= 1
+
+foo[0, 1] ||= 2
diff --git a/test/yarp/fixtures/whitequark/parser_bug_272.txt b/test/yarp/fixtures/whitequark/parser_bug_272.txt
new file mode 100644
index 0000000000..2f2f2b84d2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_272.txt
@@ -0,0 +1 @@
+a @b do |c|;end
diff --git a/test/yarp/fixtures/whitequark/parser_bug_490.txt b/test/yarp/fixtures/whitequark/parser_bug_490.txt
new file mode 100644
index 0000000000..cf544b1ff6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_490.txt
@@ -0,0 +1,5 @@
+def m; class << self; A = nil; end; end
+
+def m; class << self; class C; end; end; end
+
+def m; class << self; module M; end; end; end
diff --git a/test/yarp/fixtures/whitequark/parser_bug_507.txt b/test/yarp/fixtures/whitequark/parser_bug_507.txt
new file mode 100644
index 0000000000..bf616b85c8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_507.txt
@@ -0,0 +1 @@
+m = -> *args do end
diff --git a/test/yarp/fixtures/whitequark/parser_bug_518.txt b/test/yarp/fixtures/whitequark/parser_bug_518.txt
new file mode 100644
index 0000000000..22f4afe3c8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_518.txt
@@ -0,0 +1,2 @@
+class A < B
+end
diff --git a/test/yarp/fixtures/whitequark/parser_bug_525.txt b/test/yarp/fixtures/whitequark/parser_bug_525.txt
new file mode 100644
index 0000000000..59d0e735b4
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_525.txt
@@ -0,0 +1 @@
+m1 :k => m2 do; m3() do end; end
diff --git a/test/yarp/fixtures/whitequark/parser_bug_604.txt b/test/yarp/fixtures/whitequark/parser_bug_604.txt
new file mode 100644
index 0000000000..7eb91c2f46
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_604.txt
@@ -0,0 +1 @@
+m a + b do end
diff --git a/test/yarp/fixtures/whitequark/parser_bug_640.txt b/test/yarp/fixtures/whitequark/parser_bug_640.txt
new file mode 100644
index 0000000000..fb62ded04c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_640.txt
@@ -0,0 +1,4 @@
+<<~FOO
+ baz\
+ qux
+FOO
diff --git a/test/yarp/fixtures/whitequark/parser_bug_645.txt b/test/yarp/fixtures/whitequark/parser_bug_645.txt
new file mode 100644
index 0000000000..cb1e5a0dcf
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_645.txt
@@ -0,0 +1 @@
+-> (arg={}) {}
diff --git a/test/yarp/fixtures/whitequark/parser_bug_830.txt b/test/yarp/fixtures/whitequark/parser_bug_830.txt
new file mode 100644
index 0000000000..e5865e960d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_bug_830.txt
@@ -0,0 +1 @@
+/\(/
diff --git a/test/yarp/fixtures/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt b/test/yarp/fixtures/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt
new file mode 100644
index 0000000000..bddae8e153
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt
@@ -0,0 +1,3 @@
+<<~HERE
+ #{}
+HERE
diff --git a/test/yarp/fixtures/whitequark/parser_slash_slash_n_escaping_in_literals.txt b/test/yarp/fixtures/whitequark/parser_slash_slash_n_escaping_in_literals.txt
new file mode 100644
index 0000000000..564cebdd74
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/parser_slash_slash_n_escaping_in_literals.txt
@@ -0,0 +1,62 @@
+"a\
+b"
+
+%I{a\
+b}
+
+%Q{a\
+b}
+
+%W{a\
+b}
+
+%i{a\
+b}
+
+%q{a\
+b}
+
+%r{a\
+b}
+
+%s{a\
+b}
+
+%w{a\
+b}
+
+%x{a\
+b}
+
+%{a\
+b}
+
+'a\
+b'
+
+/a\
+b/
+
+:"a\
+b"
+
+:'a\
+b'
+
+<<-"HERE"
+a\
+b
+HERE
+
+<<-'HERE'
+a\
+b
+HERE
+
+<<-`HERE`
+a\
+b
+HERE
+
+`a\
+b`
diff --git a/test/yarp/fixtures/whitequark/pattern_matching__FILE__LINE_literals.txt b/test/yarp/fixtures/whitequark/pattern_matching__FILE__LINE_literals.txt
new file mode 100644
index 0000000000..fe0edaed55
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/pattern_matching__FILE__LINE_literals.txt
@@ -0,0 +1,4 @@
+ case [__FILE__, __LINE__ + 1, __ENCODING__]
+ in [__FILE__, __LINE__, __ENCODING__]
+ end
+
diff --git a/test/yarp/fixtures/whitequark/pattern_matching_blank_else.txt b/test/yarp/fixtures/whitequark/pattern_matching_blank_else.txt
new file mode 100644
index 0000000000..6bf059af41
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/pattern_matching_blank_else.txt
@@ -0,0 +1 @@
+case 1; in 2; 3; else; end
diff --git a/test/yarp/fixtures/whitequark/pattern_matching_else.txt b/test/yarp/fixtures/whitequark/pattern_matching_else.txt
new file mode 100644
index 0000000000..29f14c91ab
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/pattern_matching_else.txt
@@ -0,0 +1 @@
+case 1; in 2; 3; else; 4; end
diff --git a/test/yarp/fixtures/whitequark/pattern_matching_single_line.txt b/test/yarp/fixtures/whitequark/pattern_matching_single_line.txt
new file mode 100644
index 0000000000..12279afa24
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/pattern_matching_single_line.txt
@@ -0,0 +1,3 @@
+1 => [a]; a
+
+1 in [a]; a
diff --git a/test/yarp/fixtures/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt b/test/yarp/fixtures/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt
new file mode 100644
index 0000000000..1e429335d0
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt
@@ -0,0 +1,11 @@
+[1, 2] => a, b; a
+
+[1, 2] in a, b; a
+
+{a: 1} => a:; a
+
+{a: 1} in a:; a
+
+{key: :value} => key: value; value
+
+{key: :value} in key: value; value
diff --git a/test/yarp/fixtures/whitequark/postexe.txt b/test/yarp/fixtures/whitequark/postexe.txt
new file mode 100644
index 0000000000..baee33af66
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/postexe.txt
@@ -0,0 +1 @@
+END { 1 }
diff --git a/test/yarp/fixtures/whitequark/preexe.txt b/test/yarp/fixtures/whitequark/preexe.txt
new file mode 100644
index 0000000000..9e802f3f4e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/preexe.txt
@@ -0,0 +1 @@
+BEGIN { 1 }
diff --git a/test/yarp/fixtures/whitequark/procarg0.txt b/test/yarp/fixtures/whitequark/procarg0.txt
new file mode 100644
index 0000000000..70b368e7d5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/procarg0.txt
@@ -0,0 +1,3 @@
+m { |(foo, bar)| }
+
+m { |foo| }
diff --git a/test/yarp/fixtures/whitequark/range_exclusive.txt b/test/yarp/fixtures/whitequark/range_exclusive.txt
new file mode 100644
index 0000000000..9e07faed27
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/range_exclusive.txt
@@ -0,0 +1 @@
+1...2
diff --git a/test/yarp/fixtures/whitequark/range_inclusive.txt b/test/yarp/fixtures/whitequark/range_inclusive.txt
new file mode 100644
index 0000000000..8c12abf7de
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/range_inclusive.txt
@@ -0,0 +1 @@
+1..2
diff --git a/test/yarp/fixtures/whitequark/rational.txt b/test/yarp/fixtures/whitequark/rational.txt
new file mode 100644
index 0000000000..e11cacc742
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rational.txt
@@ -0,0 +1,3 @@
+42.1r
+
+42r
diff --git a/test/yarp/fixtures/whitequark/redo.txt b/test/yarp/fixtures/whitequark/redo.txt
new file mode 100644
index 0000000000..f49789cbab
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/redo.txt
@@ -0,0 +1 @@
+redo
diff --git a/test/yarp/fixtures/whitequark/regex_interp.txt b/test/yarp/fixtures/whitequark/regex_interp.txt
new file mode 100644
index 0000000000..f9ad7fcbc8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/regex_interp.txt
@@ -0,0 +1 @@
+/foo#{bar}baz/
diff --git a/test/yarp/fixtures/whitequark/regex_plain.txt b/test/yarp/fixtures/whitequark/regex_plain.txt
new file mode 100644
index 0000000000..b86faecf98
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/regex_plain.txt
@@ -0,0 +1 @@
+/source/im
diff --git a/test/yarp/fixtures/whitequark/resbody_list.txt b/test/yarp/fixtures/whitequark/resbody_list.txt
new file mode 100644
index 0000000000..e40d45fc45
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/resbody_list.txt
@@ -0,0 +1 @@
+begin; meth; rescue Exception; bar; end
diff --git a/test/yarp/fixtures/whitequark/resbody_list_mrhs.txt b/test/yarp/fixtures/whitequark/resbody_list_mrhs.txt
new file mode 100644
index 0000000000..92b8bb2c02
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/resbody_list_mrhs.txt
@@ -0,0 +1 @@
+begin; meth; rescue Exception, foo; bar; end
diff --git a/test/yarp/fixtures/whitequark/resbody_list_var.txt b/test/yarp/fixtures/whitequark/resbody_list_var.txt
new file mode 100644
index 0000000000..0a2fb90b6d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/resbody_list_var.txt
@@ -0,0 +1 @@
+begin; meth; rescue foo => ex; bar; end
diff --git a/test/yarp/fixtures/whitequark/resbody_var.txt b/test/yarp/fixtures/whitequark/resbody_var.txt
new file mode 100644
index 0000000000..2104ac58e7
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/resbody_var.txt
@@ -0,0 +1,3 @@
+begin; meth; rescue => @ex; bar; end
+
+begin; meth; rescue => ex; bar; end
diff --git a/test/yarp/fixtures/whitequark/rescue.txt b/test/yarp/fixtures/whitequark/rescue.txt
new file mode 100644
index 0000000000..2d3be9dc56
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue.txt
@@ -0,0 +1 @@
+begin; meth; rescue; foo; end
diff --git a/test/yarp/fixtures/whitequark/rescue_else.txt b/test/yarp/fixtures/whitequark/rescue_else.txt
new file mode 100644
index 0000000000..a22f8d100e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_else.txt
@@ -0,0 +1 @@
+begin; meth; rescue; foo; else; bar; end
diff --git a/test/yarp/fixtures/whitequark/rescue_else_ensure.txt b/test/yarp/fixtures/whitequark/rescue_else_ensure.txt
new file mode 100644
index 0000000000..167eee194a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_else_ensure.txt
@@ -0,0 +1 @@
+begin; meth; rescue; baz; else foo; ensure; bar end
diff --git a/test/yarp/fixtures/whitequark/rescue_ensure.txt b/test/yarp/fixtures/whitequark/rescue_ensure.txt
new file mode 100644
index 0000000000..8237257c41
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_ensure.txt
@@ -0,0 +1 @@
+begin; meth; rescue; baz; ensure; bar; end
diff --git a/test/yarp/fixtures/whitequark/rescue_in_lambda_block.txt b/test/yarp/fixtures/whitequark/rescue_in_lambda_block.txt
new file mode 100644
index 0000000000..ccd8ed72c5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_in_lambda_block.txt
@@ -0,0 +1 @@
+-> do rescue; end
diff --git a/test/yarp/fixtures/whitequark/rescue_mod.txt b/test/yarp/fixtures/whitequark/rescue_mod.txt
new file mode 100644
index 0000000000..06375d3e9b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_mod.txt
@@ -0,0 +1 @@
+meth rescue bar
diff --git a/test/yarp/fixtures/whitequark/rescue_mod_asgn.txt b/test/yarp/fixtures/whitequark/rescue_mod_asgn.txt
new file mode 100644
index 0000000000..abf7cd9a3d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_mod_asgn.txt
@@ -0,0 +1 @@
+foo = meth rescue bar
diff --git a/test/yarp/fixtures/whitequark/rescue_mod_masgn.txt b/test/yarp/fixtures/whitequark/rescue_mod_masgn.txt
new file mode 100644
index 0000000000..0716eb1f67
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_mod_masgn.txt
@@ -0,0 +1 @@
+foo, bar = meth rescue [1, 2]
diff --git a/test/yarp/fixtures/whitequark/rescue_mod_op_assign.txt b/test/yarp/fixtures/whitequark/rescue_mod_op_assign.txt
new file mode 100644
index 0000000000..178efa3a20
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_mod_op_assign.txt
@@ -0,0 +1 @@
+foo += meth rescue bar
diff --git a/test/yarp/fixtures/whitequark/rescue_without_begin_end.txt b/test/yarp/fixtures/whitequark/rescue_without_begin_end.txt
new file mode 100644
index 0000000000..8416569e2c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/rescue_without_begin_end.txt
@@ -0,0 +1 @@
+meth do; foo; rescue; bar; end
diff --git a/test/yarp/fixtures/whitequark/restarg_named.txt b/test/yarp/fixtures/whitequark/restarg_named.txt
new file mode 100644
index 0000000000..355cd8f493
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/restarg_named.txt
@@ -0,0 +1 @@
+def f(*foo); end
diff --git a/test/yarp/fixtures/whitequark/restarg_unnamed.txt b/test/yarp/fixtures/whitequark/restarg_unnamed.txt
new file mode 100644
index 0000000000..c9932dd30c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/restarg_unnamed.txt
@@ -0,0 +1 @@
+def f(*); end
diff --git a/test/yarp/fixtures/whitequark/retry.txt b/test/yarp/fixtures/whitequark/retry.txt
new file mode 100644
index 0000000000..77428f7b73
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/retry.txt
@@ -0,0 +1 @@
+retry
diff --git a/test/yarp/fixtures/whitequark/return.txt b/test/yarp/fixtures/whitequark/return.txt
new file mode 100644
index 0000000000..e3d966bda0
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/return.txt
@@ -0,0 +1,7 @@
+return
+
+return foo
+
+return()
+
+return(foo)
diff --git a/test/yarp/fixtures/whitequark/return_block.txt b/test/yarp/fixtures/whitequark/return_block.txt
new file mode 100644
index 0000000000..00723a7517
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/return_block.txt
@@ -0,0 +1 @@
+return fun foo do end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_10279.txt b/test/yarp/fixtures/whitequark/ruby_bug_10279.txt
new file mode 100644
index 0000000000..4d0fb213d8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_10279.txt
@@ -0,0 +1 @@
+{a: if true then 42 end}
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_10653.txt b/test/yarp/fixtures/whitequark/ruby_bug_10653.txt
new file mode 100644
index 0000000000..51354a1f70
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_10653.txt
@@ -0,0 +1,5 @@
+false ? raise do end : tap do end
+
+false ? raise {} : tap {}
+
+true ? 1.tap do |n| p n end : 0
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11107.txt b/test/yarp/fixtures/whitequark/ruby_bug_11107.txt
new file mode 100644
index 0000000000..1f28cb06f6
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11107.txt
@@ -0,0 +1 @@
+p ->() do a() do end end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11380.txt b/test/yarp/fixtures/whitequark/ruby_bug_11380.txt
new file mode 100644
index 0000000000..1631548e3a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11380.txt
@@ -0,0 +1 @@
+p -> { :hello }, a: 1 do end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11873.txt b/test/yarp/fixtures/whitequark/ruby_bug_11873.txt
new file mode 100644
index 0000000000..a25aa9e267
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11873.txt
@@ -0,0 +1,23 @@
+a b(c d), "x" do end
+
+a b(c d), /x/ do end
+
+a b(c d), /x/m do end
+
+a b(c(d)), "x" do end
+
+a b(c(d)), /x/ do end
+
+a b(c(d)), /x/m do end
+
+a b{c d}, "x" do end
+
+a b{c d}, /x/ do end
+
+a b{c d}, /x/m do end
+
+a b{c(d)}, "x" do end
+
+a b{c(d)}, /x/ do end
+
+a b{c(d)}, /x/m do end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11873_a.txt b/test/yarp/fixtures/whitequark/ruby_bug_11873_a.txt
new file mode 100644
index 0000000000..1856235ce5
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11873_a.txt
@@ -0,0 +1,39 @@
+a b(c d), 1 do end
+
+a b(c d), 1.0 do end
+
+a b(c d), 1.0i do end
+
+a b(c d), 1.0r do end
+
+a b(c d), :e do end
+
+a b(c(d)), 1 do end
+
+a b(c(d)), 1.0 do end
+
+a b(c(d)), 1.0i do end
+
+a b(c(d)), 1.0r do end
+
+a b(c(d)), :e do end
+
+a b{c d}, 1 do end
+
+a b{c d}, 1.0 do end
+
+a b{c d}, 1.0i do end
+
+a b{c d}, 1.0r do end
+
+a b{c d}, :e do end
+
+a b{c(d)}, 1 do end
+
+a b{c(d)}, 1.0 do end
+
+a b{c(d)}, 1.0i do end
+
+a b{c(d)}, 1.0r do end
+
+a b{c(d)}, :e do end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11873_b.txt b/test/yarp/fixtures/whitequark/ruby_bug_11873_b.txt
new file mode 100644
index 0000000000..1b86662008
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11873_b.txt
@@ -0,0 +1 @@
+p p{p(p);p p}, tap do end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11989.txt b/test/yarp/fixtures/whitequark/ruby_bug_11989.txt
new file mode 100644
index 0000000000..d49b8614ed
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11989.txt
@@ -0,0 +1,3 @@
+p <<~"E"
+ x\n y
+E
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_11990.txt b/test/yarp/fixtures/whitequark/ruby_bug_11990.txt
new file mode 100644
index 0000000000..d0fe7b2739
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_11990.txt
@@ -0,0 +1,3 @@
+p <<~E " y"
+ x
+E
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_12073.txt b/test/yarp/fixtures/whitequark/ruby_bug_12073.txt
new file mode 100644
index 0000000000..b2e3784422
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_12073.txt
@@ -0,0 +1,3 @@
+a = 1; a b: 1
+
+def foo raise; raise A::B, ''; end
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_12402.txt b/test/yarp/fixtures/whitequark/ruby_bug_12402.txt
new file mode 100644
index 0000000000..060d5d95a1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_12402.txt
@@ -0,0 +1,27 @@
+foo += raise bar rescue nil
+
+foo += raise(bar) rescue nil
+
+foo = raise bar rescue nil
+
+foo = raise(bar) rescue nil
+
+foo.C += raise bar rescue nil
+
+foo.C += raise(bar) rescue nil
+
+foo.m += raise bar rescue nil
+
+foo.m += raise(bar) rescue nil
+
+foo::C ||= raise bar rescue nil
+
+foo::C ||= raise(bar) rescue nil
+
+foo::m += raise bar rescue nil
+
+foo::m += raise(bar) rescue nil
+
+foo[0] += raise bar rescue nil
+
+foo[0] += raise(bar) rescue nil
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_12669.txt b/test/yarp/fixtures/whitequark/ruby_bug_12669.txt
new file mode 100644
index 0000000000..cd89689446
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_12669.txt
@@ -0,0 +1,7 @@
+a += b += raise :x
+
+a += b = raise :x
+
+a = b += raise :x
+
+a = b = raise :x
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_12686.txt b/test/yarp/fixtures/whitequark/ruby_bug_12686.txt
new file mode 100644
index 0000000000..7742e791b8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_12686.txt
@@ -0,0 +1 @@
+f (g rescue nil)
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_13547.txt b/test/yarp/fixtures/whitequark/ruby_bug_13547.txt
new file mode 100644
index 0000000000..29eafc3a4c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_13547.txt
@@ -0,0 +1 @@
+meth[] {}
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_14690.txt b/test/yarp/fixtures/whitequark/ruby_bug_14690.txt
new file mode 100644
index 0000000000..b73b1d8aad
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_14690.txt
@@ -0,0 +1 @@
+let () { m(a) do; end }
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_15789.txt b/test/yarp/fixtures/whitequark/ruby_bug_15789.txt
new file mode 100644
index 0000000000..6324db5110
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_15789.txt
@@ -0,0 +1,3 @@
+m ->(a = ->{_1}) {a}
+
+m ->(a: ->{_1}) {a}
diff --git a/test/yarp/fixtures/whitequark/ruby_bug_9669.txt b/test/yarp/fixtures/whitequark/ruby_bug_9669.txt
new file mode 100644
index 0000000000..60dfa09d51
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ruby_bug_9669.txt
@@ -0,0 +1,8 @@
+def a b:
+return
+end
+
+o = {
+a:
+1
+}
diff --git a/test/yarp/fixtures/whitequark/sclass.txt b/test/yarp/fixtures/whitequark/sclass.txt
new file mode 100644
index 0000000000..e6aadaef21
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/sclass.txt
@@ -0,0 +1 @@
+class << foo; nil; end
diff --git a/test/yarp/fixtures/whitequark/self.txt b/test/yarp/fixtures/whitequark/self.txt
new file mode 100644
index 0000000000..31f9efa4a1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/self.txt
@@ -0,0 +1 @@
+self
diff --git a/test/yarp/fixtures/whitequark/send_attr_asgn.txt b/test/yarp/fixtures/whitequark/send_attr_asgn.txt
new file mode 100644
index 0000000000..b477966b2a
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_attr_asgn.txt
@@ -0,0 +1,7 @@
+foo.A = 1
+
+foo.a = 1
+
+foo::A = 1
+
+foo::a = 1
diff --git a/test/yarp/fixtures/whitequark/send_attr_asgn_conditional.txt b/test/yarp/fixtures/whitequark/send_attr_asgn_conditional.txt
new file mode 100644
index 0000000000..1279e02cfc
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_attr_asgn_conditional.txt
@@ -0,0 +1 @@
+a&.b = 1
diff --git a/test/yarp/fixtures/whitequark/send_binary_op.txt b/test/yarp/fixtures/whitequark/send_binary_op.txt
new file mode 100644
index 0000000000..3e3e9300b3
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_binary_op.txt
@@ -0,0 +1,41 @@
+foo != 1
+
+foo !~ 1
+
+foo % 1
+
+foo & 1
+
+foo * 1
+
+foo ** 1
+
+foo + 1
+
+foo - 1
+
+foo / 1
+
+foo < 1
+
+foo << 1
+
+foo <= 1
+
+foo <=> 1
+
+foo == 1
+
+foo === 1
+
+foo =~ 1
+
+foo > 1
+
+foo >= 1
+
+foo >> 1
+
+foo ^ 1
+
+foo | 1
diff --git a/test/yarp/fixtures/whitequark/send_block_chain_cmd.txt b/test/yarp/fixtures/whitequark/send_block_chain_cmd.txt
new file mode 100644
index 0000000000..c6fe1aab0e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_block_chain_cmd.txt
@@ -0,0 +1,13 @@
+meth 1 do end.fun bar
+
+meth 1 do end.fun bar do end
+
+meth 1 do end.fun {}
+
+meth 1 do end.fun(bar)
+
+meth 1 do end.fun(bar) {}
+
+meth 1 do end::fun bar
+
+meth 1 do end::fun(bar)
diff --git a/test/yarp/fixtures/whitequark/send_block_conditional.txt b/test/yarp/fixtures/whitequark/send_block_conditional.txt
new file mode 100644
index 0000000000..dcc8361762
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_block_conditional.txt
@@ -0,0 +1 @@
+foo&.bar {}
diff --git a/test/yarp/fixtures/whitequark/send_call.txt b/test/yarp/fixtures/whitequark/send_call.txt
new file mode 100644
index 0000000000..99701270bb
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_call.txt
@@ -0,0 +1,3 @@
+foo.(1)
+
+foo::(1)
diff --git a/test/yarp/fixtures/whitequark/send_conditional.txt b/test/yarp/fixtures/whitequark/send_conditional.txt
new file mode 100644
index 0000000000..8ecd27e0fe
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_conditional.txt
@@ -0,0 +1 @@
+a&.b
diff --git a/test/yarp/fixtures/whitequark/send_index.txt b/test/yarp/fixtures/whitequark/send_index.txt
new file mode 100644
index 0000000000..f9c4dafc4e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_index.txt
@@ -0,0 +1 @@
+foo[1, 2]
diff --git a/test/yarp/fixtures/whitequark/send_index_asgn.txt b/test/yarp/fixtures/whitequark/send_index_asgn.txt
new file mode 100644
index 0000000000..e232fa3b96
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_index_asgn.txt
@@ -0,0 +1 @@
+foo[1, 2] = 3
diff --git a/test/yarp/fixtures/whitequark/send_index_asgn_legacy.txt b/test/yarp/fixtures/whitequark/send_index_asgn_legacy.txt
new file mode 100644
index 0000000000..e232fa3b96
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_index_asgn_legacy.txt
@@ -0,0 +1 @@
+foo[1, 2] = 3
diff --git a/test/yarp/fixtures/whitequark/send_index_cmd.txt b/test/yarp/fixtures/whitequark/send_index_cmd.txt
new file mode 100644
index 0000000000..32090e7536
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_index_cmd.txt
@@ -0,0 +1 @@
+foo[m bar]
diff --git a/test/yarp/fixtures/whitequark/send_index_legacy.txt b/test/yarp/fixtures/whitequark/send_index_legacy.txt
new file mode 100644
index 0000000000..f9c4dafc4e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_index_legacy.txt
@@ -0,0 +1 @@
+foo[1, 2]
diff --git a/test/yarp/fixtures/whitequark/send_lambda.txt b/test/yarp/fixtures/whitequark/send_lambda.txt
new file mode 100644
index 0000000000..eadd6c9c03
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_lambda.txt
@@ -0,0 +1,5 @@
+-> * { }
+
+-> do end
+
+->{ }
diff --git a/test/yarp/fixtures/whitequark/send_lambda_args.txt b/test/yarp/fixtures/whitequark/send_lambda_args.txt
new file mode 100644
index 0000000000..68392f2f34
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_lambda_args.txt
@@ -0,0 +1,3 @@
+-> (a) { }
+
+->(a) { }
diff --git a/test/yarp/fixtures/whitequark/send_lambda_args_noparen.txt b/test/yarp/fixtures/whitequark/send_lambda_args_noparen.txt
new file mode 100644
index 0000000000..c0ae077f95
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_lambda_args_noparen.txt
@@ -0,0 +1,3 @@
+-> a: 1 { }
+
+-> a: { }
diff --git a/test/yarp/fixtures/whitequark/send_lambda_args_shadow.txt b/test/yarp/fixtures/whitequark/send_lambda_args_shadow.txt
new file mode 100644
index 0000000000..230f35ab89
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_lambda_args_shadow.txt
@@ -0,0 +1 @@
+->(a; foo, bar) { }
diff --git a/test/yarp/fixtures/whitequark/send_lambda_legacy.txt b/test/yarp/fixtures/whitequark/send_lambda_legacy.txt
new file mode 100644
index 0000000000..a509407c43
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_lambda_legacy.txt
@@ -0,0 +1 @@
+->{ }
diff --git a/test/yarp/fixtures/whitequark/send_op_asgn_conditional.txt b/test/yarp/fixtures/whitequark/send_op_asgn_conditional.txt
new file mode 100644
index 0000000000..906088dcd1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_op_asgn_conditional.txt
@@ -0,0 +1 @@
+a&.b &&= 1
diff --git a/test/yarp/fixtures/whitequark/send_plain.txt b/test/yarp/fixtures/whitequark/send_plain.txt
new file mode 100644
index 0000000000..ebaf1d18c7
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_plain.txt
@@ -0,0 +1,5 @@
+foo.fun
+
+foo::Fun()
+
+foo::fun
diff --git a/test/yarp/fixtures/whitequark/send_plain_cmd.txt b/test/yarp/fixtures/whitequark/send_plain_cmd.txt
new file mode 100644
index 0000000000..e3fd63f272
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_plain_cmd.txt
@@ -0,0 +1,5 @@
+foo.fun bar
+
+foo::Fun bar
+
+foo::fun bar
diff --git a/test/yarp/fixtures/whitequark/send_self.txt b/test/yarp/fixtures/whitequark/send_self.txt
new file mode 100644
index 0000000000..f084b9bca7
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_self.txt
@@ -0,0 +1,5 @@
+fun
+
+fun!
+
+fun(1)
diff --git a/test/yarp/fixtures/whitequark/send_self_block.txt b/test/yarp/fixtures/whitequark/send_self_block.txt
new file mode 100644
index 0000000000..1cd6703c82
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_self_block.txt
@@ -0,0 +1,7 @@
+fun do end
+
+fun { }
+
+fun() { }
+
+fun(1) { }
diff --git a/test/yarp/fixtures/whitequark/send_unary_op.txt b/test/yarp/fixtures/whitequark/send_unary_op.txt
new file mode 100644
index 0000000000..73814d199f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/send_unary_op.txt
@@ -0,0 +1,5 @@
++foo
+
+-foo
+
+~foo
diff --git a/test/yarp/fixtures/whitequark/slash_newline_in_heredocs.txt b/test/yarp/fixtures/whitequark/slash_newline_in_heredocs.txt
new file mode 100644
index 0000000000..4962a058ea
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/slash_newline_in_heredocs.txt
@@ -0,0 +1,13 @@
+<<-E
+ 1 \
+ 2
+ 3
+E
+
+
+<<~E
+ 1 \
+ 2
+ 3
+E
+
diff --git a/test/yarp/fixtures/whitequark/space_args_arg.txt b/test/yarp/fixtures/whitequark/space_args_arg.txt
new file mode 100644
index 0000000000..47957cba54
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/space_args_arg.txt
@@ -0,0 +1 @@
+fun (1)
diff --git a/test/yarp/fixtures/whitequark/space_args_arg_block.txt b/test/yarp/fixtures/whitequark/space_args_arg_block.txt
new file mode 100644
index 0000000000..5560a82818
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/space_args_arg_block.txt
@@ -0,0 +1,5 @@
+foo.fun (1) {}
+
+foo::fun (1) {}
+
+fun (1) {}
diff --git a/test/yarp/fixtures/whitequark/space_args_arg_call.txt b/test/yarp/fixtures/whitequark/space_args_arg_call.txt
new file mode 100644
index 0000000000..3b0ae831fe
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/space_args_arg_call.txt
@@ -0,0 +1 @@
+fun (1).to_i
diff --git a/test/yarp/fixtures/whitequark/space_args_arg_newline.txt b/test/yarp/fixtures/whitequark/space_args_arg_newline.txt
new file mode 100644
index 0000000000..a6cdac6ed1
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/space_args_arg_newline.txt
@@ -0,0 +1,2 @@
+fun (1
+)
diff --git a/test/yarp/fixtures/whitequark/space_args_block.txt b/test/yarp/fixtures/whitequark/space_args_block.txt
new file mode 100644
index 0000000000..555a097605
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/space_args_block.txt
@@ -0,0 +1 @@
+fun () {}
diff --git a/test/yarp/fixtures/whitequark/space_args_cmd.txt b/test/yarp/fixtures/whitequark/space_args_cmd.txt
new file mode 100644
index 0000000000..a749695cb7
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/space_args_cmd.txt
@@ -0,0 +1 @@
+fun (f bar)
diff --git a/test/yarp/fixtures/whitequark/string___FILE__.txt b/test/yarp/fixtures/whitequark/string___FILE__.txt
new file mode 100644
index 0000000000..4815727d05
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/string___FILE__.txt
@@ -0,0 +1 @@
+__FILE__
diff --git a/test/yarp/fixtures/whitequark/string_concat.txt b/test/yarp/fixtures/whitequark/string_concat.txt
new file mode 100644
index 0000000000..30cc4f8116
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/string_concat.txt
@@ -0,0 +1 @@
+"foo#@a" "bar"
diff --git a/test/yarp/fixtures/whitequark/string_dvar.txt b/test/yarp/fixtures/whitequark/string_dvar.txt
new file mode 100644
index 0000000000..bbe5b617b2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/string_dvar.txt
@@ -0,0 +1 @@
+"#@a #@@a #$a"
diff --git a/test/yarp/fixtures/whitequark/string_interp.txt b/test/yarp/fixtures/whitequark/string_interp.txt
new file mode 100644
index 0000000000..5fdd803341
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/string_interp.txt
@@ -0,0 +1 @@
+"foo#{bar}baz"
diff --git a/test/yarp/fixtures/whitequark/string_plain.txt b/test/yarp/fixtures/whitequark/string_plain.txt
new file mode 100644
index 0000000000..4aca78decb
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/string_plain.txt
@@ -0,0 +1,3 @@
+%q(foobar)
+
+'foobar'
diff --git a/test/yarp/fixtures/whitequark/super.txt b/test/yarp/fixtures/whitequark/super.txt
new file mode 100644
index 0000000000..9e68a9e988
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/super.txt
@@ -0,0 +1,5 @@
+super foo
+
+super()
+
+super(foo)
diff --git a/test/yarp/fixtures/whitequark/super_block.txt b/test/yarp/fixtures/whitequark/super_block.txt
new file mode 100644
index 0000000000..05a7d7fdd8
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/super_block.txt
@@ -0,0 +1,3 @@
+super do end
+
+super foo, bar do end
diff --git a/test/yarp/fixtures/whitequark/symbol_interp.txt b/test/yarp/fixtures/whitequark/symbol_interp.txt
new file mode 100644
index 0000000000..d5011b270d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/symbol_interp.txt
@@ -0,0 +1 @@
+:"foo#{bar}baz"
diff --git a/test/yarp/fixtures/whitequark/symbol_plain.txt b/test/yarp/fixtures/whitequark/symbol_plain.txt
new file mode 100644
index 0000000000..fd1fd0017c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/symbol_plain.txt
@@ -0,0 +1,3 @@
+:'foo'
+
+:foo
diff --git a/test/yarp/fixtures/whitequark/ternary.txt b/test/yarp/fixtures/whitequark/ternary.txt
new file mode 100644
index 0000000000..3a149d4e1c
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ternary.txt
@@ -0,0 +1 @@
+foo ? 1 : 2
diff --git a/test/yarp/fixtures/whitequark/ternary_ambiguous_symbol.txt b/test/yarp/fixtures/whitequark/ternary_ambiguous_symbol.txt
new file mode 100644
index 0000000000..19aa523c07
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/ternary_ambiguous_symbol.txt
@@ -0,0 +1 @@
+t=1;(foo)?t:T
diff --git a/test/yarp/fixtures/whitequark/trailing_forward_arg.txt b/test/yarp/fixtures/whitequark/trailing_forward_arg.txt
new file mode 100644
index 0000000000..043870ade2
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/trailing_forward_arg.txt
@@ -0,0 +1 @@
+def foo(a, b, ...); bar(a, 42, ...); end
diff --git a/test/yarp/fixtures/whitequark/true.txt b/test/yarp/fixtures/whitequark/true.txt
new file mode 100644
index 0000000000..27ba77ddaf
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/true.txt
@@ -0,0 +1 @@
+true
diff --git a/test/yarp/fixtures/whitequark/unary_num_pow_precedence.txt b/test/yarp/fixtures/whitequark/unary_num_pow_precedence.txt
new file mode 100644
index 0000000000..f0343e3c8b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/unary_num_pow_precedence.txt
@@ -0,0 +1,5 @@
++2.0 ** 10
+
+-2 ** 10
+
+-2.0 ** 10
diff --git a/test/yarp/fixtures/whitequark/undef.txt b/test/yarp/fixtures/whitequark/undef.txt
new file mode 100644
index 0000000000..3e88ec7084
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/undef.txt
@@ -0,0 +1 @@
+undef foo, :bar, :"foo#{1}"
diff --git a/test/yarp/fixtures/whitequark/unless.txt b/test/yarp/fixtures/whitequark/unless.txt
new file mode 100644
index 0000000000..d04043ed90
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/unless.txt
@@ -0,0 +1,3 @@
+unless foo then bar; end
+
+unless foo; bar; end
diff --git a/test/yarp/fixtures/whitequark/unless_else.txt b/test/yarp/fixtures/whitequark/unless_else.txt
new file mode 100644
index 0000000000..8243d42031
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/unless_else.txt
@@ -0,0 +1,3 @@
+unless foo then bar; else baz; end
+
+unless foo; bar; else baz; end
diff --git a/test/yarp/fixtures/whitequark/unless_mod.txt b/test/yarp/fixtures/whitequark/unless_mod.txt
new file mode 100644
index 0000000000..2d0376a310
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/unless_mod.txt
@@ -0,0 +1 @@
+bar unless foo
diff --git a/test/yarp/fixtures/whitequark/until.txt b/test/yarp/fixtures/whitequark/until.txt
new file mode 100644
index 0000000000..06082233cb
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/until.txt
@@ -0,0 +1,3 @@
+until foo do meth end
+
+until foo; meth end
diff --git a/test/yarp/fixtures/whitequark/until_mod.txt b/test/yarp/fixtures/whitequark/until_mod.txt
new file mode 100644
index 0000000000..46a85d2ba9
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/until_mod.txt
@@ -0,0 +1 @@
+meth until foo
diff --git a/test/yarp/fixtures/whitequark/until_post.txt b/test/yarp/fixtures/whitequark/until_post.txt
new file mode 100644
index 0000000000..988e43b665
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/until_post.txt
@@ -0,0 +1 @@
+begin meth end until foo
diff --git a/test/yarp/fixtures/whitequark/var_and_asgn.txt b/test/yarp/fixtures/whitequark/var_and_asgn.txt
new file mode 100644
index 0000000000..25502968f9
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/var_and_asgn.txt
@@ -0,0 +1 @@
+a &&= 1
diff --git a/test/yarp/fixtures/whitequark/var_op_asgn.txt b/test/yarp/fixtures/whitequark/var_op_asgn.txt
new file mode 100644
index 0000000000..402d818a7e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/var_op_asgn.txt
@@ -0,0 +1,7 @@
+@@var |= 10
+
+@a |= 1
+
+a += 1
+
+def a; @@var |= 10; end
diff --git a/test/yarp/fixtures/whitequark/var_op_asgn_cmd.txt b/test/yarp/fixtures/whitequark/var_op_asgn_cmd.txt
new file mode 100644
index 0000000000..33f4bc0e73
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/var_op_asgn_cmd.txt
@@ -0,0 +1 @@
+foo += m foo
diff --git a/test/yarp/fixtures/whitequark/var_or_asgn.txt b/test/yarp/fixtures/whitequark/var_or_asgn.txt
new file mode 100644
index 0000000000..aa30b3d5ca
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/var_or_asgn.txt
@@ -0,0 +1 @@
+a ||= 1
diff --git a/test/yarp/fixtures/whitequark/when_multi.txt b/test/yarp/fixtures/whitequark/when_multi.txt
new file mode 100644
index 0000000000..b4fbd33125
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/when_multi.txt
@@ -0,0 +1 @@
+case foo; when 'bar', 'baz'; bar; end
diff --git a/test/yarp/fixtures/whitequark/when_splat.txt b/test/yarp/fixtures/whitequark/when_splat.txt
new file mode 100644
index 0000000000..695e5da34e
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/when_splat.txt
@@ -0,0 +1 @@
+case foo; when 1, *baz; bar; when *foo; end
diff --git a/test/yarp/fixtures/whitequark/when_then.txt b/test/yarp/fixtures/whitequark/when_then.txt
new file mode 100644
index 0000000000..63293452b3
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/when_then.txt
@@ -0,0 +1 @@
+case foo; when 'bar' then bar; end
diff --git a/test/yarp/fixtures/whitequark/while.txt b/test/yarp/fixtures/whitequark/while.txt
new file mode 100644
index 0000000000..28b204f247
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/while.txt
@@ -0,0 +1,3 @@
+while foo do meth end
+
+while foo; meth end
diff --git a/test/yarp/fixtures/whitequark/while_mod.txt b/test/yarp/fixtures/whitequark/while_mod.txt
new file mode 100644
index 0000000000..ce3cf01d14
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/while_mod.txt
@@ -0,0 +1 @@
+meth while foo
diff --git a/test/yarp/fixtures/whitequark/while_post.txt b/test/yarp/fixtures/whitequark/while_post.txt
new file mode 100644
index 0000000000..ac6e05008b
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/while_post.txt
@@ -0,0 +1 @@
+begin meth end while foo
diff --git a/test/yarp/fixtures/whitequark/xstring_interp.txt b/test/yarp/fixtures/whitequark/xstring_interp.txt
new file mode 100644
index 0000000000..dfede8123f
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/xstring_interp.txt
@@ -0,0 +1 @@
+`foo#{bar}baz`
diff --git a/test/yarp/fixtures/whitequark/xstring_plain.txt b/test/yarp/fixtures/whitequark/xstring_plain.txt
new file mode 100644
index 0000000000..fce255049d
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/xstring_plain.txt
@@ -0,0 +1 @@
+`foobar`
diff --git a/test/yarp/fixtures/whitequark/yield.txt b/test/yarp/fixtures/whitequark/yield.txt
new file mode 100644
index 0000000000..0ecf639589
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/yield.txt
@@ -0,0 +1,7 @@
+yield
+
+yield foo
+
+yield()
+
+yield(foo)
diff --git a/test/yarp/fixtures/whitequark/zsuper.txt b/test/yarp/fixtures/whitequark/zsuper.txt
new file mode 100644
index 0000000000..16f5c2d3aa
--- /dev/null
+++ b/test/yarp/fixtures/whitequark/zsuper.txt
@@ -0,0 +1 @@
+super
diff --git a/test/yarp/fixtures/xstring.txt b/test/yarp/fixtures/xstring.txt
new file mode 100644
index 0000000000..01bcc09fc5
--- /dev/null
+++ b/test/yarp/fixtures/xstring.txt
@@ -0,0 +1,7 @@
+%x[foo]
+
+`foo #{bar} baz`
+
+`f\oo`
+
+`foo`
diff --git a/test/yarp/fixtures/yield.txt b/test/yarp/fixtures/yield.txt
new file mode 100644
index 0000000000..d75ab57a18
--- /dev/null
+++ b/test/yarp/fixtures/yield.txt
@@ -0,0 +1,7 @@
+yield
+
+yield()
+
+yield(1)
+
+yield(1, 2, 3)
diff --git a/test/yarp/heredoc_dedent_test.rb b/test/yarp/heredoc_dedent_test.rb
new file mode 100644
index 0000000000..64627c564f
--- /dev/null
+++ b/test/yarp/heredoc_dedent_test.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+module YARP
+ class HeredocDedentTest < Test::Unit::TestCase
+ filepath = File.expand_path("fixtures/tilde_heredocs.txt", __dir__)
+
+ File.read(filepath).split(/(?=\n)\n(?=<)/).each_with_index do |heredoc, index|
+ define_method "test_heredoc_#{index}" do
+ parts = YARP.parse(heredoc).value.statements.body.first.parts
+ actual = parts.map { |part| part.is_a?(StringNode) ? part.unescaped : "1" }.join
+
+ assert_equal(eval(heredoc), actual, "Expected heredocs to match.")
+ end
+ end
+ end
+end
diff --git a/test/yarp/language_server_test.rb b/test/yarp/language_server_test.rb
new file mode 100644
index 0000000000..4561911c01
--- /dev/null
+++ b/test/yarp/language_server_test.rb
@@ -0,0 +1,363 @@
+# frozen_string_literal: true
+
+require_relative "yarp_test_helper"
+require "yarp/language_server"
+
+module YARP
+ class LanguageServerTest < Test::Unit::TestCase
+ module Request
+ # Represents a hash pattern.
+ class Shape
+ attr_reader :values
+
+ def initialize(values)
+ @values = values
+ end
+
+ def ===(other)
+ values.all? do |key, value|
+ value == :any ? other.key?(key) : value === other[key]
+ end
+ end
+ end
+
+ # Represents an array pattern.
+ class Tuple
+ attr_reader :values
+
+ def initialize(values)
+ @values = values
+ end
+
+ def ===(other)
+ values.each_with_index.all? { |value, index| value === other[index] }
+ end
+ end
+
+ def self.[](value)
+ case value
+ when Array
+ Tuple.new(value.map { |child| self[child] })
+ when Hash
+ Shape.new(value.transform_values { |child| self[child] })
+ else
+ value
+ end
+ end
+ end
+
+ class Initialize < Struct.new(:id)
+ def to_hash
+ { method: "initialize", id: id }
+ end
+ end
+
+ class Shutdown < Struct.new(:id)
+ def to_hash
+ { method: "shutdown", id: id }
+ end
+ end
+
+ class TextDocumentDidOpen < Struct.new(:uri, :text)
+ def to_hash
+ {
+ method: "textDocument/didOpen",
+ params: { textDocument: { uri: uri, text: text } }
+ }
+ end
+ end
+
+ class TextDocumentDidChange < Struct.new(:uri, :text)
+ def to_hash
+ {
+ method: "textDocument/didChange",
+ params: {
+ textDocument: { uri: uri },
+ contentChanges: [{ text: text }]
+ }
+ }
+ end
+ end
+
+ class TextDocumentDidClose < Struct.new(:uri)
+ def to_hash
+ {
+ method: "textDocument/didClose",
+ params: { textDocument: { uri: uri } }
+ }
+ end
+ end
+
+ class TextDocumentCodeAction < Struct.new(:id, :uri, :diagnostics)
+ def to_hash
+ {
+ method: "textDocument/codeAction",
+ id: id,
+ params: {
+ textDocument: { uri: uri },
+ context: {
+ diagnostics: diagnostics,
+ },
+ },
+ }
+ end
+ end
+
+ class TextDocumentDiagnostic < Struct.new(:id, :uri)
+ def to_hash
+ {
+ method: "textDocument/diagnostic",
+ id: id,
+ params: {
+ textDocument: { uri: uri },
+ }
+ }
+ end
+ end
+
+ def test_reading_file
+ Tempfile.create(%w[test- .rb]) do |file|
+ file.write("class Foo; end")
+ file.rewind
+
+ responses = run_server([
+ Initialize.new(1),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ end
+ end
+
+ def test_clean_shutdown
+ responses = run_server([Initialize.new(1), Shutdown.new(2)])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ end
+
+ def test_file_that_does_not_exist
+ responses = run_server([
+ Initialize.new(1),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ end
+
+ def test_code_action_request
+ message = "this is an error"
+ diagnostic = {
+ range: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } },
+ message: message,
+ severity: 1,
+ }
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentDidOpen.new("file:///path/to/file.rb", <<~RUBY),
+ 1 + (
+ RUBY
+ TextDocumentCodeAction.new(2, "file:///path/to/file.rb", [diagnostic]),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: [
+ {
+ title: "Report incorrect error: `#{message}`",
+ kind: "quickfix",
+ diagnostics: [diagnostic],
+ command: {
+ title: "Report incorrect error",
+ command: "vscode.open",
+ arguments: [String]
+ }
+ }
+ ],
+ },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ assert(responses.dig(1, :result, 0, :command, :arguments, 0).include?(URI.encode_www_form_component(message)))
+ end
+
+ def test_code_action_request_no_diagnostic
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentDidOpen.new("file:///path/to/file.rb", <<~RUBY),
+ 1 + (
+ RUBY
+ TextDocumentCodeAction.new(2, "file:///path/to/file.rb", []),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: [] },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ end
+
+ def test_code_action_request_no_content
+ message = "this is an error"
+ diagnostic = {
+ range: { start: { line: 0, character: 0 }, end: { line: 0, character: 0 } },
+ message: message,
+ severity: 1,
+ }
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentCodeAction.new(2, "file:///path/to/file.rb", [diagnostic]),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: nil },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ end
+
+ def test_diagnostics_request_error
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentDidOpen.new("file:///path/to/file.rb", <<~RUBY),
+ 1 + (
+ RUBY
+ TextDocumentDiagnostic.new(2, "file:///path/to/file.rb"),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: { kind: "full", items: [
+ {
+ range: {
+ start: { line: Integer, character: Integer },
+ end: { line: Integer, character: Integer }
+ },
+ message: String,
+ severity: Integer
+ },
+ ] } },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ assert(responses.dig(1, :result, :items).count { |item| item[:severity] == 1 } > 0)
+ end
+
+ def test_diagnostics_request_warning
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentDidOpen.new("file:///path/to/file.rb", <<~RUBY),
+ a/b /c
+ RUBY
+ TextDocumentDiagnostic.new(2, "file:///path/to/file.rb"),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: { kind: "full", items: [
+ {
+ range: {
+ start: { line: Integer, character: Integer },
+ end: { line: Integer, character: Integer }
+ },
+ message: String,
+ severity: Integer
+ },
+ ] } },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ assert(responses.dig(1, :result, :items).count { |item| item[:severity] == 2 } > 0)
+ end
+
+ def test_diagnostics_request_nothing
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentDidOpen.new("file:///path/to/file.rb", <<~RUBY),
+ a = 1
+ RUBY
+ TextDocumentDiagnostic.new(2, "file:///path/to/file.rb"),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: { kind: "full", items: [] } },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ assert_equal(0, responses.dig(1, :result, :items).size)
+ end
+
+ def test_diagnostics_request_no_content
+ responses = run_server([
+ Initialize.new(1),
+ TextDocumentDiagnostic.new(2, "file:///path/to/file.rb"),
+ Shutdown.new(3)
+ ])
+
+ shape = Request[[
+ { id: 1, result: { capabilities: Hash } },
+ { id: 2, result: nil },
+ { id: 3, result: {} }
+ ]]
+
+ assert_operator(shape, :===, responses)
+ end
+
+ private
+
+ def write(content)
+ request = content.to_hash.merge(jsonrpc: "2.0").to_json
+ "Content-Length: #{request.bytesize}\r\n\r\n#{request}"
+ end
+
+ def read(content)
+ [].tap do |messages|
+ while (headers = content.gets("\r\n\r\n"))
+ source = content.read(headers[/Content-Length: (\d+)/i, 1].to_i)
+ messages << JSON.parse(source, symbolize_names: true)
+ end
+ end
+ end
+
+ def run_server(messages)
+ input = StringIO.new(messages.map { |message| write(message) }.join)
+ output = StringIO.new
+
+ LanguageServer.new(
+ input: input,
+ output: output,
+ ).run
+
+ read(output.tap(&:rewind))
+ end
+ end
+end
diff --git a/test/yarp/location_test.rb b/test/yarp/location_test.rb
new file mode 100644
index 0000000000..2f551949e5
--- /dev/null
+++ b/test/yarp/location_test.rb
@@ -0,0 +1,766 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+module YARP
+ class LocationTest < Test::Unit::TestCase
+ def test_AliasNode
+ assert_location(AliasNode, "alias foo bar")
+ end
+
+ def test_AlternationPatternNode
+ assert_location(AlternationPatternNode, "foo => bar | baz", 7...16, &:pattern)
+ end
+
+ def test_AndNode
+ assert_location(AndNode, "foo and bar")
+ assert_location(AndNode, "foo && bar")
+ end
+
+ def test_ArgumentsNode
+ assert_location(ArgumentsNode, "foo(bar, baz, qux)", 4...17, &:arguments)
+ end
+
+ def test_ArrayNode
+ assert_location(ArrayNode, "[foo, bar, baz]")
+ assert_location(ArrayNode, "%i[foo bar baz]")
+ assert_location(ArrayNode, "%I[foo bar baz]")
+ assert_location(ArrayNode, "%w[foo bar baz]")
+ assert_location(ArrayNode, "%W[foo bar baz]")
+ end
+
+ def test_ArrayPatternNode
+ assert_location(ArrayPatternNode, "foo => bar, baz", 7...15, &:pattern)
+ assert_location(ArrayPatternNode, "foo => [bar, baz]", 7...17, &:pattern)
+ assert_location(ArrayPatternNode, "foo => *bar", 7...11, &:pattern)
+ assert_location(ArrayPatternNode, "foo => []", 7...9, &:pattern)
+ assert_location(ArrayPatternNode, "foo => Foo[]", 7...12, &:pattern)
+ assert_location(ArrayPatternNode, "foo => Foo[bar]", 7...15, &:pattern)
+ end
+
+ def test_AssocNode
+ assert_location(AssocNode, "{ foo: :bar }", 2...11) { |node| node.elements.first }
+ assert_location(AssocNode, "{ :foo => :bar }", 2...14) { |node| node.elements.first }
+ assert_location(AssocNode, "foo(bar: :baz)", 4...13) { |node| node.arguments.arguments.first.elements.first }
+ end
+
+ def test_AssocSplatNode
+ assert_location(AssocSplatNode, "{ **foo }", 2...7) { |node| node.elements.first }
+ assert_location(AssocSplatNode, "foo(**bar)", 4...9) { |node| node.arguments.arguments.first.elements.first }
+ end
+
+ def test_BackReferenceReadNode
+ assert_location(BackReferenceReadNode, "$+")
+ end
+
+ def test_BeginNode
+ assert_location(BeginNode, "begin foo end")
+ assert_location(BeginNode, "begin foo rescue bar end")
+ assert_location(BeginNode, "begin foo; rescue bar\nelse baz end")
+ assert_location(BeginNode, "begin foo; rescue bar\nelse baz\nensure qux end")
+
+ assert_location(BeginNode, "class Foo\nrescue then end", 10..25, &:statements)
+ assert_location(BeginNode, "module Foo\nrescue then end", 11..26, &:statements)
+ end
+
+ def test_BlockArgumentNode
+ assert_location(BlockArgumentNode, "foo(&bar)", 4...8) { |node| node.arguments.arguments.last }
+ end
+
+ def test_BlockNode
+ assert_location(BlockNode, "foo {}", 4...6, &:block)
+ assert_location(BlockNode, "foo do end", 4...10, &:block)
+ end
+
+ def test_BlockParameterNode
+ assert_location(BlockParameterNode, "def foo(&bar) end", 8...12) { |node| node.parameters.block }
+ end
+
+ def test_BlockParametersNode
+ assert_location(BlockParametersNode, "foo { || }", 6...8) { |node| node.block.parameters }
+ assert_location(BlockParametersNode, "foo { |bar| baz }", 6...11) { |node| node.block.parameters }
+ assert_location(BlockParametersNode, "foo { |bar; baz| baz }", 6...16) { |node| node.block.parameters }
+
+ assert_location(BlockParametersNode, "-> () {}", 3...5, &:parameters)
+ assert_location(BlockParametersNode, "-> (bar) { baz }", 3...8, &:parameters)
+ assert_location(BlockParametersNode, "-> (bar; baz) { baz }", 3...13, &:parameters)
+ end
+
+ def test_BreakNode
+ assert_location(BreakNode, "break")
+ assert_location(BreakNode, "break foo")
+ assert_location(BreakNode, "break foo, bar")
+ assert_location(BreakNode, "break(foo)")
+ end
+
+ def test_CallNode
+ assert_location(CallNode, "foo")
+ assert_location(CallNode, "foo?")
+ assert_location(CallNode, "foo!")
+
+ assert_location(CallNode, "foo()")
+ assert_location(CallNode, "foo?()")
+ assert_location(CallNode, "foo!()")
+
+ assert_location(CallNode, "foo(bar)")
+ assert_location(CallNode, "foo?(bar)")
+ assert_location(CallNode, "foo!(bar)")
+
+ assert_location(CallNode, "!foo")
+ assert_location(CallNode, "~foo")
+ assert_location(CallNode, "+foo")
+ assert_location(CallNode, "-foo")
+
+ assert_location(CallNode, "not foo")
+ assert_location(CallNode, "not(foo)")
+ assert_location(CallNode, "not()")
+
+ assert_location(CallNode, "foo + bar")
+ assert_location(CallNode, "foo -\n bar")
+
+ assert_location(CallNode, "Foo()")
+ assert_location(CallNode, "Foo(bar)")
+
+ assert_location(CallNode, "Foo::Bar()")
+ assert_location(CallNode, "Foo::Bar(baz)")
+
+ assert_location(CallNode, "Foo::bar")
+ assert_location(CallNode, "Foo::bar()")
+ assert_location(CallNode, "Foo::bar(baz)")
+
+ assert_location(CallNode, "Foo.bar")
+ assert_location(CallNode, "Foo.bar()")
+ assert_location(CallNode, "Foo.bar(baz)")
+
+ assert_location(CallNode, "foo::bar")
+ assert_location(CallNode, "foo::bar()")
+ assert_location(CallNode, "foo::bar(baz)")
+
+ assert_location(CallNode, "foo.bar")
+ assert_location(CallNode, "foo.bar()")
+ assert_location(CallNode, "foo.bar(baz)")
+
+ assert_location(CallNode, "foo&.bar")
+ assert_location(CallNode, "foo&.bar()")
+ assert_location(CallNode, "foo&.bar(baz)")
+
+ assert_location(CallNode, "foo[]")
+ assert_location(CallNode, "foo[bar]")
+ assert_location(CallNode, "foo[bar, baz]")
+
+ assert_location(CallNode, "foo[] = 1")
+ assert_location(CallNode, "foo[bar] = 1")
+ assert_location(CallNode, "foo[bar, baz] = 1")
+
+ assert_location(CallNode, "foo.()")
+ assert_location(CallNode, "foo.(bar)")
+
+ assert_location(CallNode, "foo&.()")
+ assert_location(CallNode, "foo&.(bar)")
+
+ assert_location(CallNode, "foo::()")
+ assert_location(CallNode, "foo::(bar)")
+ assert_location(CallNode, "foo::(bar, baz)")
+
+ assert_location(CallNode, "foo bar baz")
+ assert_location(CallNode, "foo bar('baz')")
+ end
+
+ def test_CallOperatorAndWriteNode
+ assert_location(CallOperatorAndWriteNode, "foo.foo &&= bar")
+ assert_location(CallOperatorAndWriteNode, "foo[foo] &&= bar")
+ end
+
+ def test_CallOperatorWriteNode
+ assert_location(CallOperatorWriteNode, "foo.foo += bar")
+ assert_location(CallOperatorWriteNode, "foo[foo] += bar")
+ end
+
+ def test_CallOperatorOrWriteNode
+ assert_location(CallOperatorOrWriteNode, "foo.foo ||= bar")
+ assert_location(CallOperatorOrWriteNode, "foo[foo] ||= bar")
+ end
+
+ def test_CapturePatternNode
+ assert_location(CapturePatternNode, "case foo; in bar => baz; end", 13...23) do |node|
+ node.conditions.first.pattern
+ end
+ end
+
+ def test_CaseNode
+ assert_location(CaseNode, "case foo; when bar; end")
+ assert_location(CaseNode, "case foo; when bar; else; end")
+ assert_location(CaseNode, "case foo; when bar; when baz; end")
+ assert_location(CaseNode, "case foo; when bar; when baz; else; end")
+ end
+
+ def test_ClassNode
+ assert_location(ClassNode, "class Foo end")
+ assert_location(ClassNode, "class Foo < Bar end")
+ end
+
+ def test_ClassVariableOperatorAndWriteNode
+ assert_location(ClassVariableOperatorAndWriteNode, "@@foo &&= bar")
+ end
+
+ def test_ClassVariableOperatorWriteNode
+ assert_location(ClassVariableOperatorWriteNode, "@@foo += bar")
+ end
+
+ def test_ClassVariableOperatorOrWriteNode
+ assert_location(ClassVariableOperatorOrWriteNode, "@@foo ||= bar")
+ end
+
+ def test_ClassVariableReadNode
+ assert_location(ClassVariableReadNode, "@@foo")
+ end
+
+ def test_ClassVariableWriteNode
+ assert_location(ClassVariableWriteNode, "@@foo = bar")
+ end
+
+ def test_ConstantPathNode
+ assert_location(ConstantPathNode, "Foo::Bar")
+ assert_location(ConstantPathNode, "::Foo")
+ assert_location(ConstantPathNode, "::Foo::Bar")
+ end
+
+ def test_ConstantPathWriteNode
+ assert_location(ConstantPathWriteNode, "Foo::Bar = baz")
+ assert_location(ConstantPathWriteNode, "::Foo = bar")
+ assert_location(ConstantPathWriteNode, "::Foo::Bar = baz")
+ end
+
+ def test_ConstantPathOperatorAndWriteNode
+ assert_location(ConstantPathOperatorAndWriteNode, "Parent::Child &&= bar")
+ end
+
+ def test_ConstantPathOperatorWriteNode
+ assert_location(ConstantPathOperatorWriteNode, "Parent::Child += bar")
+ end
+
+ def test_ConstantPathOperatorOrWriteNode
+ assert_location(ConstantPathOperatorOrWriteNode, "Parent::Child ||= bar")
+ end
+
+ def test_ConstantOperatorAndWriteNode
+ assert_location(ConstantOperatorAndWriteNode, "Foo &&= bar")
+ end
+
+ def test_ConstantOperatorWriteNode
+ assert_location(ConstantOperatorWriteNode, "Foo += bar")
+ end
+
+ def test_ConstantOperatorOrWriteNode
+ assert_location(ConstantOperatorOrWriteNode, "Foo ||= bar")
+ end
+
+ def test_ConstantReadNode
+ assert_location(ConstantReadNode, "Foo")
+ assert_location(ConstantReadNode, "Foo::Bar", 5...8, &:child)
+ end
+
+ def test_DefNode
+ assert_location(DefNode, "def foo; bar; end")
+ assert_location(DefNode, "def foo = bar")
+ assert_location(DefNode, "def foo.bar; baz; end")
+ assert_location(DefNode, "def foo.bar = baz")
+ end
+
+ def test_DefinedNode
+ assert_location(DefinedNode, "defined? foo")
+ assert_location(DefinedNode, "defined?(foo)")
+ end
+
+ def test_ElseNode
+ assert_location(ElseNode, "if foo; bar; else; baz; end", 13...27, &:consequent)
+ assert_location(ElseNode, "foo ? bar : baz", 10...15, &:consequent)
+ end
+
+ def test_EmbeddedStatementsNode
+ assert_location(EmbeddedStatementsNode, '"foo #{bar} baz"', 5...11) { |node| node.parts[1] }
+ end
+
+ def test_EmbeddedVariableNode
+ assert_location(EmbeddedVariableNode, '"foo #@@bar baz"', 5...11) { |node| node.parts[1] }
+ end
+
+ def test_EnsureNode
+ assert_location(EnsureNode, "begin; foo; ensure; bar; end", 12...28, &:ensure_clause)
+ end
+
+ def test_FalseNode
+ assert_location(FalseNode, "false")
+ end
+
+ def test_FindPatternNode
+ assert_location(FindPatternNode, "case foo; in *, bar, *; end", 13...22) do |node|
+ node.conditions.first.pattern
+ end
+ end
+
+ def test_FloatNode
+ assert_location(FloatNode, "0.0")
+ assert_location(FloatNode, "1.0")
+ assert_location(FloatNode, "1.0e10")
+ assert_location(FloatNode, "1.0e-10")
+ end
+
+ def test_ForNode
+ assert_location(ForNode, "for foo in bar; end")
+ assert_location(ForNode, "for foo, bar in baz do end")
+ end
+
+ def test_ForwardingArgumentsNode
+ assert_location(ForwardingArgumentsNode, "def foo(...); bar(...); end", 18...21) do |node|
+ node.statements.body.first.arguments.arguments.first
+ end
+ end
+
+ def test_ForwardingParameterNode
+ assert_location(ForwardingParameterNode, "def foo(...); end", 8...11) do |node|
+ node.parameters.keyword_rest
+ end
+ end
+
+ def test_ForwardingSuperNode
+ assert_location(ForwardingSuperNode, "super")
+ assert_location(ForwardingSuperNode, "super {}")
+ end
+
+ def test_GlobalVariableOperatorAndWriteNode
+ assert_location(GlobalVariableOperatorAndWriteNode, "$foo &&= bar")
+ end
+
+ def test_GlobalVariableOperatorWriteNode
+ assert_location(GlobalVariableOperatorWriteNode, "$foo += bar")
+ end
+
+ def test_GlobalVariableOperatorOrWriteNode
+ assert_location(GlobalVariableOperatorOrWriteNode, "$foo ||= bar")
+ end
+
+ def test_GlobalVariableReadNode
+ assert_location(GlobalVariableReadNode, "$foo")
+ end
+
+ def test_GlobalVariableWriteNode
+ assert_location(GlobalVariableWriteNode, "$foo = bar")
+ end
+
+ def test_HashNode
+ assert_location(HashNode, "{ foo: 2 }")
+ assert_location(HashNode, "{ \nfoo: 2, \nbar: 3 \n}")
+ end
+
+ def test_HashPatternNode
+ assert_location(HashPatternNode, "case foo; in bar: baz; end", 13...21) do |node|
+ node.conditions.first.pattern
+ end
+ end
+
+ def test_IfNode
+ assert_location(IfNode, "if type in 1;elsif type in B;end")
+ end
+
+ def test_ImaginaryNode
+ assert_location(ImaginaryNode, "1i")
+ assert_location(ImaginaryNode, "1ri")
+ end
+
+ def test_InNode
+ assert_location(InNode, "case foo; in bar; end", 10...16) do |node|
+ node.conditions.first
+ end
+ end
+
+ def test_InstanceVariableOperatorAndWriteNode
+ assert_location(InstanceVariableOperatorAndWriteNode, "@foo &&= bar")
+ end
+
+ def test_InstanceVariableOperatorWriteNode
+ assert_location(InstanceVariableOperatorWriteNode, "@foo += bar")
+ end
+
+ def test_InstanceVariableOperatorOrWriteNode
+ assert_location(InstanceVariableOperatorOrWriteNode, "@foo ||= bar")
+ end
+
+ def test_InstanceVariableReadNode
+ assert_location(InstanceVariableReadNode, "@foo")
+ end
+
+ def test_InstanceVariableWriteNode
+ assert_location(InstanceVariableWriteNode, "@foo = bar")
+ end
+
+ def test_IntegerNode
+ assert_location(IntegerNode, "0")
+ assert_location(IntegerNode, "1")
+ assert_location(IntegerNode, "1_000")
+ assert_location(IntegerNode, "0x1")
+ assert_location(IntegerNode, "0x1_000")
+ assert_location(IntegerNode, "0b1")
+ assert_location(IntegerNode, "0b1_000")
+ assert_location(IntegerNode, "0o1")
+ assert_location(IntegerNode, "0o1_000")
+ end
+
+ def test_InterpolatedRegularExpressionNode
+ assert_location(InterpolatedRegularExpressionNode, "/\#{foo}/")
+ end
+
+ def test_InterpolatedStringNode
+ assert_location(InterpolatedStringNode, "<<~A\nhello world\nA")
+ end
+
+ def test_InterpolatedSymbolNode
+ assert_location(InterpolatedSymbolNode, ':"#{foo}bar"')
+ end
+
+ def test_InterpolatedXStringNode
+ assert_location(InterpolatedXStringNode, '`foo #{bar} baz`')
+ end
+
+ def test_KeywordHashNode
+ assert_location(KeywordHashNode, "foo(a, b: 1)", 7...11) { |node| node.arguments.arguments[1] }
+ end
+
+ def test_KeywordParameterNode
+ assert_location(KeywordParameterNode, "def foo(bar:); end", 8...12) do |node|
+ node.parameters.keywords.first
+ end
+
+ assert_location(KeywordParameterNode, "def foo(bar: nil); end", 8...16) do |node|
+ node.parameters.keywords.first
+ end
+ end
+
+ def test_KeywordRestParameterNode
+ assert_location(KeywordRestParameterNode, "def foo(**); end", 8...10) do |node|
+ node.parameters.keyword_rest
+ end
+
+ assert_location(KeywordRestParameterNode, "def foo(**bar); end", 8...13) do |node|
+ node.parameters.keyword_rest
+ end
+ end
+
+ def test_LambdaNode
+ assert_location(LambdaNode, "-> { foo }")
+ assert_location(LambdaNode, "-> do foo end")
+ end
+
+ def test_LocalVariableOperatorAndWriteNode
+ assert_location(LocalVariableOperatorAndWriteNode, "foo &&= bar")
+ assert_location(LocalVariableOperatorAndWriteNode, "foo = 1; foo &&= bar", 9...20)
+ end
+
+ def test_LocalVariableOperatorWriteNode
+ assert_location(LocalVariableOperatorWriteNode, "foo += bar")
+ assert_location(LocalVariableOperatorWriteNode, "foo = 1; foo += bar", 9...19)
+ end
+
+ def test_LocalVariableOperatorOrWriteNode
+ assert_location(LocalVariableOperatorOrWriteNode, "foo ||= bar")
+ assert_location(LocalVariableOperatorOrWriteNode, "foo = 1; foo ||= bar", 9...20)
+ end
+
+ def test_LocalVariableReadNode
+ assert_location(LocalVariableReadNode, "foo = 1; foo", 9...12)
+ end
+
+ def test_LocalVariableWriteNode
+ assert_location(LocalVariableWriteNode, "foo = bar")
+ end
+
+ def test_MatchPredicateNode
+ assert_location(MatchPredicateNode, "foo in bar")
+ end
+
+ def test_MatchRequiredNode
+ assert_location(MatchRequiredNode, "foo => bar")
+ end
+
+ def test_ModuleNode
+ assert_location(ModuleNode, "module Foo end")
+ end
+
+ def test_MultiWriteNode
+ assert_location(MultiWriteNode, "foo, bar = baz")
+ end
+
+ def test_NextNode
+ assert_location(NextNode, "next")
+ assert_location(NextNode, "next foo")
+ assert_location(NextNode, "next foo, bar")
+ assert_location(NextNode, "next(foo)")
+ end
+
+ def test_NilNode
+ assert_location(NilNode, "nil")
+ end
+
+ def test_NoKeywordsParameterNode
+ assert_location(NoKeywordsParameterNode, "def foo(**nil); end", 8...13) { |node| node.parameters.keyword_rest }
+ end
+
+ def test_NumberedReferenceReadNode
+ assert_location(NumberedReferenceReadNode, "$1")
+ end
+
+ def test_OptionalParameterNode
+ assert_location(OptionalParameterNode, "def foo(bar = nil); end", 8...17) do |node|
+ node.parameters.optionals.first
+ end
+ end
+
+ def test_OrNode
+ assert_location(OrNode, "foo || bar")
+ assert_location(OrNode, "foo or bar")
+ end
+
+ def test_ParametersNode
+ assert_location(ParametersNode, "def foo(bar, baz); end", 8...16, &:parameters)
+ end
+
+ def test_ParenthesesNode
+ assert_location(ParenthesesNode, "()")
+ assert_location(ParenthesesNode, "(foo)")
+ assert_location(ParenthesesNode, "foo (bar), baz", 4...9) { |node| node.arguments.arguments.first }
+ assert_location(ParenthesesNode, "def (foo).bar; end", 4...9, &:receiver)
+ end
+
+ def test_PinnedExpressionNode
+ assert_location(PinnedExpressionNode, "foo in ^(bar)", 7...13, &:pattern)
+ end
+
+ def test_PinnedVariableNode
+ assert_location(PinnedVariableNode, "foo in ^bar", 7...11, &:pattern)
+ end
+
+ def test_PostExecutionNode
+ assert_location(PostExecutionNode, "END {}")
+ assert_location(PostExecutionNode, "END { foo }")
+ end
+
+ def test_PreExecutionNode
+ assert_location(PreExecutionNode, "BEGIN {}")
+ assert_location(PreExecutionNode, "BEGIN { foo }")
+ end
+
+ def test_RangeNode
+ assert_location(RangeNode, "1..2")
+ assert_location(RangeNode, "1...2")
+
+ assert_location(RangeNode, "..2")
+ assert_location(RangeNode, "...2")
+
+ assert_location(RangeNode, "1..")
+ assert_location(RangeNode, "1...")
+ end
+
+ def test_RationalNode
+ assert_location(RationalNode, "1r")
+ assert_location(RationalNode, "1.0r")
+ end
+
+ def test_RedoNode
+ assert_location(RedoNode, "redo")
+ end
+
+ def test_RegularExpressionNode
+ assert_location(RegularExpressionNode, "/foo/")
+ end
+
+ def test_RequiredParameterNode
+ assert_location(RequiredParameterNode, "def foo(bar); end", 8...11) do |node|
+ node.parameters.requireds.first
+ end
+ end
+
+ def test_RequiredDestructuredParameterNode
+ assert_location(RequiredDestructuredParameterNode, "def foo((bar)); end", 8...13) do |node|
+ node.parameters.requireds.first
+ end
+ end
+
+ def test_RescueNode
+ code = <<~RUBY
+ begin
+ body
+ rescue TypeError
+ rescue ArgumentError
+ end
+ RUBY
+ assert_location(RescueNode, code, 13...50) { |node| node.rescue_clause }
+ assert_location(RescueNode, code, 30...50) { |node| node.rescue_clause.consequent }
+ end
+
+ def test_RescueModifierNode
+ assert_location(RescueModifierNode, "foo rescue bar")
+ end
+
+ def test_RestParameterNode
+ assert_location(RestParameterNode, "def foo(*bar); end", 8...12) do |node|
+ node.parameters.rest
+ end
+ end
+
+ def test_RetryNode
+ assert_location(RetryNode, "retry")
+ end
+
+ def test_ReturnNode
+ assert_location(ReturnNode, "return")
+ assert_location(ReturnNode, "return foo")
+ assert_location(ReturnNode, "return foo, bar")
+ assert_location(ReturnNode, "return(foo)")
+ end
+
+ def test_SelfNode
+ assert_location(SelfNode, "self")
+ end
+
+ def test_SingletonClassNode
+ assert_location(SingletonClassNode, "class << self; end")
+ end
+
+ def test_SourceEncodingNode
+ assert_location(SourceEncodingNode, "__ENCODING__")
+ end
+
+ def test_SourceFileNode
+ assert_location(SourceFileNode, "__FILE__")
+ end
+
+ def test_SourceLineNode
+ assert_location(SourceLineNode, "__LINE__")
+ end
+
+ def test_SplatNode
+ assert_location(SplatNode, "*foo = bar", 0...4) { |node| node.targets.first }
+ end
+
+ def test_StatementsNode
+ assert_location(StatementsNode, "foo { 1 }", 6...7) { |node| node.block.statements }
+
+ assert_location(StatementsNode, "(1)", 1...2, &:statements)
+
+ assert_location(StatementsNode, "def foo; 1; end", 9...10, &:statements)
+ assert_location(StatementsNode, "def foo = 1", 10...11, &:statements)
+ assert_location(StatementsNode, "def foo; 1\n2; end", 9...12, &:statements)
+
+ assert_location(StatementsNode, "if foo; bar; end", 8...11, &:statements)
+ assert_location(StatementsNode, "foo if bar", 0...3, &:statements)
+
+ assert_location(StatementsNode, "if foo; foo; elsif bar; bar; end", 24...27) { |node| node.consequent.statements }
+ assert_location(StatementsNode, "if foo; foo; else; bar; end", 19...22) { |node| node.consequent.statements }
+
+ assert_location(StatementsNode, "unless foo; bar; end", 12...15, &:statements)
+ assert_location(StatementsNode, "foo unless bar", 0...3, &:statements)
+
+ assert_location(StatementsNode, "case; when foo; bar; end", 16...19) { |node| node.conditions.first.statements }
+
+ assert_location(StatementsNode, "while foo; bar; end", 11...14, &:statements)
+ assert_location(StatementsNode, "foo while bar", 0...3, &:statements)
+
+ assert_location(StatementsNode, "until foo; bar; end", 11...14, &:statements)
+ assert_location(StatementsNode, "foo until bar", 0...3, &:statements)
+
+ assert_location(StatementsNode, "for foo in bar; baz; end", 16...19, &:statements)
+
+ assert_location(StatementsNode, "begin; foo; end", 7...10, &:statements)
+ assert_location(StatementsNode, "begin; rescue; foo; end", 15...18) { |node| node.rescue_clause.statements }
+ assert_location(StatementsNode, "begin; ensure; foo; end", 15...18) { |node| node.ensure_clause.statements }
+ assert_location(StatementsNode, "begin; rescue; else; foo; end", 21...24) { |node| node.else_clause.statements }
+
+ assert_location(StatementsNode, "class Foo; foo; end", 11...14, &:statements)
+ assert_location(StatementsNode, "module Foo; foo; end", 12...15, &:statements)
+ assert_location(StatementsNode, "class << self; foo; end", 15...18, &:statements)
+
+ assert_location(StatementsNode, "-> { foo }", 5...8, &:statements)
+ assert_location(StatementsNode, "BEGIN { foo }", 8...11, &:statements)
+ assert_location(StatementsNode, "END { foo }", 6...9, &:statements)
+
+ assert_location(StatementsNode, "\"\#{foo}\"", 3...6) { |node| node.parts.first.statements }
+ end
+
+ def test_StringConcatNode
+ assert_location(StringConcatNode, '"foo" "bar"')
+ end
+
+ def test_StringNode
+ assert_location(StringNode, '"foo"')
+ assert_location(StringNode, '%q[foo]')
+ end
+
+ def test_SuperNode
+ assert_location(SuperNode, "super foo")
+ assert_location(SuperNode, "super foo, bar")
+
+ assert_location(SuperNode, "super()")
+ assert_location(SuperNode, "super(foo)")
+ assert_location(SuperNode, "super(foo, bar)")
+
+ assert_location(SuperNode, "super() {}")
+ end
+
+ def test_SymbolNode
+ assert_location(SymbolNode, ":foo")
+ end
+
+ def test_TrueNode
+ assert_location(TrueNode, "true")
+ end
+
+ def test_UndefNode
+ assert_location(UndefNode, "undef foo")
+ assert_location(UndefNode, "undef foo, bar")
+ end
+
+ def test_UnlessNode
+ assert_location(UnlessNode, "foo unless bar")
+ assert_location(UnlessNode, "unless bar; foo; end")
+ end
+
+ def test_UntilNode
+ assert_location(UntilNode, "foo = bar until baz")
+ assert_location(UntilNode, "until bar;baz;end")
+ end
+
+ def test_WhenNode
+ assert_location(WhenNode, "case foo; when bar; end", 10...18) { |node| node.conditions.first }
+ end
+
+ def test_WhileNode
+ assert_location(WhileNode, "foo = bar while foo != baz")
+ assert_location(WhileNode, "while a;bar;baz;end")
+ end
+
+ def test_XStringNode
+ assert_location(XStringNode, "`foo`")
+ assert_location(XStringNode, "%x[foo]")
+ end
+
+ def test_YieldNode
+ assert_location(YieldNode, "yield")
+ assert_location(YieldNode, "yield foo")
+ assert_location(YieldNode, "yield foo, bar")
+ assert_location(YieldNode, "yield(foo)")
+ end
+
+ private
+
+ def assert_location(kind, source, expected = 0...source.length)
+ YARP.parse(source) => ParseResult[comments: [], errors: [], value: node]
+
+ node => ProgramNode[statements: [*, node]]
+ node = yield node if block_given?
+
+ assert_kind_of kind, node
+ assert_equal expected.begin, node.location.start_offset
+ assert_equal expected.end, node.location.end_offset
+ end
+ end
+end
diff --git a/test/yarp/memsize_test.rb b/test/yarp/memsize_test.rb
new file mode 100644
index 0000000000..1a6c64f95e
--- /dev/null
+++ b/test/yarp/memsize_test.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class MemsizeTest < Test::Unit::TestCase
+ def test_memsize
+ result = YARP.memsize("2 + 3")
+
+ assert_equal 5, result[:length]
+ assert_kind_of Integer, result[:memsize]
+ assert_equal 6, result[:node_count]
+ end
+end
diff --git a/test/yarp/parse_test.rb b/test/yarp/parse_test.rb
new file mode 100644
index 0000000000..8934faf5c5
--- /dev/null
+++ b/test/yarp/parse_test.rb
@@ -0,0 +1,114 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class ParseTest < Test::Unit::TestCase
+ def test_Ruby_3_2_plus
+ assert_operator RUBY_VERSION, :>=, "3.2.0", "ParseTest requires Ruby 3.2+"
+ end
+
+ def test_empty_string
+ YARP.parse("") => YARP::ParseResult[value: YARP::ProgramNode[statements: YARP::StatementsNode[body: []]]]
+ end
+
+ known_failures = %w[
+ seattlerb/heredoc_nested.txt
+ seattlerb/pct_w_heredoc_interp_nested.txt
+ ]
+
+ # Because the filepath in SourceFileNodes is different from one maching to the
+ # next, PP.pp(sexp, +"", 79) can have different results: both the path itself
+ # and the line breaks based on the length of the path.
+ def normalize_printed(printed)
+ printed
+ .gsub(
+ /SourceFileNode \s*
+ \(\s* (\d+\.\.\.\d+) \s*\) \s*
+ \(\s* ("[^"]*") \s*\)
+ /mx,
+ 'SourceFileNode(\1)(\2)')
+ .gsub(__dir__, "")
+ end
+
+ def find_source_file_node(node)
+ if node.is_a?(YARP::SourceFileNode)
+ node
+ else
+ node && node.child_nodes.each do |child_node|
+ source_file_node = find_source_file_node(child_node)
+ return source_file_node if source_file_node
+ end
+ end
+ end
+
+ def test_parse_takes_file_path
+ filepath = "filepath.rb"
+ parsed_result = YARP.parse("def foo; __FILE__; end", filepath)
+
+ assert_equal filepath, find_source_file_node(parsed_result.value).filepath
+ end
+
+ Dir[File.expand_path("fixtures/**/*.txt", __dir__)].each do |filepath|
+ relative = filepath.delete_prefix("#{File.expand_path("fixtures", __dir__)}/")
+ next if known_failures.include?(relative)
+
+ snapshot = File.expand_path(File.join("snapshots", relative), __dir__)
+ directory = File.dirname(snapshot)
+ FileUtils.mkdir_p(directory) unless File.directory?(directory)
+
+ define_method "test_filepath_#{filepath}" do
+ # First, read the source from the filepath. Use binmode to avoid converting CRLF on Windows,
+ # and explicitly set the external encoding to UTF-8 to override the binmode default.
+ source = File.read(filepath, binmode: true, external_encoding: Encoding::UTF_8)
+
+ # Make sure that it can be correctly parsed by Ripper. If it can't, then we have a fixture
+ # that is invalid Ruby.
+ refute_nil Ripper.sexp_raw(source)
+
+ # Next, parse the source and print the value.
+ result = YARP.parse_file(filepath)
+ value = result.value
+ printed = normalize_printed(PP.pp(value, +"", 79))
+
+ # Next, assert that there were no errors during parsing.
+ assert_empty result.errors, value
+
+ if File.exist?(snapshot)
+ expected = File.read(snapshot)
+ normalized = normalize_printed(expected)
+ if expected != normalized
+ File.write(snapshot, normalized)
+ warn("Updated snapshot at #{snapshot}.")
+ end
+ # If the snapshot file exists, then assert that the printed value
+ # matches the snapshot.
+ assert_equal(normalized, printed)
+ else
+ # If the snapshot file does not yet exist, then write it out now.
+ File.write(snapshot, printed)
+ warn("Created snapshot at #{snapshot}.")
+ end
+
+ # Next, assert that the value can be serialized and deserialized without
+ # changing the shape of the tree.
+ assert_equal_nodes(value, YARP.load(source, YARP.dump(source, filepath)))
+
+ # Next, assert that the newlines are in the expected places.
+ expected_newlines = [0]
+ source.b.scan("\n") { expected_newlines << $~.offset(0)[0] }
+ assert_equal expected_newlines, YARP.newlines(source)
+
+ # Finally, assert that we can lex the source and get the same tokens as
+ # Ripper.
+ YARP.lex_compat(source) => { errors: [], value: tokens }
+
+ begin
+ YARP.lex_ripper(source).zip(tokens).each do |(ripper, yarp)|
+ assert_equal ripper, yarp
+ end
+ rescue SyntaxError
+ raise ArgumentError, "Test file has invalid syntax #{filepath}"
+ end
+ end
+ end
+end
diff --git a/test/yarp/regexp_test.rb b/test/yarp/regexp_test.rb
new file mode 100644
index 0000000000..3bad27019b
--- /dev/null
+++ b/test/yarp/regexp_test.rb
@@ -0,0 +1,187 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class RegexpTest < Test::Unit::TestCase
+ ##############################################################################
+ # These tests test the actual use case of extracting named capture groups
+ ##############################################################################
+
+ def test_named_captures_with_arrows
+ assert_equal(["foo"], YARP.named_captures("(?<foo>bar)"))
+ end
+
+ def test_named_captures_with_single_quotes
+ assert_equal(["foo"], YARP.named_captures("(?'foo'bar)"))
+ end
+
+ def test_nested_named_captures_with_arrows
+ assert_equal(["foo", "bar"], YARP.named_captures("(?<foo>(?<bar>baz))"))
+ end
+
+ def test_nested_named_captures_with_single_quotes
+ assert_equal(["foo", "bar"], YARP.named_captures("(?'foo'(?'bar'baz))"))
+ end
+
+ def test_allows_duplicate_named_captures
+ assert_equal(["foo", "foo"], YARP.named_captures("(?<foo>bar)(?<foo>baz)"))
+ end
+
+ def test_named_capture_inside_fake_range_quantifier
+ assert_equal(["foo"], YARP.named_captures("foo{1, (?<foo>2)}"))
+ end
+
+ ##############################################################################
+ # These tests test the rest of the AST. They are not exhaustive, but they
+ # should cover the most common cases. We test these to make sure we don't
+ # accidentally regress and stop being able to extract named captures.
+ ##############################################################################
+
+ def test_alternation
+ refute_nil(YARP.named_captures("foo|bar"))
+ end
+
+ def test_anchors
+ refute_nil(YARP.named_captures("^foo$"))
+ end
+
+ def test_any
+ refute_nil(YARP.named_captures("."))
+ end
+
+ def test_posix_character_classes
+ refute_nil(YARP.named_captures("[[:digit:]]"))
+ end
+
+ def test_negated_posix_character_classes
+ refute_nil(YARP.named_captures("[[:^digit:]]"))
+ end
+
+ def test_invalid_posix_character_classes_should_fall_back_to_regular_classes
+ refute_nil(YARP.named_captures("[[:foo]]"))
+ end
+
+ def test_character_sets
+ refute_nil(YARP.named_captures("[abc]"))
+ end
+
+ def test_nested_character_sets
+ refute_nil(YARP.named_captures("[[abc]]"))
+ end
+
+ def test_nested_character_sets_with_operators
+ refute_nil(YARP.named_captures("[[abc] && [def]]"))
+ end
+
+ def test_named_capture_inside_nested_character_set
+ assert_equal([], YARP.named_captures("[foo (?<foo>bar)]"))
+ end
+
+ def test_negated_character_sets
+ refute_nil(YARP.named_captures("[^abc]"))
+ end
+
+ def test_character_ranges
+ refute_nil(YARP.named_captures("[a-z]"))
+ end
+
+ def test_negated_character_ranges
+ refute_nil(YARP.named_captures("[^a-z]"))
+ end
+
+ def test_fake_named_captures_inside_character_sets
+ assert_equal([], YARP.named_captures("[a-z(?<foo>)]"))
+ end
+
+ def test_fake_named_capture_inside_character_set_with_escaped_ending
+ assert_equal([], YARP.named_captures("[a-z\\](?<foo>)]"))
+ end
+
+ def test_comments
+ refute_nil(YARP.named_captures("(?#foo)"))
+ end
+
+ def test_non_capturing_groups
+ refute_nil(YARP.named_captures("(?:foo)"))
+ end
+
+ def test_positive_lookaheads
+ refute_nil(YARP.named_captures("(?=foo)"))
+ end
+
+ def test_negative_lookaheads
+ refute_nil(YARP.named_captures("(?!foo)"))
+ end
+
+ def test_positive_lookbehinds
+ refute_nil(YARP.named_captures("(?<=foo)"))
+ end
+
+ def test_negative_lookbehinds
+ refute_nil(YARP.named_captures("(?<!foo)"))
+ end
+
+ def test_atomic_groups
+ refute_nil(YARP.named_captures("(?>foo)"))
+ end
+
+ def test_absence_operator
+ refute_nil(YARP.named_captures("(?~foo)"))
+ end
+
+ def test_conditional_expression_with_index
+ refute_nil(YARP.named_captures("(?(1)foo)"))
+ end
+
+ def test_conditional_expression_with_name
+ refute_nil(YARP.named_captures("(?(foo)bar)"))
+ end
+
+ def test_conditional_expression_with_group
+ refute_nil(YARP.named_captures("(?(<foo>)bar)"))
+ end
+
+ def test_options_on_groups
+ refute_nil(YARP.named_captures("(?imxdau:foo)"))
+ end
+
+ def test_options_on_groups_with_invalid_options
+ assert_nil(YARP.named_captures("(?z:bar)"))
+ end
+
+ def test_options_on_groups_getting_turned_off
+ refute_nil(YARP.named_captures("(?-imx:foo)"))
+ end
+
+ def test_options_on_groups_some_getting_turned_on_some_getting_turned_off
+ refute_nil(YARP.named_captures("(?im-x:foo)"))
+ end
+
+ def test_star_quantifier
+ refute_nil(YARP.named_captures("foo*"))
+ end
+
+ def test_plus_quantifier
+ refute_nil(YARP.named_captures("foo+"))
+ end
+
+ def test_question_mark_quantifier
+ refute_nil(YARP.named_captures("foo?"))
+ end
+
+ def test_endless_range_quantifier
+ refute_nil(YARP.named_captures("foo{1,}"))
+ end
+
+ def test_beginless_range_quantifier
+ refute_nil(YARP.named_captures("foo{,1}"))
+ end
+
+ def test_range_quantifier
+ refute_nil(YARP.named_captures("foo{1,2}"))
+ end
+
+ def test_fake_range_quantifier_because_of_spaces
+ refute_nil(YARP.named_captures("foo{1, 2}"))
+ end
+end
diff --git a/test/yarp/ripper_compat_test.rb b/test/yarp/ripper_compat_test.rb
new file mode 100644
index 0000000000..4350ba7f81
--- /dev/null
+++ b/test/yarp/ripper_compat_test.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+module YARP
+ class RipperCompatTest < Test::Unit::TestCase
+ def test_1_plus_2
+ assert_equivalent("1 + 2")
+ end
+
+ def test_2_minus_3
+ assert_equivalent("2 - 3")
+ end
+
+ private
+
+ def assert_equivalent(source)
+ assert_equal Ripper.sexp_raw(source), RipperCompat.sexp_raw(source)
+ end
+ end
+end
diff --git a/test/yarp/snapshots/alias.txt b/test/yarp/snapshots/alias.txt
new file mode 100644
index 0000000000..639311e64a
--- /dev/null
+++ b/test/yarp/snapshots/alias.txt
@@ -0,0 +1,74 @@
+ProgramNode(0...199)(
+ [],
+ StatementsNode(0...199)(
+ [AliasNode(0...15)(
+ SymbolNode(6...10)((6...7), (7...10), nil, "foo"),
+ SymbolNode(11...15)((11...12), (12...15), nil, "bar"),
+ (0...5)
+ ),
+ AliasNode(17...38)(
+ SymbolNode(23...30)((23...26), (26...29), (29...30), "abc"),
+ SymbolNode(31...38)((31...34), (34...37), (37...38), "def"),
+ (17...22)
+ ),
+ AliasNode(40...59)(
+ SymbolNode(46...52)((46...48), (48...51), (51...52), "abc"),
+ SymbolNode(53...59)((53...55), (55...58), (58...59), "def"),
+ (40...45)
+ ),
+ AliasNode(61...84)(
+ InterpolatedSymbolNode(67...77)(
+ (67...69),
+ [StringNode(69...72)(nil, (69...72), nil, "abc"),
+ EmbeddedStatementsNode(72...76)(
+ (72...74),
+ StatementsNode(74...75)([IntegerNode(74...75)()]),
+ (75...76)
+ )],
+ (76...77)
+ ),
+ SymbolNode(78...84)((78...80), (80...83), (83...84), "def"),
+ (61...66)
+ ),
+ AliasNode(86...97)(
+ GlobalVariableReadNode(92...94)(),
+ BackReferenceReadNode(95...97)(),
+ (86...91)
+ ),
+ AliasNode(99...112)(
+ SymbolNode(105...108)(nil, (105...108), nil, "foo"),
+ SymbolNode(109...112)(nil, (109...112), nil, "bar"),
+ (99...104)
+ ),
+ AliasNode(114...129)(
+ GlobalVariableReadNode(120...124)(),
+ GlobalVariableReadNode(125...129)(),
+ (114...119)
+ ),
+ AliasNode(131...143)(
+ SymbolNode(137...140)(nil, (137...140), nil, "foo"),
+ SymbolNode(141...143)(nil, (141...143), nil, "if"),
+ (131...136)
+ ),
+ AliasNode(145...158)(
+ SymbolNode(151...154)(nil, (151...154), nil, "foo"),
+ SymbolNode(155...158)(nil, (155...158), nil, "<=>"),
+ (145...150)
+ ),
+ AliasNode(160...175)(
+ SymbolNode(166...169)((166...167), (167...169), nil, "=="),
+ SymbolNode(170...175)((170...171), (171...175), nil, "eql?"),
+ (160...165)
+ ),
+ AliasNode(177...186)(
+ SymbolNode(183...184)(nil, (183...184), nil, "A"),
+ SymbolNode(185...186)(nil, (185...186), nil, "B"),
+ (177...182)
+ ),
+ AliasNode(188...199)(
+ SymbolNode(194...196)((194...195), (195...196), nil, "A"),
+ SymbolNode(197...199)((197...198), (198...199), nil, "B"),
+ (188...193)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/arithmetic.txt b/test/yarp/snapshots/arithmetic.txt
new file mode 100644
index 0000000000..7de7a714b6
--- /dev/null
+++ b/test/yarp/snapshots/arithmetic.txt
@@ -0,0 +1,107 @@
+ProgramNode(0...39)(
+ [],
+ StatementsNode(0...39)(
+ [CallNode(0...8)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...8)(
+ [CallNode(4...8)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(10...18)(
+ CallNode(10...14)(
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (10...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ nil,
+ (14...15),
+ nil,
+ ArgumentsNode(15...18)(
+ [CallNode(15...18)(nil, nil, (15...18), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "*"
+ ),
+ CallNode(20...29)(
+ CallNode(20...24)(
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (20...21),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+@"
+ ),
+ nil,
+ (24...26),
+ nil,
+ ArgumentsNode(26...29)(
+ [CallNode(26...29)(nil, nil, (26...29), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ CallNode(31...39)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ ArgumentsNode(35...39)(
+ [CallNode(35...39)(
+ CallNode(36...39)(
+ nil,
+ nil,
+ (36...39),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (35...36),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "~"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/arrays.txt b/test/yarp/snapshots/arrays.txt
new file mode 100644
index 0000000000..1f0360f965
--- /dev/null
+++ b/test/yarp/snapshots/arrays.txt
@@ -0,0 +1,696 @@
+ProgramNode(0...502)(
+ [],
+ StatementsNode(0...502)(
+ [ArrayNode(0...4)(
+ [SplatNode(1...3)(
+ (1...2),
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "a")
+ )],
+ (0...1),
+ (3...4)
+ ),
+ CallNode(6...29)(
+ CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (9...19),
+ (9...10),
+ ArgumentsNode(10...29)(
+ [CallNode(10...13)(nil, nil, (10...13), nil, nil, nil, nil, 0, "bar"),
+ CallNode(15...18)(nil, nil, (15...18), nil, nil, nil, nil, 0, "baz"),
+ ArrayNode(22...29)(
+ [IntegerNode(22...23)(),
+ IntegerNode(25...26)(),
+ IntegerNode(28...29)()],
+ nil,
+ nil
+ )]
+ ),
+ (18...19),
+ nil,
+ 0,
+ "[]="
+ ),
+ ArrayNode(31...44)(
+ [KeywordHashNode(32...43)(
+ [AssocNode(32...43)(
+ SymbolNode(32...34)(nil, (32...33), (33...34), "a"),
+ ArrayNode(35...43)(
+ [SymbolNode(36...38)((36...37), (37...38), nil, "b"),
+ SymbolNode(40...42)((40...41), (41...42), nil, "c")],
+ (35...36),
+ (42...43)
+ ),
+ nil
+ )]
+ )],
+ (31...32),
+ (43...44)
+ ),
+ ArrayNode(48...71)(
+ [SymbolNode(49...51)((49...50), (50...51), nil, "a"),
+ SymbolNode(53...55)((53...54), (54...55), nil, "b"),
+ SymbolNode(57...59)((57...58), (58...59), nil, "c"),
+ IntegerNode(60...61)(),
+ SymbolNode(66...68)((66...67), (67...68), nil, "d")],
+ (48...49),
+ (70...71)
+ ),
+ ArrayNode(74...98)(
+ [SymbolNode(75...77)((75...76), (76...77), nil, "a"),
+ SymbolNode(79...81)((79...80), (80...81), nil, "b"),
+ SymbolNode(83...85)((83...84), (84...85), nil, "c"),
+ IntegerNode(86...87)(),
+ SymbolNode(92...94)((92...93), (93...94), nil, "d")],
+ (74...75),
+ (97...98)
+ ),
+ ArrayNode(100...112)(
+ [KeywordHashNode(101...111)(
+ [AssocNode(101...111)(
+ CallNode(101...104)(
+ nil,
+ nil,
+ (101...104),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(108...111)(
+ nil,
+ nil,
+ (108...111),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (105...107)
+ )]
+ )],
+ (100...101),
+ (111...112)
+ ),
+ CallNode(114...133)(
+ CallNode(114...122)(
+ CallNode(114...117)(
+ nil,
+ nil,
+ (114...117),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (117...122),
+ (117...118),
+ ArgumentsNode(118...121)(
+ [CallNode(118...121)(
+ nil,
+ nil,
+ (118...121),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (121...122),
+ nil,
+ 0,
+ "[]"
+ ),
+ nil,
+ (122...127),
+ (122...123),
+ ArgumentsNode(123...133)(
+ [CallNode(123...126)(
+ nil,
+ nil,
+ (123...126),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(130...133)(
+ nil,
+ nil,
+ (130...133),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "qux"
+ )]
+ ),
+ (126...127),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(135...148)(
+ CallNode(135...143)(
+ CallNode(135...138)(
+ nil,
+ nil,
+ (135...138),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (138...143),
+ (138...139),
+ ArgumentsNode(139...142)(
+ [CallNode(139...142)(
+ nil,
+ nil,
+ (139...142),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (142...143),
+ nil,
+ 0,
+ "[]"
+ ),
+ nil,
+ (143...148),
+ (143...144),
+ ArgumentsNode(144...147)(
+ [CallNode(144...147)(
+ nil,
+ nil,
+ (144...147),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (147...148),
+ nil,
+ 0,
+ "[]"
+ ),
+ ArrayNode(150...153)([], (150...151), (152...153)),
+ CallNode(155...168)(
+ CallNode(155...158)(
+ nil,
+ nil,
+ (155...158),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (158...168),
+ (158...159),
+ ArgumentsNode(159...167)(
+ [CallNode(159...162)(
+ nil,
+ nil,
+ (159...162),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(164...167)(
+ nil,
+ nil,
+ (164...167),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (167...168),
+ nil,
+ 0,
+ "[]"
+ ),
+ CallNode(170...189)(
+ CallNode(170...173)(
+ nil,
+ nil,
+ (170...173),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (173...183),
+ (173...174),
+ ArgumentsNode(174...189)(
+ [CallNode(174...177)(
+ nil,
+ nil,
+ (174...177),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(179...182)(
+ nil,
+ nil,
+ (179...182),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(186...189)(
+ nil,
+ nil,
+ (186...189),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "qux"
+ )]
+ ),
+ (182...183),
+ nil,
+ 0,
+ "[]="
+ ),
+ MultiWriteNode(191...212)(
+ [CallNode(191...197)(
+ CallNode(191...194)(
+ nil,
+ nil,
+ (191...194),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (194...197),
+ (194...195),
+ ArgumentsNode(195...196)([IntegerNode(195...196)()]),
+ (196...197),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(199...205)(
+ CallNode(199...202)(
+ nil,
+ nil,
+ (199...202),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (202...205),
+ (202...203),
+ ArgumentsNode(203...204)([IntegerNode(203...204)()]),
+ (204...205),
+ nil,
+ 0,
+ "[]="
+ )],
+ (206...207),
+ ArrayNode(208...212)(
+ [IntegerNode(208...209)(), IntegerNode(211...212)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ CallNode(214...233)(
+ CallNode(214...217)(
+ nil,
+ nil,
+ (214...217),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (217...233),
+ (217...218),
+ ArgumentsNode(218...232)(
+ [CallNode(218...232)(
+ CallNode(218...221)(
+ nil,
+ nil,
+ (218...221),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (221...226),
+ (221...222),
+ ArgumentsNode(222...232)(
+ [CallNode(222...225)(
+ nil,
+ nil,
+ (222...225),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(229...232)(
+ nil,
+ nil,
+ (229...232),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "qux"
+ )]
+ ),
+ (225...226),
+ nil,
+ 0,
+ "[]="
+ )]
+ ),
+ (232...233),
+ nil,
+ 0,
+ "[]"
+ ),
+ CallNode(235...243)(
+ CallNode(235...238)(
+ nil,
+ nil,
+ (235...238),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (238...243),
+ (238...239),
+ ArgumentsNode(239...242)(
+ [CallNode(239...242)(
+ nil,
+ nil,
+ (239...242),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (242...243),
+ nil,
+ 0,
+ "[]"
+ ),
+ CallNode(245...259)(
+ CallNode(245...248)(
+ nil,
+ nil,
+ (245...248),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (248...253),
+ (248...249),
+ ArgumentsNode(249...259)(
+ [CallNode(249...252)(
+ nil,
+ nil,
+ (249...252),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(256...259)(
+ nil,
+ nil,
+ (256...259),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (252...253),
+ nil,
+ 0,
+ "[]="
+ ),
+ ArrayNode(261...267)(
+ [KeywordHashNode(262...266)(
+ [AssocSplatNode(262...266)(
+ HashNode(264...266)((264...265), [], (265...266)),
+ (262...264)
+ )]
+ )],
+ (261...262),
+ (266...267)
+ ),
+ ArrayNode(269...275)(
+ [KeywordHashNode(270...274)(
+ [AssocSplatNode(270...274)(
+ CallNode(272...274)(
+ nil,
+ nil,
+ (272...274),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "kw"
+ ),
+ (270...272)
+ )]
+ )],
+ (269...270),
+ (274...275)
+ ),
+ ArrayNode(277...286)(
+ [IntegerNode(278...279)(),
+ KeywordHashNode(281...285)(
+ [AssocSplatNode(281...285)(
+ CallNode(283...285)(
+ nil,
+ nil,
+ (283...285),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "kw"
+ ),
+ (281...283)
+ )]
+ )],
+ (277...278),
+ (285...286)
+ ),
+ ArrayNode(288...309)(
+ [IntegerNode(289...290)(),
+ KeywordHashNode(292...308)(
+ [AssocSplatNode(292...296)(
+ CallNode(294...296)(
+ nil,
+ nil,
+ (294...296),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "kw"
+ ),
+ (292...294)
+ ),
+ AssocSplatNode(298...302)(
+ HashNode(300...302)((300...301), [], (301...302)),
+ (298...300)
+ ),
+ AssocSplatNode(304...308)(
+ CallNode(306...308)(
+ nil,
+ nil,
+ (306...308),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "kw"
+ ),
+ (304...306)
+ )]
+ )],
+ (288...289),
+ (308...309)
+ ),
+ ArrayNode(311...328)(
+ [KeywordHashNode(315...325)(
+ [AssocNode(315...325)(
+ CallNode(315...318)(
+ nil,
+ nil,
+ (315...318),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(322...325)(
+ nil,
+ nil,
+ (322...325),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (319...321)
+ )]
+ )],
+ (311...312),
+ (327...328)
+ ),
+ ArrayNode(331...348)(
+ [SymbolNode(334...337)(nil, (334...337), nil, "one"),
+ SymbolNode(338...341)(nil, (338...341), nil, "two"),
+ SymbolNode(342...347)(nil, (342...347), nil, "three")],
+ (331...334),
+ (347...348)
+ ),
+ ArrayNode(350...367)(
+ [StringNode(353...356)(nil, (353...356), nil, "one"),
+ StringNode(357...360)(nil, (357...360), nil, "two"),
+ StringNode(361...366)(nil, (361...366), nil, "three")],
+ (350...353),
+ (366...367)
+ ),
+ XStringNode(369...386)(
+ (369...372),
+ (372...385),
+ (385...386),
+ "one two three"
+ ),
+ ArrayNode(389...406)(
+ [SymbolNode(392...395)(nil, (392...395), nil, "one"),
+ SymbolNode(396...399)(nil, (396...399), nil, "two"),
+ SymbolNode(400...405)(nil, (400...405), nil, "three")],
+ (389...392),
+ (405...406)
+ ),
+ ArrayNode(408...425)(
+ [StringNode(411...414)(nil, (411...414), nil, "one"),
+ StringNode(415...418)(nil, (415...418), nil, "two"),
+ StringNode(419...424)(nil, (419...424), nil, "three")],
+ (408...411),
+ (424...425)
+ ),
+ XStringNode(427...444)(
+ (427...430),
+ (430...443),
+ (443...444),
+ "one two three"
+ ),
+ ArrayNode(447...464)(
+ [SymbolNode(450...453)(nil, (450...453), nil, "one"),
+ SymbolNode(454...457)(nil, (454...457), nil, "two"),
+ SymbolNode(458...463)(nil, (458...463), nil, "three")],
+ (447...450),
+ (463...464)
+ ),
+ ArrayNode(466...483)(
+ [StringNode(469...472)(nil, (469...472), nil, "one"),
+ StringNode(473...476)(nil, (473...476), nil, "two"),
+ StringNode(477...482)(nil, (477...482), nil, "three")],
+ (466...469),
+ (482...483)
+ ),
+ XStringNode(485...502)(
+ (485...488),
+ (488...501),
+ (501...502),
+ "one two three"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/begin_ensure.txt b/test/yarp/snapshots/begin_ensure.txt
new file mode 100644
index 0000000000..b82cf6a007
--- /dev/null
+++ b/test/yarp/snapshots/begin_ensure.txt
@@ -0,0 +1,69 @@
+ProgramNode(0...94)(
+ [],
+ StatementsNode(0...94)(
+ [BeginNode(0...20)(
+ (0...5),
+ StatementsNode(6...7)(
+ [CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ EnsureNode(8...20)(
+ (8...14),
+ StatementsNode(15...16)(
+ [CallNode(15...16)(nil, nil, (15...16), nil, nil, nil, nil, 0, "b")]
+ ),
+ (17...20)
+ ),
+ (17...20)
+ ),
+ BeginNode(22...46)(
+ (22...27),
+ StatementsNode(29...30)(
+ [CallNode(29...30)(nil, nil, (29...30), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ EnsureNode(32...46)(
+ (32...38),
+ StatementsNode(40...41)(
+ [CallNode(40...41)(nil, nil, (40...41), nil, nil, nil, nil, 0, "b")]
+ ),
+ (43...46)
+ ),
+ (43...46)
+ ),
+ BeginNode(48...70)(
+ (48...53),
+ StatementsNode(54...55)(
+ [CallNode(54...55)(nil, nil, (54...55), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ EnsureNode(57...70)(
+ (57...63),
+ StatementsNode(64...65)(
+ [CallNode(64...65)(nil, nil, (64...65), nil, nil, nil, nil, 0, "b")]
+ ),
+ (67...70)
+ ),
+ (67...70)
+ ),
+ BeginNode(72...94)(
+ (72...77),
+ StatementsNode(78...79)(
+ [CallNode(78...79)(nil, nil, (78...79), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ EnsureNode(81...94)(
+ (81...87),
+ StatementsNode(88...89)(
+ [CallNode(88...89)(nil, nil, (88...89), nil, nil, nil, nil, 0, "b")]
+ ),
+ (91...94)
+ ),
+ (91...94)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/begin_rescue.txt b/test/yarp/snapshots/begin_rescue.txt
new file mode 100644
index 0000000000..7c8b139dce
--- /dev/null
+++ b/test/yarp/snapshots/begin_rescue.txt
@@ -0,0 +1,595 @@
+ProgramNode(0...578)(
+ [:ex],
+ StatementsNode(0...578)(
+ [BeginNode(0...33)(
+ (0...5),
+ StatementsNode(7...8)(
+ [CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "a")]
+ ),
+ RescueNode(10...19)(
+ (10...16),
+ [],
+ nil,
+ nil,
+ StatementsNode(18...19)(
+ [CallNode(18...19)(nil, nil, (18...19), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil
+ ),
+ ElseNode(21...33)(
+ (21...25),
+ StatementsNode(27...28)(
+ [CallNode(27...28)(nil, nil, (27...28), nil, nil, nil, nil, 0, "c")]
+ ),
+ (30...33)
+ ),
+ nil,
+ (30...33)
+ ),
+ BeginNode(35...79)(
+ (35...40),
+ StatementsNode(42...43)(
+ [CallNode(42...43)(nil, nil, (42...43), nil, nil, nil, nil, 0, "a")]
+ ),
+ RescueNode(45...54)(
+ (45...51),
+ [],
+ nil,
+ nil,
+ StatementsNode(53...54)(
+ [CallNode(53...54)(nil, nil, (53...54), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil
+ ),
+ ElseNode(56...71)(
+ (56...60),
+ StatementsNode(62...63)(
+ [CallNode(62...63)(nil, nil, (62...63), nil, nil, nil, nil, 0, "c")]
+ ),
+ (65...71)
+ ),
+ EnsureNode(65...79)(
+ (65...71),
+ StatementsNode(73...74)(
+ [CallNode(73...74)(nil, nil, (73...74), nil, nil, nil, nil, 0, "d")]
+ ),
+ (76...79)
+ ),
+ (76...79)
+ ),
+ BeginNode(81...92)(
+ (81...86),
+ StatementsNode(87...88)(
+ [CallNode(87...88)(nil, nil, (87...88), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ nil,
+ (89...92)
+ ),
+ BeginNode(94...107)(
+ (94...99),
+ StatementsNode(101...102)(
+ [CallNode(101...102)(
+ nil,
+ nil,
+ (101...102),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (104...107)
+ ),
+ BeginNode(109...121)(
+ (109...114),
+ StatementsNode(115...116)(
+ [CallNode(115...116)(
+ nil,
+ nil,
+ (115...116),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (118...121)
+ ),
+ BeginNode(123...135)(
+ (123...128),
+ StatementsNode(129...130)(
+ [CallNode(129...130)(
+ nil,
+ nil,
+ (129...130),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (132...135)
+ ),
+ BeginNode(137...175)(
+ (137...142),
+ StatementsNode(143...144)(
+ [CallNode(143...144)(
+ nil,
+ nil,
+ (143...144),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(145...171)(
+ (145...151),
+ [],
+ nil,
+ nil,
+ StatementsNode(152...153)(
+ [CallNode(152...153)(
+ nil,
+ nil,
+ (152...153),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ RescueNode(154...171)(
+ (154...160),
+ [],
+ nil,
+ nil,
+ StatementsNode(161...162)(
+ [CallNode(161...162)(
+ nil,
+ nil,
+ (161...162),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ RescueNode(163...171)(
+ (163...169),
+ [],
+ nil,
+ nil,
+ StatementsNode(170...171)(
+ [CallNode(170...171)(
+ nil,
+ nil,
+ (170...171),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil
+ )
+ )
+ ),
+ nil,
+ nil,
+ (172...175)
+ ),
+ BeginNode(177...269)(
+ (177...182),
+ StatementsNode(185...186)(
+ [CallNode(185...186)(
+ nil,
+ nil,
+ (185...186),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(187...265)(
+ (187...193),
+ [ConstantReadNode(194...203)()],
+ (204...206),
+ LocalVariableWriteNode(207...209)(:ex, 0, nil, (207...209), nil),
+ StatementsNode(212...213)(
+ [CallNode(212...213)(
+ nil,
+ nil,
+ (212...213),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ RescueNode(214...265)(
+ (214...220),
+ [ConstantReadNode(221...237)(), ConstantReadNode(239...255)()],
+ (256...258),
+ LocalVariableWriteNode(259...261)(:ex, 0, nil, (259...261), nil),
+ StatementsNode(264...265)(
+ [CallNode(264...265)(
+ nil,
+ nil,
+ (264...265),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil
+ )
+ ),
+ nil,
+ nil,
+ (266...269)
+ ),
+ BeginNode(271...322)(
+ (271...276),
+ StatementsNode(279...280)(
+ [CallNode(279...280)(
+ nil,
+ nil,
+ (279...280),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(281...307)(
+ (281...287),
+ [ConstantReadNode(288...297)()],
+ (298...300),
+ LocalVariableWriteNode(301...303)(:ex, 0, nil, (301...303), nil),
+ StatementsNode(306...307)(
+ [CallNode(306...307)(
+ nil,
+ nil,
+ (306...307),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ EnsureNode(308...322)(
+ (308...314),
+ StatementsNode(317...318)(
+ [CallNode(317...318)(
+ nil,
+ nil,
+ (317...318),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (319...322)
+ ),
+ (319...322)
+ ),
+ StringNode(324...330)((324...326), (326...329), (329...330), "abc"),
+ BeginNode(332...352)(
+ (332...337),
+ StatementsNode(338...339)(
+ [CallNode(338...339)(
+ nil,
+ nil,
+ (338...339),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(340...348)(
+ (340...346),
+ [],
+ nil,
+ nil,
+ StatementsNode(347...348)(
+ [CallNode(347...348)(
+ nil,
+ nil,
+ (347...348),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (349...352)
+ ),
+ BeginNode(354...374)(
+ (354...359),
+ StatementsNode(360...361)(
+ [CallNode(360...361)(
+ nil,
+ nil,
+ (360...361),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(362...370)(
+ (362...368),
+ [],
+ nil,
+ nil,
+ StatementsNode(369...370)(
+ [CallNode(369...370)(
+ nil,
+ nil,
+ (369...370),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (371...374)
+ ),
+ BeginNode(376...396)(
+ (376...381),
+ StatementsNode(382...383)(
+ [CallNode(382...383)(
+ nil,
+ nil,
+ (382...383),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(384...392)(
+ (384...390),
+ [],
+ nil,
+ nil,
+ StatementsNode(391...392)(
+ [CallNode(391...392)(
+ nil,
+ nil,
+ (391...392),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (393...396)
+ ),
+ BeginNode(398...428)(
+ (398...403),
+ StatementsNode(404...405)(
+ [CallNode(404...405)(
+ nil,
+ nil,
+ (404...405),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(406...424)(
+ (406...412),
+ [ConstantReadNode(413...422)()],
+ nil,
+ nil,
+ StatementsNode(423...424)(
+ [CallNode(423...424)(
+ nil,
+ nil,
+ (423...424),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (425...428)
+ ),
+ BeginNode(430...477)(
+ (430...435),
+ StatementsNode(436...437)(
+ [CallNode(436...437)(
+ nil,
+ nil,
+ (436...437),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(438...473)(
+ (438...444),
+ [ConstantReadNode(445...454)(), ConstantReadNode(456...471)()],
+ nil,
+ nil,
+ StatementsNode(472...473)(
+ [CallNode(472...473)(
+ nil,
+ nil,
+ (472...473),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (474...477)
+ ),
+ BeginNode(479...536)(
+ (479...484),
+ StatementsNode(487...488)(
+ [CallNode(487...488)(
+ nil,
+ nil,
+ (487...488),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(489...532)(
+ (489...495),
+ [ConstantReadNode(496...505)(), ConstantReadNode(507...522)()],
+ (523...525),
+ LocalVariableWriteNode(526...528)(:ex, 0, nil, (526...528), nil),
+ StatementsNode(531...532)(
+ [CallNode(531...532)(
+ nil,
+ nil,
+ (531...532),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (533...536)
+ ),
+ BeginNode(538...578)(
+ (538...543),
+ StatementsNode(546...547)(
+ [CallNode(546...547)(
+ nil,
+ nil,
+ (546...547),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(548...574)(
+ (548...554),
+ [ConstantReadNode(555...564)()],
+ (565...567),
+ LocalVariableWriteNode(568...570)(:ex, 0, nil, (568...570), nil),
+ StatementsNode(573...574)(
+ [CallNode(573...574)(
+ nil,
+ nil,
+ (573...574),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (575...578)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/blocks.txt b/test/yarp/snapshots/blocks.txt
new file mode 100644
index 0000000000..4fcbaace14
--- /dev/null
+++ b/test/yarp/snapshots/blocks.txt
@@ -0,0 +1,621 @@
+ProgramNode(0...402)(
+ [:fork],
+ StatementsNode(0...402)(
+ [CallNode(0...16)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...8),
+ (3...4),
+ ArgumentsNode(4...7)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (7...8),
+ BlockNode(9...16)(
+ [],
+ nil,
+ StatementsNode(11...14)(
+ [CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (9...10),
+ (15...16)
+ ),
+ 0,
+ "[]"
+ ),
+ CallNode(18...37)(
+ CallNode(18...21)(nil, nil, (18...21), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (21...26),
+ (21...22),
+ ArgumentsNode(22...25)(
+ [CallNode(22...25)(nil, nil, (22...25), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (25...26),
+ BlockNode(27...37)(
+ [],
+ nil,
+ StatementsNode(30...33)(
+ [CallNode(30...33)(
+ nil,
+ nil,
+ (30...33),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (27...29),
+ (34...37)
+ ),
+ 0,
+ "[]"
+ ),
+ CallNode(39...74)(
+ CallNode(39...40)(nil, nil, (39...40), nil, nil, nil, nil, 0, "x"),
+ (40...41),
+ (41...47),
+ (47...48),
+ ArgumentsNode(48...49)([IntegerNode(48...49)()]),
+ (49...50),
+ BlockNode(51...74)(
+ [:x, :memo],
+ BlockParametersNode(53...62)(
+ ParametersNode(54...61)(
+ [RequiredParameterNode(54...55)(:x),
+ RequiredParameterNode(57...61)(:memo)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (53...54),
+ (61...62)
+ ),
+ StatementsNode(63...72)(
+ [LocalVariableOperatorWriteNode(63...72)(
+ (63...67),
+ (68...70),
+ LocalVariableReadNode(71...72)(:x, 0),
+ :memo,
+ :+
+ )]
+ ),
+ (51...52),
+ (73...74)
+ ),
+ 0,
+ "reduce"
+ ),
+ CallNode(76...86)(
+ nil,
+ nil,
+ (76...79),
+ nil,
+ nil,
+ nil,
+ BlockNode(80...86)([], nil, nil, (80...82), (83...86)),
+ 0,
+ "foo"
+ ),
+ CallNode(88...109)(
+ nil,
+ nil,
+ (88...91),
+ nil,
+ ArgumentsNode(92...109)(
+ [CallNode(92...95)(nil, nil, (92...95), nil, nil, nil, nil, 0, "bar"),
+ ParenthesesNode(97...109)(
+ StatementsNode(98...108)(
+ [CallNode(98...108)(
+ nil,
+ nil,
+ (98...101),
+ nil,
+ nil,
+ nil,
+ BlockNode(102...108)([], nil, nil, (102...104), (105...108)),
+ 0,
+ "baz"
+ )]
+ ),
+ (97...98),
+ (108...109)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(111...125)(
+ nil,
+ nil,
+ (111...114),
+ nil,
+ ArgumentsNode(115...118)(
+ [CallNode(115...118)(
+ nil,
+ nil,
+ (115...118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ BlockNode(119...125)([], nil, nil, (119...121), (122...125)),
+ 0,
+ "foo"
+ ),
+ CallNode(127...145)(
+ nil,
+ nil,
+ (127...130),
+ nil,
+ ArgumentsNode(131...138)(
+ [CallNode(131...138)(
+ nil,
+ nil,
+ (131...134),
+ nil,
+ ArgumentsNode(135...138)(
+ [CallNode(135...138)(
+ nil,
+ nil,
+ (135...138),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ BlockNode(139...145)([], nil, nil, (139...141), (142...145)),
+ 0,
+ "foo"
+ ),
+ CallNode(147...168)(
+ nil,
+ nil,
+ (147...150),
+ nil,
+ nil,
+ nil,
+ BlockNode(151...168)(
+ [:a],
+ BlockParametersNode(154...164)(
+ ParametersNode(155...163)(
+ [],
+ [OptionalParameterNode(155...163)(
+ :a,
+ (155...156),
+ (157...158),
+ CallNode(159...163)(
+ CallNode(159...160)(
+ nil,
+ nil,
+ (159...160),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ nil,
+ (160...163),
+ (160...161),
+ ArgumentsNode(161...162)([IntegerNode(161...162)()]),
+ (162...163),
+ nil,
+ 0,
+ "[]"
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (154...155),
+ (163...164)
+ ),
+ nil,
+ (151...153),
+ (165...168)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(170...187)(
+ nil,
+ nil,
+ (170...173),
+ nil,
+ nil,
+ nil,
+ BlockNode(174...187)(
+ [],
+ nil,
+ BeginNode(177...187)(
+ nil,
+ nil,
+ RescueNode(177...183)((177...183), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (184...187)
+ ),
+ (174...176),
+ (184...187)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(189...233)(
+ nil,
+ nil,
+ (189...192),
+ nil,
+ nil,
+ nil,
+ BlockNode(193...233)(
+ [],
+ nil,
+ StatementsNode(198...229)(
+ [CallNode(198...229)(
+ nil,
+ nil,
+ (198...201),
+ nil,
+ nil,
+ nil,
+ BlockNode(202...229)(
+ [],
+ nil,
+ StatementsNode(209...223)(
+ [CallNode(209...223)(
+ nil,
+ nil,
+ (209...212),
+ nil,
+ nil,
+ nil,
+ BlockNode(213...223)(
+ [],
+ nil,
+ nil,
+ (213...215),
+ (220...223)
+ ),
+ 0,
+ "baz"
+ )]
+ ),
+ (202...204),
+ (226...229)
+ ),
+ 0,
+ "bar"
+ )]
+ ),
+ (193...195),
+ (230...233)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(235...251)(
+ CallNode(235...238)(
+ nil,
+ nil,
+ (235...238),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (238...243),
+ (238...239),
+ ArgumentsNode(239...242)(
+ [CallNode(239...242)(
+ nil,
+ nil,
+ (239...242),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (242...243),
+ BlockNode(244...251)(
+ [],
+ nil,
+ StatementsNode(246...249)(
+ [CallNode(246...249)(
+ nil,
+ nil,
+ (246...249),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (244...245),
+ (250...251)
+ ),
+ 0,
+ "[]"
+ ),
+ CallNode(253...277)(
+ nil,
+ nil,
+ (253...256),
+ nil,
+ nil,
+ nil,
+ BlockNode(257...277)(
+ [:x, :y, :z],
+ BlockParametersNode(259...273)(
+ ParametersNode(260...272)(
+ [RequiredParameterNode(260...261)(:x)],
+ [OptionalParameterNode(263...268)(
+ :y,
+ (263...264),
+ (265...266),
+ IntegerNode(267...268)()
+ )],
+ [],
+ nil,
+ [KeywordParameterNode(270...272)((270...272), nil)],
+ nil,
+ nil
+ ),
+ [],
+ (259...260),
+ (272...273)
+ ),
+ StatementsNode(274...275)([LocalVariableReadNode(274...275)(:x, 0)]),
+ (257...258),
+ (276...277)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(279...290)(
+ nil,
+ nil,
+ (279...282),
+ nil,
+ nil,
+ nil,
+ BlockNode(283...290)(
+ [:x],
+ BlockParametersNode(285...288)(
+ ParametersNode(286...287)(
+ [RequiredParameterNode(286...287)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (285...286),
+ (287...288)
+ ),
+ nil,
+ (283...284),
+ (289...290)
+ ),
+ 0,
+ "foo"
+ ),
+ LocalVariableWriteNode(292...300)(
+ :fork,
+ 0,
+ IntegerNode(299...300)(),
+ (292...296),
+ (297...298)
+ ),
+ CallNode(301...316)(
+ nil,
+ nil,
+ (301...305),
+ nil,
+ nil,
+ nil,
+ BlockNode(306...316)(
+ [:a],
+ BlockParametersNode(309...312)(
+ ParametersNode(310...311)(
+ [RequiredParameterNode(310...311)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (309...310),
+ (311...312)
+ ),
+ nil,
+ (306...308),
+ (313...316)
+ ),
+ 0,
+ "fork"
+ ),
+ CallNode(318...330)(
+ nil,
+ nil,
+ (318...322),
+ nil,
+ nil,
+ nil,
+ BlockNode(323...330)(
+ [:a],
+ BlockParametersNode(325...328)(
+ ParametersNode(326...327)(
+ [RequiredParameterNode(326...327)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (325...326),
+ (327...328)
+ ),
+ nil,
+ (323...324),
+ (329...330)
+ ),
+ 0,
+ "fork"
+ ),
+ CallNode(332...340)(
+ nil,
+ nil,
+ (332...333),
+ nil,
+ nil,
+ nil,
+ BlockNode(334...340)([], nil, nil, (334...336), (337...340)),
+ 0,
+ "C"
+ ),
+ CallNode(342...346)(
+ nil,
+ nil,
+ (342...343),
+ nil,
+ nil,
+ nil,
+ BlockNode(344...346)([], nil, nil, (344...345), (345...346)),
+ 0,
+ "C"
+ ),
+ CallNode(348...383)(
+ nil,
+ nil,
+ (348...351),
+ nil,
+ ArgumentsNode(352...383)(
+ [CallNode(352...383)(
+ nil,
+ nil,
+ (352...358),
+ nil,
+ nil,
+ nil,
+ BlockNode(359...383)(
+ [:a, :b],
+ BlockParametersNode(361...381)(
+ ParametersNode(365...377)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(365...369)(
+ (365...367),
+ IntegerNode(368...369)()
+ ),
+ KeywordParameterNode(373...377)(
+ (373...375),
+ IntegerNode(376...377)()
+ )],
+ nil,
+ nil
+ ),
+ [],
+ (361...362),
+ (380...381)
+ ),
+ nil,
+ (359...360),
+ (382...383)
+ ),
+ 0,
+ "lambda"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(385...402)(
+ nil,
+ nil,
+ (385...388),
+ nil,
+ nil,
+ nil,
+ BlockNode(389...402)(
+ [:bar],
+ BlockParametersNode(392...398)(
+ ParametersNode(393...397)(
+ [RequiredParameterNode(393...396)(:bar)],
+ [],
+ [],
+ RestParameterNode(396...397)((396...397), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (392...393),
+ (397...398)
+ ),
+ nil,
+ (389...391),
+ (399...402)
+ ),
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/boolean_operators.txt b/test/yarp/snapshots/boolean_operators.txt
new file mode 100644
index 0000000000..6c3ef5a4a7
--- /dev/null
+++ b/test/yarp/snapshots/boolean_operators.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...24)(
+ [:a],
+ StatementsNode(0...24)(
+ [LocalVariableOperatorAndWriteNode(0...7)(
+ (0...1),
+ (2...5),
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b"),
+ :a
+ ),
+ LocalVariableOperatorWriteNode(9...15)(
+ (9...10),
+ (11...13),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "b"),
+ :a,
+ :+
+ ),
+ LocalVariableOperatorOrWriteNode(17...24)(
+ (17...18),
+ (19...22),
+ CallNode(23...24)(nil, nil, (23...24), nil, nil, nil, nil, 0, "b"),
+ :a
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/booleans.txt b/test/yarp/snapshots/booleans.txt
new file mode 100644
index 0000000000..f4e609652c
--- /dev/null
+++ b/test/yarp/snapshots/booleans.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)([FalseNode(0...5)(), TrueNode(7...11)()])
+)
diff --git a/test/yarp/snapshots/break.txt b/test/yarp/snapshots/break.txt
new file mode 100644
index 0000000000..b8ae8ffe81
--- /dev/null
+++ b/test/yarp/snapshots/break.txt
@@ -0,0 +1,158 @@
+ProgramNode(0...168)(
+ [],
+ StatementsNode(0...168)(
+ [BreakNode(0...5)(nil, (0...5)),
+ BreakNode(7...26)(
+ ArgumentsNode(13...26)(
+ [ParenthesesNode(13...16)(
+ StatementsNode(14...15)([IntegerNode(14...15)()]),
+ (13...14),
+ (15...16)
+ ),
+ ParenthesesNode(18...21)(
+ StatementsNode(19...20)([IntegerNode(19...20)()]),
+ (18...19),
+ (20...21)
+ ),
+ ParenthesesNode(23...26)(
+ StatementsNode(24...25)([IntegerNode(24...25)()]),
+ (23...24),
+ (25...26)
+ )]
+ ),
+ (7...12)
+ ),
+ BreakNode(28...35)(
+ ArgumentsNode(34...35)([IntegerNode(34...35)()]),
+ (28...33)
+ ),
+ BreakNode(37...50)(
+ ArgumentsNode(43...50)(
+ [IntegerNode(43...44)(),
+ IntegerNode(46...47)(),
+ IntegerNode(49...50)()]
+ ),
+ (37...42)
+ ),
+ BreakNode(52...65)(
+ ArgumentsNode(58...65)(
+ [IntegerNode(58...59)(),
+ IntegerNode(61...62)(),
+ IntegerNode(64...65)()]
+ ),
+ (52...57)
+ ),
+ BreakNode(67...82)(
+ ArgumentsNode(73...82)(
+ [ArrayNode(73...82)(
+ [IntegerNode(74...75)(),
+ IntegerNode(77...78)(),
+ IntegerNode(80...81)()],
+ (73...74),
+ (81...82)
+ )]
+ ),
+ (67...72)
+ ),
+ BreakNode(84...100)(
+ ArgumentsNode(89...100)(
+ [ParenthesesNode(89...100)(
+ StatementsNode(93...98)(
+ [IntegerNode(93...94)(), IntegerNode(97...98)()]
+ ),
+ (89...90),
+ (99...100)
+ )]
+ ),
+ (84...89)
+ ),
+ BreakNode(102...109)(
+ ArgumentsNode(107...109)(
+ [ParenthesesNode(107...109)(nil, (107...108), (108...109))]
+ ),
+ (102...107)
+ ),
+ BreakNode(111...119)(
+ ArgumentsNode(116...119)(
+ [ParenthesesNode(116...119)(
+ StatementsNode(117...118)([IntegerNode(117...118)()]),
+ (116...117),
+ (118...119)
+ )]
+ ),
+ (111...116)
+ ),
+ CallNode(121...143)(
+ CallNode(121...137)(
+ nil,
+ nil,
+ (121...124),
+ nil,
+ nil,
+ nil,
+ BlockNode(125...137)(
+ [],
+ nil,
+ StatementsNode(127...135)(
+ [BreakNode(127...135)(
+ ArgumentsNode(133...135)([IntegerNode(133...135)()]),
+ (127...132)
+ )]
+ ),
+ (125...126),
+ (136...137)
+ ),
+ 0,
+ "foo"
+ ),
+ nil,
+ (138...140),
+ nil,
+ ArgumentsNode(141...143)([IntegerNode(141...143)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ ),
+ CallNode(145...168)(
+ CallNode(145...162)(
+ nil,
+ nil,
+ (145...148),
+ nil,
+ nil,
+ nil,
+ BlockNode(149...162)(
+ [:a],
+ BlockParametersNode(151...154)(
+ ParametersNode(152...153)(
+ [RequiredParameterNode(152...153)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (151...152),
+ (153...154)
+ ),
+ StatementsNode(155...160)([BreakNode(155...160)(nil, (155...160))]),
+ (149...150),
+ (161...162)
+ ),
+ 0,
+ "foo"
+ ),
+ nil,
+ (163...165),
+ nil,
+ ArgumentsNode(166...168)([IntegerNode(166...168)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/case.txt b/test/yarp/snapshots/case.txt
new file mode 100644
index 0000000000..f1ee1c9c2d
--- /dev/null
+++ b/test/yarp/snapshots/case.txt
@@ -0,0 +1,207 @@
+ProgramNode(0...272)(
+ [],
+ StatementsNode(0...272)(
+ [CaseNode(0...21)(
+ SymbolNode(5...8)((5...6), (6...8), nil, "hi"),
+ [WhenNode(9...17)(
+ (9...13),
+ [SymbolNode(14...17)((14...15), (15...17), nil, "hi")],
+ nil
+ )],
+ nil,
+ (0...4),
+ (18...21)
+ ),
+ CaseNode(23...81)(
+ TrueNode(28...32)(),
+ [WhenNode(34...53)(
+ (34...38),
+ [TrueNode(39...43)()],
+ StatementsNode(45...53)(
+ [CallNode(45...53)(
+ nil,
+ nil,
+ (45...49),
+ nil,
+ ArgumentsNode(50...53)(
+ [SymbolNode(50...53)((50...51), (51...53), nil, "hi")]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ )
+ ),
+ WhenNode(55...76)(
+ (55...59),
+ [FalseNode(60...65)()],
+ StatementsNode(67...76)(
+ [CallNode(67...76)(
+ nil,
+ nil,
+ (67...71),
+ nil,
+ ArgumentsNode(72...76)(
+ [SymbolNode(72...76)((72...73), (73...76), nil, "bye")]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ )
+ )],
+ nil,
+ (23...27),
+ (78...81)
+ ),
+ CaseNode(83...103)(
+ nil,
+ [WhenNode(89...98)(
+ (89...93),
+ [SplatNode(94...98)(
+ (94...95),
+ CallNode(95...98)(
+ nil,
+ nil,
+ (95...98),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )
+ )],
+ nil
+ )],
+ nil,
+ (83...87),
+ (100...103)
+ ),
+ CaseNode(105...134)(
+ SymbolNode(110...113)((110...111), (111...113), nil, "hi"),
+ [WhenNode(114...122)(
+ (114...118),
+ [SymbolNode(119...122)((119...120), (120...122), nil, "hi")],
+ nil
+ )],
+ ElseNode(123...134)(
+ (123...127),
+ StatementsNode(128...130)(
+ [SymbolNode(128...130)((128...129), (129...130), nil, "b")]
+ ),
+ (131...134)
+ ),
+ (105...109),
+ (131...134)
+ ),
+ CaseNode(136...172)(
+ CallNode(141...145)(
+ nil,
+ nil,
+ (141...145),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "this"
+ ),
+ [WhenNode(147...167)(
+ (147...151),
+ [ConstantReadNode(152...158)(), ConstantReadNode(160...167)()],
+ nil
+ )],
+ nil,
+ (136...140),
+ (169...172)
+ ),
+ CaseNode(174...198)(
+ nil,
+ [WhenNode(179...194)(
+ (179...183),
+ [CallNode(184...194)(
+ CallNode(184...187)(
+ nil,
+ nil,
+ (184...187),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (188...190),
+ nil,
+ ArgumentsNode(191...194)(
+ [CallNode(191...194)(
+ nil,
+ nil,
+ (191...194),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=="
+ )],
+ nil
+ )],
+ nil,
+ (174...178),
+ (195...198)
+ ),
+ CaseNode(200...230)(
+ nil,
+ [WhenNode(205...211)(
+ (205...209),
+ [CallNode(210...211)(
+ nil,
+ nil,
+ (210...211),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )],
+ nil
+ )],
+ ElseNode(212...230)((212...216), nil, (227...230)),
+ (200...204),
+ (227...230)
+ ),
+ CaseNode(232...272)(
+ CallNode(237...241)(
+ nil,
+ nil,
+ (237...241),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "type"
+ ),
+ [WhenNode(246...253)(
+ (246...250),
+ [SymbolNode(251...253)((251...252), (252...253), nil, "b")],
+ nil
+ )],
+ ElseNode(260...272)((260...264), nil, (269...272)),
+ (232...236),
+ (269...272)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/classes.txt b/test/yarp/snapshots/classes.txt
new file mode 100644
index 0000000000..7b65c457ef
--- /dev/null
+++ b/test/yarp/snapshots/classes.txt
@@ -0,0 +1,280 @@
+ProgramNode(0...370)(
+ [],
+ StatementsNode(0...370)(
+ [ClassNode(0...17)(
+ [:a],
+ (0...5),
+ ConstantReadNode(6...7)(),
+ nil,
+ nil,
+ StatementsNode(8...13)(
+ [LocalVariableWriteNode(8...13)(
+ :a,
+ 0,
+ IntegerNode(12...13)(),
+ (8...9),
+ (10...11)
+ )]
+ ),
+ (14...17)
+ ),
+ ClassNode(19...39)(
+ [],
+ (19...24),
+ ConstantReadNode(25...26)(),
+ nil,
+ nil,
+ BeginNode(28...39)(
+ nil,
+ nil,
+ nil,
+ nil,
+ EnsureNode(28...39)((28...34), nil, (36...39)),
+ (36...39)
+ ),
+ (36...39)
+ ),
+ ClassNode(41...75)(
+ [],
+ (41...46),
+ ConstantReadNode(47...48)(),
+ nil,
+ nil,
+ BeginNode(50...75)(
+ nil,
+ nil,
+ RescueNode(50...56)((50...56), [], nil, nil, nil, nil),
+ ElseNode(58...70)((58...62), nil, (64...70)),
+ EnsureNode(64...75)((64...70), nil, (72...75)),
+ (72...75)
+ ),
+ (72...75)
+ ),
+ ClassNode(77...98)(
+ [:a],
+ (77...82),
+ ConstantReadNode(83...84)(),
+ (85...86),
+ ConstantReadNode(87...88)(),
+ StatementsNode(89...94)(
+ [LocalVariableWriteNode(89...94)(
+ :a,
+ 0,
+ IntegerNode(93...94)(),
+ (89...90),
+ (91...92)
+ )]
+ ),
+ (95...98)
+ ),
+ SingletonClassNode(100...120)(
+ [],
+ (100...105),
+ (106...108),
+ CallNode(109...116)(
+ CallNode(113...116)(
+ nil,
+ nil,
+ (113...116),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (109...112),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ nil,
+ (117...120)
+ ),
+ ClassNode(122...162)(
+ [],
+ (122...127),
+ ConstantReadNode(128...129)(),
+ nil,
+ nil,
+ StatementsNode(131...157)(
+ [SingletonClassNode(131...157)(
+ [],
+ (131...136),
+ (137...139),
+ SelfNode(140...144)(),
+ BeginNode(146...157)(
+ nil,
+ nil,
+ nil,
+ nil,
+ EnsureNode(146...157)((146...152), nil, (154...157)),
+ (154...157)
+ ),
+ (154...157)
+ )]
+ ),
+ (159...162)
+ ),
+ ClassNode(164...218)(
+ [],
+ (164...169),
+ ConstantReadNode(170...171)(),
+ nil,
+ nil,
+ StatementsNode(173...213)(
+ [SingletonClassNode(173...213)(
+ [],
+ (173...178),
+ (179...181),
+ SelfNode(182...186)(),
+ BeginNode(188...213)(
+ nil,
+ nil,
+ RescueNode(188...194)((188...194), [], nil, nil, nil, nil),
+ ElseNode(196...208)((196...200), nil, (202...208)),
+ EnsureNode(202...213)((202...208), nil, (210...213)),
+ (210...213)
+ ),
+ (210...213)
+ )]
+ ),
+ (215...218)
+ ),
+ SingletonClassNode(220...240)(
+ [],
+ (220...225),
+ (226...228),
+ CallNode(229...236)(
+ CallNode(229...232)(
+ nil,
+ nil,
+ (229...232),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (232...233),
+ (233...236),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (237...240)
+ ),
+ SingletonClassNode(242...262)(
+ [],
+ (242...247),
+ (248...250),
+ CallNode(251...258)(
+ CallNode(251...254)(
+ nil,
+ nil,
+ (251...254),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (254...255),
+ (255...258),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (259...262)
+ ),
+ SingletonClassNode(264...281)(
+ [],
+ (264...269),
+ (270...272),
+ SelfNode(273...277)(),
+ nil,
+ (278...281)
+ ),
+ SingletonClassNode(283...300)(
+ [],
+ (283...288),
+ (289...291),
+ SelfNode(292...296)(),
+ nil,
+ (297...300)
+ ),
+ SingletonClassNode(302...325)(
+ [],
+ (302...307),
+ (308...310),
+ SelfNode(311...315)(),
+ StatementsNode(316...321)(
+ [CallNode(316...321)(
+ IntegerNode(316...317)(),
+ nil,
+ (318...319),
+ nil,
+ ArgumentsNode(320...321)([IntegerNode(320...321)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (322...325)
+ ),
+ SingletonClassNode(327...350)(
+ [],
+ (327...332),
+ (333...335),
+ SelfNode(336...340)(),
+ StatementsNode(341...346)(
+ [CallNode(341...346)(
+ IntegerNode(341...342)(),
+ nil,
+ (343...344),
+ nil,
+ ArgumentsNode(345...346)([IntegerNode(345...346)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (347...350)
+ ),
+ ClassNode(352...370)(
+ [],
+ (352...357),
+ ConstantReadNode(358...359)(),
+ (360...361),
+ CallNode(362...366)(
+ ConstantReadNode(362...363)(),
+ nil,
+ (363...366),
+ (363...364),
+ ArgumentsNode(364...365)([IntegerNode(364...365)()]),
+ (365...366),
+ nil,
+ 0,
+ "[]"
+ ),
+ nil,
+ (367...370)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/comments.txt b/test/yarp/snapshots/comments.txt
new file mode 100644
index 0000000000..4b629af138
--- /dev/null
+++ b/test/yarp/snapshots/comments.txt
@@ -0,0 +1,64 @@
+ProgramNode(0...118)(
+ [],
+ StatementsNode(0...118)(
+ [CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ CallNode(13...14)(nil, nil, (13...14), nil, nil, nil, nil, 0, "b"),
+ CallNode(16...17)(nil, nil, (16...17), nil, nil, nil, nil, 0, "c"),
+ CallNode(28...29)(nil, nil, (28...29), nil, nil, nil, nil, 0, "d"),
+ CallNode(31...47)(
+ CallNode(31...32)(nil, nil, (31...32), nil, nil, nil, nil, 0, "e"),
+ (45...46),
+ (46...47),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(49...64)(
+ CallNode(49...50)(nil, nil, (49...50), nil, nil, nil, nil, 0, "g"),
+ (62...63),
+ (63...64),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "h"
+ ),
+ CallNode(66...80)(
+ CallNode(66...67)(nil, nil, (66...67), nil, nil, nil, nil, 0, "i"),
+ (78...79),
+ (79...80),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "j"
+ ),
+ CallNode(82...98)(
+ CallNode(82...83)(nil, nil, (82...83), nil, nil, nil, nil, 0, "k"),
+ (96...97),
+ (97...98),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "l"
+ ),
+ CallNode(100...118)(
+ CallNode(100...101)(nil, nil, (100...101), nil, nil, nil, nil, 0, "m"),
+ (115...117),
+ (117...118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "n"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/constants.txt b/test/yarp/snapshots/constants.txt
new file mode 100644
index 0000000000..aa97e4ba89
--- /dev/null
+++ b/test/yarp/snapshots/constants.txt
@@ -0,0 +1,916 @@
+ProgramNode(0...709)(
+ [],
+ StatementsNode(0...709)(
+ [ConstantPathNode(0...4)(
+ ConstantReadNode(0...1)(),
+ ConstantReadNode(3...4)(),
+ (1...3)
+ ),
+ ConstantPathNode(6...13)(
+ ConstantPathNode(6...10)(
+ ConstantReadNode(6...7)(),
+ ConstantReadNode(9...10)(),
+ (7...9)
+ ),
+ ConstantReadNode(12...13)(),
+ (10...12)
+ ),
+ ConstantPathNode(15...19)(
+ CallNode(15...16)(nil, nil, (15...16), nil, nil, nil, nil, 0, "a"),
+ ConstantReadNode(18...19)(),
+ (16...18)
+ ),
+ ConstantPathWriteNode(21...29)(
+ ConstantPathNode(21...25)(
+ ConstantReadNode(21...22)(),
+ ConstantReadNode(24...25)(),
+ (22...24)
+ ),
+ (26...27),
+ IntegerNode(28...29)()
+ ),
+ ConstantPathWriteNode(31...36)(
+ ConstantReadNode(31...32)(),
+ (33...34),
+ IntegerNode(35...36)()
+ ),
+ ConstantReadNode(38...41)(),
+ CallNode(43...48)(
+ nil,
+ nil,
+ (43...46),
+ nil,
+ ArgumentsNode(47...48)([IntegerNode(47...48)()]),
+ nil,
+ nil,
+ 0,
+ "Foo"
+ ),
+ CallNode(50...58)(
+ ConstantPathNode(50...53)(nil, ConstantReadNode(52...53)(), (50...52)),
+ (53...55),
+ (55...58),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ConstantPathWriteNode(60...67)(
+ ConstantPathNode(60...63)(nil, ConstantReadNode(62...63)(), (60...62)),
+ (64...65),
+ IntegerNode(66...67)()
+ ),
+ ConstantPathWriteNode(69...79)(
+ ConstantPathNode(69...75)(
+ ConstantPathNode(69...72)(
+ nil,
+ ConstantReadNode(71...72)(),
+ (69...71)
+ ),
+ ConstantReadNode(74...75)(),
+ (72...74)
+ ),
+ (76...77),
+ IntegerNode(78...79)()
+ ),
+ ConstantPathNode(81...87)(
+ ConstantPathNode(81...84)(nil, ConstantReadNode(83...84)(), (81...83)),
+ ConstantReadNode(86...87)(),
+ (84...86)
+ ),
+ ConstantPathNode(89...92)(nil, ConstantReadNode(91...92)(), (89...91)),
+ CallNode(94...102)(
+ ConstantReadNode(94...95)(),
+ (95...97),
+ (97...102),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "false"
+ ),
+ CallNode(104...114)(
+ ConstantPathNode(104...108)(
+ ConstantReadNode(104...105)(),
+ ConstantReadNode(107...108)(),
+ (105...107)
+ ),
+ (108...110),
+ (110...114),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "true"
+ ),
+ CallNode(116...120)(
+ ConstantReadNode(116...117)(),
+ (117...119),
+ (119...120),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "&"
+ ),
+ CallNode(122...126)(
+ ConstantReadNode(122...123)(),
+ (123...125),
+ (125...126),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "`"
+ ),
+ CallNode(128...132)(
+ ConstantReadNode(128...129)(),
+ (129...131),
+ (131...132),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(134...139)(
+ ConstantReadNode(134...135)(),
+ (135...137),
+ (137...139),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!="
+ ),
+ CallNode(141...145)(
+ ConstantReadNode(141...142)(),
+ (142...144),
+ (144...145),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "^"
+ ),
+ CallNode(147...152)(
+ ConstantReadNode(147...148)(),
+ (148...150),
+ (150...152),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "=="
+ ),
+ CallNode(154...160)(
+ ConstantReadNode(154...155)(),
+ (155...157),
+ (157...160),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "==="
+ ),
+ CallNode(162...167)(
+ ConstantReadNode(162...163)(),
+ (163...165),
+ (165...167),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ CallNode(169...173)(
+ ConstantReadNode(169...170)(),
+ (170...172),
+ (172...173),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ ">"
+ ),
+ CallNode(175...180)(
+ ConstantReadNode(175...176)(),
+ (176...178),
+ (178...180),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ ">="
+ ),
+ CallNode(182...187)(
+ ConstantReadNode(182...183)(),
+ (183...185),
+ (185...187),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ ">>"
+ ),
+ CallNode(189...194)(
+ ConstantReadNode(189...190)(),
+ (190...192),
+ (192...194),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "<<"
+ ),
+ CallNode(196...210)(
+ ConstantPathNode(196...203)(
+ ConstantReadNode(196...197)(),
+ ConstantReadNode(202...203)(),
+ (197...199)
+ ),
+ (203...205),
+ (205...210),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "alias"
+ ),
+ CallNode(212...218)(
+ ConstantReadNode(212...213)(),
+ (213...215),
+ (215...218),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "and"
+ ),
+ CallNode(220...228)(
+ ConstantReadNode(220...221)(),
+ (221...223),
+ (223...228),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "begin"
+ ),
+ ConstantPathNode(230...238)(
+ ConstantReadNode(230...231)(),
+ ConstantReadNode(233...238)(),
+ (231...233)
+ ),
+ CallNode(240...248)(
+ ConstantReadNode(240...241)(),
+ (241...243),
+ (243...248),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "break"
+ ),
+ CallNode(250...258)(
+ ConstantReadNode(250...251)(),
+ (251...253),
+ (253...258),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "class"
+ ),
+ CallNode(260...266)(
+ ConstantReadNode(260...261)(),
+ (261...263),
+ (263...266),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "def"
+ ),
+ CallNode(268...278)(
+ ConstantReadNode(268...269)(),
+ (269...271),
+ (271...278),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "defined"
+ ),
+ CallNode(280...285)(
+ ConstantReadNode(280...281)(),
+ (281...283),
+ (283...285),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do"
+ ),
+ CallNode(287...294)(
+ ConstantReadNode(287...288)(),
+ (288...290),
+ (290...294),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "else"
+ ),
+ CallNode(296...304)(
+ ConstantReadNode(296...297)(),
+ (297...299),
+ (299...304),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "elsif"
+ ),
+ CallNode(306...312)(
+ ConstantReadNode(306...307)(),
+ (307...309),
+ (309...312),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "end"
+ ),
+ ConstantPathNode(314...320)(
+ ConstantReadNode(314...315)(),
+ ConstantReadNode(317...320)(),
+ (315...317)
+ ),
+ CallNode(322...331)(
+ ConstantReadNode(322...323)(),
+ (323...325),
+ (325...331),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "ensure"
+ ),
+ CallNode(333...341)(
+ ConstantReadNode(333...334)(),
+ (334...336),
+ (336...341),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "false"
+ ),
+ CallNode(343...349)(
+ ConstantReadNode(343...344)(),
+ (344...346),
+ (346...349),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "for"
+ ),
+ CallNode(351...356)(
+ ConstantReadNode(351...352)(),
+ (352...354),
+ (354...356),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "if"
+ ),
+ CallNode(358...363)(
+ ConstantReadNode(358...359)(),
+ (359...361),
+ (361...363),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "in"
+ ),
+ CallNode(365...372)(
+ ConstantReadNode(365...366)(),
+ (366...368),
+ (368...372),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "next"
+ ),
+ CallNode(374...380)(
+ ConstantReadNode(374...375)(),
+ (375...377),
+ (377...380),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil"
+ ),
+ CallNode(382...388)(
+ ConstantReadNode(382...383)(),
+ (383...385),
+ (385...388),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "not"
+ ),
+ CallNode(390...395)(
+ ConstantReadNode(390...391)(),
+ (391...393),
+ (393...395),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "or"
+ ),
+ CallNode(397...404)(
+ ConstantReadNode(397...398)(),
+ (398...400),
+ (400...404),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "redo"
+ ),
+ CallNode(406...415)(
+ ConstantReadNode(406...407)(),
+ (407...409),
+ (409...415),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "rescue"
+ ),
+ CallNode(417...425)(
+ ConstantReadNode(417...418)(),
+ (418...420),
+ (420...425),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "retry"
+ ),
+ CallNode(427...436)(
+ ConstantReadNode(427...428)(),
+ (428...430),
+ (430...436),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "return"
+ ),
+ CallNode(438...445)(
+ ConstantReadNode(438...439)(),
+ (439...441),
+ (441...445),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "self"
+ ),
+ CallNode(447...455)(
+ ConstantReadNode(447...448)(),
+ (448...450),
+ (450...455),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "super"
+ ),
+ CallNode(457...464)(
+ ConstantReadNode(457...458)(),
+ (458...460),
+ (460...464),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "then"
+ ),
+ CallNode(466...473)(
+ ConstantReadNode(466...467)(),
+ (467...469),
+ (469...473),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "true"
+ ),
+ CallNode(475...483)(
+ ConstantReadNode(475...476)(),
+ (476...478),
+ (478...483),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "undef"
+ ),
+ CallNode(485...494)(
+ ConstantReadNode(485...486)(),
+ (486...488),
+ (488...494),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "unless"
+ ),
+ CallNode(496...504)(
+ ConstantReadNode(496...497)(),
+ (497...499),
+ (499...504),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "until"
+ ),
+ CallNode(506...513)(
+ ConstantReadNode(506...507)(),
+ (507...509),
+ (509...513),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "when"
+ ),
+ CallNode(515...523)(
+ ConstantReadNode(515...516)(),
+ (516...518),
+ (518...523),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "while"
+ ),
+ CallNode(525...533)(
+ ConstantReadNode(525...526)(),
+ (526...528),
+ (528...533),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "yield"
+ ),
+ CallNode(535...550)(
+ ConstantReadNode(535...536)(),
+ (536...538),
+ (538...550),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "__ENCODING__"
+ ),
+ CallNode(552...563)(
+ ConstantReadNode(552...553)(),
+ (553...555),
+ (555...563),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "__FILE__"
+ ),
+ CallNode(565...576)(
+ ConstantReadNode(565...566)(),
+ (566...568),
+ (568...576),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "__LINE__"
+ ),
+ CallNode(578...582)(
+ ConstantReadNode(578...579)(),
+ (579...581),
+ (581...582),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "<"
+ ),
+ CallNode(584...590)(
+ ConstantReadNode(584...585)(),
+ (585...587),
+ (587...590),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "<=>"
+ ),
+ CallNode(592...597)(
+ ConstantReadNode(592...593)(),
+ (593...595),
+ (595...597),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "<<"
+ ),
+ CallNode(599...603)(
+ ConstantReadNode(599...600)(),
+ (600...602),
+ (602...603),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-"
+ ),
+ CallNode(605...609)(
+ ConstantReadNode(605...606)(),
+ (606...608),
+ (608...609),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "%"
+ ),
+ CallNode(611...616)(
+ ConstantReadNode(611...612)(),
+ (612...614),
+ (615...616),
+ nil,
+ ArgumentsNode(615...616)(
+ [CallNode(615...616)(
+ nil,
+ nil,
+ (615...616),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "i"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "i"
+ ),
+ CallNode(618...623)(
+ ConstantReadNode(618...619)(),
+ (619...621),
+ (622...623),
+ nil,
+ ArgumentsNode(622...623)(
+ [CallNode(622...623)(
+ nil,
+ nil,
+ (622...623),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "w"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "w"
+ ),
+ CallNode(625...630)(
+ ConstantReadNode(625...626)(),
+ (626...628),
+ (629...630),
+ nil,
+ ArgumentsNode(629...630)(
+ [CallNode(629...630)(
+ nil,
+ nil,
+ (629...630),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "x"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ CallNode(632...637)(
+ ConstantReadNode(632...633)(),
+ (633...635),
+ (636...637),
+ nil,
+ ArgumentsNode(636...637)([ConstantReadNode(636...637)()]),
+ nil,
+ nil,
+ 0,
+ "I"
+ ),
+ CallNode(639...644)(
+ ConstantReadNode(639...640)(),
+ (640...642),
+ (643...644),
+ nil,
+ ArgumentsNode(643...644)([ConstantReadNode(643...644)()]),
+ nil,
+ nil,
+ 0,
+ "W"
+ ),
+ CallNode(646...650)(
+ ConstantReadNode(646...647)(),
+ (647...649),
+ (649...650),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "|"
+ ),
+ CallNode(652...656)(
+ ConstantReadNode(652...653)(),
+ (653...655),
+ (655...656),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ CallNode(658...662)(
+ ConstantReadNode(658...659)(),
+ (659...661),
+ (661...662),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(664...668)(
+ ConstantReadNode(664...665)(),
+ (665...667),
+ (667...668),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "*"
+ ),
+ CallNode(670...675)(
+ ConstantReadNode(670...671)(),
+ (671...673),
+ (673...675),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ CallNode(677...681)(
+ ConstantReadNode(677...678)(),
+ (678...680),
+ (680...681),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "~"
+ ),
+ RangeNode(683...709)(
+ CallNode(683...695)(
+ ConstantPathNode(683...692)(
+ CallNode(683...687)(
+ ConstantReadNode(683...684)(),
+ (684...686),
+ (686...687),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_"
+ ),
+ ConstantReadNode(691...692)(),
+ (687...689)
+ ),
+ (692...694),
+ (694...695),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_"
+ ),
+ CallNode(699...709)(
+ ConstantReadNode(699...700)(),
+ (700...702),
+ (702...709),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "__END__"
+ ),
+ (695...697),
+ 0
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/dash_heredocs.txt b/test/yarp/snapshots/dash_heredocs.txt
new file mode 100644
index 0000000000..bc4c90a76f
--- /dev/null
+++ b/test/yarp/snapshots/dash_heredocs.txt
@@ -0,0 +1,121 @@
+ProgramNode(0...223)(
+ [],
+ StatementsNode(0...223)(
+ [InterpolatedStringNode(0...15)(
+ (0...6),
+ [StringNode(7...11)(nil, (7...11), nil, " a\n")],
+ (11...15)
+ ),
+ CallNode(16...58)(
+ InterpolatedStringNode(16...47)(
+ (16...24),
+ [StringNode(37...41)(nil, (37...41), nil, " a\n")],
+ (41...47)
+ ),
+ nil,
+ (25...26),
+ nil,
+ ArgumentsNode(27...58)(
+ [InterpolatedStringNode(27...58)(
+ (27...36),
+ [StringNode(47...51)(nil, (47...51), nil, " b\n")],
+ (51...58)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ InterpolatedXStringNode(59...81)(
+ (59...67),
+ [StringNode(68...72)(nil, (68...72), nil, " a\n"),
+ EmbeddedStatementsNode(72...76)(
+ (72...74),
+ StatementsNode(74...75)(
+ [CallNode(74...75)(
+ nil,
+ nil,
+ (74...75),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (75...76)
+ ),
+ StringNode(76...77)(nil, (76...77), nil, "\n")],
+ (77...81)
+ ),
+ InterpolatedStringNode(82...106)(
+ (82...88),
+ [StringNode(98...102)(nil, (98...102), nil, " a\n")],
+ (102...106)
+ ),
+ InterpolatedStringNode(107...128)(
+ (107...113),
+ [StringNode(114...122)(nil, (114...122), nil, " a\n" + " b\n")],
+ (122...128)
+ ),
+ InterpolatedStringNode(129...151)(
+ (129...137),
+ [StringNode(138...142)(nil, (138...142), nil, " a\n"),
+ EmbeddedStatementsNode(142...146)(
+ (142...144),
+ StatementsNode(144...145)(
+ [CallNode(144...145)(
+ nil,
+ nil,
+ (144...145),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (145...146)
+ ),
+ StringNode(146...147)(nil, (146...147), nil, "\n")],
+ (147...151)
+ ),
+ InterpolatedStringNode(152...172)(
+ (152...158),
+ [StringNode(159...163)(nil, (159...163), nil, " a\n"),
+ EmbeddedStatementsNode(163...167)(
+ (163...165),
+ StatementsNode(165...166)(
+ [CallNode(165...166)(
+ nil,
+ nil,
+ (165...166),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (166...167)
+ ),
+ StringNode(167...168)(nil, (167...168), nil, "\n")],
+ (168...172)
+ ),
+ StringNode(173...179)((173...175), (175...178), (178...179), "abc"),
+ InterpolatedStringNode(181...200)(
+ (181...187),
+ [StringNode(188...196)(nil, (188...196), nil, " a\n" + " b\n")],
+ (196...200)
+ ),
+ InterpolatedStringNode(201...223)(
+ (201...209),
+ [StringNode(210...219)(nil, (210...219), nil, " a \#{1}\n")],
+ (219...223)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/defined.txt b/test/yarp/snapshots/defined.txt
new file mode 100644
index 0000000000..df02a1d10d
--- /dev/null
+++ b/test/yarp/snapshots/defined.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...78)(
+ [:x],
+ StatementsNode(0...78)(
+ [AndNode(0...25)(
+ DefinedNode(0...10)(nil, IntegerNode(9...10)(), nil, (0...8)),
+ DefinedNode(15...25)(nil, IntegerNode(24...25)(), nil, (15...23)),
+ (11...14)
+ ),
+ DefinedNode(27...43)(
+ (35...36),
+ LocalVariableOperatorWriteNode(36...42)(
+ (36...37),
+ (38...40),
+ IntegerNode(41...42)(),
+ :x,
+ :%
+ ),
+ (42...43),
+ (27...35)
+ ),
+ DefinedNode(45...66)(
+ (53...54),
+ AndNode(54...65)(
+ CallNode(54...57)(nil, nil, (54...57), nil, nil, nil, nil, 0, "foo"),
+ CallNode(62...65)(nil, nil, (62...65), nil, nil, nil, nil, 0, "bar"),
+ (58...61)
+ ),
+ (65...66),
+ (45...53)
+ ),
+ DefinedNode(68...78)(nil, IntegerNode(77...78)(), nil, (68...76))]
+ )
+)
diff --git a/test/yarp/snapshots/dos_endings.txt b/test/yarp/snapshots/dos_endings.txt
new file mode 100644
index 0000000000..e1c6c9fec1
--- /dev/null
+++ b/test/yarp/snapshots/dos_endings.txt
@@ -0,0 +1,81 @@
+ProgramNode(0...108)(
+ [:x, :a],
+ StatementsNode(0...108)(
+ [CallNode(0...24)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ ArgumentsNode(5...24)(
+ [StringConcatNode(5...24)(
+ StringNode(5...9)((5...6), (6...8), (8...9), "hi"),
+ StringNode(17...24)((17...18), (18...23), (23...24), "there")
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ ),
+ ArrayNode(28...37)(
+ [SymbolNode(31...36)(nil, (31...36), nil, "a\u0000\u0000b")],
+ (28...31),
+ (36...37)
+ ),
+ InterpolatedStringNode(41...73)(
+ (41...45),
+ [StringNode(47...70)(
+ nil,
+ (47...70),
+ nil,
+ " 1 \u0000\u0000 2\r\n" + " 3\r\n"
+ )],
+ (70...73)
+ ),
+ LocalVariableWriteNode(75...84)(
+ :x,
+ 0,
+ StringNode(79...84)((79...82), (82...82), (82...84), ""),
+ (75...76),
+ (77...78)
+ ),
+ LocalVariableWriteNode(88...108)(
+ :a,
+ 0,
+ CallNode(92...108)(
+ nil,
+ nil,
+ (92...95),
+ (95...96),
+ ArgumentsNode(96...107)(
+ [CallNode(96...107)(
+ InterpolatedStringNode(96...128)(
+ (96...102),
+ [StringNode(110...121)(
+ nil,
+ (110...121),
+ nil,
+ "\n" + "baz\r\n"
+ )],
+ (121...128)
+ ),
+ (102...103),
+ (103...107),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "chop"
+ )]
+ ),
+ (107...108),
+ nil,
+ 0,
+ "foo"
+ ),
+ (88...89),
+ (90...91)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/embdoc_no_newline_at_end.txt b/test/yarp/snapshots/embdoc_no_newline_at_end.txt
new file mode 100644
index 0000000000..bd3eaf5ff4
--- /dev/null
+++ b/test/yarp/snapshots/embdoc_no_newline_at_end.txt
@@ -0,0 +1 @@
+ProgramNode(0...0)([], StatementsNode(0...0)([]))
diff --git a/test/yarp/snapshots/for.txt b/test/yarp/snapshots/for.txt
new file mode 100644
index 0000000000..0bd8319aa1
--- /dev/null
+++ b/test/yarp/snapshots/for.txt
@@ -0,0 +1,128 @@
+ProgramNode(0...143)(
+ [:i, :j, :k],
+ StatementsNode(0...143)(
+ [ForNode(0...20)(
+ MultiWriteNode(4...5)(
+ [LocalVariableWriteNode(4...5)(:i, 0, nil, (4...5), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ RangeNode(9...14)(
+ IntegerNode(9...10)(),
+ IntegerNode(12...14)(),
+ (10...12),
+ 0
+ ),
+ StatementsNode(15...16)([LocalVariableReadNode(15...16)(:i, 0)]),
+ (0...3),
+ (6...8),
+ nil,
+ (17...20)
+ ),
+ ForNode(22...44)(
+ MultiWriteNode(26...27)(
+ [LocalVariableWriteNode(26...27)(:i, 0, nil, (26...27), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ RangeNode(31...36)(
+ IntegerNode(31...32)(),
+ IntegerNode(34...36)(),
+ (32...34),
+ 0
+ ),
+ StatementsNode(38...39)([LocalVariableReadNode(38...39)(:i, 0)]),
+ (22...25),
+ (28...30),
+ nil,
+ (41...44)
+ ),
+ ForNode(46...68)(
+ MultiWriteNode(50...53)(
+ [LocalVariableWriteNode(50...51)(:i, 0, nil, (50...51), nil),
+ LocalVariableWriteNode(52...53)(:j, 0, nil, (52...53), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ RangeNode(57...62)(
+ IntegerNode(57...58)(),
+ IntegerNode(60...62)(),
+ (58...60),
+ 0
+ ),
+ StatementsNode(63...64)([LocalVariableReadNode(63...64)(:i, 0)]),
+ (46...49),
+ (54...56),
+ nil,
+ (65...68)
+ ),
+ ForNode(70...94)(
+ MultiWriteNode(74...79)(
+ [LocalVariableWriteNode(74...75)(:i, 0, nil, (74...75), nil),
+ LocalVariableWriteNode(76...77)(:j, 0, nil, (76...77), nil),
+ LocalVariableWriteNode(78...79)(:k, 0, nil, (78...79), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ RangeNode(83...88)(
+ IntegerNode(83...84)(),
+ IntegerNode(86...88)(),
+ (84...86),
+ 0
+ ),
+ StatementsNode(89...90)([LocalVariableReadNode(89...90)(:i, 0)]),
+ (70...73),
+ (80...82),
+ nil,
+ (91...94)
+ ),
+ ForNode(96...119)(
+ MultiWriteNode(100...101)(
+ [LocalVariableWriteNode(100...101)(:i, 0, nil, (100...101), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ RangeNode(105...110)(
+ IntegerNode(105...106)(),
+ IntegerNode(108...110)(),
+ (106...108),
+ 0
+ ),
+ StatementsNode(114...115)([LocalVariableReadNode(114...115)(:i, 0)]),
+ (96...99),
+ (102...104),
+ (111...113),
+ (116...119)
+ ),
+ ForNode(121...143)(
+ MultiWriteNode(125...126)(
+ [LocalVariableWriteNode(125...126)(:i, 0, nil, (125...126), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ RangeNode(130...135)(
+ IntegerNode(130...131)(),
+ IntegerNode(133...135)(),
+ (131...133),
+ 0
+ ),
+ StatementsNode(137...138)([LocalVariableReadNode(137...138)(:i, 0)]),
+ (121...124),
+ (127...129),
+ nil,
+ (140...143)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/global_variables.txt b/test/yarp/snapshots/global_variables.txt
new file mode 100644
index 0000000000..2b3e1447fd
--- /dev/null
+++ b/test/yarp/snapshots/global_variables.txt
@@ -0,0 +1,50 @@
+ProgramNode(0...340)(
+ [],
+ StatementsNode(0...340)(
+ [GlobalVariableReadNode(0...16)(),
+ GlobalVariableReadNode(18...20)(),
+ GlobalVariableReadNode(22...25)(),
+ GlobalVariableReadNode(27...37)(),
+ GlobalVariableReadNode(39...45)(),
+ GlobalVariableReadNode(47...54)(),
+ GlobalVariableReadNode(56...63)(),
+ GlobalVariableReadNode(65...67)(),
+ GlobalVariableReadNode(69...71)(),
+ GlobalVariableReadNode(73...75)(),
+ BackReferenceReadNode(77...79)(),
+ BackReferenceReadNode(81...83)(),
+ BackReferenceReadNode(85...87)(),
+ BackReferenceReadNode(89...91)(),
+ GlobalVariableReadNode(93...95)(),
+ GlobalVariableReadNode(97...99)(),
+ GlobalVariableReadNode(101...103)(),
+ GlobalVariableReadNode(105...111)(),
+ GlobalVariableReadNode(113...122)(),
+ GlobalVariableReadNode(124...127)(),
+ GlobalVariableReadNode(129...145)(),
+ GlobalVariableReadNode(147...155)(),
+ GlobalVariableReadNode(157...160)(),
+ SymbolNode(162...179)((162...163), (163...179), nil, "$global_variable"),
+ SymbolNode(181...184)((181...182), (182...184), nil, "$_"),
+ SymbolNode(186...190)((186...187), (187...190), nil, "$-w"),
+ SymbolNode(192...203)((192...193), (193...203), nil, "$LOAD_PATH"),
+ SymbolNode(205...212)((205...206), (206...212), nil, "$stdin"),
+ SymbolNode(214...222)((214...215), (215...222), nil, "$stdout"),
+ SymbolNode(224...232)((224...225), (225...232), nil, "$stderr"),
+ SymbolNode(234...237)((234...235), (235...237), nil, "$!"),
+ SymbolNode(239...242)((239...240), (240...242), nil, "$?"),
+ SymbolNode(244...247)((244...245), (245...247), nil, "$~"),
+ SymbolNode(249...252)((249...250), (250...252), nil, "$&"),
+ SymbolNode(254...257)((254...255), (255...257), nil, "$`"),
+ SymbolNode(259...262)((259...260), (260...262), nil, "$'"),
+ SymbolNode(264...267)((264...265), (265...267), nil, "$+"),
+ SymbolNode(269...272)((269...270), (270...272), nil, "$:"),
+ SymbolNode(274...277)((274...275), (275...277), nil, "$;"),
+ SymbolNode(279...286)((279...280), (280...286), nil, "$DEBUG"),
+ SymbolNode(288...298)((288...289), (289...298), nil, "$FILENAME"),
+ SymbolNode(300...304)((300...301), (301...304), nil, "$-0"),
+ SymbolNode(306...323)((306...307), (307...323), nil, "$LOADED_FEATURES"),
+ SymbolNode(325...334)((325...326), (326...334), nil, "$VERBOSE"),
+ SymbolNode(336...340)((336...337), (337...340), nil, "$-K")]
+ )
+)
diff --git a/test/yarp/snapshots/hashes.txt b/test/yarp/snapshots/hashes.txt
new file mode 100644
index 0000000000..41c166bb27
--- /dev/null
+++ b/test/yarp/snapshots/hashes.txt
@@ -0,0 +1,110 @@
+ProgramNode(0...120)(
+ [],
+ StatementsNode(0...120)(
+ [HashNode(0...2)((0...1), [], (1...2)),
+ HashNode(4...7)((4...5), [], (6...7)),
+ HashNode(9...27)(
+ (9...10),
+ [AssocNode(11...17)(
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "a"),
+ CallNode(16...17)(nil, nil, (16...17), nil, nil, nil, nil, 0, "b"),
+ (13...15)
+ ),
+ AssocNode(19...25)(
+ CallNode(19...20)(nil, nil, (19...20), nil, nil, nil, nil, 0, "c"),
+ CallNode(24...25)(nil, nil, (24...25), nil, nil, nil, nil, 0, "d"),
+ (21...23)
+ )],
+ (26...27)
+ ),
+ HashNode(29...44)(
+ (29...30),
+ [AssocNode(31...37)(
+ CallNode(31...32)(nil, nil, (31...32), nil, nil, nil, nil, 0, "a"),
+ CallNode(36...37)(nil, nil, (36...37), nil, nil, nil, nil, 0, "b"),
+ (33...35)
+ ),
+ AssocSplatNode(39...42)(
+ CallNode(41...42)(nil, nil, (41...42), nil, nil, nil, nil, 0, "c"),
+ (39...41)
+ )],
+ (43...44)
+ ),
+ HashNode(46...79)(
+ (46...47),
+ [AssocNode(54...58)(
+ SymbolNode(54...56)(nil, (54...55), (55...56), "a"),
+ CallNode(57...58)(nil, nil, (57...58), nil, nil, nil, nil, 0, "b"),
+ nil
+ ),
+ AssocNode(66...70)(
+ SymbolNode(66...68)(nil, (66...67), (67...68), "c"),
+ CallNode(69...70)(nil, nil, (69...70), nil, nil, nil, nil, 0, "d"),
+ nil
+ )],
+ (78...79)
+ ),
+ HashNode(81...106)(
+ (81...82),
+ [AssocNode(83...87)(
+ SymbolNode(83...85)(nil, (83...84), (84...85), "a"),
+ CallNode(86...87)(nil, nil, (86...87), nil, nil, nil, nil, 0, "b"),
+ nil
+ ),
+ AssocNode(89...93)(
+ SymbolNode(89...91)(nil, (89...90), (90...91), "c"),
+ CallNode(92...93)(nil, nil, (92...93), nil, nil, nil, nil, 0, "d"),
+ nil
+ ),
+ AssocSplatNode(95...98)(
+ CallNode(97...98)(nil, nil, (97...98), nil, nil, nil, nil, 0, "e"),
+ (95...97)
+ ),
+ AssocNode(100...104)(
+ SymbolNode(100...102)(nil, (100...101), (101...102), "f"),
+ CallNode(103...104)(
+ nil,
+ nil,
+ (103...104),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "g"
+ ),
+ nil
+ )],
+ (105...106)
+ ),
+ HashNode(108...120)(
+ (108...109),
+ [AssocNode(110...118)(
+ SymbolNode(110...114)((110...111), (111...112), (112...114), "a"),
+ CallNode(115...118)(
+ CallNode(116...118)(
+ nil,
+ nil,
+ (116...118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b?"
+ ),
+ nil,
+ (115...116),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ nil
+ )],
+ (119...120)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/heredoc_with_trailing_newline.txt b/test/yarp/snapshots/heredoc_with_trailing_newline.txt
new file mode 100644
index 0000000000..d69085b36a
--- /dev/null
+++ b/test/yarp/snapshots/heredoc_with_trailing_newline.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [InterpolatedStringNode(0...10)((0...6), [], (7...10))]
+ )
+)
diff --git a/test/yarp/snapshots/heredocs_nested.txt b/test/yarp/snapshots/heredocs_nested.txt
new file mode 100644
index 0000000000..ff25d3daa2
--- /dev/null
+++ b/test/yarp/snapshots/heredocs_nested.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...47)(
+ [],
+ StatementsNode(0...47)(
+ [InterpolatedStringNode(0...47)(
+ (0...7),
+ [StringNode(8...12)(nil, (8...12), nil, "pre\n"),
+ EmbeddedStatementsNode(12...36)(
+ (12...14),
+ StatementsNode(15...35)(
+ [InterpolatedStringNode(15...35)(
+ (15...21),
+ [StringNode(22...30)(nil, (22...30), nil, " hello\n")],
+ (30...35)
+ )]
+ ),
+ (35...36)
+ ),
+ StringNode(36...42)(nil, (36...42), nil, "\n" + "post\n")],
+ (42...47)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/heredocs_with_ignored_newlines.txt b/test/yarp/snapshots/heredocs_with_ignored_newlines.txt
new file mode 100644
index 0000000000..2c0638c0ba
--- /dev/null
+++ b/test/yarp/snapshots/heredocs_with_ignored_newlines.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...106)(
+ [],
+ StatementsNode(0...106)(
+ [InterpolatedStringNode(0...14)((0...7), [], (9...14)),
+ InterpolatedStringNode(15...106)(
+ (15...23),
+ [StringNode(25...100)(
+ nil,
+ (25...100),
+ nil,
+ "way over\n" +
+ "<<HERE\n" +
+ " not here\n" +
+ "HERE\n" +
+ "\n" +
+ "<<~BUT\n" +
+ " but\n" +
+ "BUT\n" +
+ " there\n"
+ )],
+ (100...106)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/heredocs_with_ignored_newlines_and_non_empty.txt b/test/yarp/snapshots/heredocs_with_ignored_newlines_and_non_empty.txt
new file mode 100644
index 0000000000..a002f24451
--- /dev/null
+++ b/test/yarp/snapshots/heredocs_with_ignored_newlines_and_non_empty.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [InterpolatedStringNode(0...26)(
+ (0...6),
+ [StringNode(7...23)(nil, (7...23), nil, " some\n" + " heredocs\n")],
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/if.txt b/test/yarp/snapshots/if.txt
new file mode 100644
index 0000000000..f8a697c746
--- /dev/null
+++ b/test/yarp/snapshots/if.txt
@@ -0,0 +1,230 @@
+ProgramNode(0...293)(
+ [],
+ StatementsNode(0...293)(
+ [IfNode(0...15)(
+ (0...2),
+ TrueNode(3...7)(),
+ StatementsNode(9...10)([IntegerNode(9...10)()]),
+ nil,
+ (12...15)
+ ),
+ IfNode(17...37)(
+ (17...19),
+ TrueNode(20...24)(),
+ StatementsNode(25...26)([IntegerNode(25...26)()]),
+ ElseNode(27...37)(
+ (27...31),
+ StatementsNode(32...33)([IntegerNode(32...33)()]),
+ (34...37)
+ ),
+ (34...37)
+ ),
+ IfNode(39...112)(
+ (39...41),
+ TrueNode(42...46)(),
+ StatementsNode(52...56)([TrueNode(52...56)()]),
+ IfNode(57...112)(
+ (57...62),
+ FalseNode(63...68)(),
+ StatementsNode(74...79)([FalseNode(74...79)()]),
+ IfNode(80...112)(
+ (80...85),
+ NilNode(86...89)(),
+ StatementsNode(95...98)([NilNode(95...98)()]),
+ ElseNode(99...112)(
+ (99...103),
+ StatementsNode(104...108)([SelfNode(104...108)()]),
+ (109...112)
+ ),
+ (109...112)
+ ),
+ (109...112)
+ ),
+ (109...112)
+ ),
+ IfNode(114...123)(
+ (116...118),
+ TrueNode(119...123)(),
+ StatementsNode(114...115)([IntegerNode(114...115)()]),
+ nil,
+ nil
+ ),
+ IfNode(125...138)(
+ (131...133),
+ TrueNode(134...138)(),
+ StatementsNode(125...130)([BreakNode(125...130)(nil, (125...130))]),
+ nil,
+ nil
+ ),
+ IfNode(140...152)(
+ (145...147),
+ TrueNode(148...152)(),
+ StatementsNode(140...144)([NextNode(140...144)(nil, (140...144))]),
+ nil,
+ nil
+ ),
+ IfNode(154...168)(
+ (161...163),
+ TrueNode(164...168)(),
+ StatementsNode(154...160)([ReturnNode(154...160)((154...160), nil)]),
+ nil,
+ nil
+ ),
+ IfNode(170...200)(
+ (170...172),
+ CallNode(173...182)(
+ nil,
+ nil,
+ (173...182),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "exit_loop"
+ ),
+ StatementsNode(188...196)(
+ [BreakNode(188...196)(
+ ArgumentsNode(194...196)([IntegerNode(194...196)()]),
+ (188...193)
+ )]
+ ),
+ nil,
+ (197...200)
+ ),
+ IfNode(202...221)(
+ (202...204),
+ CallNode(205...208)(
+ nil,
+ nil,
+ (205...208),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StatementsNode(214...217)(
+ [CallNode(214...217)(
+ nil,
+ nil,
+ (214...217),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ (218...221)
+ ),
+ IfNode(223...234)(
+ (230...232),
+ CallNode(233...234)(nil, nil, (233...234), nil, nil, nil, nil, 0, "c"),
+ StatementsNode(223...229)(
+ [IfNode(223...229)(
+ (225...227),
+ CallNode(228...229)(
+ nil,
+ nil,
+ (228...229),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ StatementsNode(223...224)(
+ [CallNode(223...224)(
+ nil,
+ nil,
+ (223...224),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ nil,
+ nil
+ )]
+ ),
+ nil,
+ nil
+ ),
+ IfNode(236...259)(
+ (236...238),
+ TrueNode(239...243)(),
+ StatementsNode(246...250)(
+ [CallNode(246...250)(
+ nil,
+ nil,
+ (246...247),
+ nil,
+ ArgumentsNode(248...250)(
+ [KeywordHashNode(248...250)(
+ [AssocNode(248...250)(
+ SymbolNode(248...250)(nil, (248...249), (249...250), "b"),
+ nil,
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ ElseNode(251...259)((251...255), nil, (256...259)),
+ (256...259)
+ ),
+ IfNode(261...293)(
+ (261...263),
+ MatchPredicateNode(264...273)(
+ CallNode(264...268)(
+ nil,
+ nil,
+ (264...268),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "type"
+ ),
+ IntegerNode(272...273)(),
+ (269...271)
+ ),
+ nil,
+ IfNode(274...289)(
+ (274...279),
+ MatchPredicateNode(280...289)(
+ CallNode(280...284)(
+ nil,
+ nil,
+ (280...284),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "type"
+ ),
+ ConstantReadNode(288...289)(),
+ (285...287)
+ ),
+ nil,
+ nil,
+ nil
+ ),
+ (290...293)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/integer_operations.txt b/test/yarp/snapshots/integer_operations.txt
new file mode 100644
index 0000000000..5cade8a7d5
--- /dev/null
+++ b/test/yarp/snapshots/integer_operations.txt
@@ -0,0 +1,383 @@
+ProgramNode(0...247)(
+ [],
+ StatementsNode(0...247)(
+ [CallNode(0...2)(
+ IntegerNode(1...2)(),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(4...6)(
+ IntegerNode(5...6)(),
+ nil,
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "~"
+ ),
+ CallNode(8...14)(
+ IntegerNode(8...9)(),
+ nil,
+ (10...12),
+ nil,
+ ArgumentsNode(13...14)([IntegerNode(13...14)()]),
+ nil,
+ nil,
+ 0,
+ "!="
+ ),
+ CallNode(16...22)(
+ IntegerNode(16...17)(),
+ nil,
+ (18...20),
+ nil,
+ ArgumentsNode(21...22)([IntegerNode(21...22)()]),
+ nil,
+ nil,
+ 0,
+ "!~"
+ ),
+ CallNode(24...29)(
+ IntegerNode(24...25)(),
+ nil,
+ (26...27),
+ nil,
+ ArgumentsNode(28...29)([IntegerNode(28...29)()]),
+ nil,
+ nil,
+ 0,
+ "%"
+ ),
+ CallNode(31...36)(
+ IntegerNode(31...32)(),
+ nil,
+ (33...34),
+ nil,
+ ArgumentsNode(35...36)([IntegerNode(35...36)()]),
+ nil,
+ nil,
+ 0,
+ "&"
+ ),
+ CallNode(38...43)(
+ IntegerNode(38...39)(),
+ nil,
+ (40...41),
+ nil,
+ ArgumentsNode(42...43)([IntegerNode(42...43)()]),
+ nil,
+ nil,
+ 0,
+ "*"
+ ),
+ CallNode(45...49)(
+ IntegerNode(45...46)(),
+ nil,
+ (46...48),
+ nil,
+ ArgumentsNode(48...49)([IntegerNode(48...49)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ CallNode(51...56)(
+ IntegerNode(51...52)(),
+ nil,
+ (53...54),
+ nil,
+ ArgumentsNode(55...56)([IntegerNode(55...56)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ CallNode(58...63)(
+ IntegerNode(58...59)(),
+ nil,
+ (60...61),
+ nil,
+ ArgumentsNode(62...63)([IntegerNode(62...63)()]),
+ nil,
+ nil,
+ 0,
+ "-"
+ ),
+ CallNode(65...70)(
+ IntegerNode(65...66)(),
+ nil,
+ (67...68),
+ nil,
+ ArgumentsNode(69...70)([IntegerNode(69...70)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(72...77)(
+ CallNode(72...75)(
+ IntegerNode(72...73)(),
+ nil,
+ (73...74),
+ nil,
+ ArgumentsNode(74...75)([IntegerNode(74...75)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ nil,
+ (75...76),
+ nil,
+ ArgumentsNode(76...77)([IntegerNode(76...77)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(79...84)(
+ IntegerNode(79...80)(),
+ nil,
+ (81...82),
+ nil,
+ ArgumentsNode(83...84)([IntegerNode(83...84)()]),
+ nil,
+ nil,
+ 0,
+ "<"
+ ),
+ CallNode(86...92)(
+ IntegerNode(86...87)(),
+ nil,
+ (88...90),
+ nil,
+ ArgumentsNode(91...92)([IntegerNode(91...92)()]),
+ nil,
+ nil,
+ 0,
+ "<<"
+ ),
+ CallNode(94...100)(
+ IntegerNode(94...95)(),
+ nil,
+ (96...98),
+ nil,
+ ArgumentsNode(99...100)([IntegerNode(99...100)()]),
+ nil,
+ nil,
+ 0,
+ "<="
+ ),
+ CallNode(102...109)(
+ IntegerNode(102...103)(),
+ nil,
+ (104...107),
+ nil,
+ ArgumentsNode(108...109)([IntegerNode(108...109)()]),
+ nil,
+ nil,
+ 0,
+ "<=>"
+ ),
+ CallNode(111...117)(
+ IntegerNode(111...112)(),
+ nil,
+ (113...115),
+ nil,
+ ArgumentsNode(116...117)([IntegerNode(116...117)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ ),
+ CallNode(119...126)(
+ IntegerNode(119...120)(),
+ nil,
+ (121...124),
+ nil,
+ ArgumentsNode(125...126)([IntegerNode(125...126)()]),
+ nil,
+ nil,
+ 0,
+ "==="
+ ),
+ CallNode(128...134)(
+ IntegerNode(128...129)(),
+ nil,
+ (130...132),
+ nil,
+ ArgumentsNode(133...134)([IntegerNode(133...134)()]),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ CallNode(136...141)(
+ IntegerNode(136...137)(),
+ nil,
+ (138...139),
+ nil,
+ ArgumentsNode(140...141)([IntegerNode(140...141)()]),
+ nil,
+ nil,
+ 0,
+ ">"
+ ),
+ CallNode(143...149)(
+ IntegerNode(143...144)(),
+ nil,
+ (145...147),
+ nil,
+ ArgumentsNode(148...149)([IntegerNode(148...149)()]),
+ nil,
+ nil,
+ 0,
+ ">="
+ ),
+ CallNode(151...157)(
+ IntegerNode(151...152)(),
+ nil,
+ (153...155),
+ nil,
+ ArgumentsNode(156...157)([IntegerNode(156...157)()]),
+ nil,
+ nil,
+ 0,
+ ">>"
+ ),
+ CallNode(159...164)(
+ IntegerNode(159...160)(),
+ nil,
+ (161...162),
+ nil,
+ ArgumentsNode(163...164)([IntegerNode(163...164)()]),
+ nil,
+ nil,
+ 0,
+ "^"
+ ),
+ CallNode(166...171)(
+ IntegerNode(166...167)(),
+ nil,
+ (168...169),
+ nil,
+ ArgumentsNode(170...171)([IntegerNode(170...171)()]),
+ nil,
+ nil,
+ 0,
+ "|"
+ ),
+ AndNode(173...179)(
+ IntegerNode(173...174)(),
+ IntegerNode(178...179)(),
+ (175...177)
+ ),
+ AndNode(181...188)(
+ IntegerNode(181...182)(),
+ IntegerNode(187...188)(),
+ (183...186)
+ ),
+ CallNode(190...200)(
+ IntegerNode(190...191)(),
+ nil,
+ (192...193),
+ nil,
+ ArgumentsNode(194...200)(
+ [CallNode(194...200)(
+ IntegerNode(194...195)(),
+ nil,
+ (196...198),
+ nil,
+ ArgumentsNode(199...200)([IntegerNode(199...200)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "*"
+ ),
+ CallNode(202...211)(
+ CallNode(202...207)(
+ IntegerNode(202...203)(),
+ nil,
+ (204...205),
+ nil,
+ ArgumentsNode(206...207)([IntegerNode(206...207)()]),
+ nil,
+ nil,
+ 0,
+ "*"
+ ),
+ nil,
+ (208...209),
+ nil,
+ ArgumentsNode(210...211)([IntegerNode(210...211)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ OrNode(213...219)(
+ IntegerNode(213...214)(),
+ IntegerNode(218...219)(),
+ (215...217)
+ ),
+ OrNode(221...227)(
+ IntegerNode(221...222)(),
+ IntegerNode(226...227)(),
+ (223...225)
+ ),
+ CallNode(229...238)(
+ IntegerNode(229...230)(),
+ nil,
+ (231...232),
+ nil,
+ ArgumentsNode(233...238)(
+ [CallNode(233...238)(
+ IntegerNode(233...234)(),
+ nil,
+ (235...236),
+ nil,
+ ArgumentsNode(237...238)([IntegerNode(237...238)()]),
+ nil,
+ nil,
+ 0,
+ "*"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ ParenthesesNode(240...247)(
+ StatementsNode(241...246)(
+ [CallNode(241...246)(
+ IntegerNode(241...242)(),
+ nil,
+ (243...244),
+ nil,
+ ArgumentsNode(245...246)([IntegerNode(245...246)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (240...241),
+ (246...247)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/keyword_method_names.txt b/test/yarp/snapshots/keyword_method_names.txt
new file mode 100644
index 0000000000..47e56957ce
--- /dev/null
+++ b/test/yarp/snapshots/keyword_method_names.txt
@@ -0,0 +1,143 @@
+ProgramNode(0...185)(
+ [],
+ StatementsNode(0...185)(
+ [DefNode(0...11)(
+ (4...7),
+ nil,
+ nil,
+ nil,
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (8...11)
+ ),
+ DefNode(13...32)(
+ (22...28),
+ SelfNode(17...21)(),
+ nil,
+ nil,
+ [],
+ (13...16),
+ (21...22),
+ nil,
+ nil,
+ nil,
+ (29...32)
+ ),
+ CallNode(34...68)(
+ nil,
+ nil,
+ (34...41),
+ nil,
+ ArgumentsNode(42...68)(
+ [DefNode(42...68)(
+ (46...49),
+ nil,
+ nil,
+ StatementsNode(52...64)(
+ [CallNode(52...64)(
+ nil,
+ nil,
+ (52...55),
+ nil,
+ nil,
+ nil,
+ BlockNode(56...64)([], nil, nil, (56...58), (61...64)),
+ 0,
+ "bar"
+ )]
+ ),
+ [],
+ (42...45),
+ nil,
+ nil,
+ nil,
+ nil,
+ (65...68)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "private"
+ ),
+ DefNode(70...89)(
+ (74...75),
+ nil,
+ ParametersNode(76...84)(
+ [RequiredParameterNode(76...77)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ NoKeywordsParameterNode(79...84)((79...81), (81...84)),
+ nil
+ ),
+ nil,
+ [:a],
+ (70...73),
+ nil,
+ (75...76),
+ (84...85),
+ nil,
+ (86...89)
+ ),
+ DefNode(91...113)(
+ (108...109),
+ SourceEncodingNode(95...107)(),
+ nil,
+ nil,
+ [],
+ (91...94),
+ (107...108),
+ nil,
+ nil,
+ nil,
+ (110...113)
+ ),
+ StringNode(115...121)((115...117), (117...120), (120...121), "abc"),
+ StringNode(123...129)((123...125), (125...128), (128...129), "abc"),
+ DefNode(131...149)(
+ (144...145),
+ SourceFileNode(135...143)("/fixtures/keyword_method_names.txt"),
+ nil,
+ nil,
+ [],
+ (131...134),
+ (143...144),
+ nil,
+ nil,
+ nil,
+ (146...149)
+ ),
+ DefNode(151...169)(
+ (164...165),
+ SourceLineNode(155...163)(),
+ nil,
+ nil,
+ [],
+ (151...154),
+ (163...164),
+ nil,
+ nil,
+ nil,
+ (166...169)
+ ),
+ DefNode(171...185)(
+ (180...181),
+ NilNode(175...178)(),
+ nil,
+ nil,
+ [],
+ (171...174),
+ (178...180),
+ nil,
+ nil,
+ nil,
+ (182...185)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/keywords.txt b/test/yarp/snapshots/keywords.txt
new file mode 100644
index 0000000000..8bdd4c642d
--- /dev/null
+++ b/test/yarp/snapshots/keywords.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...51)(
+ [],
+ StatementsNode(0...51)(
+ [RedoNode(0...4)(),
+ RetryNode(6...11)(),
+ SelfNode(13...17)(),
+ SourceEncodingNode(19...31)(),
+ SourceFileNode(33...41)("/fixtures/keywords.txt"),
+ SourceLineNode(43...51)()]
+ )
+)
diff --git a/test/yarp/snapshots/lambda.txt b/test/yarp/snapshots/lambda.txt
new file mode 100644
index 0000000000..9d62e3d079
--- /dev/null
+++ b/test/yarp/snapshots/lambda.txt
@@ -0,0 +1,109 @@
+ProgramNode(0...51)(
+ [],
+ StatementsNode(0...51)(
+ [LambdaNode(0...14)(
+ [:foo],
+ (0...2),
+ BlockParametersNode(2...11)(
+ ParametersNode(6...9)(
+ [RequiredParameterNode(6...9)(:foo)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (2...3),
+ (10...11)
+ ),
+ nil
+ ),
+ LambdaNode(16...34)(
+ [:x],
+ (16...18),
+ BlockParametersNode(18...30)(
+ ParametersNode(19...29)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(19...29)(
+ (19...21),
+ InterpolatedStringNode(22...29)(
+ (22...23),
+ [StringNode(23...24)(nil, (23...24), nil, "b"),
+ EmbeddedStatementsNode(24...28)(
+ (24...26),
+ StatementsNode(26...27)(
+ [CallNode(26...27)(
+ nil,
+ nil,
+ (26...27),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ (27...28)
+ )],
+ (28...29)
+ )
+ )],
+ nil,
+ nil
+ ),
+ [],
+ (18...19),
+ (29...30)
+ ),
+ nil
+ ),
+ LambdaNode(36...51)(
+ [:a],
+ (36...38),
+ BlockParametersNode(38...48)(
+ ParametersNode(39...47)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(39...47)(
+ (39...41),
+ CallNode(42...47)(
+ CallNode(42...43)(
+ nil,
+ nil,
+ (42...43),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ nil,
+ (44...45),
+ nil,
+ ArgumentsNode(46...47)([IntegerNode(46...47)()]),
+ nil,
+ nil,
+ 0,
+ "*"
+ )
+ )],
+ nil,
+ nil
+ ),
+ [],
+ (38...39),
+ (47...48)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/method_calls.txt b/test/yarp/snapshots/method_calls.txt
new file mode 100644
index 0000000000..719f07e0eb
--- /dev/null
+++ b/test/yarp/snapshots/method_calls.txt
@@ -0,0 +1,1570 @@
+ProgramNode(0...1187)(
+ [],
+ StatementsNode(0...1187)(
+ [CallNode(0...14)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...7),
+ nil,
+ ArgumentsNode(8...14)(
+ [StringNode(8...14)((8...10), (10...13), (13...14), "baz")]
+ ),
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(16...25)(
+ CallNode(16...17)(nil, nil, (16...17), nil, nil, nil, nil, 0, "a"),
+ (17...18),
+ (18...19),
+ (19...20),
+ ArgumentsNode(20...24)(
+ [CallNode(20...21)(nil, nil, (20...21), nil, nil, nil, nil, 0, "c"),
+ CallNode(23...24)(nil, nil, (23...24), nil, nil, nil, nil, 0, "d")]
+ ),
+ (24...25),
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(27...32)(
+ CallNode(27...28)(nil, nil, (27...28), nil, nil, nil, nil, 0, "a"),
+ (28...29),
+ (29...30),
+ (30...31),
+ nil,
+ (31...32),
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(34...52)(
+ CallNode(34...44)(
+ CallNode(34...37)(nil, nil, (34...37), nil, nil, nil, nil, 0, "foo"),
+ (40...41),
+ (41...44),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (47...49),
+ (49...52),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "baz"
+ ),
+ CallNode(54...56)(nil, nil, (54...56), nil, nil, nil, nil, 0, "a!"),
+ CallNode(58...62)(
+ CallNode(58...59)(nil, nil, (58...59), nil, nil, nil, nil, 0, "a"),
+ (59...60),
+ (0...0),
+ (60...61),
+ nil,
+ (61...62),
+ nil,
+ 0,
+ "call"
+ ),
+ CallNode(64...75)(
+ CallNode(64...65)(nil, nil, (64...65), nil, nil, nil, nil, 0, "a"),
+ (65...66),
+ (0...0),
+ (66...67),
+ ArgumentsNode(67...74)(
+ [IntegerNode(67...68)(),
+ IntegerNode(70...71)(),
+ IntegerNode(73...74)()]
+ ),
+ (74...75),
+ nil,
+ 0,
+ "call"
+ ),
+ CallNode(77...81)(
+ CallNode(77...78)(nil, nil, (77...78), nil, nil, nil, nil, 0, "a"),
+ (78...80),
+ (80...81),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(83...94)(
+ CallNode(83...86)(nil, nil, (83...86), nil, nil, nil, nil, 0, "foo"),
+ (86...87),
+ (87...90),
+ nil,
+ ArgumentsNode(93...94)([IntegerNode(93...94)()]),
+ nil,
+ nil,
+ 0,
+ "bar="
+ ),
+ CallNode(96...98)(nil, nil, (96...98), nil, nil, nil, nil, 0, "a?"),
+ CallNode(100...109)(
+ nil,
+ nil,
+ (100...101),
+ (101...102),
+ ArgumentsNode(102...108)(
+ [BlockArgumentNode(102...108)(
+ CallNode(103...108)(
+ nil,
+ nil,
+ (103...108),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "block"
+ ),
+ (102...103)
+ )]
+ ),
+ (108...109),
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(111...122)(
+ nil,
+ nil,
+ (111...112),
+ (112...113),
+ ArgumentsNode(113...121)(
+ [KeywordHashNode(113...121)(
+ [AssocSplatNode(113...121)(
+ CallNode(115...121)(
+ nil,
+ nil,
+ (115...121),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "kwargs"
+ ),
+ (113...115)
+ )]
+ )]
+ ),
+ (121...122),
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(124...129)(
+ CallNode(124...127)(
+ CallNode(124...125)(
+ nil,
+ nil,
+ (124...125),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (125...126),
+ (126...127),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (127...128),
+ (128...129),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ CallNode(131...138)(
+ nil,
+ nil,
+ (131...132),
+ (132...133),
+ ArgumentsNode(133...137)(
+ [CallNode(133...134)(
+ nil,
+ nil,
+ (133...134),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(136...137)(
+ nil,
+ nil,
+ (136...137),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (137...138),
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(140...143)(
+ nil,
+ nil,
+ (140...141),
+ (141...142),
+ nil,
+ (142...143),
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(145...153)(
+ nil,
+ nil,
+ (145...146),
+ (146...147),
+ ArgumentsNode(147...152)(
+ [SplatNode(147...152)(
+ (147...148),
+ CallNode(148...152)(
+ nil,
+ nil,
+ (148...152),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ )]
+ ),
+ (152...153),
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(155...161)(
+ nil,
+ nil,
+ (155...156),
+ nil,
+ ArgumentsNode(157...161)(
+ [CallNode(157...158)(
+ nil,
+ nil,
+ (157...158),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(160...161)(
+ nil,
+ nil,
+ (160...161),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(163...171)(
+ CallNode(163...164)(nil, nil, (163...164), nil, nil, nil, nil, 0, "a"),
+ (164...165),
+ (165...166),
+ nil,
+ ArgumentsNode(167...171)(
+ [CallNode(167...168)(
+ nil,
+ nil,
+ (167...168),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ CallNode(170...171)(
+ nil,
+ nil,
+ (170...171),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ MultiWriteNode(173...196)(
+ [CallNode(173...180)(
+ CallNode(173...176)(
+ nil,
+ nil,
+ (173...176),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (176...177),
+ (177...180),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo="
+ ),
+ CallNode(182...189)(
+ CallNode(182...185)(
+ nil,
+ nil,
+ (182...185),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (185...186),
+ (186...189),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar="
+ )],
+ (190...191),
+ ArrayNode(192...196)(
+ [IntegerNode(192...193)(), IntegerNode(195...196)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ CallNode(198...202)(
+ CallNode(198...199)(nil, nil, (198...199), nil, nil, nil, nil, 0, "a"),
+ (199...201),
+ (201...202),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ ),
+ CallNode(204...209)(
+ CallNode(204...205)(nil, nil, (204...205), nil, nil, nil, nil, 0, "a"),
+ (205...207),
+ (0...0),
+ (207...208),
+ nil,
+ (208...209),
+ nil,
+ 1,
+ "call"
+ ),
+ CallNode(211...218)(
+ CallNode(211...212)(nil, nil, (211...212), nil, nil, nil, nil, 0, "a"),
+ (212...214),
+ (214...215),
+ (215...216),
+ ArgumentsNode(216...217)(
+ [CallNode(216...217)(
+ nil,
+ nil,
+ (216...217),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (217...218),
+ nil,
+ 1,
+ "b"
+ ),
+ CallNode(220...226)(
+ CallNode(220...221)(nil, nil, (220...221), nil, nil, nil, nil, 0, "a"),
+ (221...223),
+ (223...224),
+ (224...225),
+ nil,
+ (225...226),
+ nil,
+ 1,
+ "b"
+ ),
+ IfNode(228...261)(
+ (239...241),
+ AndNode(242...261)(
+ OrNode(242...253)(
+ CallNode(242...246)(
+ nil,
+ nil,
+ (242...246),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar?"
+ ),
+ CallNode(250...253)(
+ nil,
+ nil,
+ (250...253),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (247...249)
+ ),
+ CallNode(258...261)(
+ nil,
+ nil,
+ (258...261),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "qux"
+ ),
+ (254...257)
+ ),
+ StatementsNode(228...238)(
+ [CallNode(228...238)(
+ nil,
+ nil,
+ (228...231),
+ nil,
+ ArgumentsNode(232...238)(
+ [SymbolNode(232...234)((232...233), (233...234), nil, "a"),
+ SymbolNode(236...238)((236...237), (237...238), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ CallNode(263...278)(
+ nil,
+ nil,
+ (263...266),
+ (266...267),
+ ArgumentsNode(267...276)(
+ [SymbolNode(267...269)((267...268), (268...269), nil, "a"),
+ SymbolNode(274...276)((274...275), (275...276), nil, "b")]
+ ),
+ (277...278),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(280...290)(
+ nil,
+ nil,
+ (280...283),
+ (283...284),
+ ArgumentsNode(284...289)(
+ [SplatNode(284...289)(
+ (284...285),
+ CallNode(285...289)(
+ nil,
+ nil,
+ (285...289),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "rest"
+ )
+ )]
+ ),
+ (289...290),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(292...332)(
+ nil,
+ nil,
+ (292...295),
+ (295...296),
+ ArgumentsNode(296...331)(
+ [SymbolNode(296...298)((296...297), (297...298), nil, "a"),
+ KeywordHashNode(300...324)(
+ [AssocNode(300...314)(
+ SymbolNode(300...302)((300...301), (301...302), nil, "h"),
+ ArrayNode(306...314)(
+ [SymbolNode(307...309)((307...308), (308...309), nil, "x"),
+ SymbolNode(311...313)((311...312), (312...313), nil, "y")],
+ (306...307),
+ (313...314)
+ ),
+ (303...305)
+ ),
+ AssocNode(316...324)(
+ SymbolNode(316...318)((316...317), (317...318), nil, "a"),
+ SymbolNode(322...324)((322...323), (323...324), nil, "b"),
+ (319...321)
+ )]
+ ),
+ BlockArgumentNode(326...331)(
+ SymbolNode(327...331)((327...328), (328...331), nil, "bar"),
+ (326...327)
+ )]
+ ),
+ (331...332),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(334...383)(
+ nil,
+ nil,
+ (334...336),
+ nil,
+ ArgumentsNode(337...383)(
+ [IntegerNode(337...340)(),
+ HashNode(342...383)(
+ (342...343),
+ [AssocNode(344...361)(
+ SymbolNode(344...350)((344...345), (345...350), nil, "there"),
+ SymbolNode(354...361)((354...355), (355...361), nil, "friend"),
+ (351...353)
+ ),
+ AssocSplatNode(363...367)(
+ HashNode(365...367)((365...366), [], (366...367)),
+ (363...365)
+ ),
+ AssocNode(369...381)(
+ SymbolNode(369...376)(nil, (369...375), (375...376), "whatup"),
+ SymbolNode(377...381)((377...378), (378...381), nil, "dog"),
+ nil
+ )],
+ (382...383)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "hi"
+ ),
+ CallNode(385...421)(
+ nil,
+ nil,
+ (385...388),
+ nil,
+ ArgumentsNode(389...400)(
+ [SymbolNode(389...391)((389...390), (390...391), nil, "a"),
+ KeywordHashNode(393...400)(
+ [AssocNode(393...400)(
+ SymbolNode(393...395)(nil, (393...394), (394...395), "b"),
+ TrueNode(396...400)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ BlockNode(401...421)(
+ [:a, :b],
+ BlockParametersNode(404...410)(
+ ParametersNode(405...409)(
+ [RequiredParameterNode(405...406)(:a),
+ RequiredParameterNode(408...409)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (404...405),
+ (409...410)
+ ),
+ StatementsNode(411...417)(
+ [CallNode(411...417)(
+ nil,
+ nil,
+ (411...415),
+ nil,
+ ArgumentsNode(416...417)(
+ [LocalVariableReadNode(416...417)(:a, 0)]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ (401...403),
+ (418...421)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(423...440)(
+ nil,
+ nil,
+ (423...425),
+ nil,
+ ArgumentsNode(426...440)(
+ [KeywordHashNode(426...440)(
+ [AssocNode(426...440)(
+ SymbolNode(426...432)(nil, (426...431), (431...432), "there"),
+ SymbolNode(433...440)((433...434), (434...440), nil, "friend"),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "hi"
+ ),
+ CallNode(442...482)(
+ nil,
+ nil,
+ (442...444),
+ nil,
+ ArgumentsNode(445...482)(
+ [KeywordHashNode(445...482)(
+ [AssocNode(445...462)(
+ SymbolNode(445...451)((445...446), (446...451), nil, "there"),
+ SymbolNode(455...462)((455...456), (456...462), nil, "friend"),
+ (452...454)
+ ),
+ AssocSplatNode(464...468)(
+ HashNode(466...468)((466...467), [], (467...468)),
+ (464...466)
+ ),
+ AssocNode(470...482)(
+ SymbolNode(470...477)(nil, (470...476), (476...477), "whatup"),
+ SymbolNode(478...482)((478...479), (479...482), nil, "dog"),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "hi"
+ ),
+ CallNode(484...525)(
+ nil,
+ nil,
+ (484...486),
+ (486...487),
+ ArgumentsNode(487...524)(
+ [KeywordHashNode(487...524)(
+ [AssocNode(487...504)(
+ SymbolNode(487...493)((487...488), (488...493), nil, "there"),
+ SymbolNode(497...504)((497...498), (498...504), nil, "friend"),
+ (494...496)
+ ),
+ AssocSplatNode(506...510)(
+ HashNode(508...510)((508...509), [], (509...510)),
+ (506...508)
+ ),
+ AssocNode(512...524)(
+ SymbolNode(512...519)(nil, (512...518), (518...519), "whatup"),
+ SymbolNode(520...524)((520...521), (521...524), nil, "dog"),
+ nil
+ )]
+ )]
+ ),
+ (524...525),
+ nil,
+ 0,
+ "hi"
+ ),
+ CallNode(527...563)(
+ nil,
+ nil,
+ (527...530),
+ (530...531),
+ ArgumentsNode(531...562)(
+ [HashNode(531...553)(
+ (531...532),
+ [AssocNode(533...540)(
+ SymbolNode(533...535)(nil, (533...534), (534...535), "a"),
+ TrueNode(536...540)(),
+ nil
+ ),
+ AssocNode(542...550)(
+ SymbolNode(542...544)(nil, (542...543), (543...544), "b"),
+ FalseNode(545...550)(),
+ nil
+ )],
+ (552...553)
+ ),
+ BlockArgumentNode(555...562)(
+ SymbolNode(556...562)((556...557), (557...562), nil, "block"),
+ (555...556)
+ )]
+ ),
+ (562...563),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(565...585)(
+ nil,
+ nil,
+ (565...567),
+ nil,
+ ArgumentsNode(568...585)(
+ [KeywordHashNode(568...585)(
+ [AssocNode(568...585)(
+ SymbolNode(568...574)((568...569), (569...574), nil, "there"),
+ SymbolNode(578...585)((578...579), (579...585), nil, "friend"),
+ (575...577)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "hi"
+ ),
+ CallNode(587...600)(
+ nil,
+ nil,
+ (587...590),
+ (590...591),
+ ArgumentsNode(591...597)(
+ [SymbolNode(591...593)((591...592), (592...593), nil, "a"),
+ SymbolNode(595...597)((595...596), (596...597), nil, "b")]
+ ),
+ (599...600),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(602...619)(
+ nil,
+ nil,
+ (602...605),
+ (605...606),
+ ArgumentsNode(607...616)(
+ [SymbolNode(607...609)((607...608), (608...609), nil, "a"),
+ KeywordHashNode(611...616)(
+ [AssocNode(611...616)(
+ SymbolNode(611...613)(nil, (611...612), (612...613), "b"),
+ SymbolNode(614...616)((614...615), (615...616), nil, "c"),
+ nil
+ )]
+ )]
+ ),
+ (618...619),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(621...651)(
+ nil,
+ nil,
+ (621...624),
+ nil,
+ ArgumentsNode(625...651)(
+ [KeywordHashNode(625...642)(
+ [AssocNode(625...632)(
+ SymbolNode(625...627)(nil, (625...626), (626...627), "a"),
+ TrueNode(628...632)(),
+ nil
+ ),
+ AssocNode(634...642)(
+ SymbolNode(634...636)(nil, (634...635), (635...636), "b"),
+ FalseNode(637...642)(),
+ nil
+ )]
+ ),
+ BlockArgumentNode(644...651)(
+ SymbolNode(645...651)((645...646), (646...651), nil, "block"),
+ (644...645)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(653...674)(
+ nil,
+ nil,
+ (653...662),
+ nil,
+ ArgumentsNode(663...674)(
+ [IntegerNode(663...664)(),
+ KeywordHashNode(666...674)(
+ [AssocNode(666...674)(
+ SymbolNode(666...672)(nil, (666...671), (671...672), "kwarg"),
+ IntegerNode(673...674)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "some_func"
+ ),
+ CallNode(676...694)(
+ ConstantReadNode(676...682)(),
+ (682...683),
+ (683...690),
+ (690...691),
+ ArgumentsNode(691...693)([IntegerNode(691...693)()]),
+ (693...694),
+ nil,
+ 0,
+ "Integer"
+ ),
+ CallNode(696...706)(
+ CallNode(696...697)(nil, nil, (696...697), nil, nil, nil, nil, 0, "x"),
+ (697...698),
+ (698...702),
+ nil,
+ nil,
+ nil,
+ BlockNode(703...706)([], nil, nil, (703...704), (705...706)),
+ 0,
+ "each"
+ ),
+ CallNode(708...722)(
+ CallNode(708...711)(
+ nil,
+ nil,
+ (708...711),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (711...712),
+ (712...715),
+ nil,
+ nil,
+ nil,
+ BlockNode(716...722)(
+ [],
+ nil,
+ StatementsNode(718...720)([BackReferenceReadNode(718...720)()]),
+ (716...717),
+ (721...722)
+ ),
+ 0,
+ "map"
+ ),
+ CallNode(724...736)(
+ ConstantPathNode(724...728)(
+ ConstantReadNode(724...725)(),
+ ConstantReadNode(727...728)(),
+ (725...727)
+ ),
+ (728...730),
+ (730...731),
+ nil,
+ ArgumentsNode(732...736)(
+ [SymbolNode(732...736)((732...733), (733...736), nil, "foo")]
+ ),
+ nil,
+ nil,
+ 0,
+ "C"
+ ),
+ CallNode(738...751)(
+ ConstantPathNode(738...742)(
+ ConstantReadNode(738...739)(),
+ ConstantReadNode(741...742)(),
+ (739...741)
+ ),
+ (742...744),
+ (744...745),
+ (745...746),
+ ArgumentsNode(746...750)(
+ [SymbolNode(746...750)((746...747), (747...750), nil, "foo")]
+ ),
+ (750...751),
+ nil,
+ 0,
+ "C"
+ ),
+ CallNode(753...770)(
+ ConstantPathNode(753...757)(
+ ConstantReadNode(753...754)(),
+ ConstantReadNode(756...757)(),
+ (754...756)
+ ),
+ (757...759),
+ (759...760),
+ (760...761),
+ ArgumentsNode(761...765)(
+ [SymbolNode(761...765)((761...762), (762...765), nil, "foo")]
+ ),
+ (765...766),
+ BlockNode(767...770)([], nil, nil, (767...768), (769...770)),
+ 0,
+ "C"
+ ),
+ CallNode(772...784)(
+ nil,
+ nil,
+ (772...775),
+ (775...776),
+ ArgumentsNode(776...783)(
+ [KeywordHashNode(776...783)(
+ [AssocNode(776...783)(
+ SymbolNode(776...780)(
+ (776...777),
+ (777...778),
+ (778...780),
+ "a"
+ ),
+ CallNode(781...783)(
+ IntegerNode(782...783)(),
+ nil,
+ (781...782),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ nil
+ )]
+ )]
+ ),
+ (783...784),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(786...814)(
+ nil,
+ nil,
+ (786...789),
+ nil,
+ ArgumentsNode(790...814)(
+ [KeywordHashNode(790...814)(
+ [AssocNode(790...814)(
+ SymbolNode(790...794)(nil, (790...793), (793...794), "bar"),
+ HashNode(795...814)(
+ (795...796),
+ [AssocNode(797...812)(
+ SymbolNode(797...801)(
+ nil,
+ (797...800),
+ (800...801),
+ "baz"
+ ),
+ CallNode(802...812)(
+ nil,
+ nil,
+ (802...805),
+ nil,
+ nil,
+ nil,
+ BlockNode(806...812)(
+ [],
+ nil,
+ nil,
+ (806...808),
+ (809...812)
+ ),
+ 0,
+ "qux"
+ ),
+ nil
+ )],
+ (813...814)
+ ),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(816...840)(
+ nil,
+ nil,
+ (816...819),
+ nil,
+ ArgumentsNode(820...840)(
+ [KeywordHashNode(820...840)(
+ [AssocNode(820...840)(
+ SymbolNode(820...824)(nil, (820...823), (823...824), "bar"),
+ HashNode(825...840)(
+ (825...826),
+ [AssocSplatNode(827...838)(
+ CallNode(829...838)(
+ nil,
+ nil,
+ (829...831),
+ nil,
+ nil,
+ nil,
+ BlockNode(832...838)(
+ [],
+ nil,
+ nil,
+ (832...834),
+ (835...838)
+ ),
+ 0,
+ "kw"
+ ),
+ (827...829)
+ )],
+ (839...840)
+ ),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(842...878)(
+ nil,
+ nil,
+ (842...845),
+ nil,
+ ArgumentsNode(846...871)(
+ [InterpolatedStringNode(846...871)(
+ (846...847),
+ [EmbeddedStatementsNode(847...870)(
+ (847...849),
+ StatementsNode(849...869)(
+ [CallNode(849...869)(
+ CallNode(849...852)(
+ nil,
+ nil,
+ (849...852),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (852...853),
+ (853...856),
+ nil,
+ nil,
+ nil,
+ BlockNode(857...869)(
+ [],
+ nil,
+ StatementsNode(860...865)(
+ [StringNode(860...865)(
+ (860...861),
+ (861...864),
+ (864...865),
+ "baz"
+ )]
+ ),
+ (857...859),
+ (866...869)
+ ),
+ 0,
+ "map"
+ )]
+ ),
+ (869...870)
+ )],
+ (870...871)
+ )]
+ ),
+ nil,
+ BlockNode(872...878)([], nil, nil, (872...874), (875...878)),
+ 0,
+ "foo"
+ ),
+ CallNode(880...908)(
+ nil,
+ nil,
+ (880...883),
+ nil,
+ ArgumentsNode(884...908)(
+ [ClassNode(884...908)(
+ [],
+ (884...889),
+ ConstantReadNode(890...893)(),
+ nil,
+ nil,
+ StatementsNode(894...904)(
+ [CallNode(894...904)(
+ nil,
+ nil,
+ (894...897),
+ nil,
+ nil,
+ nil,
+ BlockNode(898...904)([], nil, nil, (898...900), (901...904)),
+ 0,
+ "baz"
+ )]
+ ),
+ (905...908)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(910...939)(
+ nil,
+ nil,
+ (910...913),
+ nil,
+ ArgumentsNode(914...939)(
+ [ModuleNode(914...939)(
+ [],
+ (914...920),
+ ConstantReadNode(921...924)(),
+ StatementsNode(925...935)(
+ [CallNode(925...935)(
+ nil,
+ nil,
+ (925...928),
+ nil,
+ nil,
+ nil,
+ BlockNode(929...935)([], nil, nil, (929...931), (932...935)),
+ 0,
+ "baz"
+ )]
+ ),
+ (936...939)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(941...957)(
+ nil,
+ nil,
+ (941...944),
+ nil,
+ ArgumentsNode(945...957)(
+ [ArrayNode(945...957)(
+ [CallNode(946...956)(
+ nil,
+ nil,
+ (946...949),
+ nil,
+ nil,
+ nil,
+ BlockNode(950...956)([], nil, nil, (950...952), (953...956)),
+ 0,
+ "baz"
+ )],
+ (945...946),
+ (956...957)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(959...987)(
+ nil,
+ nil,
+ (959...960),
+ nil,
+ ArgumentsNode(961...987)(
+ [BeginNode(961...987)(
+ (961...966),
+ StatementsNode(967...983)(
+ [CallNode(967...983)(
+ IntegerNode(967...968)(),
+ (968...969),
+ (969...974),
+ nil,
+ nil,
+ nil,
+ BlockNode(975...983)(
+ [],
+ nil,
+ StatementsNode(978...979)([IntegerNode(978...979)()]),
+ (975...977),
+ (980...983)
+ ),
+ 0,
+ "times"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (984...987)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(989...1040)(
+ nil,
+ nil,
+ (989...992),
+ nil,
+ ArgumentsNode(993...1040)(
+ [SymbolNode(993...995)((993...994), (994...995), nil, "a"),
+ IfNode(999...1040)(
+ (999...1001),
+ CallNode(1002...1003)(
+ nil,
+ nil,
+ (1002...1003),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ StatementsNode(1008...1034)(
+ [CallNode(1008...1034)(
+ nil,
+ nil,
+ (1008...1011),
+ nil,
+ nil,
+ nil,
+ BlockNode(1012...1034)(
+ [:a],
+ BlockParametersNode(1015...1018)(
+ ParametersNode(1016...1017)(
+ [RequiredParameterNode(1016...1017)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (1015...1016),
+ (1017...1018)
+ ),
+ StatementsNode(1025...1026)(
+ [LocalVariableReadNode(1025...1026)(:a, 0)]
+ ),
+ (1012...1014),
+ (1031...1034)
+ ),
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ (1037...1040)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(1042...1132)(
+ nil,
+ nil,
+ (1042...1045),
+ nil,
+ ArgumentsNode(1046...1132)(
+ [SymbolNode(1046...1048)((1046...1047), (1047...1048), nil, "a"),
+ WhileNode(1052...1096)(
+ (1052...1057),
+ CallNode(1058...1059)(
+ nil,
+ nil,
+ (1058...1059),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ StatementsNode(1064...1090)(
+ [CallNode(1064...1090)(
+ nil,
+ nil,
+ (1064...1067),
+ nil,
+ nil,
+ nil,
+ BlockNode(1068...1090)(
+ [:a],
+ BlockParametersNode(1071...1074)(
+ ParametersNode(1072...1073)(
+ [RequiredParameterNode(1072...1073)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (1071...1072),
+ (1073...1074)
+ ),
+ StatementsNode(1081...1082)(
+ [LocalVariableReadNode(1081...1082)(:a, 0)]
+ ),
+ (1068...1070),
+ (1087...1090)
+ ),
+ 0,
+ "bar"
+ )]
+ )
+ ),
+ UntilNode(1100...1132)(
+ (1100...1105),
+ CallNode(1106...1107)(
+ nil,
+ nil,
+ (1106...1107),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ StatementsNode(1112...1126)(
+ [CallNode(1112...1126)(
+ nil,
+ nil,
+ (1112...1115),
+ nil,
+ nil,
+ nil,
+ BlockNode(1116...1126)(
+ [],
+ nil,
+ nil,
+ (1116...1118),
+ (1123...1126)
+ ),
+ 0,
+ "baz"
+ )]
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(1134...1143)(
+ HashNode(1134...1136)((1134...1135), [], (1135...1136)),
+ nil,
+ (1137...1138),
+ nil,
+ ArgumentsNode(1139...1143)(
+ [CallNode(1139...1143)(
+ nil,
+ nil,
+ (1139...1140),
+ nil,
+ nil,
+ nil,
+ BlockNode(1141...1143)([], nil, nil, (1141...1142), (1142...1143)),
+ 0,
+ "A"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ CallNode(1145...1161)(
+ HashNode(1145...1147)((1145...1146), [], (1146...1147)),
+ nil,
+ (1148...1149),
+ nil,
+ ArgumentsNode(1150...1161)(
+ [CallNode(1150...1161)(
+ nil,
+ nil,
+ (1150...1151),
+ nil,
+ nil,
+ nil,
+ BlockNode(1152...1161)(
+ [:a],
+ BlockParametersNode(1154...1157)(
+ ParametersNode(1155...1156)(
+ [RequiredParameterNode(1155...1156)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (1154...1155),
+ (1156...1157)
+ ),
+ StatementsNode(1158...1159)(
+ [LocalVariableReadNode(1158...1159)(:a, 0)]
+ ),
+ (1152...1153),
+ (1160...1161)
+ ),
+ 0,
+ "A"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ CallNode(1163...1174)(
+ CallNode(1163...1167)(
+ nil,
+ nil,
+ (1163...1164),
+ nil,
+ nil,
+ nil,
+ BlockNode(1165...1167)([], nil, nil, (1165...1166), (1166...1167)),
+ 0,
+ "A"
+ ),
+ nil,
+ (1168...1169),
+ nil,
+ ArgumentsNode(1170...1174)(
+ [CallNode(1170...1174)(
+ nil,
+ nil,
+ (1170...1171),
+ nil,
+ nil,
+ nil,
+ BlockNode(1172...1174)([], nil, nil, (1172...1173), (1173...1174)),
+ 0,
+ "A"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ CallNode(1176...1187)(
+ CallNode(1176...1179)(
+ nil,
+ nil,
+ (1176...1179),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "lst"
+ ),
+ nil,
+ (1180...1182),
+ nil,
+ ArgumentsNode(1183...1187)(
+ [CallNode(1183...1187)(
+ nil,
+ nil,
+ (1183...1184),
+ nil,
+ nil,
+ nil,
+ BlockNode(1185...1187)([], nil, nil, (1185...1186), (1186...1187)),
+ 0,
+ "A"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "<<"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/methods.txt b/test/yarp/snapshots/methods.txt
new file mode 100644
index 0000000000..83bc7e3c5c
--- /dev/null
+++ b/test/yarp/snapshots/methods.txt
@@ -0,0 +1,1406 @@
+ProgramNode(0...1194)(
+ [:a, :c],
+ StatementsNode(0...1194)(
+ [DefNode(0...23)(
+ (4...7),
+ nil,
+ ParametersNode(8...18)(
+ [RequiredDestructuredParameterNode(8...18)(
+ [RequiredParameterNode(9...12)(:bar),
+ RequiredParameterNode(14...17)(:baz)],
+ (8...9),
+ (17...18)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar, :baz],
+ (0...3),
+ nil,
+ (7...8),
+ (18...19),
+ nil,
+ (20...23)
+ ),
+ DefNode(25...74)(
+ (29...32),
+ nil,
+ ParametersNode(33...69)(
+ [RequiredDestructuredParameterNode(33...43)(
+ [RequiredParameterNode(34...37)(:bar),
+ RequiredParameterNode(39...42)(:baz)],
+ (33...34),
+ (42...43)
+ )],
+ [OptionalParameterNode(45...57)(
+ :optional,
+ (45...53),
+ (54...55),
+ IntegerNode(56...57)()
+ )],
+ [RequiredDestructuredParameterNode(59...69)(
+ [RequiredParameterNode(60...63)(:bin),
+ RequiredParameterNode(65...68)(:bag)],
+ (59...60),
+ (68...69)
+ )],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar, :baz, :optional, :bin, :bag],
+ (25...28),
+ nil,
+ (32...33),
+ (69...70),
+ nil,
+ (71...74)
+ ),
+ DefNode(77...95)(
+ (81...82),
+ nil,
+ nil,
+ BeginNode(84...95)(
+ nil,
+ nil,
+ nil,
+ nil,
+ EnsureNode(84...95)((84...90), nil, (92...95)),
+ (92...95)
+ ),
+ [],
+ (77...80),
+ nil,
+ nil,
+ nil,
+ nil,
+ (92...95)
+ ),
+ DefNode(97...110)(
+ (105...106),
+ ParenthesesNode(101...104)(
+ CallNode(102...103)(
+ nil,
+ nil,
+ (102...103),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (101...102),
+ (103...104)
+ ),
+ nil,
+ nil,
+ [],
+ (97...100),
+ (104...105),
+ nil,
+ nil,
+ nil,
+ (107...110)
+ ),
+ DefNode(112...126)(
+ (121...122),
+ ParenthesesNode(116...119)(
+ CallNode(117...118)(
+ nil,
+ nil,
+ (117...118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (116...117),
+ (118...119)
+ ),
+ nil,
+ nil,
+ [],
+ (112...115),
+ (119...121),
+ nil,
+ nil,
+ nil,
+ (123...126)
+ ),
+ DefNode(128...143)(
+ (138...139),
+ FalseNode(132...137)(),
+ nil,
+ nil,
+ [],
+ (128...131),
+ (137...138),
+ nil,
+ nil,
+ nil,
+ (140...143)
+ ),
+ DefNode(145...159)(
+ (149...150),
+ nil,
+ ParametersNode(151...154)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(151...154)(),
+ nil
+ ),
+ nil,
+ [:"..."],
+ (145...148),
+ nil,
+ (150...151),
+ (154...155),
+ nil,
+ (156...159)
+ ),
+ DefNode(161...175)(
+ (170...171),
+ GlobalVariableReadNode(165...169)(),
+ nil,
+ nil,
+ [],
+ (161...164),
+ (169...170),
+ nil,
+ nil,
+ nil,
+ (172...175)
+ ),
+ DefNode(177...188)(
+ (183...184),
+ CallNode(181...182)(nil, nil, (181...182), nil, nil, nil, nil, 0, "a"),
+ nil,
+ nil,
+ [],
+ (177...180),
+ (182...183),
+ nil,
+ nil,
+ nil,
+ (185...188)
+ ),
+ DefNode(190...204)(
+ (199...200),
+ InstanceVariableReadNode(194...198)(),
+ nil,
+ nil,
+ [],
+ (190...193),
+ (198...199),
+ nil,
+ nil,
+ nil,
+ (201...204)
+ ),
+ DefNode(206...219)(
+ (210...211),
+ nil,
+ ParametersNode(212...214)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(212...214)((212...214), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:b],
+ (206...209),
+ nil,
+ nil,
+ nil,
+ nil,
+ (216...219)
+ ),
+ StringNode(221...227)((221...223), (223...226), (226...227), "abc"),
+ DefNode(229...242)(
+ (233...234),
+ nil,
+ ParametersNode(235...237)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(235...237)((235...237), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:b],
+ (229...232),
+ nil,
+ (234...235),
+ (237...238),
+ nil,
+ (239...242)
+ ),
+ DefNode(244...258)(
+ (248...249),
+ nil,
+ ParametersNode(250...253)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(250...253)((250...252), (252...253)),
+ nil
+ ),
+ nil,
+ [:b],
+ (244...247),
+ nil,
+ (249...250),
+ (253...254),
+ nil,
+ (255...258)
+ ),
+ DefNode(260...273)(
+ (264...265),
+ nil,
+ ParametersNode(266...268)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(266...268)((266...268), nil),
+ nil
+ ),
+ nil,
+ [:**],
+ (260...263),
+ nil,
+ (265...266),
+ (268...269),
+ nil,
+ (270...273)
+ ),
+ LocalVariableWriteNode(275...280)(
+ :a,
+ 0,
+ IntegerNode(279...280)(),
+ (275...276),
+ (277...278)
+ ),
+ DefNode(282...291)(
+ (286...287),
+ nil,
+ nil,
+ nil,
+ [],
+ (282...285),
+ nil,
+ nil,
+ nil,
+ nil,
+ (288...291)
+ ),
+ DefNode(293...310)(
+ (297...298),
+ nil,
+ ParametersNode(299...306)(
+ [RequiredParameterNode(299...300)(:b),
+ RequiredParameterNode(302...303)(:c),
+ RequiredParameterNode(305...306)(:d)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :c, :d],
+ (293...296),
+ nil,
+ nil,
+ nil,
+ nil,
+ (307...310)
+ ),
+ DefNode(312...325)(
+ (320...321),
+ NilNode(316...319)(),
+ nil,
+ nil,
+ [],
+ (312...315),
+ (319...320),
+ nil,
+ nil,
+ nil,
+ (322...325)
+ ),
+ DefNode(327...345)(
+ (331...332),
+ nil,
+ ParametersNode(333...341)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(333...335)((333...335), nil),
+ KeywordParameterNode(337...341)(
+ (337...339),
+ IntegerNode(340...341)()
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :c],
+ (327...330),
+ nil,
+ nil,
+ nil,
+ nil,
+ (342...345)
+ ),
+ DefNode(347...366)(
+ (351...352),
+ nil,
+ ParametersNode(353...361)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(353...355)((353...355), nil),
+ KeywordParameterNode(357...361)(
+ (357...359),
+ IntegerNode(360...361)()
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :c],
+ (347...350),
+ nil,
+ (352...353),
+ (361...362),
+ nil,
+ (363...366)
+ ),
+ DefNode(368...389)(
+ (372...373),
+ nil,
+ ParametersNode(374...384)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(374...380)(
+ (374...376),
+ IntegerNode(379...380)()
+ ),
+ KeywordParameterNode(382...384)((382...384), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :c],
+ (368...371),
+ nil,
+ (373...374),
+ (384...385),
+ nil,
+ (386...389)
+ ),
+ StringNode(391...397)((391...393), (393...396), (396...397), "abc"),
+ DefNode(399...421)(
+ (403...404),
+ nil,
+ ParametersNode(405...417)(
+ [],
+ [OptionalParameterNode(405...410)(
+ :b,
+ (405...406),
+ (407...408),
+ IntegerNode(409...410)()
+ ),
+ OptionalParameterNode(412...417)(
+ :c,
+ (412...413),
+ (414...415),
+ IntegerNode(416...417)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :c],
+ (399...402),
+ nil,
+ nil,
+ nil,
+ nil,
+ (418...421)
+ ),
+ DefNode(423...434)(
+ (427...428),
+ nil,
+ nil,
+ nil,
+ [],
+ (423...426),
+ nil,
+ (428...429),
+ (429...430),
+ nil,
+ (431...434)
+ ),
+ DefNode(436...454)(
+ (440...441),
+ nil,
+ ParametersNode(442...450)(
+ [RequiredParameterNode(442...443)(:b)],
+ [OptionalParameterNode(445...450)(
+ :c,
+ (445...446),
+ (447...448),
+ IntegerNode(449...450)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:b, :c],
+ (436...439),
+ nil,
+ nil,
+ nil,
+ nil,
+ (451...454)
+ ),
+ DefNode(456...467)(
+ (460...461),
+ nil,
+ ParametersNode(462...463)(
+ [RequiredParameterNode(462...463)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:b],
+ (456...459),
+ nil,
+ nil,
+ nil,
+ nil,
+ (464...467)
+ ),
+ DefNode(469...501)(
+ (473...474),
+ nil,
+ nil,
+ BeginNode(476...501)(
+ nil,
+ nil,
+ RescueNode(476...482)((476...482), [], nil, nil, nil, nil),
+ ElseNode(484...496)((484...488), nil, (490...496)),
+ EnsureNode(490...501)((490...496), nil, (498...501)),
+ (498...501)
+ ),
+ [],
+ (469...472),
+ nil,
+ nil,
+ nil,
+ nil,
+ (498...501)
+ ),
+ DefNode(503...515)(
+ (507...508),
+ nil,
+ ParametersNode(509...511)(
+ [],
+ [],
+ [],
+ RestParameterNode(509...511)((509...510), (510...511)),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:b],
+ (503...506),
+ nil,
+ nil,
+ nil,
+ nil,
+ (512...515)
+ ),
+ DefNode(517...529)(
+ (521...522),
+ nil,
+ ParametersNode(523...524)(
+ [],
+ [],
+ [],
+ RestParameterNode(523...524)((523...524), nil),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:*],
+ (517...520),
+ nil,
+ (522...523),
+ (524...525),
+ nil,
+ (526...529)
+ ),
+ DefNode(531...546)(
+ (535...536),
+ nil,
+ nil,
+ StatementsNode(537...542)(
+ [LocalVariableWriteNode(537...542)(
+ :b,
+ 0,
+ IntegerNode(541...542)(),
+ (537...538),
+ (539...540)
+ )]
+ ),
+ [:b],
+ (531...534),
+ nil,
+ nil,
+ nil,
+ nil,
+ (543...546)
+ ),
+ DefNode(548...562)(
+ (557...558),
+ SelfNode(552...556)(),
+ nil,
+ nil,
+ [],
+ (548...551),
+ (556...557),
+ nil,
+ nil,
+ nil,
+ (559...562)
+ ),
+ DefNode(564...578)(
+ (573...574),
+ TrueNode(568...572)(),
+ nil,
+ nil,
+ [],
+ (564...567),
+ (572...573),
+ nil,
+ nil,
+ nil,
+ (575...578)
+ ),
+ DefNode(580...589)(
+ (584...585),
+ nil,
+ nil,
+ nil,
+ [],
+ (580...583),
+ nil,
+ nil,
+ nil,
+ nil,
+ (586...589)
+ ),
+ DefNode(591...625)(
+ (595...597),
+ nil,
+ nil,
+ StatementsNode(598...621)(
+ [IfNode(598...616)(
+ (609...611),
+ TrueNode(612...616)(),
+ StatementsNode(598...608)(
+ [ReturnNode(598...608)(
+ (598...604),
+ ArgumentsNode(605...608)(
+ [SymbolNode(605...608)((605...606), (606...608), nil, "hi")]
+ )
+ )]
+ ),
+ nil,
+ nil
+ ),
+ SymbolNode(617...621)((617...618), (618...621), nil, "bye")]
+ ),
+ [],
+ (591...594),
+ nil,
+ nil,
+ nil,
+ nil,
+ (622...625)
+ ),
+ DefNode(627...638)(
+ (631...634),
+ nil,
+ nil,
+ StatementsNode(637...638)([IntegerNode(637...638)()]),
+ [],
+ (627...630),
+ nil,
+ nil,
+ nil,
+ (635...636),
+ nil
+ ),
+ DefNode(639...650)(
+ (643...646),
+ nil,
+ nil,
+ StatementsNode(649...650)([IntegerNode(649...650)()]),
+ [],
+ (639...642),
+ nil,
+ nil,
+ nil,
+ (647...648),
+ nil
+ ),
+ DefNode(652...670)(
+ (656...659),
+ nil,
+ ParametersNode(660...663)(
+ [RequiredParameterNode(660...663)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(667...670)([IntegerNode(667...670)()]),
+ [:bar],
+ (652...655),
+ nil,
+ (659...660),
+ (663...664),
+ (665...666),
+ nil
+ ),
+ DefNode(672...685)(
+ (676...679),
+ nil,
+ nil,
+ StatementsNode(682...685)([IntegerNode(682...685)()]),
+ [],
+ (672...675),
+ nil,
+ nil,
+ nil,
+ (680...681),
+ nil
+ ),
+ DefNode(687...706)(
+ (691...692),
+ nil,
+ ParametersNode(693...694)(
+ [],
+ [],
+ [],
+ RestParameterNode(693...694)((693...694), nil),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(697...701)(
+ [CallNode(697...701)(
+ nil,
+ nil,
+ (697...698),
+ (698...699),
+ ArgumentsNode(699...700)([SplatNode(699...700)((699...700), nil)]),
+ (700...701),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:*],
+ (687...690),
+ nil,
+ (692...693),
+ (694...695),
+ nil,
+ (703...706)
+ ),
+ DefNode(708...731)(
+ (712...713),
+ nil,
+ ParametersNode(714...717)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(714...717)(),
+ nil
+ ),
+ StatementsNode(720...726)(
+ [CallNode(720...726)(
+ nil,
+ nil,
+ (720...721),
+ (721...722),
+ ArgumentsNode(722...725)([ForwardingArgumentsNode(722...725)()]),
+ (725...726),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:"..."],
+ (708...711),
+ nil,
+ (713...714),
+ (717...718),
+ nil,
+ (728...731)
+ ),
+ DefNode(733...762)(
+ (737...738),
+ nil,
+ ParametersNode(739...742)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(739...742)(),
+ nil
+ ),
+ StatementsNode(745...757)(
+ [CallNode(745...757)(
+ nil,
+ nil,
+ (745...746),
+ (746...747),
+ ArgumentsNode(747...756)(
+ [IntegerNode(747...748)(),
+ IntegerNode(750...751)(),
+ ForwardingArgumentsNode(753...756)()]
+ ),
+ (756...757),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:"..."],
+ (733...736),
+ nil,
+ (738...739),
+ (742...743),
+ nil,
+ (759...762)
+ ),
+ DefNode(764...781)(
+ (776...777),
+ ParenthesesNode(768...775)(
+ LocalVariableWriteNode(769...774)(
+ :c,
+ 0,
+ CallNode(773...774)(
+ nil,
+ nil,
+ (773...774),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (769...770),
+ (771...772)
+ ),
+ (768...769),
+ (774...775)
+ ),
+ nil,
+ nil,
+ [],
+ (764...767),
+ (775...776),
+ nil,
+ nil,
+ nil,
+ (778...781)
+ ),
+ DefNode(783...795)(
+ (787...788),
+ nil,
+ ParametersNode(789...791)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(789...791)((790...791), (789...790))
+ ),
+ nil,
+ [:b],
+ (783...786),
+ nil,
+ nil,
+ nil,
+ nil,
+ (792...795)
+ ),
+ DefNode(797...809)(
+ (801...802),
+ nil,
+ ParametersNode(803...804)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(803...804)(nil, (803...804))
+ ),
+ nil,
+ [:&],
+ (797...800),
+ nil,
+ (802...803),
+ (804...805),
+ nil,
+ (806...809)
+ ),
+ DefNode(811...826)(
+ (821...822),
+ ClassVariableReadNode(815...820)(),
+ nil,
+ nil,
+ [],
+ (811...814),
+ (820...821),
+ nil,
+ nil,
+ nil,
+ (823...826)
+ ),
+ DefNode(828...845)(
+ (840...841),
+ ParenthesesNode(832...839)(
+ LocalVariableWriteNode(833...838)(
+ :a,
+ 0,
+ CallNode(837...838)(
+ nil,
+ nil,
+ (837...838),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (833...834),
+ (835...836)
+ ),
+ (832...833),
+ (838...839)
+ ),
+ nil,
+ nil,
+ [],
+ (828...831),
+ (839...840),
+ nil,
+ nil,
+ nil,
+ (842...845)
+ ),
+ DefNode(847...875)(
+ (856...870),
+ SelfNode(851...855)(),
+ nil,
+ nil,
+ [],
+ (847...850),
+ (855...856),
+ nil,
+ nil,
+ nil,
+ (872...875)
+ ),
+ ConstantPathWriteNode(877...886)(
+ ConstantReadNode(877...882)(),
+ (883...884),
+ IntegerNode(885...886)()
+ ),
+ DefNode(888...903)(
+ (898...899),
+ ConstantReadNode(892...897)(),
+ nil,
+ nil,
+ [],
+ (888...891),
+ (897...898),
+ nil,
+ nil,
+ nil,
+ (900...903)
+ ),
+ DefNode(905...936)(
+ (909...910),
+ nil,
+ ParametersNode(911...914)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(911...914)(),
+ nil
+ ),
+ StatementsNode(917...931)(
+ [InterpolatedStringNode(917...931)(
+ (917...918),
+ [StringNode(918...921)(nil, (918...921), nil, "foo"),
+ EmbeddedStatementsNode(921...930)(
+ (921...923),
+ StatementsNode(923...929)(
+ [CallNode(923...929)(
+ nil,
+ nil,
+ (923...924),
+ (924...925),
+ ArgumentsNode(925...928)(
+ [ForwardingArgumentsNode(925...928)()]
+ ),
+ (928...929),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (929...930)
+ )],
+ (930...931)
+ )]
+ ),
+ [:"..."],
+ (905...908),
+ nil,
+ (910...911),
+ (914...915),
+ nil,
+ (933...936)
+ ),
+ DefNode(938...980)(
+ (942...945),
+ nil,
+ nil,
+ StatementsNode(948...976)(
+ [CallNode(948...976)(
+ HashNode(948...950)((948...949), [], (949...950)),
+ (950...951),
+ (951...956),
+ nil,
+ ArgumentsNode(957...976)(
+ [KeywordHashNode(957...976)(
+ [AssocSplatNode(957...962)(
+ CallNode(959...962)(
+ nil,
+ nil,
+ (959...962),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (957...959)
+ ),
+ AssocSplatNode(964...969)(
+ CallNode(966...969)(
+ nil,
+ nil,
+ (966...969),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (964...966)
+ ),
+ AssocSplatNode(971...976)(
+ CallNode(973...976)(
+ nil,
+ nil,
+ (973...976),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "qux"
+ ),
+ (971...973)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "merge"
+ )]
+ ),
+ [],
+ (938...941),
+ nil,
+ nil,
+ nil,
+ nil,
+ (977...980)
+ ),
+ DefNode(982...1006)(
+ (986...989),
+ nil,
+ ParametersNode(990...1001)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(990...1001)(
+ (990...992),
+ ParenthesesNode(993...1001)(
+ StatementsNode(994...1000)(
+ [RangeNode(994...1000)(
+ IntegerNode(994...995)(),
+ IntegerNode(998...1000)(),
+ (995...998),
+ 1
+ )]
+ ),
+ (993...994),
+ (1000...1001)
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (982...985),
+ nil,
+ (989...990),
+ (1001...1002),
+ nil,
+ (1003...1006)
+ ),
+ DefNode(1008...1031)(
+ (1012...1015),
+ nil,
+ ParametersNode(1016...1026)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(1016...1026)(
+ (1016...1018),
+ ParenthesesNode(1019...1026)(
+ StatementsNode(1020...1025)(
+ [RangeNode(1020...1025)(
+ nil,
+ IntegerNode(1023...1025)(),
+ (1020...1023),
+ 1
+ )]
+ ),
+ (1019...1020),
+ (1025...1026)
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (1008...1011),
+ nil,
+ (1015...1016),
+ (1026...1027),
+ nil,
+ (1028...1031)
+ ),
+ DefNode(1033...1055)(
+ (1037...1040),
+ nil,
+ ParametersNode(1041...1050)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(1041...1050)(
+ (1041...1043),
+ ParenthesesNode(1044...1050)(
+ StatementsNode(1045...1049)(
+ [RangeNode(1045...1049)(
+ IntegerNode(1045...1046)(),
+ nil,
+ (1046...1049),
+ 1
+ )]
+ ),
+ (1044...1045),
+ (1049...1050)
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (1033...1036),
+ nil,
+ (1040...1041),
+ (1050...1051),
+ nil,
+ (1052...1055)
+ ),
+ DefNode(1057...1082)(
+ (1061...1064),
+ nil,
+ ParametersNode(1065...1077)(
+ [],
+ [OptionalParameterNode(1065...1077)(
+ :a,
+ (1065...1066),
+ (1067...1068),
+ ParenthesesNode(1069...1077)(
+ StatementsNode(1070...1076)(
+ [RangeNode(1070...1076)(
+ IntegerNode(1070...1071)(),
+ IntegerNode(1074...1076)(),
+ (1071...1074),
+ 1
+ )]
+ ),
+ (1069...1070),
+ (1076...1077)
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (1057...1060),
+ nil,
+ (1064...1065),
+ (1077...1078),
+ nil,
+ (1079...1082)
+ ),
+ DefNode(1084...1108)(
+ (1088...1091),
+ nil,
+ ParametersNode(1092...1103)(
+ [],
+ [OptionalParameterNode(1092...1103)(
+ :a,
+ (1092...1093),
+ (1094...1095),
+ ParenthesesNode(1096...1103)(
+ StatementsNode(1097...1102)(
+ [RangeNode(1097...1102)(
+ nil,
+ IntegerNode(1100...1102)(),
+ (1097...1100),
+ 1
+ )]
+ ),
+ (1096...1097),
+ (1102...1103)
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (1084...1087),
+ nil,
+ (1091...1092),
+ (1103...1104),
+ nil,
+ (1105...1108)
+ ),
+ DefNode(1110...1133)(
+ (1114...1117),
+ nil,
+ ParametersNode(1118...1128)(
+ [],
+ [OptionalParameterNode(1118...1128)(
+ :a,
+ (1118...1119),
+ (1120...1121),
+ ParenthesesNode(1122...1128)(
+ StatementsNode(1123...1127)(
+ [RangeNode(1123...1127)(
+ IntegerNode(1123...1124)(),
+ nil,
+ (1124...1127),
+ 1
+ )]
+ ),
+ (1122...1123),
+ (1127...1128)
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (1110...1113),
+ nil,
+ (1117...1118),
+ (1128...1129),
+ nil,
+ (1130...1133)
+ ),
+ DefNode(1135...1167)(
+ (1139...1145),
+ nil,
+ ParametersNode(1146...1147)(
+ [RequiredParameterNode(1146...1147)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(1151...1163)(
+ [CallNode(1151...1163)(
+ CallNode(1151...1155)(
+ nil,
+ nil,
+ (1151...1155),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "item"
+ ),
+ nil,
+ (1156...1158),
+ nil,
+ ArgumentsNode(1159...1163)(
+ [CallNode(1159...1163)(
+ nil,
+ nil,
+ (1159...1160),
+ nil,
+ nil,
+ nil,
+ BlockNode(1161...1163)(
+ [],
+ nil,
+ nil,
+ (1161...1162),
+ (1162...1163)
+ ),
+ 0,
+ "a"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ ">>"
+ )]
+ ),
+ [:a],
+ (1135...1138),
+ nil,
+ (1145...1146),
+ (1147...1148),
+ nil,
+ (1164...1167)
+ ),
+ DefNode(1169...1194)(
+ (1173...1176),
+ nil,
+ ParametersNode(1177...1189)(
+ [RequiredParameterNode(1177...1179)(:_a),
+ RequiredParameterNode(1181...1183)(:_a),
+ RequiredParameterNode(1185...1186)(:b),
+ RequiredParameterNode(1188...1189)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:_a, :b, :c],
+ (1169...1172),
+ nil,
+ (1176...1177),
+ (1189...1190),
+ nil,
+ (1191...1194)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/modules.txt b/test/yarp/snapshots/modules.txt
new file mode 100644
index 0000000000..432d4c9916
--- /dev/null
+++ b/test/yarp/snapshots/modules.txt
@@ -0,0 +1,125 @@
+ProgramNode(0...140)(
+ [],
+ StatementsNode(0...140)(
+ [ModuleNode(0...18)(
+ [:a],
+ (0...6),
+ ConstantReadNode(7...8)(),
+ StatementsNode(9...14)(
+ [LocalVariableWriteNode(9...14)(
+ :a,
+ 0,
+ IntegerNode(13...14)(),
+ (9...10),
+ (11...12)
+ )]
+ ),
+ (15...18)
+ ),
+ InterpolatedStringNode(20...38)(
+ (20...23),
+ [StringNode(23...27)(nil, (23...27), nil, "aaa "),
+ EmbeddedStatementsNode(27...33)(
+ (27...29),
+ StatementsNode(29...32)(
+ [CallNode(29...32)(
+ nil,
+ nil,
+ (29...32),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bbb"
+ )]
+ ),
+ (32...33)
+ ),
+ StringNode(33...37)(nil, (33...37), nil, " ccc")],
+ (37...38)
+ ),
+ ModuleNode(40...55)(
+ [],
+ (40...46),
+ ConstantPathNode(47...51)(
+ CallNode(47...48)(nil, nil, (47...48), nil, nil, nil, nil, 0, "m"),
+ ConstantReadNode(50...51)(),
+ (48...50)
+ ),
+ nil,
+ (52...55)
+ ),
+ ModuleNode(57...85)(
+ [:x],
+ (57...63),
+ ConstantReadNode(64...65)(),
+ BeginNode(67...85)(
+ nil,
+ StatementsNode(67...72)(
+ [LocalVariableWriteNode(67...72)(
+ :x,
+ 0,
+ IntegerNode(71...72)(),
+ (67...68),
+ (69...70)
+ )]
+ ),
+ RescueNode(74...80)((74...80), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (82...85)
+ ),
+ (82...85)
+ ),
+ ModuleNode(87...101)(
+ [],
+ (87...93),
+ ConstantPathNode(94...97)(nil, ConstantReadNode(96...97)(), (94...96)),
+ nil,
+ (98...101)
+ ),
+ ModuleNode(103...120)(
+ [],
+ (103...109),
+ ConstantPathNode(110...116)(
+ CallNode(110...113)(
+ ConstantReadNode(110...111)(),
+ nil,
+ (111...113),
+ (111...112),
+ nil,
+ (112...113),
+ nil,
+ 0,
+ "[]"
+ ),
+ ConstantReadNode(115...116)(),
+ (113...115)
+ ),
+ nil,
+ (117...120)
+ ),
+ ModuleNode(122...140)(
+ [],
+ (122...128),
+ ConstantPathNode(129...136)(
+ CallNode(129...133)(
+ ConstantReadNode(129...130)(),
+ nil,
+ (130...133),
+ (130...131),
+ ArgumentsNode(131...132)([IntegerNode(131...132)()]),
+ (132...133),
+ nil,
+ 0,
+ "[]"
+ ),
+ ConstantReadNode(135...136)(),
+ (133...135)
+ ),
+ nil,
+ (137...140)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/next.txt b/test/yarp/snapshots/next.txt
new file mode 100644
index 0000000000..533cf33bb8
--- /dev/null
+++ b/test/yarp/snapshots/next.txt
@@ -0,0 +1,88 @@
+ProgramNode(0...118)(
+ [],
+ StatementsNode(0...118)(
+ [NextNode(0...4)(nil, (0...4)),
+ NextNode(6...24)(
+ ArgumentsNode(11...24)(
+ [ParenthesesNode(11...14)(
+ StatementsNode(12...13)([IntegerNode(12...13)()]),
+ (11...12),
+ (13...14)
+ ),
+ ParenthesesNode(16...19)(
+ StatementsNode(17...18)([IntegerNode(17...18)()]),
+ (16...17),
+ (18...19)
+ ),
+ ParenthesesNode(21...24)(
+ StatementsNode(22...23)([IntegerNode(22...23)()]),
+ (21...22),
+ (23...24)
+ )]
+ ),
+ (6...10)
+ ),
+ NextNode(26...32)(
+ ArgumentsNode(31...32)([IntegerNode(31...32)()]),
+ (26...30)
+ ),
+ NextNode(34...46)(
+ ArgumentsNode(39...46)(
+ [IntegerNode(39...40)(),
+ IntegerNode(42...43)(),
+ IntegerNode(45...46)()]
+ ),
+ (34...38)
+ ),
+ NextNode(48...60)(
+ ArgumentsNode(53...60)(
+ [IntegerNode(53...54)(),
+ IntegerNode(56...57)(),
+ IntegerNode(59...60)()]
+ ),
+ (48...52)
+ ),
+ NextNode(62...76)(
+ ArgumentsNode(67...76)(
+ [ArrayNode(67...76)(
+ [IntegerNode(68...69)(),
+ IntegerNode(71...72)(),
+ IntegerNode(74...75)()],
+ (67...68),
+ (75...76)
+ )]
+ ),
+ (62...66)
+ ),
+ NextNode(78...93)(
+ ArgumentsNode(82...93)(
+ [ParenthesesNode(82...93)(
+ StatementsNode(86...91)(
+ [IntegerNode(86...87)(), IntegerNode(90...91)()]
+ ),
+ (82...83),
+ (92...93)
+ )]
+ ),
+ (78...82)
+ ),
+ NextNode(95...99)(nil, (95...99)),
+ IntegerNode(100...101)(),
+ NextNode(103...109)(
+ ArgumentsNode(107...109)(
+ [ParenthesesNode(107...109)(nil, (107...108), (108...109))]
+ ),
+ (103...107)
+ ),
+ NextNode(111...118)(
+ ArgumentsNode(115...118)(
+ [ParenthesesNode(115...118)(
+ StatementsNode(116...117)([IntegerNode(116...117)()]),
+ (115...116),
+ (117...118)
+ )]
+ ),
+ (111...115)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/nils.txt b/test/yarp/snapshots/nils.txt
new file mode 100644
index 0000000000..daf9168e7e
--- /dev/null
+++ b/test/yarp/snapshots/nils.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [NilNode(0...3)(),
+ ParenthesesNode(5...7)(nil, (5...6), (6...7)),
+ ParenthesesNode(9...16)(nil, (9...10), (15...16)),
+ PostExecutionNode(18...27)(
+ StatementsNode(24...25)([IntegerNode(24...25)()]),
+ (18...21),
+ (22...23),
+ (26...27)
+ ),
+ PreExecutionNode(29...40)(
+ StatementsNode(37...38)([IntegerNode(37...38)()]),
+ (29...34),
+ (35...36),
+ (39...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/non_alphanumeric_methods.txt b/test/yarp/snapshots/non_alphanumeric_methods.txt
new file mode 100644
index 0000000000..ac2beadd0d
--- /dev/null
+++ b/test/yarp/snapshots/non_alphanumeric_methods.txt
@@ -0,0 +1,477 @@
+ProgramNode(0...434)(
+ [],
+ StatementsNode(0...434)(
+ [DefNode(0...9)(
+ (4...5),
+ nil,
+ nil,
+ nil,
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (6...9)
+ ),
+ DefNode(11...21)(
+ (15...17),
+ nil,
+ nil,
+ nil,
+ [],
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ (18...21)
+ ),
+ DefNode(23...33)(
+ (27...29),
+ nil,
+ nil,
+ nil,
+ [],
+ (23...26),
+ nil,
+ nil,
+ nil,
+ nil,
+ (30...33)
+ ),
+ DefNode(35...44)(
+ (39...40),
+ nil,
+ nil,
+ nil,
+ [],
+ (35...38),
+ nil,
+ nil,
+ nil,
+ nil,
+ (41...44)
+ ),
+ DefNode(46...60)(
+ (55...56),
+ SelfNode(50...54)(),
+ nil,
+ nil,
+ [],
+ (46...49),
+ (54...55),
+ nil,
+ nil,
+ nil,
+ (57...60)
+ ),
+ DefNode(62...71)(
+ (66...67),
+ nil,
+ nil,
+ nil,
+ [],
+ (62...65),
+ nil,
+ nil,
+ nil,
+ nil,
+ (68...71)
+ ),
+ DefNode(73...82)(
+ (77...78),
+ nil,
+ nil,
+ nil,
+ [],
+ (73...76),
+ nil,
+ nil,
+ nil,
+ nil,
+ (79...82)
+ ),
+ DefNode(84...94)(
+ (88...90),
+ nil,
+ nil,
+ nil,
+ [],
+ (84...87),
+ nil,
+ nil,
+ nil,
+ nil,
+ (91...94)
+ ),
+ StringNode(96...102)((96...98), (98...101), (101...102), "abc"),
+ DefNode(104...117)(
+ (108...109),
+ nil,
+ ParametersNode(110...113)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(110...113)((110...112), (112...113)),
+ nil
+ ),
+ nil,
+ [:b],
+ (104...107),
+ nil,
+ nil,
+ nil,
+ nil,
+ (114...117)
+ ),
+ DefNode(119...130)(
+ (123...124),
+ nil,
+ nil,
+ nil,
+ [],
+ (119...122),
+ nil,
+ (124...125),
+ (125...126),
+ nil,
+ (127...130)
+ ),
+ DefNode(132...143)(
+ (136...137),
+ nil,
+ ParametersNode(138...139)(
+ [RequiredParameterNode(138...139)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:b],
+ (132...135),
+ nil,
+ nil,
+ nil,
+ nil,
+ (140...143)
+ ),
+ DefNode(145...159)(
+ (154...155),
+ SelfNode(149...153)(),
+ nil,
+ nil,
+ [],
+ (145...148),
+ (153...154),
+ nil,
+ nil,
+ nil,
+ (156...159)
+ ),
+ DefNode(161...170)(
+ (165...166),
+ nil,
+ nil,
+ nil,
+ [],
+ (161...164),
+ nil,
+ nil,
+ nil,
+ nil,
+ (167...170)
+ ),
+ DefNode(172...182)(
+ (176...178),
+ nil,
+ nil,
+ nil,
+ [],
+ (172...175),
+ nil,
+ nil,
+ nil,
+ nil,
+ (179...182)
+ ),
+ DefNode(184...193)(
+ (188...189),
+ nil,
+ nil,
+ nil,
+ [],
+ (184...187),
+ nil,
+ nil,
+ nil,
+ nil,
+ (190...193)
+ ),
+ DefNode(195...206)(
+ (201...202),
+ CallNode(199...200)(nil, nil, (199...200), nil, nil, nil, nil, 0, "a"),
+ nil,
+ nil,
+ [],
+ (195...198),
+ (200...201),
+ nil,
+ nil,
+ nil,
+ (203...206)
+ ),
+ DefNode(208...218)(
+ (212...214),
+ nil,
+ nil,
+ nil,
+ [],
+ (208...211),
+ nil,
+ nil,
+ nil,
+ nil,
+ (215...218)
+ ),
+ DefNode(220...229)(
+ (224...225),
+ nil,
+ nil,
+ nil,
+ [],
+ (220...223),
+ nil,
+ nil,
+ nil,
+ nil,
+ (226...229)
+ ),
+ DefNode(231...240)(
+ (235...236),
+ nil,
+ nil,
+ nil,
+ [],
+ (231...234),
+ nil,
+ nil,
+ nil,
+ nil,
+ (237...240)
+ ),
+ DefNode(242...252)(
+ (246...248),
+ nil,
+ nil,
+ nil,
+ [],
+ (242...245),
+ nil,
+ nil,
+ nil,
+ nil,
+ (249...252)
+ ),
+ DefNode(254...264)(
+ (258...260),
+ nil,
+ nil,
+ nil,
+ [],
+ (254...257),
+ nil,
+ nil,
+ nil,
+ nil,
+ (261...264)
+ ),
+ DefNode(266...277)(
+ (270...273),
+ nil,
+ nil,
+ nil,
+ [],
+ (266...269),
+ nil,
+ nil,
+ nil,
+ nil,
+ (274...277)
+ ),
+ DefNode(279...289)(
+ (283...285),
+ nil,
+ nil,
+ nil,
+ [],
+ (279...282),
+ nil,
+ nil,
+ nil,
+ nil,
+ (286...289)
+ ),
+ DefNode(291...302)(
+ (295...298),
+ nil,
+ nil,
+ nil,
+ [],
+ (291...294),
+ nil,
+ nil,
+ nil,
+ nil,
+ (299...302)
+ ),
+ DefNode(304...314)(
+ (308...310),
+ nil,
+ nil,
+ nil,
+ [],
+ (304...307),
+ nil,
+ nil,
+ nil,
+ nil,
+ (311...314)
+ ),
+ DefNode(316...325)(
+ (320...321),
+ nil,
+ nil,
+ nil,
+ [],
+ (316...319),
+ nil,
+ nil,
+ nil,
+ nil,
+ (322...325)
+ ),
+ DefNode(327...337)(
+ (331...333),
+ nil,
+ nil,
+ nil,
+ [],
+ (327...330),
+ nil,
+ nil,
+ nil,
+ nil,
+ (334...337)
+ ),
+ DefNode(339...349)(
+ (343...345),
+ nil,
+ nil,
+ nil,
+ [],
+ (339...342),
+ nil,
+ nil,
+ nil,
+ nil,
+ (346...349)
+ ),
+ DefNode(351...361)(
+ (355...357),
+ nil,
+ nil,
+ nil,
+ [],
+ (351...354),
+ nil,
+ nil,
+ nil,
+ nil,
+ (358...361)
+ ),
+ DefNode(363...374)(
+ (367...370),
+ nil,
+ nil,
+ nil,
+ [],
+ (363...366),
+ nil,
+ nil,
+ nil,
+ nil,
+ (371...374)
+ ),
+ DefNode(376...385)(
+ (380...381),
+ nil,
+ nil,
+ nil,
+ [],
+ (376...379),
+ nil,
+ nil,
+ nil,
+ nil,
+ (382...385)
+ ),
+ DefNode(387...396)(
+ (391...392),
+ nil,
+ nil,
+ nil,
+ [],
+ (387...390),
+ nil,
+ nil,
+ nil,
+ nil,
+ (393...396)
+ ),
+ DefNode(398...412)(
+ (407...408),
+ SelfNode(402...406)(),
+ nil,
+ nil,
+ [],
+ (398...401),
+ (406...407),
+ nil,
+ nil,
+ nil,
+ (409...412)
+ ),
+ DefNode(414...423)(
+ (418...419),
+ nil,
+ nil,
+ nil,
+ [],
+ (414...417),
+ nil,
+ nil,
+ nil,
+ nil,
+ (420...423)
+ ),
+ DefNode(425...434)(
+ (429...430),
+ nil,
+ nil,
+ nil,
+ [],
+ (425...428),
+ nil,
+ nil,
+ nil,
+ nil,
+ (431...434)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/not.txt b/test/yarp/snapshots/not.txt
new file mode 100644
index 0000000000..80ad5dac2e
--- /dev/null
+++ b/test/yarp/snapshots/not.txt
@@ -0,0 +1,151 @@
+ProgramNode(0...125)(
+ [],
+ StatementsNode(0...125)(
+ [AndNode(0...19)(
+ CallNode(0...7)(
+ CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(12...19)(
+ CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ (12...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ (8...11)
+ ),
+ CallNode(21...37)(
+ AndNode(25...36)(
+ CallNode(25...28)(nil, nil, (25...28), nil, nil, nil, nil, 0, "foo"),
+ CallNode(33...36)(nil, nil, (33...36), nil, nil, nil, nil, 0, "bar"),
+ (29...32)
+ ),
+ nil,
+ (21...24),
+ (24...25),
+ nil,
+ (36...37),
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(39...46)(
+ CallNode(43...46)(nil, nil, (43...46), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (39...42),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ AndNode(48...69)(
+ CallNode(48...55)(
+ CallNode(52...55)(nil, nil, (52...55), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (48...51),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(60...69)(
+ CallNode(66...69)(nil, nil, (66...69), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ (60...63),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ (56...59)
+ ),
+ AndNode(72...97)(
+ CallNode(72...79)(
+ CallNode(76...79)(nil, nil, (76...79), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (72...75),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(88...97)(
+ CallNode(94...97)(nil, nil, (94...97), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ (88...91),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ (80...83)
+ ),
+ AndNode(100...125)(
+ CallNode(100...107)(
+ CallNode(104...107)(
+ nil,
+ nil,
+ (104...107),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (100...103),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(114...125)(
+ CallNode(122...125)(
+ nil,
+ nil,
+ (122...125),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (114...117),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ (108...111)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/numbers.txt b/test/yarp/snapshots/numbers.txt
new file mode 100644
index 0000000000..04cb532e88
--- /dev/null
+++ b/test/yarp/snapshots/numbers.txt
@@ -0,0 +1,75 @@
+ProgramNode(0...161)(
+ [],
+ StatementsNode(0...161)(
+ [IntegerNode(0...1)(),
+ IntegerNode(3...4)(),
+ FloatNode(6...9)(),
+ IntegerNode(11...12)(),
+ IntegerNode(14...17)(),
+ IntegerNode(19...22)(),
+ IntegerNode(24...28)(),
+ IntegerNode(30...33)(),
+ IntegerNode(35...38)(),
+ IntegerNode(40...43)(),
+ IntegerNode(45...47)(),
+ IntegerNode(49...51)(),
+ IntegerNode(53...55)(),
+ IntegerNode(57...60)(),
+ IntegerNode(62...65)(),
+ IntegerNode(67...70)(),
+ IntegerNode(72...75)(),
+ IntegerNode(77...80)(),
+ IntegerNode(82...85)(),
+ ImaginaryNode(87...89)(IntegerNode(87...88)()),
+ RationalNode(91...93)(IntegerNode(91...92)()),
+ CallNode(95...97)(
+ IntegerNode(96...97)(),
+ nil,
+ (95...96),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ ImaginaryNode(99...102)(RationalNode(99...101)(IntegerNode(99...100)())),
+ ImaginaryNode(104...109)(RationalNode(104...108)(FloatNode(104...107)())),
+ CallNode(111...115)(
+ ImaginaryNode(112...115)(
+ RationalNode(112...114)(IntegerNode(112...113)())
+ ),
+ nil,
+ (111...112),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ CallNode(117...123)(
+ ImaginaryNode(118...123)(
+ RationalNode(118...122)(FloatNode(118...121)())
+ ),
+ nil,
+ (117...118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ RationalNode(125...129)(IntegerNode(125...128)()),
+ ImaginaryNode(131...135)(IntegerNode(131...134)()),
+ ImaginaryNode(137...142)(
+ RationalNode(137...141)(IntegerNode(137...140)())
+ ),
+ RationalNode(144...148)(IntegerNode(144...147)()),
+ ImaginaryNode(150...154)(IntegerNode(150...153)()),
+ ImaginaryNode(156...161)(
+ RationalNode(156...160)(IntegerNode(156...159)())
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/patterns.txt b/test/yarp/snapshots/patterns.txt
new file mode 100644
index 0000000000..48cc45edc8
--- /dev/null
+++ b/test/yarp/snapshots/patterns.txt
@@ -0,0 +1,4088 @@
+ProgramNode(0...3725)(
+ [:bar, :baz, :qux, :b, :a],
+ StatementsNode(0...3725)(
+ [MatchRequiredNode(0...10)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ LocalVariableWriteNode(7...10)(:bar, 0, nil, (7...10), nil),
+ (4...6)
+ ),
+ MatchRequiredNode(11...19)(
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo"),
+ IntegerNode(18...19)(),
+ (15...17)
+ ),
+ MatchRequiredNode(20...30)(
+ CallNode(20...23)(nil, nil, (20...23), nil, nil, nil, nil, 0, "foo"),
+ FloatNode(27...30)(),
+ (24...26)
+ ),
+ MatchRequiredNode(31...40)(
+ CallNode(31...34)(nil, nil, (31...34), nil, nil, nil, nil, 0, "foo"),
+ ImaginaryNode(38...40)(IntegerNode(38...39)()),
+ (35...37)
+ ),
+ MatchRequiredNode(41...50)(
+ CallNode(41...44)(nil, nil, (41...44), nil, nil, nil, nil, 0, "foo"),
+ RationalNode(48...50)(IntegerNode(48...49)()),
+ (45...47)
+ ),
+ MatchRequiredNode(51...62)(
+ CallNode(51...54)(nil, nil, (51...54), nil, nil, nil, nil, 0, "foo"),
+ SymbolNode(58...62)((58...59), (59...62), nil, "foo"),
+ (55...57)
+ ),
+ MatchRequiredNode(63...77)(
+ CallNode(63...66)(nil, nil, (63...66), nil, nil, nil, nil, 0, "foo"),
+ SymbolNode(70...77)((70...73), (73...76), (76...77), "foo"),
+ (67...69)
+ ),
+ MatchRequiredNode(78...91)(
+ CallNode(78...81)(nil, nil, (78...81), nil, nil, nil, nil, 0, "foo"),
+ InterpolatedSymbolNode(85...91)(
+ (85...87),
+ [StringNode(87...90)(nil, (87...90), nil, "foo")],
+ (90...91)
+ ),
+ (82...84)
+ ),
+ MatchRequiredNode(92...104)(
+ CallNode(92...95)(nil, nil, (92...95), nil, nil, nil, nil, 0, "foo"),
+ RegularExpressionNode(99...104)(
+ (99...100),
+ (100...103),
+ (103...104),
+ "foo",
+ 0
+ ),
+ (96...98)
+ ),
+ MatchRequiredNode(105...117)(
+ CallNode(105...108)(
+ nil,
+ nil,
+ (105...108),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ XStringNode(112...117)((112...113), (113...116), (116...117), "foo"),
+ (109...111)
+ ),
+ MatchRequiredNode(118...132)(
+ CallNode(118...121)(
+ nil,
+ nil,
+ (118...121),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ XStringNode(125...132)((125...128), (128...131), (131...132), "foo"),
+ (122...124)
+ ),
+ MatchRequiredNode(133...147)(
+ CallNode(133...136)(
+ nil,
+ nil,
+ (133...136),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(140...147)(
+ [SymbolNode(143...146)(nil, (143...146), nil, "foo")],
+ (140...143),
+ (146...147)
+ ),
+ (137...139)
+ ),
+ MatchRequiredNode(148...162)(
+ CallNode(148...151)(
+ nil,
+ nil,
+ (148...151),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(155...162)(
+ [SymbolNode(158...161)(nil, (158...161), nil, "foo")],
+ (155...158),
+ (161...162)
+ ),
+ (152...154)
+ ),
+ MatchRequiredNode(163...177)(
+ CallNode(163...166)(
+ nil,
+ nil,
+ (163...166),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(170...177)(
+ [StringNode(173...176)(nil, (173...176), nil, "foo")],
+ (170...173),
+ (176...177)
+ ),
+ (167...169)
+ ),
+ MatchRequiredNode(178...192)(
+ CallNode(178...181)(
+ nil,
+ nil,
+ (178...181),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(185...192)(
+ [StringNode(188...191)(nil, (188...191), nil, "foo")],
+ (185...188),
+ (191...192)
+ ),
+ (182...184)
+ ),
+ MatchRequiredNode(193...207)(
+ CallNode(193...196)(
+ nil,
+ nil,
+ (193...196),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StringNode(200...207)((200...203), (203...206), (206...207), "foo"),
+ (197...199)
+ ),
+ MatchRequiredNode(208...222)(
+ CallNode(208...211)(
+ nil,
+ nil,
+ (208...211),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StringNode(215...222)((215...218), (218...221), (221...222), "foo"),
+ (212...214)
+ ),
+ MatchRequiredNode(223...235)(
+ CallNode(223...226)(
+ nil,
+ nil,
+ (223...226),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StringNode(230...235)((230...231), (231...234), (234...235), "foo"),
+ (227...229)
+ ),
+ MatchRequiredNode(236...246)(
+ CallNode(236...239)(
+ nil,
+ nil,
+ (236...239),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ NilNode(243...246)(),
+ (240...242)
+ ),
+ MatchRequiredNode(247...258)(
+ CallNode(247...250)(
+ nil,
+ nil,
+ (247...250),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SelfNode(254...258)(),
+ (251...253)
+ ),
+ MatchRequiredNode(259...270)(
+ CallNode(259...262)(
+ nil,
+ nil,
+ (259...262),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ TrueNode(266...270)(),
+ (263...265)
+ ),
+ MatchRequiredNode(271...283)(
+ CallNode(271...274)(
+ nil,
+ nil,
+ (271...274),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FalseNode(278...283)(),
+ (275...277)
+ ),
+ MatchRequiredNode(284...299)(
+ CallNode(284...287)(
+ nil,
+ nil,
+ (284...287),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SourceFileNode(291...299)("/fixtures/patterns.txt"),
+ (288...290)
+ ),
+ MatchRequiredNode(300...315)(
+ CallNode(300...303)(
+ nil,
+ nil,
+ (300...303),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SourceLineNode(307...315)(),
+ (304...306)
+ ),
+ MatchRequiredNode(316...335)(
+ CallNode(316...319)(
+ nil,
+ nil,
+ (316...319),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SourceEncodingNode(323...335)(),
+ (320...322)
+ ),
+ MatchRequiredNode(336...353)(
+ CallNode(336...339)(
+ nil,
+ nil,
+ (336...339),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ LambdaNode(343...353)(
+ [],
+ (343...345),
+ nil,
+ StatementsNode(348...351)([LocalVariableReadNode(348...351)(:bar, 1)])
+ ),
+ (340...342)
+ ),
+ MatchRequiredNode(355...368)(
+ CallNode(355...358)(
+ nil,
+ nil,
+ (355...358),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(362...368)(
+ IntegerNode(362...363)(),
+ IntegerNode(367...368)(),
+ (364...366),
+ 0
+ ),
+ (359...361)
+ ),
+ MatchRequiredNode(369...386)(
+ CallNode(369...372)(
+ nil,
+ nil,
+ (369...372),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(376...386)(
+ FloatNode(376...379)(),
+ FloatNode(383...386)(),
+ (380...382),
+ 0
+ ),
+ (373...375)
+ ),
+ MatchRequiredNode(387...402)(
+ CallNode(387...390)(
+ nil,
+ nil,
+ (387...390),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(394...402)(
+ ImaginaryNode(394...396)(IntegerNode(394...395)()),
+ ImaginaryNode(400...402)(IntegerNode(400...401)()),
+ (397...399),
+ 0
+ ),
+ (391...393)
+ ),
+ MatchRequiredNode(403...418)(
+ CallNode(403...406)(
+ nil,
+ nil,
+ (403...406),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(410...418)(
+ RationalNode(410...412)(IntegerNode(410...411)()),
+ RationalNode(416...418)(IntegerNode(416...417)()),
+ (413...415),
+ 0
+ ),
+ (407...409)
+ ),
+ MatchRequiredNode(419...438)(
+ CallNode(419...422)(
+ nil,
+ nil,
+ (419...422),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(426...438)(
+ SymbolNode(426...430)((426...427), (427...430), nil, "foo"),
+ SymbolNode(434...438)((434...435), (435...438), nil, "foo"),
+ (431...433),
+ 0
+ ),
+ (423...425)
+ ),
+ MatchRequiredNode(439...464)(
+ CallNode(439...442)(
+ nil,
+ nil,
+ (439...442),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(446...464)(
+ SymbolNode(446...453)((446...449), (449...452), (452...453), "foo"),
+ SymbolNode(457...464)((457...460), (460...463), (463...464), "foo"),
+ (454...456),
+ 0
+ ),
+ (443...445)
+ ),
+ MatchRequiredNode(465...488)(
+ CallNode(465...468)(
+ nil,
+ nil,
+ (465...468),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(472...488)(
+ InterpolatedSymbolNode(472...478)(
+ (472...474),
+ [StringNode(474...477)(nil, (474...477), nil, "foo")],
+ (477...478)
+ ),
+ InterpolatedSymbolNode(482...488)(
+ (482...484),
+ [StringNode(484...487)(nil, (484...487), nil, "foo")],
+ (487...488)
+ ),
+ (479...481),
+ 0
+ ),
+ (469...471)
+ ),
+ MatchRequiredNode(489...510)(
+ CallNode(489...492)(
+ nil,
+ nil,
+ (489...492),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(496...510)(
+ RegularExpressionNode(496...501)(
+ (496...497),
+ (497...500),
+ (500...501),
+ "foo",
+ 0
+ ),
+ RegularExpressionNode(505...510)(
+ (505...506),
+ (506...509),
+ (509...510),
+ "foo",
+ 0
+ ),
+ (502...504),
+ 0
+ ),
+ (493...495)
+ ),
+ MatchRequiredNode(511...532)(
+ CallNode(511...514)(
+ nil,
+ nil,
+ (511...514),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(518...532)(
+ XStringNode(518...523)((518...519), (519...522), (522...523), "foo"),
+ XStringNode(527...532)((527...528), (528...531), (531...532), "foo"),
+ (524...526),
+ 0
+ ),
+ (515...517)
+ ),
+ MatchRequiredNode(533...558)(
+ CallNode(533...536)(
+ nil,
+ nil,
+ (533...536),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(540...558)(
+ XStringNode(540...547)((540...543), (543...546), (546...547), "foo"),
+ XStringNode(551...558)((551...554), (554...557), (557...558), "foo"),
+ (548...550),
+ 0
+ ),
+ (537...539)
+ ),
+ MatchRequiredNode(559...584)(
+ CallNode(559...562)(
+ nil,
+ nil,
+ (559...562),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(566...584)(
+ ArrayNode(566...573)(
+ [SymbolNode(569...572)(nil, (569...572), nil, "foo")],
+ (566...569),
+ (572...573)
+ ),
+ ArrayNode(577...584)(
+ [SymbolNode(580...583)(nil, (580...583), nil, "foo")],
+ (577...580),
+ (583...584)
+ ),
+ (574...576),
+ 0
+ ),
+ (563...565)
+ ),
+ MatchRequiredNode(585...610)(
+ CallNode(585...588)(
+ nil,
+ nil,
+ (585...588),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(592...610)(
+ ArrayNode(592...599)(
+ [SymbolNode(595...598)(nil, (595...598), nil, "foo")],
+ (592...595),
+ (598...599)
+ ),
+ ArrayNode(603...610)(
+ [SymbolNode(606...609)(nil, (606...609), nil, "foo")],
+ (603...606),
+ (609...610)
+ ),
+ (600...602),
+ 0
+ ),
+ (589...591)
+ ),
+ MatchRequiredNode(611...636)(
+ CallNode(611...614)(
+ nil,
+ nil,
+ (611...614),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(618...636)(
+ ArrayNode(618...625)(
+ [StringNode(621...624)(nil, (621...624), nil, "foo")],
+ (618...621),
+ (624...625)
+ ),
+ ArrayNode(629...636)(
+ [StringNode(632...635)(nil, (632...635), nil, "foo")],
+ (629...632),
+ (635...636)
+ ),
+ (626...628),
+ 0
+ ),
+ (615...617)
+ ),
+ MatchRequiredNode(637...662)(
+ CallNode(637...640)(
+ nil,
+ nil,
+ (637...640),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(644...662)(
+ ArrayNode(644...651)(
+ [StringNode(647...650)(nil, (647...650), nil, "foo")],
+ (644...647),
+ (650...651)
+ ),
+ ArrayNode(655...662)(
+ [StringNode(658...661)(nil, (658...661), nil, "foo")],
+ (655...658),
+ (661...662)
+ ),
+ (652...654),
+ 0
+ ),
+ (641...643)
+ ),
+ MatchRequiredNode(663...688)(
+ CallNode(663...666)(
+ nil,
+ nil,
+ (663...666),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(670...688)(
+ StringNode(670...677)((670...673), (673...676), (676...677), "foo"),
+ StringNode(681...688)((681...684), (684...687), (687...688), "foo"),
+ (678...680),
+ 0
+ ),
+ (667...669)
+ ),
+ MatchRequiredNode(689...714)(
+ CallNode(689...692)(
+ nil,
+ nil,
+ (689...692),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(696...714)(
+ StringNode(696...703)((696...699), (699...702), (702...703), "foo"),
+ StringNode(707...714)((707...710), (710...713), (713...714), "foo"),
+ (704...706),
+ 0
+ ),
+ (693...695)
+ ),
+ MatchRequiredNode(715...736)(
+ CallNode(715...718)(
+ nil,
+ nil,
+ (715...718),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(722...736)(
+ StringNode(722...727)((722...723), (723...726), (726...727), "foo"),
+ StringNode(731...736)((731...732), (732...735), (735...736), "foo"),
+ (728...730),
+ 0
+ ),
+ (719...721)
+ ),
+ MatchRequiredNode(737...754)(
+ CallNode(737...740)(
+ nil,
+ nil,
+ (737...740),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(744...754)(
+ NilNode(744...747)(),
+ NilNode(751...754)(),
+ (748...750),
+ 0
+ ),
+ (741...743)
+ ),
+ MatchRequiredNode(755...774)(
+ CallNode(755...758)(
+ nil,
+ nil,
+ (755...758),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(762...774)(
+ SelfNode(762...766)(),
+ SelfNode(770...774)(),
+ (767...769),
+ 0
+ ),
+ (759...761)
+ ),
+ MatchRequiredNode(775...794)(
+ CallNode(775...778)(
+ nil,
+ nil,
+ (775...778),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(782...794)(
+ TrueNode(782...786)(),
+ TrueNode(790...794)(),
+ (787...789),
+ 0
+ ),
+ (779...781)
+ ),
+ MatchRequiredNode(795...816)(
+ CallNode(795...798)(
+ nil,
+ nil,
+ (795...798),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(802...816)(
+ FalseNode(802...807)(),
+ FalseNode(811...816)(),
+ (808...810),
+ 0
+ ),
+ (799...801)
+ ),
+ MatchRequiredNode(817...844)(
+ CallNode(817...820)(
+ nil,
+ nil,
+ (817...820),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(824...844)(
+ SourceFileNode(824...832)("/fixtures/patterns.txt"),
+ SourceFileNode(836...844)("/fixtures/patterns.txt"),
+ (833...835),
+ 0
+ ),
+ (821...823)
+ ),
+ MatchRequiredNode(845...872)(
+ CallNode(845...848)(
+ nil,
+ nil,
+ (845...848),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(852...872)(
+ SourceLineNode(852...860)(),
+ SourceLineNode(864...872)(),
+ (861...863),
+ 0
+ ),
+ (849...851)
+ ),
+ MatchRequiredNode(873...908)(
+ CallNode(873...876)(
+ nil,
+ nil,
+ (873...876),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(880...908)(
+ SourceEncodingNode(880...892)(),
+ SourceEncodingNode(896...908)(),
+ (893...895),
+ 0
+ ),
+ (877...879)
+ ),
+ MatchRequiredNode(909...940)(
+ CallNode(909...912)(
+ nil,
+ nil,
+ (909...912),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RangeNode(916...940)(
+ LambdaNode(916...926)(
+ [],
+ (916...918),
+ nil,
+ StatementsNode(921...924)(
+ [LocalVariableReadNode(921...924)(:bar, 1)]
+ )
+ ),
+ LambdaNode(930...940)(
+ [],
+ (930...932),
+ nil,
+ StatementsNode(935...938)(
+ [LocalVariableReadNode(935...938)(:bar, 1)]
+ )
+ ),
+ (927...929),
+ 0
+ ),
+ (913...915)
+ ),
+ MatchRequiredNode(942...953)(
+ CallNode(942...945)(
+ nil,
+ nil,
+ (942...945),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedVariableNode(949...953)(
+ LocalVariableReadNode(950...953)(:bar, 0),
+ (949...950)
+ ),
+ (946...948)
+ ),
+ MatchRequiredNode(954...966)(
+ CallNode(954...957)(
+ nil,
+ nil,
+ (954...957),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedVariableNode(961...966)(
+ InstanceVariableReadNode(962...966)(),
+ (961...962)
+ ),
+ (958...960)
+ ),
+ MatchRequiredNode(967...980)(
+ CallNode(967...970)(
+ nil,
+ nil,
+ (967...970),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedVariableNode(974...980)(
+ ClassVariableReadNode(975...980)(),
+ (974...975)
+ ),
+ (971...973)
+ ),
+ MatchRequiredNode(981...993)(
+ CallNode(981...984)(
+ nil,
+ nil,
+ (981...984),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedVariableNode(988...993)(
+ GlobalVariableReadNode(989...993)(),
+ (988...989)
+ ),
+ (985...987)
+ ),
+ MatchRequiredNode(995...1006)(
+ CallNode(995...998)(
+ nil,
+ nil,
+ (995...998),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedExpressionNode(1002...1006)(
+ IntegerNode(1004...1005)(),
+ (1002...1003),
+ (1003...1004),
+ (1005...1006)
+ ),
+ (999...1001)
+ ),
+ MatchRequiredNode(1007...1020)(
+ CallNode(1007...1010)(
+ nil,
+ nil,
+ (1007...1010),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedExpressionNode(1014...1020)(
+ NilNode(1016...1019)(),
+ (1014...1015),
+ (1015...1016),
+ (1019...1020)
+ ),
+ (1011...1013)
+ ),
+ MatchRequiredNode(1021...1044)(
+ CallNode(1021...1024)(
+ nil,
+ nil,
+ (1021...1024),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ PinnedExpressionNode(1028...1044)(
+ CallNode(1030...1043)(
+ StringNode(1030...1035)(
+ (1030...1031),
+ (1031...1034),
+ (1034...1035),
+ "bar"
+ ),
+ nil,
+ (1036...1037),
+ nil,
+ ArgumentsNode(1038...1043)(
+ [StringNode(1038...1043)(
+ (1038...1039),
+ (1039...1042),
+ (1042...1043),
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ (1028...1029),
+ (1029...1030),
+ (1043...1044)
+ ),
+ (1025...1027)
+ ),
+ MatchRequiredNode(1046...1056)(
+ CallNode(1046...1049)(
+ nil,
+ nil,
+ (1046...1049),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ConstantReadNode(1053...1056)(),
+ (1050...1052)
+ ),
+ MatchRequiredNode(1057...1077)(
+ CallNode(1057...1060)(
+ nil,
+ nil,
+ (1057...1060),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ConstantPathNode(1064...1077)(
+ ConstantPathNode(1064...1072)(
+ ConstantReadNode(1064...1067)(),
+ ConstantReadNode(1069...1072)(),
+ (1067...1069)
+ ),
+ ConstantReadNode(1074...1077)(),
+ (1072...1074)
+ ),
+ (1061...1063)
+ ),
+ MatchRequiredNode(1078...1090)(
+ CallNode(1078...1081)(
+ nil,
+ nil,
+ (1078...1081),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ConstantPathNode(1085...1090)(
+ nil,
+ ConstantReadNode(1087...1090)(),
+ (1085...1087)
+ ),
+ (1082...1084)
+ ),
+ MatchRequiredNode(1091...1113)(
+ CallNode(1091...1094)(
+ nil,
+ nil,
+ (1091...1094),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ConstantPathNode(1098...1113)(
+ ConstantPathNode(1098...1108)(
+ ConstantPathNode(1098...1103)(
+ nil,
+ ConstantReadNode(1100...1103)(),
+ (1098...1100)
+ ),
+ ConstantReadNode(1105...1108)(),
+ (1103...1105)
+ ),
+ ConstantReadNode(1110...1113)(),
+ (1108...1110)
+ ),
+ (1095...1097)
+ ),
+ MatchRequiredNode(1115...1127)(
+ CallNode(1115...1118)(
+ nil,
+ nil,
+ (1115...1118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1122...1127)(
+ ConstantReadNode(1122...1125)(),
+ [],
+ nil,
+ [],
+ (1125...1126),
+ (1126...1127)
+ ),
+ (1119...1121)
+ ),
+ MatchRequiredNode(1128...1141)(
+ CallNode(1128...1131)(
+ nil,
+ nil,
+ (1128...1131),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1135...1141)(
+ ConstantReadNode(1135...1138)(),
+ [IntegerNode(1139...1140)()],
+ nil,
+ [],
+ (1138...1139),
+ (1140...1141)
+ ),
+ (1132...1134)
+ ),
+ MatchRequiredNode(1142...1161)(
+ CallNode(1142...1145)(
+ nil,
+ nil,
+ (1142...1145),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1149...1161)(
+ ConstantReadNode(1149...1152)(),
+ [IntegerNode(1153...1154)(),
+ IntegerNode(1156...1157)(),
+ IntegerNode(1159...1160)()],
+ nil,
+ [],
+ (1152...1153),
+ (1160...1161)
+ ),
+ (1146...1148)
+ ),
+ MatchRequiredNode(1162...1177)(
+ CallNode(1162...1165)(
+ nil,
+ nil,
+ (1162...1165),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1169...1177)(
+ ConstantReadNode(1169...1172)(),
+ [LocalVariableWriteNode(1173...1176)(
+ :bar,
+ 0,
+ nil,
+ (1173...1176),
+ nil
+ )],
+ nil,
+ [],
+ (1172...1173),
+ (1176...1177)
+ ),
+ (1166...1168)
+ ),
+ MatchRequiredNode(1178...1199)(
+ CallNode(1178...1181)(
+ nil,
+ nil,
+ (1178...1181),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1185...1199)(
+ ConstantReadNode(1185...1188)(),
+ [],
+ SplatNode(1189...1193)(
+ (1189...1190),
+ LocalVariableWriteNode(1190...1193)(
+ :bar,
+ 0,
+ nil,
+ (1190...1193),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1195...1198)(
+ :baz,
+ 0,
+ nil,
+ (1195...1198),
+ nil
+ )],
+ (1188...1189),
+ (1198...1199)
+ ),
+ (1182...1184)
+ ),
+ MatchRequiredNode(1200...1221)(
+ CallNode(1200...1203)(
+ nil,
+ nil,
+ (1200...1203),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1207...1221)(
+ ConstantReadNode(1207...1210)(),
+ [LocalVariableWriteNode(1211...1214)(
+ :bar,
+ 0,
+ nil,
+ (1211...1214),
+ nil
+ )],
+ SplatNode(1216...1220)(
+ (1216...1217),
+ LocalVariableWriteNode(1217...1220)(
+ :baz,
+ 0,
+ nil,
+ (1217...1220),
+ nil
+ )
+ ),
+ [],
+ (1210...1211),
+ (1220...1221)
+ ),
+ (1204...1206)
+ ),
+ MatchRequiredNode(1222...1249)(
+ CallNode(1222...1225)(
+ nil,
+ nil,
+ (1222...1225),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FindPatternNode(1229...1249)(
+ ConstantReadNode(1229...1232)(),
+ SplatNode(1233...1237)(
+ (1233...1234),
+ LocalVariableWriteNode(1234...1237)(
+ :bar,
+ 0,
+ nil,
+ (1234...1237),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1239...1242)(
+ :baz,
+ 0,
+ nil,
+ (1239...1242),
+ nil
+ )],
+ SplatNode(1244...1248)(
+ (1244...1245),
+ LocalVariableWriteNode(1245...1248)(
+ :qux,
+ 0,
+ nil,
+ (1245...1248),
+ nil
+ )
+ ),
+ (1232...1233),
+ (1248...1249)
+ ),
+ (1226...1228)
+ ),
+ MatchRequiredNode(1251...1263)(
+ CallNode(1251...1254)(
+ nil,
+ nil,
+ (1251...1254),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1258...1263)(
+ ConstantReadNode(1258...1261)(),
+ [],
+ nil,
+ [],
+ (1261...1262),
+ (1262...1263)
+ ),
+ (1255...1257)
+ ),
+ MatchRequiredNode(1264...1277)(
+ CallNode(1264...1267)(
+ nil,
+ nil,
+ (1264...1267),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1271...1277)(
+ ConstantReadNode(1271...1274)(),
+ [IntegerNode(1275...1276)()],
+ nil,
+ [],
+ (1274...1275),
+ (1276...1277)
+ ),
+ (1268...1270)
+ ),
+ MatchRequiredNode(1278...1297)(
+ CallNode(1278...1281)(
+ nil,
+ nil,
+ (1278...1281),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1285...1297)(
+ ConstantReadNode(1285...1288)(),
+ [IntegerNode(1289...1290)(),
+ IntegerNode(1292...1293)(),
+ IntegerNode(1295...1296)()],
+ nil,
+ [],
+ (1288...1289),
+ (1296...1297)
+ ),
+ (1282...1284)
+ ),
+ MatchRequiredNode(1298...1313)(
+ CallNode(1298...1301)(
+ nil,
+ nil,
+ (1298...1301),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1305...1313)(
+ ConstantReadNode(1305...1308)(),
+ [LocalVariableWriteNode(1309...1312)(
+ :bar,
+ 0,
+ nil,
+ (1309...1312),
+ nil
+ )],
+ nil,
+ [],
+ (1308...1309),
+ (1312...1313)
+ ),
+ (1302...1304)
+ ),
+ MatchRequiredNode(1314...1335)(
+ CallNode(1314...1317)(
+ nil,
+ nil,
+ (1314...1317),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1321...1335)(
+ ConstantReadNode(1321...1324)(),
+ [],
+ SplatNode(1325...1329)(
+ (1325...1326),
+ LocalVariableWriteNode(1326...1329)(
+ :bar,
+ 0,
+ nil,
+ (1326...1329),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1331...1334)(
+ :baz,
+ 0,
+ nil,
+ (1331...1334),
+ nil
+ )],
+ (1324...1325),
+ (1334...1335)
+ ),
+ (1318...1320)
+ ),
+ MatchRequiredNode(1336...1357)(
+ CallNode(1336...1339)(
+ nil,
+ nil,
+ (1336...1339),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1343...1357)(
+ ConstantReadNode(1343...1346)(),
+ [LocalVariableWriteNode(1347...1350)(
+ :bar,
+ 0,
+ nil,
+ (1347...1350),
+ nil
+ )],
+ SplatNode(1352...1356)(
+ (1352...1353),
+ LocalVariableWriteNode(1353...1356)(
+ :baz,
+ 0,
+ nil,
+ (1353...1356),
+ nil
+ )
+ ),
+ [],
+ (1346...1347),
+ (1356...1357)
+ ),
+ (1340...1342)
+ ),
+ MatchRequiredNode(1358...1385)(
+ CallNode(1358...1361)(
+ nil,
+ nil,
+ (1358...1361),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FindPatternNode(1365...1385)(
+ ConstantReadNode(1365...1368)(),
+ SplatNode(1369...1373)(
+ (1369...1370),
+ LocalVariableWriteNode(1370...1373)(
+ :bar,
+ 0,
+ nil,
+ (1370...1373),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1375...1378)(
+ :baz,
+ 0,
+ nil,
+ (1375...1378),
+ nil
+ )],
+ SplatNode(1380...1384)(
+ (1380...1381),
+ LocalVariableWriteNode(1381...1384)(
+ :qux,
+ 0,
+ nil,
+ (1381...1384),
+ nil
+ )
+ ),
+ (1368...1369),
+ (1384...1385)
+ ),
+ (1362...1364)
+ ),
+ MatchRequiredNode(1387...1398)(
+ CallNode(1387...1390)(
+ nil,
+ nil,
+ (1387...1390),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1394...1398)(
+ nil,
+ [],
+ SplatNode(1394...1398)(
+ (1394...1395),
+ LocalVariableWriteNode(1395...1398)(
+ :bar,
+ 0,
+ nil,
+ (1395...1398),
+ nil
+ )
+ ),
+ [],
+ nil,
+ nil
+ ),
+ (1391...1393)
+ ),
+ MatchRequiredNode(1399...1420)(
+ CallNode(1399...1402)(
+ nil,
+ nil,
+ (1399...1402),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1406...1420)(
+ nil,
+ [],
+ SplatNode(1406...1410)(
+ (1406...1407),
+ LocalVariableWriteNode(1407...1410)(
+ :bar,
+ 0,
+ nil,
+ (1407...1410),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1412...1415)(
+ :baz,
+ 0,
+ nil,
+ (1412...1415),
+ nil
+ ),
+ LocalVariableWriteNode(1417...1420)(
+ :qux,
+ 0,
+ nil,
+ (1417...1420),
+ nil
+ )],
+ nil,
+ nil
+ ),
+ (1403...1405)
+ ),
+ MatchRequiredNode(1421...1442)(
+ CallNode(1421...1424)(
+ nil,
+ nil,
+ (1421...1424),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1428...1442)(
+ nil,
+ [LocalVariableWriteNode(1428...1431)(
+ :bar,
+ 0,
+ nil,
+ (1428...1431),
+ nil
+ )],
+ SplatNode(1433...1437)(
+ (1433...1434),
+ LocalVariableWriteNode(1434...1437)(
+ :baz,
+ 0,
+ nil,
+ (1434...1437),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1439...1442)(
+ :qux,
+ 0,
+ nil,
+ (1439...1442),
+ nil
+ )],
+ nil,
+ nil
+ ),
+ (1425...1427)
+ ),
+ MatchRequiredNode(1443...1464)(
+ CallNode(1443...1446)(
+ nil,
+ nil,
+ (1443...1446),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1450...1464)(
+ nil,
+ [LocalVariableWriteNode(1450...1453)(
+ :bar,
+ 0,
+ nil,
+ (1450...1453),
+ nil
+ ),
+ LocalVariableWriteNode(1455...1458)(
+ :baz,
+ 0,
+ nil,
+ (1455...1458),
+ nil
+ )],
+ SplatNode(1460...1464)(
+ (1460...1461),
+ LocalVariableWriteNode(1461...1464)(
+ :qux,
+ 0,
+ nil,
+ (1461...1464),
+ nil
+ )
+ ),
+ [],
+ nil,
+ nil
+ ),
+ (1447...1449)
+ ),
+ MatchRequiredNode(1465...1487)(
+ CallNode(1465...1468)(
+ nil,
+ nil,
+ (1465...1468),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FindPatternNode(1472...1487)(
+ nil,
+ SplatNode(1472...1476)(
+ (1472...1473),
+ LocalVariableWriteNode(1473...1476)(
+ :bar,
+ 0,
+ nil,
+ (1473...1476),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1478...1481)(
+ :baz,
+ 0,
+ nil,
+ (1478...1481),
+ nil
+ )],
+ SplatNode(1483...1487)(
+ (1483...1484),
+ LocalVariableWriteNode(1484...1487)(
+ :qux,
+ 0,
+ nil,
+ (1484...1487),
+ nil
+ )
+ ),
+ nil,
+ nil
+ ),
+ (1469...1471)
+ ),
+ MatchRequiredNode(1489...1498)(
+ CallNode(1489...1492)(
+ nil,
+ nil,
+ (1489...1492),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1496...1498)(
+ nil,
+ [],
+ nil,
+ [],
+ (1496...1497),
+ (1497...1498)
+ ),
+ (1493...1495)
+ ),
+ MatchRequiredNode(1499...1516)(
+ CallNode(1499...1502)(
+ nil,
+ nil,
+ (1499...1502),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1506...1516)(
+ nil,
+ [ArrayPatternNode(1507...1515)(
+ nil,
+ [ArrayPatternNode(1508...1514)(
+ nil,
+ [ArrayPatternNode(1509...1513)(
+ nil,
+ [ArrayPatternNode(1510...1512)(
+ nil,
+ [],
+ nil,
+ [],
+ (1510...1511),
+ (1511...1512)
+ )],
+ nil,
+ [],
+ (1509...1510),
+ (1512...1513)
+ )],
+ nil,
+ [],
+ (1508...1509),
+ (1513...1514)
+ )],
+ nil,
+ [],
+ (1507...1508),
+ (1514...1515)
+ )],
+ nil,
+ [],
+ (1506...1507),
+ (1515...1516)
+ ),
+ (1503...1505)
+ ),
+ MatchRequiredNode(1518...1531)(
+ CallNode(1518...1521)(
+ nil,
+ nil,
+ (1518...1521),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1525...1531)(
+ nil,
+ [],
+ SplatNode(1526...1530)(
+ (1526...1527),
+ LocalVariableWriteNode(1527...1530)(
+ :bar,
+ 0,
+ nil,
+ (1527...1530),
+ nil
+ )
+ ),
+ [],
+ (1525...1526),
+ (1530...1531)
+ ),
+ (1522...1524)
+ ),
+ MatchRequiredNode(1532...1555)(
+ CallNode(1532...1535)(
+ nil,
+ nil,
+ (1532...1535),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1539...1555)(
+ nil,
+ [],
+ SplatNode(1540...1544)(
+ (1540...1541),
+ LocalVariableWriteNode(1541...1544)(
+ :bar,
+ 0,
+ nil,
+ (1541...1544),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1546...1549)(
+ :baz,
+ 0,
+ nil,
+ (1546...1549),
+ nil
+ ),
+ LocalVariableWriteNode(1551...1554)(
+ :qux,
+ 0,
+ nil,
+ (1551...1554),
+ nil
+ )],
+ (1539...1540),
+ (1554...1555)
+ ),
+ (1536...1538)
+ ),
+ MatchRequiredNode(1556...1579)(
+ CallNode(1556...1559)(
+ nil,
+ nil,
+ (1556...1559),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1563...1579)(
+ nil,
+ [LocalVariableWriteNode(1564...1567)(
+ :bar,
+ 0,
+ nil,
+ (1564...1567),
+ nil
+ )],
+ SplatNode(1569...1573)(
+ (1569...1570),
+ LocalVariableWriteNode(1570...1573)(
+ :baz,
+ 0,
+ nil,
+ (1570...1573),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1575...1578)(
+ :qux,
+ 0,
+ nil,
+ (1575...1578),
+ nil
+ )],
+ (1563...1564),
+ (1578...1579)
+ ),
+ (1560...1562)
+ ),
+ MatchRequiredNode(1580...1603)(
+ CallNode(1580...1583)(
+ nil,
+ nil,
+ (1580...1583),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayPatternNode(1587...1603)(
+ nil,
+ [LocalVariableWriteNode(1588...1591)(
+ :bar,
+ 0,
+ nil,
+ (1588...1591),
+ nil
+ ),
+ LocalVariableWriteNode(1593...1596)(
+ :baz,
+ 0,
+ nil,
+ (1593...1596),
+ nil
+ )],
+ SplatNode(1598...1602)(
+ (1598...1599),
+ LocalVariableWriteNode(1599...1602)(
+ :qux,
+ 0,
+ nil,
+ (1599...1602),
+ nil
+ )
+ ),
+ [],
+ (1587...1588),
+ (1602...1603)
+ ),
+ (1584...1586)
+ ),
+ MatchRequiredNode(1604...1628)(
+ CallNode(1604...1607)(
+ nil,
+ nil,
+ (1604...1607),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FindPatternNode(1611...1628)(
+ nil,
+ SplatNode(1612...1616)(
+ (1612...1613),
+ LocalVariableWriteNode(1613...1616)(
+ :bar,
+ 0,
+ nil,
+ (1613...1616),
+ nil
+ )
+ ),
+ [LocalVariableWriteNode(1618...1621)(
+ :baz,
+ 0,
+ nil,
+ (1618...1621),
+ nil
+ )],
+ SplatNode(1623...1627)(
+ (1623...1624),
+ LocalVariableWriteNode(1624...1627)(
+ :qux,
+ 0,
+ nil,
+ (1624...1627),
+ nil
+ )
+ ),
+ (1611...1612),
+ (1627...1628)
+ ),
+ (1608...1610)
+ ),
+ MatchPredicateNode(1630...1640)(
+ CallNode(1630...1633)(
+ nil,
+ nil,
+ (1630...1633),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ LocalVariableWriteNode(1637...1640)(:bar, 0, nil, (1637...1640), nil),
+ (1634...1636)
+ ),
+ MatchPredicateNode(1641...1649)(
+ CallNode(1641...1644)(
+ nil,
+ nil,
+ (1641...1644),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ IntegerNode(1648...1649)(),
+ (1645...1647)
+ ),
+ MatchPredicateNode(1650...1660)(
+ CallNode(1650...1653)(
+ nil,
+ nil,
+ (1650...1653),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FloatNode(1657...1660)(),
+ (1654...1656)
+ ),
+ MatchPredicateNode(1661...1670)(
+ CallNode(1661...1664)(
+ nil,
+ nil,
+ (1661...1664),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ImaginaryNode(1668...1670)(IntegerNode(1668...1669)()),
+ (1665...1667)
+ ),
+ MatchPredicateNode(1671...1680)(
+ CallNode(1671...1674)(
+ nil,
+ nil,
+ (1671...1674),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RationalNode(1678...1680)(IntegerNode(1678...1679)()),
+ (1675...1677)
+ ),
+ MatchPredicateNode(1681...1692)(
+ CallNode(1681...1684)(
+ nil,
+ nil,
+ (1681...1684),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SymbolNode(1688...1692)((1688...1689), (1689...1692), nil, "foo"),
+ (1685...1687)
+ ),
+ MatchPredicateNode(1693...1707)(
+ CallNode(1693...1696)(
+ nil,
+ nil,
+ (1693...1696),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SymbolNode(1700...1707)(
+ (1700...1703),
+ (1703...1706),
+ (1706...1707),
+ "foo"
+ ),
+ (1697...1699)
+ ),
+ MatchPredicateNode(1708...1721)(
+ CallNode(1708...1711)(
+ nil,
+ nil,
+ (1708...1711),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ InterpolatedSymbolNode(1715...1721)(
+ (1715...1717),
+ [StringNode(1717...1720)(nil, (1717...1720), nil, "foo")],
+ (1720...1721)
+ ),
+ (1712...1714)
+ ),
+ MatchPredicateNode(1722...1734)(
+ CallNode(1722...1725)(
+ nil,
+ nil,
+ (1722...1725),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RegularExpressionNode(1729...1734)(
+ (1729...1730),
+ (1730...1733),
+ (1733...1734),
+ "foo",
+ 0
+ ),
+ (1726...1728)
+ ),
+ MatchPredicateNode(1735...1747)(
+ CallNode(1735...1738)(
+ nil,
+ nil,
+ (1735...1738),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ XStringNode(1742...1747)(
+ (1742...1743),
+ (1743...1746),
+ (1746...1747),
+ "foo"
+ ),
+ (1739...1741)
+ ),
+ MatchPredicateNode(1748...1762)(
+ CallNode(1748...1751)(
+ nil,
+ nil,
+ (1748...1751),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ XStringNode(1755...1762)(
+ (1755...1758),
+ (1758...1761),
+ (1761...1762),
+ "foo"
+ ),
+ (1752...1754)
+ ),
+ MatchPredicateNode(1763...1777)(
+ CallNode(1763...1766)(
+ nil,
+ nil,
+ (1763...1766),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(1770...1777)(
+ [SymbolNode(1773...1776)(nil, (1773...1776), nil, "foo")],
+ (1770...1773),
+ (1776...1777)
+ ),
+ (1767...1769)
+ ),
+ MatchPredicateNode(1778...1792)(
+ CallNode(1778...1781)(
+ nil,
+ nil,
+ (1778...1781),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(1785...1792)(
+ [SymbolNode(1788...1791)(nil, (1788...1791), nil, "foo")],
+ (1785...1788),
+ (1791...1792)
+ ),
+ (1782...1784)
+ ),
+ MatchPredicateNode(1793...1807)(
+ CallNode(1793...1796)(
+ nil,
+ nil,
+ (1793...1796),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(1800...1807)(
+ [StringNode(1803...1806)(nil, (1803...1806), nil, "foo")],
+ (1800...1803),
+ (1806...1807)
+ ),
+ (1797...1799)
+ ),
+ MatchPredicateNode(1808...1822)(
+ CallNode(1808...1811)(
+ nil,
+ nil,
+ (1808...1811),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ ArrayNode(1815...1822)(
+ [StringNode(1818...1821)(nil, (1818...1821), nil, "foo")],
+ (1815...1818),
+ (1821...1822)
+ ),
+ (1812...1814)
+ ),
+ MatchPredicateNode(1823...1837)(
+ CallNode(1823...1826)(
+ nil,
+ nil,
+ (1823...1826),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StringNode(1830...1837)(
+ (1830...1833),
+ (1833...1836),
+ (1836...1837),
+ "foo"
+ ),
+ (1827...1829)
+ ),
+ MatchPredicateNode(1838...1852)(
+ CallNode(1838...1841)(
+ nil,
+ nil,
+ (1838...1841),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StringNode(1845...1852)(
+ (1845...1848),
+ (1848...1851),
+ (1851...1852),
+ "foo"
+ ),
+ (1842...1844)
+ ),
+ MatchPredicateNode(1853...1865)(
+ CallNode(1853...1856)(
+ nil,
+ nil,
+ (1853...1856),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StringNode(1860...1865)(
+ (1860...1861),
+ (1861...1864),
+ (1864...1865),
+ "foo"
+ ),
+ (1857...1859)
+ ),
+ MatchPredicateNode(1866...1876)(
+ CallNode(1866...1869)(
+ nil,
+ nil,
+ (1866...1869),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ NilNode(1873...1876)(),
+ (1870...1872)
+ ),
+ MatchPredicateNode(1877...1888)(
+ CallNode(1877...1880)(
+ nil,
+ nil,
+ (1877...1880),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SelfNode(1884...1888)(),
+ (1881...1883)
+ ),
+ MatchPredicateNode(1889...1900)(
+ CallNode(1889...1892)(
+ nil,
+ nil,
+ (1889...1892),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ TrueNode(1896...1900)(),
+ (1893...1895)
+ ),
+ MatchPredicateNode(1901...1913)(
+ CallNode(1901...1904)(
+ nil,
+ nil,
+ (1901...1904),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ FalseNode(1908...1913)(),
+ (1905...1907)
+ ),
+ MatchPredicateNode(1914...1929)(
+ CallNode(1914...1917)(
+ nil,
+ nil,
+ (1914...1917),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SourceFileNode(1921...1929)("/fixtures/patterns.txt"),
+ (1918...1920)
+ ),
+ MatchPredicateNode(1930...1945)(
+ CallNode(1930...1933)(
+ nil,
+ nil,
+ (1930...1933),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SourceLineNode(1937...1945)(),
+ (1934...1936)
+ ),
+ MatchPredicateNode(1946...1965)(
+ CallNode(1946...1949)(
+ nil,
+ nil,
+ (1946...1949),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SourceEncodingNode(1953...1965)(),
+ (1950...1952)
+ ),
+ MatchPredicateNode(1966...1983)(
+ CallNode(1966...1969)(
+ nil,
+ nil,
+ (1966...1969),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ LambdaNode(1973...1983)(
+ [],
+ (1973...1975),
+ nil,
+ StatementsNode(1978...1981)(
+ [LocalVariableReadNode(1978...1981)(:bar, 1)]
+ )
+ ),
+ (1970...1972)
+ ),
+ CaseNode(1985...2010)(
+ CallNode(1990...1993)(
+ nil,
+ nil,
+ (1990...1993),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(1995...2006)(
+ LocalVariableWriteNode(1998...2001)(
+ :bar,
+ 0,
+ nil,
+ (1998...2001),
+ nil
+ ),
+ nil,
+ (1995...1997),
+ (2002...2006)
+ )],
+ nil,
+ (1985...1989),
+ (2007...2010)
+ ),
+ CaseNode(2011...2034)(
+ CallNode(2016...2019)(
+ nil,
+ nil,
+ (2016...2019),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2021...2030)(
+ IntegerNode(2024...2025)(),
+ nil,
+ (2021...2023),
+ (2026...2030)
+ )],
+ nil,
+ (2011...2015),
+ (2031...2034)
+ ),
+ CaseNode(2035...2060)(
+ CallNode(2040...2043)(
+ nil,
+ nil,
+ (2040...2043),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2045...2056)(
+ FloatNode(2048...2051)(),
+ nil,
+ (2045...2047),
+ (2052...2056)
+ )],
+ nil,
+ (2035...2039),
+ (2057...2060)
+ ),
+ CaseNode(2061...2085)(
+ CallNode(2066...2069)(
+ nil,
+ nil,
+ (2066...2069),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2071...2081)(
+ ImaginaryNode(2074...2076)(IntegerNode(2074...2075)()),
+ nil,
+ (2071...2073),
+ (2077...2081)
+ )],
+ nil,
+ (2061...2065),
+ (2082...2085)
+ ),
+ CaseNode(2086...2110)(
+ CallNode(2091...2094)(
+ nil,
+ nil,
+ (2091...2094),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2096...2106)(
+ RationalNode(2099...2101)(IntegerNode(2099...2100)()),
+ nil,
+ (2096...2098),
+ (2102...2106)
+ )],
+ nil,
+ (2086...2090),
+ (2107...2110)
+ ),
+ CaseNode(2111...2137)(
+ CallNode(2116...2119)(
+ nil,
+ nil,
+ (2116...2119),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2121...2133)(
+ SymbolNode(2124...2128)((2124...2125), (2125...2128), nil, "foo"),
+ nil,
+ (2121...2123),
+ (2129...2133)
+ )],
+ nil,
+ (2111...2115),
+ (2134...2137)
+ ),
+ CaseNode(2138...2167)(
+ CallNode(2143...2146)(
+ nil,
+ nil,
+ (2143...2146),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2148...2163)(
+ SymbolNode(2151...2158)(
+ (2151...2154),
+ (2154...2157),
+ (2157...2158),
+ "foo"
+ ),
+ nil,
+ (2148...2150),
+ (2159...2163)
+ )],
+ nil,
+ (2138...2142),
+ (2164...2167)
+ ),
+ CaseNode(2168...2196)(
+ CallNode(2173...2176)(
+ nil,
+ nil,
+ (2173...2176),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2178...2192)(
+ InterpolatedSymbolNode(2181...2187)(
+ (2181...2183),
+ [StringNode(2183...2186)(nil, (2183...2186), nil, "foo")],
+ (2186...2187)
+ ),
+ nil,
+ (2178...2180),
+ (2188...2192)
+ )],
+ nil,
+ (2168...2172),
+ (2193...2196)
+ ),
+ CaseNode(2197...2224)(
+ CallNode(2202...2205)(
+ nil,
+ nil,
+ (2202...2205),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2207...2220)(
+ RegularExpressionNode(2210...2215)(
+ (2210...2211),
+ (2211...2214),
+ (2214...2215),
+ "foo",
+ 0
+ ),
+ nil,
+ (2207...2209),
+ (2216...2220)
+ )],
+ nil,
+ (2197...2201),
+ (2221...2224)
+ ),
+ CaseNode(2225...2252)(
+ CallNode(2230...2233)(
+ nil,
+ nil,
+ (2230...2233),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2235...2248)(
+ XStringNode(2238...2243)(
+ (2238...2239),
+ (2239...2242),
+ (2242...2243),
+ "foo"
+ ),
+ nil,
+ (2235...2237),
+ (2244...2248)
+ )],
+ nil,
+ (2225...2229),
+ (2249...2252)
+ ),
+ CaseNode(2253...2282)(
+ CallNode(2258...2261)(
+ nil,
+ nil,
+ (2258...2261),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2263...2278)(
+ XStringNode(2266...2273)(
+ (2266...2269),
+ (2269...2272),
+ (2272...2273),
+ "foo"
+ ),
+ nil,
+ (2263...2265),
+ (2274...2278)
+ )],
+ nil,
+ (2253...2257),
+ (2279...2282)
+ ),
+ CaseNode(2283...2312)(
+ CallNode(2288...2291)(
+ nil,
+ nil,
+ (2288...2291),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2293...2308)(
+ ArrayNode(2296...2303)(
+ [SymbolNode(2299...2302)(nil, (2299...2302), nil, "foo")],
+ (2296...2299),
+ (2302...2303)
+ ),
+ nil,
+ (2293...2295),
+ (2304...2308)
+ )],
+ nil,
+ (2283...2287),
+ (2309...2312)
+ ),
+ CaseNode(2313...2342)(
+ CallNode(2318...2321)(
+ nil,
+ nil,
+ (2318...2321),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2323...2338)(
+ ArrayNode(2326...2333)(
+ [SymbolNode(2329...2332)(nil, (2329...2332), nil, "foo")],
+ (2326...2329),
+ (2332...2333)
+ ),
+ nil,
+ (2323...2325),
+ (2334...2338)
+ )],
+ nil,
+ (2313...2317),
+ (2339...2342)
+ ),
+ CaseNode(2343...2372)(
+ CallNode(2348...2351)(
+ nil,
+ nil,
+ (2348...2351),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2353...2368)(
+ ArrayNode(2356...2363)(
+ [StringNode(2359...2362)(nil, (2359...2362), nil, "foo")],
+ (2356...2359),
+ (2362...2363)
+ ),
+ nil,
+ (2353...2355),
+ (2364...2368)
+ )],
+ nil,
+ (2343...2347),
+ (2369...2372)
+ ),
+ CaseNode(2373...2402)(
+ CallNode(2378...2381)(
+ nil,
+ nil,
+ (2378...2381),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2383...2398)(
+ ArrayNode(2386...2393)(
+ [StringNode(2389...2392)(nil, (2389...2392), nil, "foo")],
+ (2386...2389),
+ (2392...2393)
+ ),
+ nil,
+ (2383...2385),
+ (2394...2398)
+ )],
+ nil,
+ (2373...2377),
+ (2399...2402)
+ ),
+ CaseNode(2403...2432)(
+ CallNode(2408...2411)(
+ nil,
+ nil,
+ (2408...2411),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2413...2428)(
+ StringNode(2416...2423)(
+ (2416...2419),
+ (2419...2422),
+ (2422...2423),
+ "foo"
+ ),
+ nil,
+ (2413...2415),
+ (2424...2428)
+ )],
+ nil,
+ (2403...2407),
+ (2429...2432)
+ ),
+ CaseNode(2433...2462)(
+ CallNode(2438...2441)(
+ nil,
+ nil,
+ (2438...2441),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2443...2458)(
+ StringNode(2446...2453)(
+ (2446...2449),
+ (2449...2452),
+ (2452...2453),
+ "foo"
+ ),
+ nil,
+ (2443...2445),
+ (2454...2458)
+ )],
+ nil,
+ (2433...2437),
+ (2459...2462)
+ ),
+ CaseNode(2463...2490)(
+ CallNode(2468...2471)(
+ nil,
+ nil,
+ (2468...2471),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2473...2486)(
+ StringNode(2476...2481)(
+ (2476...2477),
+ (2477...2480),
+ (2480...2481),
+ "foo"
+ ),
+ nil,
+ (2473...2475),
+ (2482...2486)
+ )],
+ nil,
+ (2463...2467),
+ (2487...2490)
+ ),
+ CaseNode(2491...2516)(
+ CallNode(2496...2499)(
+ nil,
+ nil,
+ (2496...2499),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2501...2512)(
+ NilNode(2504...2507)(),
+ nil,
+ (2501...2503),
+ (2508...2512)
+ )],
+ nil,
+ (2491...2495),
+ (2513...2516)
+ ),
+ CaseNode(2517...2543)(
+ CallNode(2522...2525)(
+ nil,
+ nil,
+ (2522...2525),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2527...2539)(
+ SelfNode(2530...2534)(),
+ nil,
+ (2527...2529),
+ (2535...2539)
+ )],
+ nil,
+ (2517...2521),
+ (2540...2543)
+ ),
+ CaseNode(2544...2570)(
+ CallNode(2549...2552)(
+ nil,
+ nil,
+ (2549...2552),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2554...2566)(
+ TrueNode(2557...2561)(),
+ nil,
+ (2554...2556),
+ (2562...2566)
+ )],
+ nil,
+ (2544...2548),
+ (2567...2570)
+ ),
+ CaseNode(2571...2598)(
+ CallNode(2576...2579)(
+ nil,
+ nil,
+ (2576...2579),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2581...2594)(
+ FalseNode(2584...2589)(),
+ nil,
+ (2581...2583),
+ (2590...2594)
+ )],
+ nil,
+ (2571...2575),
+ (2595...2598)
+ ),
+ CaseNode(2599...2629)(
+ CallNode(2604...2607)(
+ nil,
+ nil,
+ (2604...2607),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2609...2625)(
+ SourceFileNode(2612...2620)("/fixtures/patterns.txt"),
+ nil,
+ (2609...2611),
+ (2621...2625)
+ )],
+ nil,
+ (2599...2603),
+ (2626...2629)
+ ),
+ CaseNode(2630...2660)(
+ CallNode(2635...2638)(
+ nil,
+ nil,
+ (2635...2638),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2640...2656)(
+ SourceLineNode(2643...2651)(),
+ nil,
+ (2640...2642),
+ (2652...2656)
+ )],
+ nil,
+ (2630...2634),
+ (2657...2660)
+ ),
+ CaseNode(2661...2695)(
+ CallNode(2666...2669)(
+ nil,
+ nil,
+ (2666...2669),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2671...2691)(
+ SourceEncodingNode(2674...2686)(),
+ nil,
+ (2671...2673),
+ (2687...2691)
+ )],
+ nil,
+ (2661...2665),
+ (2692...2695)
+ ),
+ CaseNode(2696...2728)(
+ CallNode(2701...2704)(
+ nil,
+ nil,
+ (2701...2704),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2706...2724)(
+ LambdaNode(2709...2719)(
+ [],
+ (2709...2711),
+ nil,
+ StatementsNode(2714...2717)(
+ [LocalVariableReadNode(2714...2717)(:bar, 1)]
+ )
+ ),
+ nil,
+ (2706...2708),
+ (2720...2724)
+ )],
+ nil,
+ (2696...2700),
+ (2725...2728)
+ ),
+ CaseNode(2730...2762)(
+ CallNode(2735...2738)(
+ nil,
+ nil,
+ (2735...2738),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2740...2758)(
+ IfNode(2743...2753)(
+ (2747...2749),
+ LocalVariableReadNode(2750...2753)(:baz, 0),
+ StatementsNode(2743...2746)(
+ [LocalVariableWriteNode(2743...2746)(
+ :bar,
+ 0,
+ nil,
+ (2743...2746),
+ nil
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (2740...2742),
+ (2754...2758)
+ )],
+ nil,
+ (2730...2734),
+ (2759...2762)
+ ),
+ CaseNode(2763...2793)(
+ CallNode(2768...2771)(
+ nil,
+ nil,
+ (2768...2771),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2773...2789)(
+ IfNode(2776...2784)(
+ (2778...2780),
+ LocalVariableReadNode(2781...2784)(:baz, 0),
+ StatementsNode(2776...2777)([IntegerNode(2776...2777)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (2773...2775),
+ (2785...2789)
+ )],
+ nil,
+ (2763...2767),
+ (2790...2793)
+ ),
+ CaseNode(2794...2826)(
+ CallNode(2799...2802)(
+ nil,
+ nil,
+ (2799...2802),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2804...2822)(
+ IfNode(2807...2817)(
+ (2811...2813),
+ LocalVariableReadNode(2814...2817)(:baz, 0),
+ StatementsNode(2807...2810)([FloatNode(2807...2810)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (2804...2806),
+ (2818...2822)
+ )],
+ nil,
+ (2794...2798),
+ (2823...2826)
+ ),
+ CaseNode(2827...2858)(
+ CallNode(2832...2835)(
+ nil,
+ nil,
+ (2832...2835),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2837...2854)(
+ IfNode(2840...2849)(
+ (2843...2845),
+ LocalVariableReadNode(2846...2849)(:baz, 0),
+ StatementsNode(2840...2842)(
+ [ImaginaryNode(2840...2842)(IntegerNode(2840...2841)())]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (2837...2839),
+ (2850...2854)
+ )],
+ nil,
+ (2827...2831),
+ (2855...2858)
+ ),
+ CaseNode(2859...2890)(
+ CallNode(2864...2867)(
+ nil,
+ nil,
+ (2864...2867),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2869...2886)(
+ IfNode(2872...2881)(
+ (2875...2877),
+ LocalVariableReadNode(2878...2881)(:baz, 0),
+ StatementsNode(2872...2874)(
+ [RationalNode(2872...2874)(IntegerNode(2872...2873)())]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (2869...2871),
+ (2882...2886)
+ )],
+ nil,
+ (2859...2863),
+ (2887...2890)
+ ),
+ CaseNode(2891...2924)(
+ CallNode(2896...2899)(
+ nil,
+ nil,
+ (2896...2899),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2901...2920)(
+ IfNode(2904...2915)(
+ (2909...2911),
+ LocalVariableReadNode(2912...2915)(:baz, 0),
+ StatementsNode(2904...2908)(
+ [SymbolNode(2904...2908)(
+ (2904...2905),
+ (2905...2908),
+ nil,
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (2901...2903),
+ (2916...2920)
+ )],
+ nil,
+ (2891...2895),
+ (2921...2924)
+ ),
+ CaseNode(2925...2961)(
+ CallNode(2930...2933)(
+ nil,
+ nil,
+ (2930...2933),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2935...2957)(
+ IfNode(2938...2952)(
+ (2946...2948),
+ LocalVariableReadNode(2949...2952)(:baz, 0),
+ StatementsNode(2938...2945)(
+ [SymbolNode(2938...2945)(
+ (2938...2941),
+ (2941...2944),
+ (2944...2945),
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (2935...2937),
+ (2953...2957)
+ )],
+ nil,
+ (2925...2929),
+ (2958...2961)
+ ),
+ CaseNode(2962...2997)(
+ CallNode(2967...2970)(
+ nil,
+ nil,
+ (2967...2970),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(2972...2993)(
+ IfNode(2975...2988)(
+ (2982...2984),
+ LocalVariableReadNode(2985...2988)(:baz, 0),
+ StatementsNode(2975...2981)(
+ [InterpolatedSymbolNode(2975...2981)(
+ (2975...2977),
+ [StringNode(2977...2980)(nil, (2977...2980), nil, "foo")],
+ (2980...2981)
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (2972...2974),
+ (2989...2993)
+ )],
+ nil,
+ (2962...2966),
+ (2994...2997)
+ ),
+ CaseNode(2998...3032)(
+ CallNode(3003...3006)(
+ nil,
+ nil,
+ (3003...3006),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3008...3028)(
+ IfNode(3011...3023)(
+ (3017...3019),
+ LocalVariableReadNode(3020...3023)(:baz, 0),
+ StatementsNode(3011...3016)(
+ [RegularExpressionNode(3011...3016)(
+ (3011...3012),
+ (3012...3015),
+ (3015...3016),
+ "foo",
+ 0
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3008...3010),
+ (3024...3028)
+ )],
+ nil,
+ (2998...3002),
+ (3029...3032)
+ ),
+ CaseNode(3033...3067)(
+ CallNode(3038...3041)(
+ nil,
+ nil,
+ (3038...3041),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3043...3063)(
+ IfNode(3046...3058)(
+ (3052...3054),
+ LocalVariableReadNode(3055...3058)(:baz, 0),
+ StatementsNode(3046...3051)(
+ [XStringNode(3046...3051)(
+ (3046...3047),
+ (3047...3050),
+ (3050...3051),
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3043...3045),
+ (3059...3063)
+ )],
+ nil,
+ (3033...3037),
+ (3064...3067)
+ ),
+ CaseNode(3068...3104)(
+ CallNode(3073...3076)(
+ nil,
+ nil,
+ (3073...3076),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3078...3100)(
+ IfNode(3081...3095)(
+ (3089...3091),
+ LocalVariableReadNode(3092...3095)(:baz, 0),
+ StatementsNode(3081...3088)(
+ [XStringNode(3081...3088)(
+ (3081...3084),
+ (3084...3087),
+ (3087...3088),
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3078...3080),
+ (3096...3100)
+ )],
+ nil,
+ (3068...3072),
+ (3101...3104)
+ ),
+ CaseNode(3105...3141)(
+ CallNode(3110...3113)(
+ nil,
+ nil,
+ (3110...3113),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3115...3137)(
+ IfNode(3118...3132)(
+ (3126...3128),
+ LocalVariableReadNode(3129...3132)(:baz, 0),
+ StatementsNode(3118...3125)(
+ [ArrayNode(3118...3125)(
+ [SymbolNode(3121...3124)(nil, (3121...3124), nil, "foo")],
+ (3118...3121),
+ (3124...3125)
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3115...3117),
+ (3133...3137)
+ )],
+ nil,
+ (3105...3109),
+ (3138...3141)
+ ),
+ CaseNode(3142...3178)(
+ CallNode(3147...3150)(
+ nil,
+ nil,
+ (3147...3150),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3152...3174)(
+ IfNode(3155...3169)(
+ (3163...3165),
+ LocalVariableReadNode(3166...3169)(:baz, 0),
+ StatementsNode(3155...3162)(
+ [ArrayNode(3155...3162)(
+ [SymbolNode(3158...3161)(nil, (3158...3161), nil, "foo")],
+ (3155...3158),
+ (3161...3162)
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3152...3154),
+ (3170...3174)
+ )],
+ nil,
+ (3142...3146),
+ (3175...3178)
+ ),
+ CaseNode(3179...3215)(
+ CallNode(3184...3187)(
+ nil,
+ nil,
+ (3184...3187),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3189...3211)(
+ IfNode(3192...3206)(
+ (3200...3202),
+ LocalVariableReadNode(3203...3206)(:baz, 0),
+ StatementsNode(3192...3199)(
+ [ArrayNode(3192...3199)(
+ [StringNode(3195...3198)(nil, (3195...3198), nil, "foo")],
+ (3192...3195),
+ (3198...3199)
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3189...3191),
+ (3207...3211)
+ )],
+ nil,
+ (3179...3183),
+ (3212...3215)
+ ),
+ CaseNode(3216...3252)(
+ CallNode(3221...3224)(
+ nil,
+ nil,
+ (3221...3224),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3226...3248)(
+ IfNode(3229...3243)(
+ (3237...3239),
+ LocalVariableReadNode(3240...3243)(:baz, 0),
+ StatementsNode(3229...3236)(
+ [ArrayNode(3229...3236)(
+ [StringNode(3232...3235)(nil, (3232...3235), nil, "foo")],
+ (3229...3232),
+ (3235...3236)
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3226...3228),
+ (3244...3248)
+ )],
+ nil,
+ (3216...3220),
+ (3249...3252)
+ ),
+ CaseNode(3253...3289)(
+ CallNode(3258...3261)(
+ nil,
+ nil,
+ (3258...3261),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3263...3285)(
+ IfNode(3266...3280)(
+ (3274...3276),
+ LocalVariableReadNode(3277...3280)(:baz, 0),
+ StatementsNode(3266...3273)(
+ [StringNode(3266...3273)(
+ (3266...3269),
+ (3269...3272),
+ (3272...3273),
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3263...3265),
+ (3281...3285)
+ )],
+ nil,
+ (3253...3257),
+ (3286...3289)
+ ),
+ CaseNode(3290...3326)(
+ CallNode(3295...3298)(
+ nil,
+ nil,
+ (3295...3298),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3300...3322)(
+ IfNode(3303...3317)(
+ (3311...3313),
+ LocalVariableReadNode(3314...3317)(:baz, 0),
+ StatementsNode(3303...3310)(
+ [StringNode(3303...3310)(
+ (3303...3306),
+ (3306...3309),
+ (3309...3310),
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3300...3302),
+ (3318...3322)
+ )],
+ nil,
+ (3290...3294),
+ (3323...3326)
+ ),
+ CaseNode(3327...3361)(
+ CallNode(3332...3335)(
+ nil,
+ nil,
+ (3332...3335),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3337...3357)(
+ IfNode(3340...3352)(
+ (3346...3348),
+ LocalVariableReadNode(3349...3352)(:baz, 0),
+ StatementsNode(3340...3345)(
+ [StringNode(3340...3345)(
+ (3340...3341),
+ (3341...3344),
+ (3344...3345),
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3337...3339),
+ (3353...3357)
+ )],
+ nil,
+ (3327...3331),
+ (3358...3361)
+ ),
+ CaseNode(3362...3394)(
+ CallNode(3367...3370)(
+ nil,
+ nil,
+ (3367...3370),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3372...3390)(
+ IfNode(3375...3385)(
+ (3379...3381),
+ LocalVariableReadNode(3382...3385)(:baz, 0),
+ StatementsNode(3375...3378)([NilNode(3375...3378)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (3372...3374),
+ (3386...3390)
+ )],
+ nil,
+ (3362...3366),
+ (3391...3394)
+ ),
+ CaseNode(3395...3428)(
+ CallNode(3400...3403)(
+ nil,
+ nil,
+ (3400...3403),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3405...3424)(
+ IfNode(3408...3419)(
+ (3413...3415),
+ LocalVariableReadNode(3416...3419)(:baz, 0),
+ StatementsNode(3408...3412)([SelfNode(3408...3412)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (3405...3407),
+ (3420...3424)
+ )],
+ nil,
+ (3395...3399),
+ (3425...3428)
+ ),
+ CaseNode(3429...3462)(
+ CallNode(3434...3437)(
+ nil,
+ nil,
+ (3434...3437),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3439...3458)(
+ IfNode(3442...3453)(
+ (3447...3449),
+ LocalVariableReadNode(3450...3453)(:baz, 0),
+ StatementsNode(3442...3446)([TrueNode(3442...3446)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (3439...3441),
+ (3454...3458)
+ )],
+ nil,
+ (3429...3433),
+ (3459...3462)
+ ),
+ CaseNode(3463...3497)(
+ CallNode(3468...3471)(
+ nil,
+ nil,
+ (3468...3471),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3473...3493)(
+ IfNode(3476...3488)(
+ (3482...3484),
+ LocalVariableReadNode(3485...3488)(:baz, 0),
+ StatementsNode(3476...3481)([FalseNode(3476...3481)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (3473...3475),
+ (3489...3493)
+ )],
+ nil,
+ (3463...3467),
+ (3494...3497)
+ ),
+ CaseNode(3498...3535)(
+ CallNode(3503...3506)(
+ nil,
+ nil,
+ (3503...3506),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3508...3531)(
+ IfNode(3511...3526)(
+ (3520...3522),
+ LocalVariableReadNode(3523...3526)(:baz, 0),
+ StatementsNode(3511...3519)(
+ [SourceFileNode(3511...3519)("/fixtures/patterns.txt")]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3508...3510),
+ (3527...3531)
+ )],
+ nil,
+ (3498...3502),
+ (3532...3535)
+ ),
+ CaseNode(3536...3573)(
+ CallNode(3541...3544)(
+ nil,
+ nil,
+ (3541...3544),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3546...3569)(
+ IfNode(3549...3564)(
+ (3558...3560),
+ LocalVariableReadNode(3561...3564)(:baz, 0),
+ StatementsNode(3549...3557)([SourceLineNode(3549...3557)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (3546...3548),
+ (3565...3569)
+ )],
+ nil,
+ (3536...3540),
+ (3570...3573)
+ ),
+ CaseNode(3574...3615)(
+ CallNode(3579...3582)(
+ nil,
+ nil,
+ (3579...3582),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3584...3611)(
+ IfNode(3587...3606)(
+ (3600...3602),
+ LocalVariableReadNode(3603...3606)(:baz, 0),
+ StatementsNode(3587...3599)([SourceEncodingNode(3587...3599)()]),
+ nil,
+ nil
+ ),
+ nil,
+ (3584...3586),
+ (3607...3611)
+ )],
+ nil,
+ (3574...3578),
+ (3612...3615)
+ ),
+ CaseNode(3616...3655)(
+ CallNode(3621...3624)(
+ nil,
+ nil,
+ (3621...3624),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(3626...3651)(
+ IfNode(3629...3646)(
+ (3640...3642),
+ LocalVariableReadNode(3643...3646)(:baz, 0),
+ StatementsNode(3629...3639)(
+ [LambdaNode(3629...3639)(
+ [],
+ (3629...3631),
+ nil,
+ StatementsNode(3634...3637)(
+ [LocalVariableReadNode(3634...3637)(:bar, 1)]
+ )
+ )]
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (3626...3628),
+ (3647...3651)
+ )],
+ nil,
+ (3616...3620),
+ (3652...3655)
+ ),
+ IfNode(3657...3671)(
+ (3657...3659),
+ MatchPredicateNode(3660...3667)(
+ CallNode(3660...3661)(
+ nil,
+ nil,
+ (3660...3661),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ ArrayPatternNode(3665...3667)(
+ nil,
+ [],
+ nil,
+ [],
+ (3665...3666),
+ (3666...3667)
+ ),
+ (3662...3664)
+ ),
+ nil,
+ nil,
+ (3668...3671)
+ ),
+ MatchRequiredNode(3673...3685)(
+ CallNode(3673...3674)(
+ nil,
+ nil,
+ (3673...3674),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ ArrayPatternNode(3678...3685)(
+ nil,
+ [LocalVariableWriteNode(3682...3683)(:b, 0, nil, (3682...3683), nil)],
+ nil,
+ [],
+ (3678...3679),
+ (3684...3685)
+ ),
+ (3675...3677)
+ ),
+ MatchPredicateNode(3687...3725)(
+ CallNode(3687...3690)(
+ nil,
+ nil,
+ (3687...3690),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ HashPatternNode(3694...3725)(
+ ConstantReadNode(3694...3695)(),
+ [AssocNode(3699...3723)(
+ SymbolNode(3699...3703)(nil, (3699...3702), (3702...3703), "bar"),
+ HashPatternNode(3704...3723)(
+ ConstantReadNode(3704...3705)(),
+ [AssocNode(3711...3719)(
+ SymbolNode(3711...3717)(
+ nil,
+ (3711...3716),
+ (3716...3717),
+ "value"
+ ),
+ LocalVariableWriteNode(3718...3719)(
+ :a,
+ 0,
+ nil,
+ (3718...3719),
+ nil
+ ),
+ nil
+ )],
+ nil,
+ (3705...3706),
+ (3722...3723)
+ ),
+ nil
+ )],
+ nil,
+ (3695...3696),
+ (3724...3725)
+ ),
+ (3691...3693)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/procs.txt b/test/yarp/snapshots/procs.txt
new file mode 100644
index 0000000000..0e02784453
--- /dev/null
+++ b/test/yarp/snapshots/procs.txt
@@ -0,0 +1,218 @@
+ProgramNode(0...266)(
+ [],
+ StatementsNode(0...266)(
+ [LambdaNode(0...21)(
+ [:a, :b, :c, :d],
+ (0...2),
+ BlockParametersNode(3...15)(
+ ParametersNode(4...5)(
+ [RequiredParameterNode(4...5)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(7...8), (10...11), (13...14)],
+ (3...4),
+ (14...15)
+ ),
+ StatementsNode(18...19)([LocalVariableReadNode(18...19)(:b, 0)])
+ ),
+ LambdaNode(23...39)(
+ [],
+ (23...25),
+ nil,
+ BeginNode(29...39)(
+ nil,
+ nil,
+ nil,
+ nil,
+ EnsureNode(29...39)((29...35), nil, (36...39)),
+ (36...39)
+ )
+ ),
+ LambdaNode(41...69)(
+ [],
+ (41...43),
+ nil,
+ BeginNode(47...69)(
+ nil,
+ nil,
+ RescueNode(47...53)((47...53), [], nil, nil, nil, nil),
+ ElseNode(54...65)((54...58), nil, (59...65)),
+ EnsureNode(59...69)((59...65), nil, (66...69)),
+ (66...69)
+ )
+ ),
+ LambdaNode(71...81)(
+ [],
+ (71...73),
+ nil,
+ StatementsNode(76...79)(
+ [CallNode(76...79)(nil, nil, (76...79), nil, nil, nil, nil, 0, "foo")]
+ )
+ ),
+ LambdaNode(83...98)(
+ [],
+ (83...85),
+ nil,
+ StatementsNode(90...93)(
+ [CallNode(90...93)(nil, nil, (90...93), nil, nil, nil, nil, 0, "foo")]
+ )
+ ),
+ LambdaNode(100...129)(
+ [:a, :b, :c, :d, :e],
+ (100...102),
+ BlockParametersNode(103...123)(
+ ParametersNode(103...123)(
+ [RequiredParameterNode(103...104)(:a)],
+ [OptionalParameterNode(106...111)(
+ :b,
+ (106...107),
+ (108...109),
+ IntegerNode(110...111)()
+ )],
+ [],
+ nil,
+ [KeywordParameterNode(113...115)((113...115), nil),
+ KeywordParameterNode(117...119)((117...119), nil)],
+ nil,
+ BlockParameterNode(121...123)((122...123), (121...122))
+ ),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(126...127)([LocalVariableReadNode(126...127)(:a, 0)])
+ ),
+ LambdaNode(131...171)(
+ [:a, :b, :c, :d, :e, :f, :g],
+ (131...133),
+ BlockParametersNode(134...165)(
+ ParametersNode(135...164)(
+ [RequiredParameterNode(135...136)(:a)],
+ [OptionalParameterNode(138...143)(
+ :b,
+ (138...139),
+ (140...141),
+ IntegerNode(142...143)()
+ )],
+ [],
+ RestParameterNode(145...147)((145...146), (146...147)),
+ [KeywordParameterNode(149...151)((149...151), nil),
+ KeywordParameterNode(153...155)((153...155), nil)],
+ KeywordRestParameterNode(157...160)((157...159), (159...160)),
+ BlockParameterNode(162...164)((163...164), (162...163))
+ ),
+ [],
+ (134...135),
+ (164...165)
+ ),
+ StatementsNode(168...169)([LocalVariableReadNode(168...169)(:a, 0)])
+ ),
+ LambdaNode(173...218)(
+ [:a, :b, :c, :d, :e, :f, :g],
+ (173...175),
+ BlockParametersNode(176...207)(
+ ParametersNode(177...206)(
+ [RequiredParameterNode(177...178)(:a)],
+ [OptionalParameterNode(180...185)(
+ :b,
+ (180...181),
+ (182...183),
+ IntegerNode(184...185)()
+ )],
+ [],
+ RestParameterNode(187...189)((187...188), (188...189)),
+ [KeywordParameterNode(191...193)((191...193), nil),
+ KeywordParameterNode(195...197)((195...197), nil)],
+ KeywordRestParameterNode(199...202)((199...201), (201...202)),
+ BlockParameterNode(204...206)((205...206), (204...205))
+ ),
+ [],
+ (176...177),
+ (206...207)
+ ),
+ StatementsNode(213...214)([LocalVariableReadNode(213...214)(:a, 0)])
+ ),
+ LambdaNode(220...245)(
+ [:a],
+ (220...222),
+ BlockParametersNode(223...226)(
+ ParametersNode(224...225)(
+ [RequiredParameterNode(224...225)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (223...224),
+ (225...226)
+ ),
+ StatementsNode(229...243)(
+ [LambdaNode(229...243)(
+ [:b],
+ (229...231),
+ BlockParametersNode(232...233)(
+ ParametersNode(232...233)(
+ [RequiredParameterNode(232...233)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(236...241)(
+ [CallNode(236...241)(
+ LocalVariableReadNode(236...237)(:a, 1),
+ nil,
+ (238...239),
+ nil,
+ ArgumentsNode(240...241)(
+ [LocalVariableReadNode(240...241)(:b, 0)]
+ ),
+ nil,
+ nil,
+ 0,
+ "*"
+ )]
+ )
+ )]
+ )
+ ),
+ LambdaNode(247...266)(
+ [:a, :b, :c],
+ (247...249),
+ BlockParametersNode(250...262)(
+ ParametersNode(251...261)(
+ [RequiredDestructuredParameterNode(251...257)(
+ [RequiredParameterNode(252...253)(:a),
+ RequiredParameterNode(255...256)(:b)],
+ (251...252),
+ (256...257)
+ )],
+ [],
+ [],
+ RestParameterNode(259...261)((259...260), (260...261)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (250...251),
+ (261...262)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/range_begin_open_exclusive.txt b/test/yarp/snapshots/range_begin_open_exclusive.txt
new file mode 100644
index 0000000000..50a6593c46
--- /dev/null
+++ b/test/yarp/snapshots/range_begin_open_exclusive.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [RangeNode(0...4)(nil, IntegerNode(3...4)(), (0...3), 1)]
+ )
+)
diff --git a/test/yarp/snapshots/range_begin_open_inclusive.txt b/test/yarp/snapshots/range_begin_open_inclusive.txt
new file mode 100644
index 0000000000..7d09381f30
--- /dev/null
+++ b/test/yarp/snapshots/range_begin_open_inclusive.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)(
+ [RangeNode(0...3)(nil, IntegerNode(2...3)(), (0...2), 0)]
+ )
+)
diff --git a/test/yarp/snapshots/range_end_open_exclusive.txt b/test/yarp/snapshots/range_end_open_exclusive.txt
new file mode 100644
index 0000000000..3da37b123c
--- /dev/null
+++ b/test/yarp/snapshots/range_end_open_exclusive.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [RangeNode(0...4)(IntegerNode(0...1)(), nil, (1...4), 1)]
+ )
+)
diff --git a/test/yarp/snapshots/range_end_open_inclusive.txt b/test/yarp/snapshots/range_end_open_inclusive.txt
new file mode 100644
index 0000000000..e1b90bdffc
--- /dev/null
+++ b/test/yarp/snapshots/range_end_open_inclusive.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)(
+ [RangeNode(0...3)(IntegerNode(0...1)(), nil, (1...3), 0)]
+ )
+)
diff --git a/test/yarp/snapshots/ranges.txt b/test/yarp/snapshots/ranges.txt
new file mode 100644
index 0000000000..d78044bab0
--- /dev/null
+++ b/test/yarp/snapshots/ranges.txt
@@ -0,0 +1,106 @@
+ProgramNode(0...85)(
+ [],
+ StatementsNode(0...85)(
+ [ParenthesesNode(0...6)(
+ StatementsNode(1...5)(
+ [RangeNode(1...5)(nil, IntegerNode(4...5)(), (1...4), 1)]
+ ),
+ (0...1),
+ (5...6)
+ ),
+ ParenthesesNode(8...13)(
+ StatementsNode(9...12)(
+ [RangeNode(9...12)(nil, IntegerNode(11...12)(), (9...11), 0)]
+ ),
+ (8...9),
+ (12...13)
+ ),
+ RangeNode(15...20)(
+ IntegerNode(15...16)(),
+ IntegerNode(19...20)(),
+ (16...19),
+ 1
+ ),
+ CallNode(22...31)(
+ CallNode(22...25)(nil, nil, (22...25), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (25...31),
+ (25...26),
+ ArgumentsNode(26...30)(
+ [RangeNode(26...30)(nil, IntegerNode(29...30)(), (26...29), 1)]
+ ),
+ (30...31),
+ nil,
+ 0,
+ "[]"
+ ),
+ HashNode(33...48)(
+ (33...34),
+ [AssocNode(35...46)(
+ SymbolNode(35...39)(nil, (35...38), (38...39), "foo"),
+ RangeNode(40...46)(
+ nil,
+ CallNode(43...46)(
+ nil,
+ nil,
+ (43...46),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (40...43),
+ 1
+ ),
+ nil
+ )],
+ (47...48)
+ ),
+ ParenthesesNode(50...56)(
+ StatementsNode(51...55)(
+ [RangeNode(51...55)(IntegerNode(51...52)(), nil, (52...55), 1)]
+ ),
+ (50...51),
+ (55...56)
+ ),
+ RangeNode(58...62)(
+ IntegerNode(58...59)(),
+ IntegerNode(61...62)(),
+ (59...61),
+ 0
+ ),
+ HashNode(64...78)(
+ (64...65),
+ [AssocNode(66...76)(
+ SymbolNode(66...70)(nil, (66...69), (69...70), "foo"),
+ RangeNode(71...76)(
+ nil,
+ CallNode(73...76)(
+ nil,
+ nil,
+ (73...76),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (71...73),
+ 0
+ ),
+ nil
+ )],
+ (77...78)
+ ),
+ ParenthesesNode(80...85)(
+ StatementsNode(81...84)(
+ [RangeNode(81...84)(IntegerNode(81...82)(), nil, (82...84), 0)]
+ ),
+ (80...81),
+ (84...85)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/regex.txt b/test/yarp/snapshots/regex.txt
new file mode 100644
index 0000000000..b53f35df2a
--- /dev/null
+++ b/test/yarp/snapshots/regex.txt
@@ -0,0 +1,143 @@
+ProgramNode(0...278)(
+ [:foo],
+ StatementsNode(0...278)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...9)(
+ [RegularExpressionNode(4...9)((4...5), (5...8), (8...9), "bar", 0)]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ RegularExpressionNode(11...19)((11...14), (14...17), (17...19), "abc", 1),
+ RegularExpressionNode(21...26)((21...22), (22...25), (25...26), "a\b", 0),
+ InterpolatedRegularExpressionNode(28...39)(
+ (28...29),
+ [StringNode(29...33)(nil, (29...33), nil, "aaa "),
+ EmbeddedVariableNode(33...38)(
+ (33...34),
+ GlobalVariableReadNode(34...38)()
+ )],
+ (38...39),
+ 0
+ ),
+ InterpolatedRegularExpressionNode(41...57)(
+ (41...42),
+ [StringNode(42...46)(nil, (42...46), nil, "aaa "),
+ EmbeddedStatementsNode(46...52)(
+ (46...48),
+ StatementsNode(48...51)(
+ [CallNode(48...51)(
+ nil,
+ nil,
+ (48...51),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bbb"
+ )]
+ ),
+ (51...52)
+ ),
+ StringNode(52...56)(nil, (52...56), nil, " ccc")],
+ (56...57),
+ 0
+ ),
+ ArrayNode(59...86)(
+ [CallNode(60...80)(
+ RegularExpressionNode(60...73)(
+ (60...61),
+ (61...72),
+ (72...73),
+ "(?<foo>bar)",
+ 0
+ ),
+ nil,
+ (74...76),
+ nil,
+ ArgumentsNode(77...80)(
+ [CallNode(77...80)(
+ nil,
+ nil,
+ (77...80),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ LocalVariableReadNode(82...85)(:foo, 0)],
+ (59...60),
+ (85...86)
+ ),
+ RegularExpressionNode(88...94)((88...89), (89...92), (92...94), "abc", 1),
+ RegularExpressionNode(96...122)(
+ (96...99),
+ (99...120),
+ (120...122),
+ "[a-z$._?][w$.?\#@~]*:",
+ 1
+ ),
+ RegularExpressionNode(124...161)(
+ (124...127),
+ (127...159),
+ (159...161),
+ "([a-z$._?][w$.?\#@~]*)( +)(equ)",
+ 1
+ ),
+ RegularExpressionNode(163...188)(
+ (163...166),
+ (166...186),
+ (186...188),
+ "[a-z$._?][w$.?\#@~]*",
+ 1
+ ),
+ RegularExpressionNode(190...249)(
+ (190...193),
+ (193...248),
+ (248...249),
+ "\n" + "(?:[w\#$%_']|()|(,)|[]|[0-9])*\n" + " (?:[w\#$%_']+)\n",
+ 0
+ ),
+ CallNode(251...267)(
+ RegularExpressionNode(251...259)(
+ (251...252),
+ (252...258),
+ (258...259),
+ "(?#))",
+ 0
+ ),
+ nil,
+ (260...262),
+ nil,
+ ArgumentsNode(263...267)(
+ [StringNode(263...267)((263...264), (264...266), (266...267), "hi")]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ RegularExpressionNode(269...278)(
+ (269...272),
+ (272...277),
+ (277...278),
+ "pound",
+ 0
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/rescue.txt b/test/yarp/snapshots/rescue.txt
new file mode 100644
index 0000000000..01887935e8
--- /dev/null
+++ b/test/yarp/snapshots/rescue.txt
@@ -0,0 +1,306 @@
+ProgramNode(0...316)(
+ [:a],
+ StatementsNode(0...316)(
+ [RescueModifierNode(0...14)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (4...10),
+ NilNode(11...14)()
+ ),
+ RescueModifierNode(16...30)(
+ CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "foo"),
+ (20...26),
+ NilNode(27...30)()
+ ),
+ RescueModifierNode(32...48)(
+ BreakNode(32...37)(nil, (32...37)),
+ (38...44),
+ NilNode(45...48)()
+ ),
+ RescueModifierNode(50...65)(
+ NextNode(50...54)(nil, (50...54)),
+ (55...61),
+ NilNode(62...65)()
+ ),
+ RescueModifierNode(67...84)(
+ ReturnNode(67...73)((67...73), nil),
+ (74...80),
+ NilNode(81...84)()
+ ),
+ RescueModifierNode(86...105)(
+ CallNode(86...89)(nil, nil, (86...89), nil, nil, nil, nil, 0, "foo"),
+ (90...96),
+ OrNode(97...105)(
+ NilNode(97...100)(),
+ IntegerNode(104...105)(),
+ (101...103)
+ )
+ ),
+ RescueModifierNode(107...129)(
+ CallNode(107...110)(
+ nil,
+ nil,
+ (107...110),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (111...117),
+ IfNode(118...129)(
+ nil,
+ NilNode(118...121)(),
+ StatementsNode(124...125)([IntegerNode(124...125)()]),
+ ElseNode(126...129)(
+ (126...127),
+ StatementsNode(128...129)([IntegerNode(128...129)()]),
+ nil
+ ),
+ nil
+ )
+ ),
+ BeginNode(131...155)(
+ (131...136),
+ StatementsNode(138...139)(
+ [CallNode(138...139)(
+ nil,
+ nil,
+ (138...139),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(141...150)(
+ (141...147),
+ [SplatNode(148...150)(
+ (148...149),
+ CallNode(149...150)(
+ nil,
+ nil,
+ (149...150),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )
+ )],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ nil,
+ nil,
+ (152...155)
+ ),
+ CallNode(157...212)(
+ nil,
+ nil,
+ (157...160),
+ nil,
+ nil,
+ nil,
+ BlockNode(161...212)(
+ [:x],
+ BlockParametersNode(164...167)(
+ ParametersNode(165...166)(
+ [RequiredParameterNode(165...166)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (164...165),
+ (166...167)
+ ),
+ StatementsNode(170...208)(
+ [RescueModifierNode(170...208)(
+ CallNode(170...176)(
+ nil,
+ nil,
+ (170...173),
+ (173...174),
+ ArgumentsNode(174...175)(
+ [CallNode(174...175)(
+ nil,
+ nil,
+ (174...175),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ (175...176),
+ nil,
+ 0,
+ "bar"
+ ),
+ (177...183),
+ CallNode(184...208)(
+ nil,
+ nil,
+ (184...197),
+ nil,
+ ArgumentsNode(198...208)(
+ [CallNode(198...208)(
+ nil,
+ nil,
+ (198...202),
+ nil,
+ ArgumentsNode(203...208)(
+ [StringNode(203...208)(
+ (203...204),
+ (204...207),
+ (207...208),
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "fail"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "ArgumentError"
+ )
+ )]
+ ),
+ (161...163),
+ (209...212)
+ ),
+ 0,
+ "foo"
+ ),
+ IfNode(214...245)(
+ (214...216),
+ LocalVariableWriteNode(217...235)(
+ :a,
+ 0,
+ RescueModifierNode(221...235)(
+ CallNode(221...224)(
+ nil,
+ nil,
+ (221...224),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (225...231),
+ NilNode(232...235)()
+ ),
+ (217...218),
+ (219...220)
+ ),
+ StatementsNode(238...241)(
+ [CallNode(238...241)(
+ nil,
+ nil,
+ (238...241),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ (242...245)
+ ),
+ DefNode(247...291)(
+ (251...262),
+ nil,
+ nil,
+ StatementsNode(265...291)(
+ [CallNode(265...291)(
+ nil,
+ nil,
+ (265...277),
+ nil,
+ ArgumentsNode(278...291)(
+ [RescueModifierNode(278...291)(
+ IntegerNode(278...280)(),
+ (281...287),
+ NilNode(288...291)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "other_method"
+ )]
+ ),
+ [],
+ (247...250),
+ nil,
+ nil,
+ nil,
+ (263...264),
+ nil
+ ),
+ DefNode(293...316)(
+ (297...298),
+ nil,
+ nil,
+ BeginNode(301...316)(
+ nil,
+ StatementsNode(301...305)(
+ [CallNode(301...305)(
+ nil,
+ nil,
+ (301...302),
+ nil,
+ ArgumentsNode(303...305)(
+ [KeywordHashNode(303...305)(
+ [AssocNode(303...305)(
+ SymbolNode(303...305)(
+ nil,
+ (303...304),
+ (304...305),
+ "b"
+ ),
+ nil,
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(306...312)((306...312), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (313...316)
+ ),
+ [],
+ (293...296),
+ nil,
+ nil,
+ nil,
+ nil,
+ (313...316)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/return.txt b/test/yarp/snapshots/return.txt
new file mode 100644
index 0000000000..bbb4b63af2
--- /dev/null
+++ b/test/yarp/snapshots/return.txt
@@ -0,0 +1,92 @@
+ProgramNode(0...139)(
+ [],
+ StatementsNode(0...139)(
+ [ReturnNode(0...6)((0...6), nil),
+ ReturnNode(8...28)(
+ (8...14),
+ ArgumentsNode(15...28)(
+ [ParenthesesNode(15...18)(
+ StatementsNode(16...17)([IntegerNode(16...17)()]),
+ (15...16),
+ (17...18)
+ ),
+ ParenthesesNode(20...23)(
+ StatementsNode(21...22)([IntegerNode(21...22)()]),
+ (20...21),
+ (22...23)
+ ),
+ ParenthesesNode(25...28)(
+ StatementsNode(26...27)([IntegerNode(26...27)()]),
+ (25...26),
+ (27...28)
+ )]
+ )
+ ),
+ ReturnNode(30...39)(
+ (30...36),
+ ArgumentsNode(37...39)(
+ [SplatNode(37...39)((37...38), IntegerNode(38...39)())]
+ )
+ ),
+ ReturnNode(41...49)(
+ (41...47),
+ ArgumentsNode(48...49)([IntegerNode(48...49)()])
+ ),
+ ReturnNode(51...65)(
+ (51...57),
+ ArgumentsNode(58...65)(
+ [IntegerNode(58...59)(),
+ IntegerNode(61...62)(),
+ IntegerNode(64...65)()]
+ )
+ ),
+ ReturnNode(67...81)(
+ (67...73),
+ ArgumentsNode(74...81)(
+ [IntegerNode(74...75)(),
+ IntegerNode(77...78)(),
+ IntegerNode(80...81)()]
+ )
+ ),
+ ReturnNode(83...99)(
+ (83...89),
+ ArgumentsNode(90...99)(
+ [ArrayNode(90...99)(
+ [IntegerNode(91...92)(),
+ IntegerNode(94...95)(),
+ IntegerNode(97...98)()],
+ (90...91),
+ (98...99)
+ )]
+ )
+ ),
+ ReturnNode(101...118)(
+ (101...107),
+ ArgumentsNode(107...118)(
+ [ParenthesesNode(107...118)(
+ StatementsNode(111...116)(
+ [IntegerNode(111...112)(), IntegerNode(115...116)()]
+ ),
+ (107...108),
+ (117...118)
+ )]
+ )
+ ),
+ ReturnNode(120...128)(
+ (120...126),
+ ArgumentsNode(126...128)(
+ [ParenthesesNode(126...128)(nil, (126...127), (127...128))]
+ )
+ ),
+ ReturnNode(130...139)(
+ (130...136),
+ ArgumentsNode(136...139)(
+ [ParenthesesNode(136...139)(
+ StatementsNode(137...138)([IntegerNode(137...138)()]),
+ (136...137),
+ (138...139)
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/BEGIN.txt b/test/yarp/snapshots/seattlerb/BEGIN.txt
new file mode 100644
index 0000000000..f3366c5610
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/BEGIN.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [PreExecutionNode(0...12)(
+ StatementsNode(8...10)([IntegerNode(8...10)()]),
+ (0...5),
+ (6...7),
+ (11...12)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/__ENCODING__.txt b/test/yarp/snapshots/seattlerb/__ENCODING__.txt
new file mode 100644
index 0000000000..2f5aaa5dfc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/__ENCODING__.txt
@@ -0,0 +1 @@
+ProgramNode(0...12)([], StatementsNode(0...12)([SourceEncodingNode(0...12)()]))
diff --git a/test/yarp/snapshots/seattlerb/alias_gvar_backref.txt b/test/yarp/snapshots/seattlerb/alias_gvar_backref.txt
new file mode 100644
index 0000000000..c055a64925
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/alias_gvar_backref.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [AliasNode(0...15)(
+ GlobalVariableReadNode(6...12)(),
+ BackReferenceReadNode(13...15)(),
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/alias_resword.txt b/test/yarp/snapshots/seattlerb/alias_resword.txt
new file mode 100644
index 0000000000..8452f54826
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/alias_resword.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [AliasNode(0...12)(
+ SymbolNode(6...8)(nil, (6...8), nil, "in"),
+ SymbolNode(9...12)(nil, (9...12), nil, "out"),
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/and_multi.txt b/test/yarp/snapshots/seattlerb/and_multi.txt
new file mode 100644
index 0000000000..2db7d7cedd
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/and_multi.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [AndNode(0...27)(
+ AndNode(0...18)(
+ TrueNode(0...4)(),
+ CallNode(9...18)(
+ FalseNode(13...18)(),
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ (5...8)
+ ),
+ TrueNode(23...27)(),
+ (19...22)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/aref_args_assocs.txt b/test/yarp/snapshots/seattlerb/aref_args_assocs.txt
new file mode 100644
index 0000000000..aac10a6763
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/aref_args_assocs.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [ArrayNode(0...8)(
+ [KeywordHashNode(1...7)(
+ [AssocNode(1...7)(
+ IntegerNode(1...2)(),
+ IntegerNode(6...7)(),
+ (3...5)
+ )]
+ )],
+ (0...1),
+ (7...8)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/aref_args_lit_assocs.txt b/test/yarp/snapshots/seattlerb/aref_args_lit_assocs.txt
new file mode 100644
index 0000000000..24857076d0
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/aref_args_lit_assocs.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...11)(
+ [IntegerNode(1...2)(),
+ KeywordHashNode(4...10)(
+ [AssocNode(4...10)(
+ IntegerNode(4...5)(),
+ IntegerNode(9...10)(),
+ (6...8)
+ )]
+ )],
+ (0...1),
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/args_kw_block.txt b/test/yarp/snapshots/seattlerb/args_kw_block.txt
new file mode 100644
index 0000000000..ee6e224c80
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/args_kw_block.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [DefNode(0...20)(
+ (4...5),
+ nil,
+ ParametersNode(6...14)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...10)((6...8), IntegerNode(9...10)())],
+ nil,
+ BlockParameterNode(12...14)((13...14), (12...13))
+ ),
+ nil,
+ [:a, :b],
+ (0...3),
+ nil,
+ (5...6),
+ (14...15),
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/array_line_breaks.txt b/test/yarp/snapshots/seattlerb/array_line_breaks.txt
new file mode 100644
index 0000000000..4d5224564b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/array_line_breaks.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [ArrayNode(0...11)(
+ [StringNode(2...5)((2...3), (3...4), (4...5), "a"),
+ StringNode(7...10)((7...8), (8...9), (9...10), "b")],
+ (0...1),
+ (10...11)
+ ),
+ IntegerNode(12...13)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/array_lits_trailing_calls.txt b/test/yarp/snapshots/seattlerb/array_lits_trailing_calls.txt
new file mode 100644
index 0000000000..8e9c131846
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/array_lits_trailing_calls.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...6)(
+ ArrayNode(0...4)([], (0...3), (3...4)),
+ (4...5),
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(8...12)(
+ ArrayNode(8...10)([], (8...9), (9...10)),
+ (10...11),
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/assoc__bare.txt b/test/yarp/snapshots/seattlerb/assoc__bare.txt
new file mode 100644
index 0000000000..ddefbd1f62
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/assoc__bare.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [HashNode(0...6)(
+ (0...1),
+ [AssocNode(2...4)(
+ SymbolNode(2...4)(nil, (2...3), (3...4), "y"),
+ nil,
+ nil
+ )],
+ (5...6)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/assoc_label.txt b/test/yarp/snapshots/seattlerb/assoc_label.txt
new file mode 100644
index 0000000000..4fa881d191
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/assoc_label.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...5)(
+ [KeywordHashNode(2...5)(
+ [AssocNode(2...5)(
+ SymbolNode(2...4)(nil, (2...3), (3...4), "b"),
+ IntegerNode(4...5)(),
+ nil
+ )]
+ )]
+ ),
+ (5...6),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/attr_asgn_colon_id.txt b/test/yarp/snapshots/seattlerb/attr_asgn_colon_id.txt
new file mode 100644
index 0000000000..20cff2a086
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/attr_asgn_colon_id.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ ConstantReadNode(0...1)(),
+ (1...3),
+ (3...4),
+ nil,
+ ArgumentsNode(7...8)([IntegerNode(7...8)()]),
+ nil,
+ nil,
+ 0,
+ "b="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/attrasgn_array_arg.txt b/test/yarp/snapshots/seattlerb/attrasgn_array_arg.txt
new file mode 100644
index 0000000000..4da302b141
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/attrasgn_array_arg.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (1...9),
+ (1...2),
+ ArgumentsNode(2...13)(
+ [ArrayNode(2...8)(
+ [IntegerNode(3...4)(), IntegerNode(6...7)()],
+ (2...3),
+ (7...8)
+ ),
+ IntegerNode(12...13)()]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "[]="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/attrasgn_array_lhs.txt b/test/yarp/snapshots/seattlerb/attrasgn_array_lhs.txt
new file mode 100644
index 0000000000..e720ae5c86
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/attrasgn_array_lhs.txt
@@ -0,0 +1,57 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [CallNode(0...42)(
+ ArrayNode(0...12)(
+ [IntegerNode(1...2)(),
+ IntegerNode(4...5)(),
+ IntegerNode(7...8)(),
+ IntegerNode(10...11)()],
+ (0...1),
+ (11...12)
+ ),
+ nil,
+ (12...24),
+ (12...13),
+ ArgumentsNode(13...42)(
+ [RangeNode(13...23)(
+ CallNode(13...17)(
+ nil,
+ nil,
+ (13...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "from"
+ ),
+ CallNode(21...23)(
+ nil,
+ nil,
+ (21...23),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "to"
+ ),
+ (18...20),
+ 0
+ ),
+ ArrayNode(27...42)(
+ [StringNode(28...31)((28...29), (29...30), (30...31), "a"),
+ StringNode(33...36)((33...34), (34...35), (35...36), "b"),
+ StringNode(38...41)((38...39), (39...40), (40...41), "c")],
+ (27...28),
+ (41...42)
+ )]
+ ),
+ (23...24),
+ nil,
+ 0,
+ "[]="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/attrasgn_primary_dot_constant.txt b/test/yarp/snapshots/seattlerb/attrasgn_primary_dot_constant.txt
new file mode 100644
index 0000000000..562fa404d4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/attrasgn_primary_dot_constant.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(6...7)([IntegerNode(6...7)()]),
+ nil,
+ nil,
+ 0,
+ "B="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/backticks_interpolation_line.txt b/test/yarp/snapshots/seattlerb/backticks_interpolation_line.txt
new file mode 100644
index 0000000000..27d3f4e3cf
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/backticks_interpolation_line.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...8)(
+ [InterpolatedXStringNode(2...8)(
+ (2...3),
+ [EmbeddedStatementsNode(3...7)(
+ (3...5),
+ StatementsNode(5...6)(
+ [CallNode(5...6)(
+ nil,
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ (6...7)
+ )],
+ (7...8)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bang_eq.txt b/test/yarp/snapshots/seattlerb/bang_eq.txt
new file mode 100644
index 0000000000..3a04d4603a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bang_eq.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ nil,
+ 0,
+ "!="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bdot2.txt b/test/yarp/snapshots/seattlerb/bdot2.txt
new file mode 100644
index 0000000000..107f9ec206
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bdot2.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [RangeNode(0...4)(nil, IntegerNode(2...4)(), (0...2), 0),
+ RangeNode(7...10)(
+ nil,
+ CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "a"),
+ (7...9),
+ 0
+ ),
+ CallNode(13...14)(nil, nil, (13...14), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bdot3.txt b/test/yarp/snapshots/seattlerb/bdot3.txt
new file mode 100644
index 0000000000..433ff9b38f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bdot3.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [RangeNode(0...5)(nil, IntegerNode(3...5)(), (0...3), 1),
+ RangeNode(8...12)(
+ nil,
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "a"),
+ (8...11),
+ 1
+ ),
+ CallNode(15...16)(nil, nil, (15...16), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/begin_ensure_no_bodies.txt b/test/yarp/snapshots/seattlerb/begin_ensure_no_bodies.txt
new file mode 100644
index 0000000000..39ac8bfea1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/begin_ensure_no_bodies.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [BeginNode(0...16)(
+ (0...5),
+ nil,
+ nil,
+ nil,
+ EnsureNode(6...16)((6...12), nil, (13...16)),
+ (13...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_bodies.txt b/test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_bodies.txt
new file mode 100644
index 0000000000..4ad22bbc28
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_bodies.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...44)(
+ [],
+ StatementsNode(0...44)(
+ [BeginNode(0...44)(
+ (0...5),
+ StatementsNode(8...9)([IntegerNode(8...9)()]),
+ RescueNode(10...20)(
+ (10...16),
+ [],
+ nil,
+ nil,
+ StatementsNode(19...20)([IntegerNode(19...20)()]),
+ nil
+ ),
+ ElseNode(21...36)(
+ (21...25),
+ StatementsNode(28...29)([IntegerNode(28...29)()]),
+ (30...36)
+ ),
+ EnsureNode(30...44)(
+ (30...36),
+ StatementsNode(39...40)([IntegerNode(39...40)()]),
+ (41...44)
+ ),
+ (41...44)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_no_bodies.txt b/test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_no_bodies.txt
new file mode 100644
index 0000000000..f8cc5345e3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/begin_rescue_else_ensure_no_bodies.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...32)(
+ [],
+ StatementsNode(0...32)(
+ [BeginNode(0...32)(
+ (0...5),
+ nil,
+ RescueNode(7...13)((7...13), [], nil, nil, nil, nil),
+ ElseNode(15...27)((15...19), nil, (21...27)),
+ EnsureNode(21...32)((21...27), nil, (29...32)),
+ (29...32)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/begin_rescue_ensure_no_bodies.txt b/test/yarp/snapshots/seattlerb/begin_rescue_ensure_no_bodies.txt
new file mode 100644
index 0000000000..1152a0cddf
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/begin_rescue_ensure_no_bodies.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [BeginNode(0...23)(
+ (0...5),
+ nil,
+ RescueNode(6...12)((6...12), [], nil, nil, nil, nil),
+ nil,
+ EnsureNode(13...23)((13...19), nil, (20...23)),
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg__bare.txt b/test/yarp/snapshots/seattlerb/block_arg__bare.txt
new file mode 100644
index 0000000000..94451c870d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg__bare.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [DefNode(0...13)(
+ (4...5),
+ nil,
+ ParametersNode(6...7)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(6...7)(nil, (6...7))
+ ),
+ nil,
+ [:&],
+ (0...3),
+ nil,
+ (5...6),
+ (7...8),
+ nil,
+ (10...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_kwsplat.txt b/test/yarp/snapshots/seattlerb/block_arg_kwsplat.txt
new file mode 100644
index 0000000000..36b7c9f83c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_kwsplat.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...11)(
+ [:b],
+ BlockParametersNode(4...9)(
+ ParametersNode(5...8)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(5...8)((5...7), (7...8)),
+ nil
+ ),
+ [],
+ (4...5),
+ (8...9)
+ ),
+ nil,
+ (2...3),
+ (10...11)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_opt_arg_block.txt b/test/yarp/snapshots/seattlerb/block_arg_opt_arg_block.txt
new file mode 100644
index 0000000000..9a663faff8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_opt_arg_block.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...21)(
+ [:b, :c, :d, :e],
+ BlockParametersNode(4...19)(
+ ParametersNode(5...18)(
+ [RequiredParameterNode(5...6)(:b)],
+ [OptionalParameterNode(8...11)(
+ :c,
+ (8...9),
+ (9...10),
+ IntegerNode(10...11)()
+ )],
+ [RequiredParameterNode(13...14)(:d)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(16...18)((17...18), (16...17))
+ ),
+ [],
+ (4...5),
+ (18...19)
+ ),
+ nil,
+ (2...3),
+ (20...21)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_opt_splat.txt b/test/yarp/snapshots/seattlerb/block_arg_opt_splat.txt
new file mode 100644
index 0000000000..096a00092d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_opt_splat.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...20)(
+ [:b, :c, :d],
+ BlockParametersNode(4...18)(
+ ParametersNode(5...17)(
+ [RequiredParameterNode(5...6)(:b)],
+ [OptionalParameterNode(8...13)(
+ :c,
+ (8...9),
+ (10...11),
+ IntegerNode(12...13)()
+ )],
+ [],
+ RestParameterNode(15...17)((15...16), (16...17)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (17...18)
+ ),
+ nil,
+ (2...3),
+ (19...20)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_opt_splat_arg_block_omfg.txt b/test/yarp/snapshots/seattlerb/block_arg_opt_splat_arg_block_omfg.txt
new file mode 100644
index 0000000000..6ace3ff446
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_opt_splat_arg_block_omfg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CallNode(0...25)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...25)(
+ [:b, :c, :d, :e, :f],
+ BlockParametersNode(4...23)(
+ ParametersNode(5...22)(
+ [RequiredParameterNode(5...6)(:b)],
+ [OptionalParameterNode(8...11)(
+ :c,
+ (8...9),
+ (9...10),
+ IntegerNode(10...11)()
+ )],
+ [RequiredParameterNode(17...18)(:e)],
+ RestParameterNode(13...15)((13...14), (14...15)),
+ [],
+ nil,
+ BlockParameterNode(20...22)((21...22), (20...21))
+ ),
+ [],
+ (4...5),
+ (22...23)
+ ),
+ nil,
+ (2...3),
+ (24...25)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_optional.txt b/test/yarp/snapshots/seattlerb/block_arg_optional.txt
new file mode 100644
index 0000000000..cb71821778
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_optional.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...13)(
+ [:b],
+ BlockParametersNode(4...11)(
+ ParametersNode(5...10)(
+ [],
+ [OptionalParameterNode(5...10)(
+ :b,
+ (5...6),
+ (7...8),
+ IntegerNode(9...10)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (10...11)
+ ),
+ nil,
+ (2...3),
+ (12...13)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_scope.txt b/test/yarp/snapshots/seattlerb/block_arg_scope.txt
new file mode 100644
index 0000000000..498d41cbe3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_scope.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...12)(
+ [:b, :c],
+ BlockParametersNode(4...10)(
+ ParametersNode(5...6)(
+ [RequiredParameterNode(5...6)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(8...9)],
+ (4...5),
+ (9...10)
+ ),
+ nil,
+ (2...3),
+ (11...12)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_scope2.txt b/test/yarp/snapshots/seattlerb/block_arg_scope2.txt
new file mode 100644
index 0000000000..787e8cb10a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_scope2.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:b, :c, :d],
+ BlockParametersNode(3...12)(
+ ParametersNode(4...5)(
+ [RequiredParameterNode(4...5)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(7...8), (10...11)],
+ (3...4),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_arg_splat_arg.txt b/test/yarp/snapshots/seattlerb/block_arg_splat_arg.txt
new file mode 100644
index 0000000000..01732f748e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_arg_splat_arg.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...16)(
+ [:b, :c, :d],
+ BlockParametersNode(4...14)(
+ ParametersNode(5...13)(
+ [RequiredParameterNode(5...6)(:b)],
+ [],
+ [RequiredParameterNode(12...13)(:d)],
+ RestParameterNode(8...10)((8...9), (9...10)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (13...14)
+ ),
+ nil,
+ (2...3),
+ (15...16)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_args_kwargs.txt b/test/yarp/snapshots/seattlerb/block_args_kwargs.txt
new file mode 100644
index 0000000000..f54b1bc55f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_args_kwargs.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [CallNode(0...23)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...23)(
+ [:kwargs],
+ BlockParametersNode(4...14)(
+ ParametersNode(5...13)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(5...13)((5...7), (7...13)),
+ nil
+ ),
+ [],
+ (4...5),
+ (13...14)
+ ),
+ StatementsNode(15...21)([LocalVariableReadNode(15...21)(:kwargs, 0)]),
+ (2...3),
+ (22...23)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_args_no_kwargs.txt b/test/yarp/snapshots/seattlerb/block_args_no_kwargs.txt
new file mode 100644
index 0000000000..7e4fa1e9f8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_args_no_kwargs.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...13)(
+ [],
+ BlockParametersNode(4...11)(
+ ParametersNode(5...10)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ NoKeywordsParameterNode(5...10)((5...7), (7...10)),
+ nil
+ ),
+ [],
+ (4...5),
+ (10...11)
+ ),
+ nil,
+ (2...3),
+ (12...13)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_args_opt1.txt b/test/yarp/snapshots/seattlerb/block_args_opt1.txt
new file mode 100644
index 0000000000..271638e3d8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_args_opt1.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [CallNode(0...24)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...24)(
+ [:a, :b],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ StatementsNode(16...22)(
+ [ArrayNode(16...22)(
+ [LocalVariableReadNode(17...18)(:a, 0),
+ LocalVariableReadNode(20...21)(:b, 0)],
+ (16...17),
+ (21...22)
+ )]
+ ),
+ (2...3),
+ (23...24)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_args_opt2.txt b/test/yarp/snapshots/seattlerb/block_args_opt2.txt
new file mode 100644
index 0000000000..6b98d4f75c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_args_opt2.txt
@@ -0,0 +1,46 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:b, :c],
+ BlockParametersNode(4...16)(
+ ParametersNode(6...14)(
+ [],
+ [OptionalParameterNode(6...9)(
+ :b,
+ (6...7),
+ (7...8),
+ IntegerNode(8...9)()
+ ),
+ OptionalParameterNode(11...14)(
+ :c,
+ (11...12),
+ (12...13),
+ IntegerNode(13...14)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_args_opt2_2.txt b/test/yarp/snapshots/seattlerb/block_args_opt2_2.txt
new file mode 100644
index 0000000000..cdda0997df
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_args_opt2_2.txt
@@ -0,0 +1,54 @@
+ProgramNode(0...35)(
+ [],
+ StatementsNode(0...35)(
+ [CallNode(0...35)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...35)(
+ [:a, :b, :c],
+ BlockParametersNode(4...23)(
+ ParametersNode(5...22)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ ),
+ OptionalParameterNode(16...22)(
+ :c,
+ (16...17),
+ (18...19),
+ IntegerNode(20...22)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (22...23)
+ ),
+ StatementsNode(24...33)(
+ [ArrayNode(24...33)(
+ [LocalVariableReadNode(25...26)(:a, 0),
+ LocalVariableReadNode(28...29)(:b, 0),
+ LocalVariableReadNode(31...32)(:c, 0)],
+ (24...25),
+ (32...33)
+ )]
+ ),
+ (2...3),
+ (34...35)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_args_opt3.txt b/test/yarp/snapshots/seattlerb/block_args_opt3.txt
new file mode 100644
index 0000000000..0513157505
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_args_opt3.txt
@@ -0,0 +1,55 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [CallNode(0...42)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...42)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...27)(
+ ParametersNode(5...26)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ ),
+ OptionalParameterNode(16...22)(
+ :c,
+ (16...17),
+ (18...19),
+ IntegerNode(20...22)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(24...26)((25...26), (24...25))
+ ),
+ [],
+ (4...5),
+ (26...27)
+ ),
+ StatementsNode(28...40)(
+ [ArrayNode(28...40)(
+ [LocalVariableReadNode(29...30)(:a, 0),
+ LocalVariableReadNode(32...33)(:b, 0),
+ LocalVariableReadNode(35...36)(:c, 0),
+ LocalVariableReadNode(38...39)(:d, 0)],
+ (28...29),
+ (39...40)
+ )]
+ ),
+ (2...3),
+ (41...42)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_break.txt b/test/yarp/snapshots/seattlerb/block_break.txt
new file mode 100644
index 0000000000..3d93c86f69
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_break.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [BreakNode(0...26)(
+ ArgumentsNode(6...26)(
+ [CallNode(6...26)(
+ nil,
+ nil,
+ (6...9),
+ nil,
+ ArgumentsNode(10...13)(
+ [CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "arg"
+ )]
+ ),
+ nil,
+ BlockNode(14...26)(
+ [:bar],
+ BlockParametersNode(17...22)(
+ ParametersNode(18...21)(
+ [RequiredParameterNode(18...21)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (17...18),
+ (21...22)
+ ),
+ nil,
+ (14...16),
+ (23...26)
+ ),
+ 0,
+ "foo"
+ )]
+ ),
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_call_defn_call_block_call.txt b/test/yarp/snapshots/seattlerb/block_call_defn_call_block_call.txt
new file mode 100644
index 0000000000..5c68b72478
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_call_defn_call_block_call.txt
@@ -0,0 +1,61 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...18)(
+ [DefNode(2...18)(
+ (6...7),
+ nil,
+ ParametersNode(8...9)(
+ [RequiredParameterNode(8...9)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(12...13)(
+ [CallNode(12...13)(
+ nil,
+ nil,
+ (12...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ [:c],
+ (2...5),
+ nil,
+ (7...8),
+ (9...10),
+ nil,
+ (15...18)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(20...30)(
+ CallNode(20...21)(nil, nil, (20...21), nil, nil, nil, nil, 0, "e"),
+ (21...22),
+ (22...23),
+ nil,
+ nil,
+ nil,
+ BlockNode(24...30)([], nil, nil, (24...26), (27...30)),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_call_dot_op2_brace_block.txt b/test/yarp/snapshots/seattlerb/block_call_dot_op2_brace_block.txt
new file mode 100644
index 0000000000..5b3de7d352
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_call_dot_op2_brace_block.txt
@@ -0,0 +1,77 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CallNode(0...31)(
+ CallNode(0...16)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(4...7)(
+ [CallNode(4...7)(
+ nil,
+ nil,
+ (4...5),
+ (5...6),
+ nil,
+ (6...7),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil,
+ BlockNode(8...16)(
+ [],
+ nil,
+ StatementsNode(11...12)(
+ [CallNode(11...12)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (8...10),
+ (13...16)
+ ),
+ 0,
+ "b"
+ ),
+ (16...17),
+ (17...18),
+ nil,
+ nil,
+ nil,
+ BlockNode(19...31)(
+ [:f],
+ BlockParametersNode(22...25)(
+ ParametersNode(23...24)(
+ [RequiredParameterNode(23...24)(:f)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (22...23),
+ (24...25)
+ ),
+ StatementsNode(26...27)(
+ [CallNode(26...27)(nil, nil, (26...27), nil, nil, nil, nil, 0, "g")]
+ ),
+ (19...21),
+ (28...31)
+ ),
+ 0,
+ "e"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_call_dot_op2_cmd_args_do_block.txt b/test/yarp/snapshots/seattlerb/block_call_dot_op2_cmd_args_do_block.txt
new file mode 100644
index 0000000000..28d30af0c6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_call_dot_op2_cmd_args_do_block.txt
@@ -0,0 +1,79 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [CallNode(0...33)(
+ CallNode(0...16)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(4...7)(
+ [CallNode(4...7)(
+ nil,
+ nil,
+ (4...5),
+ (5...6),
+ nil,
+ (6...7),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil,
+ BlockNode(8...16)(
+ [],
+ nil,
+ StatementsNode(11...12)(
+ [CallNode(11...12)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (8...10),
+ (13...16)
+ ),
+ 0,
+ "b"
+ ),
+ (16...17),
+ (17...18),
+ nil,
+ ArgumentsNode(19...20)(
+ [CallNode(19...20)(nil, nil, (19...20), nil, nil, nil, nil, 0, "f")]
+ ),
+ nil,
+ BlockNode(21...33)(
+ [:g],
+ BlockParametersNode(24...27)(
+ ParametersNode(25...26)(
+ [RequiredParameterNode(25...26)(:g)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (24...25),
+ (26...27)
+ ),
+ StatementsNode(28...29)(
+ [CallNode(28...29)(nil, nil, (28...29), nil, nil, nil, nil, 0, "h")]
+ ),
+ (21...23),
+ (30...33)
+ ),
+ 0,
+ "e"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_call_operation_colon.txt b/test/yarp/snapshots/seattlerb/block_call_operation_colon.txt
new file mode 100644
index 0000000000..9f2be35702
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_call_operation_colon.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ CallNode(0...12)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)(
+ [CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "c")]
+ ),
+ nil,
+ BlockNode(6...12)([], nil, nil, (6...8), (9...12)),
+ 0,
+ "b"
+ ),
+ (12...14),
+ (14...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_call_operation_dot.txt b/test/yarp/snapshots/seattlerb/block_call_operation_dot.txt
new file mode 100644
index 0000000000..255fdc2271
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_call_operation_dot.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ CallNode(0...12)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)(
+ [CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "c")]
+ ),
+ nil,
+ BlockNode(6...12)([], nil, nil, (6...8), (9...12)),
+ 0,
+ "b"
+ ),
+ (12...13),
+ (13...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_call_paren_call_block_call.txt b/test/yarp/snapshots/seattlerb/block_call_paren_call_block_call.txt
new file mode 100644
index 0000000000..0689466b69
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_call_paren_call_block_call.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...5)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...5)(
+ [ParenthesesNode(2...5)(
+ StatementsNode(3...4)(
+ [CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "b")]
+ ),
+ (2...3),
+ (4...5)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(6...16)(
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "c"),
+ (7...8),
+ (8...9),
+ nil,
+ nil,
+ nil,
+ BlockNode(10...16)([], nil, nil, (10...12), (13...16)),
+ 0,
+ "d"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_command_operation_colon.txt b/test/yarp/snapshots/seattlerb/block_command_operation_colon.txt
new file mode 100644
index 0000000000..9007764dea
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_command_operation_colon.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...4)([SymbolNode(2...4)((2...3), (3...4), nil, "b")]),
+ nil,
+ BlockNode(5...11)([], nil, nil, (5...7), (8...11)),
+ 0,
+ "a"
+ ),
+ (11...13),
+ (16...17),
+ nil,
+ ArgumentsNode(15...17)(
+ [SymbolNode(15...17)((15...16), (16...17), nil, "d")]
+ ),
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_command_operation_dot.txt b/test/yarp/snapshots/seattlerb/block_command_operation_dot.txt
new file mode 100644
index 0000000000..8225ce403f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_command_operation_dot.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...4)([SymbolNode(2...4)((2...3), (3...4), nil, "b")]),
+ nil,
+ BlockNode(5...11)([], nil, nil, (5...7), (8...11)),
+ 0,
+ "a"
+ ),
+ (11...12),
+ (12...13),
+ nil,
+ ArgumentsNode(14...16)(
+ [SymbolNode(14...16)((14...15), (15...16), nil, "d")]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_decomp_anon_splat_arg.txt b/test/yarp/snapshots/seattlerb/block_decomp_anon_splat_arg.txt
new file mode 100644
index 0000000000..f5bee5b926
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_decomp_anon_splat_arg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:a],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [RequiredDestructuredParameterNode(5...11)(
+ [SplatNode(6...7)((6...7), nil),
+ RequiredParameterNode(9...10)(:a)],
+ (5...6),
+ (10...11)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_decomp_arg_splat.txt b/test/yarp/snapshots/seattlerb/block_decomp_arg_splat.txt
new file mode 100644
index 0000000000..b1c8e2e9b8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_decomp_arg_splat.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:b],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [RequiredDestructuredParameterNode(5...11)(
+ [RequiredParameterNode(6...7)(:b),
+ SplatNode(9...10)((9...10), nil)],
+ (5...6),
+ (10...11)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_decomp_arg_splat_arg.txt b/test/yarp/snapshots/seattlerb/block_decomp_arg_splat_arg.txt
new file mode 100644
index 0000000000..f66bef6ccb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_decomp_arg_splat_arg.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:a, :b, :c],
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [RequiredDestructuredParameterNode(5...15)(
+ [RequiredParameterNode(6...7)(:a),
+ SplatNode(9...11)(
+ (9...10),
+ RequiredParameterNode(10...11)(:b)
+ ),
+ RequiredParameterNode(13...14)(:c)],
+ (5...6),
+ (14...15)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_decomp_splat.txt b/test/yarp/snapshots/seattlerb/block_decomp_splat.txt
new file mode 100644
index 0000000000..c78fd82317
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_decomp_splat.txt
@@ -0,0 +1,39 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...12)(
+ [:a],
+ BlockParametersNode(4...10)(
+ ParametersNode(5...9)(
+ [RequiredDestructuredParameterNode(5...9)(
+ [SplatNode(6...8)((6...7), RequiredParameterNode(7...8)(:a))],
+ (5...6),
+ (8...9)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (9...10)
+ ),
+ nil,
+ (2...3),
+ (11...12)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_kw.txt b/test/yarp/snapshots/seattlerb/block_kw.txt
new file mode 100644
index 0000000000..b8f61d8e30
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_kw.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ nil,
+ nil,
+ BlockNode(5...15)(
+ [:k],
+ BlockParametersNode(7...13)(
+ ParametersNode(8...12)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(8...12)((8...10), IntegerNode(10...12)())],
+ nil,
+ nil
+ ),
+ [],
+ (7...8),
+ (12...13)
+ ),
+ nil,
+ (5...6),
+ (14...15)
+ ),
+ 0,
+ "blah"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_kw__required.txt b/test/yarp/snapshots/seattlerb/block_kw__required.txt
new file mode 100644
index 0000000000..cb7b291237
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_kw__required.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ nil,
+ nil,
+ BlockNode(5...16)(
+ [:k],
+ BlockParametersNode(8...12)(
+ ParametersNode(9...11)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(9...11)((9...11), nil)],
+ nil,
+ nil
+ ),
+ [],
+ (8...9),
+ (11...12)
+ ),
+ nil,
+ (5...7),
+ (13...16)
+ ),
+ 0,
+ "blah"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_kwarg_lvar.txt b/test/yarp/snapshots/seattlerb/block_kwarg_lvar.txt
new file mode 100644
index 0000000000..dd1df1b7ad
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_kwarg_lvar.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...2),
+ nil,
+ nil,
+ nil,
+ BlockNode(3...20)(
+ [:kw],
+ BlockParametersNode(5...15)(
+ ParametersNode(6...14)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...14)(
+ (6...9),
+ SymbolNode(10...14)((10...11), (11...14), nil, "val")
+ )],
+ nil,
+ nil
+ ),
+ [],
+ (5...6),
+ (14...15)
+ ),
+ StatementsNode(16...18)([LocalVariableReadNode(16...18)(:kw, 0)]),
+ (3...4),
+ (19...20)
+ ),
+ 0,
+ "bl"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_kwarg_lvar_multiple.txt b/test/yarp/snapshots/seattlerb/block_kwarg_lvar_multiple.txt
new file mode 100644
index 0000000000..ae561f5de3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_kwarg_lvar_multiple.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [CallNode(0...33)(
+ nil,
+ nil,
+ (0...2),
+ nil,
+ nil,
+ nil,
+ BlockNode(3...33)(
+ [:kw, :kw2],
+ BlockParametersNode(5...28)(
+ ParametersNode(6...26)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...14)(
+ (6...9),
+ SymbolNode(10...14)((10...11), (11...14), nil, "val")
+ ),
+ KeywordParameterNode(16...26)(
+ (16...20),
+ SymbolNode(21...26)((21...22), (22...26), nil, "val2")
+ )],
+ nil,
+ nil
+ ),
+ [],
+ (5...6),
+ (27...28)
+ ),
+ StatementsNode(29...31)([LocalVariableReadNode(29...31)(:kw, 0)]),
+ (3...4),
+ (32...33)
+ ),
+ 0,
+ "bl"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_next.txt b/test/yarp/snapshots/seattlerb/block_next.txt
new file mode 100644
index 0000000000..b7babbf781
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_next.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [NextNode(0...25)(
+ ArgumentsNode(5...25)(
+ [CallNode(5...25)(
+ nil,
+ nil,
+ (5...8),
+ nil,
+ ArgumentsNode(9...12)(
+ [CallNode(9...12)(
+ nil,
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "arg"
+ )]
+ ),
+ nil,
+ BlockNode(13...25)(
+ [:bar],
+ BlockParametersNode(16...21)(
+ ParametersNode(17...20)(
+ [RequiredParameterNode(17...20)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (16...17),
+ (20...21)
+ ),
+ nil,
+ (13...15),
+ (22...25)
+ ),
+ 0,
+ "foo"
+ )]
+ ),
+ (0...4)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_opt_arg.txt b/test/yarp/snapshots/seattlerb/block_opt_arg.txt
new file mode 100644
index 0000000000..0927953818
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_opt_arg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:b, :c],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [],
+ [OptionalParameterNode(5...8)(
+ :b,
+ (5...6),
+ (6...7),
+ IntegerNode(7...8)()
+ )],
+ [RequiredParameterNode(10...11)(:c)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_opt_splat.txt b/test/yarp/snapshots/seattlerb/block_opt_splat.txt
new file mode 100644
index 0000000000..59b1a79e40
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_opt_splat.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:b, :c],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [],
+ [OptionalParameterNode(5...10)(
+ :b,
+ (5...6),
+ (7...8),
+ IntegerNode(9...10)()
+ )],
+ [],
+ RestParameterNode(12...14)((12...13), (13...14)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_opt_splat_arg_block_omfg.txt b/test/yarp/snapshots/seattlerb/block_opt_splat_arg_block_omfg.txt
new file mode 100644
index 0000000000..cc48f213f8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_opt_splat_arg_block_omfg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...22)(
+ [:b, :c, :d, :e],
+ BlockParametersNode(4...20)(
+ ParametersNode(5...19)(
+ [],
+ [OptionalParameterNode(5...8)(
+ :b,
+ (5...6),
+ (6...7),
+ IntegerNode(7...8)()
+ )],
+ [RequiredParameterNode(14...15)(:d)],
+ RestParameterNode(10...12)((10...11), (11...12)),
+ [],
+ nil,
+ BlockParameterNode(17...19)((18...19), (17...18))
+ ),
+ [],
+ (4...5),
+ (19...20)
+ ),
+ nil,
+ (2...3),
+ (21...22)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_optarg.txt b/test/yarp/snapshots/seattlerb/block_optarg.txt
new file mode 100644
index 0000000000..faaaf22e0e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_optarg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:b],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :b,
+ (5...6),
+ (7...8),
+ SymbolNode(9...11)((9...10), (10...11), nil, "c")
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_paren_splat.txt b/test/yarp/snapshots/seattlerb/block_paren_splat.txt
new file mode 100644
index 0000000000..74a59ed1de
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_paren_splat.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...15)(
+ [:b, :c],
+ BlockParametersNode(4...13)(
+ ParametersNode(5...12)(
+ [RequiredDestructuredParameterNode(5...12)(
+ [RequiredParameterNode(6...7)(:b),
+ SplatNode(9...11)(
+ (9...10),
+ RequiredParameterNode(10...11)(:c)
+ )],
+ (5...6),
+ (11...12)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (12...13)
+ ),
+ nil,
+ (2...3),
+ (14...15)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_reg_optarg.txt b/test/yarp/snapshots/seattlerb/block_reg_optarg.txt
new file mode 100644
index 0000000000..c6cbc623e0
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_reg_optarg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:b, :c],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [RequiredParameterNode(5...6)(:b)],
+ [OptionalParameterNode(8...14)(
+ :c,
+ (8...9),
+ (10...11),
+ SymbolNode(12...14)((12...13), (13...14), nil, "d")
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_return.txt b/test/yarp/snapshots/seattlerb/block_return.txt
new file mode 100644
index 0000000000..b8adacc523
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_return.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [ReturnNode(0...27)(
+ (0...6),
+ ArgumentsNode(7...27)(
+ [CallNode(7...27)(
+ nil,
+ nil,
+ (7...10),
+ nil,
+ ArgumentsNode(11...14)(
+ [CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "arg"
+ )]
+ ),
+ nil,
+ BlockNode(15...27)(
+ [:bar],
+ BlockParametersNode(18...23)(
+ ParametersNode(19...22)(
+ [RequiredParameterNode(19...22)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (18...19),
+ (22...23)
+ ),
+ nil,
+ (15...17),
+ (24...27)
+ ),
+ 0,
+ "foo"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_scope.txt b/test/yarp/snapshots/seattlerb/block_scope.txt
new file mode 100644
index 0000000000..223268c471
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_scope.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...10)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...10)(
+ [:b],
+ BlockParametersNode(4...8)(nil, [(6...7)], (4...5), (7...8)),
+ nil,
+ (2...3),
+ (9...10)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/block_splat_reg.txt b/test/yarp/snapshots/seattlerb/block_splat_reg.txt
new file mode 100644
index 0000000000..85011bd781
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/block_splat_reg.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...13)(
+ [:b, :c],
+ BlockParametersNode(4...11)(
+ ParametersNode(5...10)(
+ [],
+ [],
+ [RequiredParameterNode(9...10)(:c)],
+ RestParameterNode(5...7)((5...6), (6...7)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (10...11)
+ ),
+ nil,
+ (2...3),
+ (12...13)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug169.txt b/test/yarp/snapshots/seattlerb/bug169.txt
new file mode 100644
index 0000000000..d6b75f5369
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug169.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...4)([ParenthesesNode(2...4)(nil, (2...3), (3...4))]),
+ nil,
+ BlockNode(5...7)([], nil, nil, (5...6), (6...7)),
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug179.txt b/test/yarp/snapshots/seattlerb/bug179.txt
new file mode 100644
index 0000000000..9dc2331c93
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug179.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...9)(
+ [RangeNode(2...9)(
+ ParenthesesNode(2...4)(nil, (2...3), (3...4)),
+ NilNode(6...9)(),
+ (4...6),
+ 0
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug190.txt b/test/yarp/snapshots/seattlerb/bug190.txt
new file mode 100644
index 0000000000..1ad483ada9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug190.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [RegularExpressionNode(0...6)((0...3), (3...5), (5...6), "'", 0)]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug191.txt b/test/yarp/snapshots/seattlerb/bug191.txt
new file mode 100644
index 0000000000..0e45d22dae
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug191.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [IfNode(0...9)(
+ nil,
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(4...6)(
+ [StringNode(4...6)((4...5), (5...5), (5...6), "")]
+ ),
+ ElseNode(6...9)(
+ (6...7),
+ StatementsNode(8...9)(
+ [CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil
+ ),
+ nil
+ ),
+ IfNode(11...20)(
+ nil,
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(15...17)(
+ [StringNode(15...17)((15...16), (16...16), (16...17), "")]
+ ),
+ ElseNode(17...20)(
+ (17...18),
+ StatementsNode(19...20)(
+ [CallNode(19...20)(nil, nil, (19...20), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug202.txt b/test/yarp/snapshots/seattlerb/bug202.txt
new file mode 100644
index 0000000000..7bb548f798
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug202.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...22)(
+ [:测试],
+ StatementsNode(0...22)(
+ [GlobalVariableWriteNode(0...11)((0...7), (8...9), IntegerNode(10...11)()),
+ LocalVariableWriteNode(12...22)(
+ :测试,
+ 0,
+ IntegerNode(21...22)(),
+ (12...18),
+ (19...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug236.txt b/test/yarp/snapshots/seattlerb/bug236.txt
new file mode 100644
index 0000000000..bf6b429802
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug236.txt
@@ -0,0 +1,65 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(1...7)(
+ [:a],
+ BlockParametersNode(2...6)(
+ ParametersNode(3...5)(
+ [RequiredParameterNode(3...4)(:a)],
+ [],
+ [],
+ RestParameterNode(4...5)((4...5), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (2...3),
+ (5...6)
+ ),
+ nil,
+ (1...2),
+ (6...7)
+ ),
+ 0,
+ "x"
+ ),
+ CallNode(9...15)(
+ nil,
+ nil,
+ (9...10),
+ nil,
+ nil,
+ nil,
+ BlockNode(10...15)(
+ [:a],
+ BlockParametersNode(11...14)(
+ ParametersNode(12...13)(
+ [RequiredParameterNode(12...13)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (11...12),
+ (13...14)
+ ),
+ nil,
+ (10...11),
+ (14...15)
+ ),
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug290.txt b/test/yarp/snapshots/seattlerb/bug290.txt
new file mode 100644
index 0000000000..84e7cbeb97
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug290.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [BeginNode(0...15)(
+ (0...5),
+ StatementsNode(8...11)(
+ [CallNode(8...11)(nil, nil, (8...11), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ nil,
+ nil,
+ (12...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_187.txt b/test/yarp/snapshots/seattlerb/bug_187.txt
new file mode 100644
index 0000000000..b0c76b3c4b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_187.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallNode(0...28)(
+ nil,
+ nil,
+ (0...7),
+ nil,
+ ArgumentsNode(8...28)(
+ [DefNode(8...28)(
+ (12...13),
+ nil,
+ nil,
+ StatementsNode(14...24)(
+ [CallNode(14...24)(
+ CallNode(14...15)(
+ nil,
+ nil,
+ (14...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (15...16),
+ (16...17),
+ nil,
+ nil,
+ nil,
+ BlockNode(18...24)([], nil, nil, (18...20), (21...24)),
+ 0,
+ "b"
+ )]
+ ),
+ [],
+ (8...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ (25...28)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "private"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_215.txt b/test/yarp/snapshots/seattlerb/bug_215.txt
new file mode 100644
index 0000000000..16a2ca3be1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_215.txt
@@ -0,0 +1,9 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [UndefNode(0...13)(
+ [SymbolNode(6...13)((6...9), (9...12), (12...13), "foo")],
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_249.txt b/test/yarp/snapshots/seattlerb/bug_249.txt
new file mode 100644
index 0000000000..08a99c73b9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_249.txt
@@ -0,0 +1,76 @@
+ProgramNode(0...67)(
+ [],
+ StatementsNode(0...67)(
+ [CallNode(0...67)(
+ nil,
+ nil,
+ (0...5),
+ nil,
+ ArgumentsNode(6...67)(
+ [CallNode(6...48)(
+ ParenthesesNode(6...44)(
+ StatementsNode(7...43)(
+ [CallNode(7...43)(
+ ConstantReadNode(7...12)(),
+ (12...13),
+ (13...16),
+ nil,
+ nil,
+ nil,
+ BlockNode(17...43)(
+ [],
+ nil,
+ StatementsNode(20...38)(
+ [DefNode(20...38)(
+ (24...34),
+ nil,
+ nil,
+ nil,
+ [],
+ (20...23),
+ nil,
+ nil,
+ nil,
+ nil,
+ (35...38)
+ )]
+ ),
+ (17...19),
+ (40...43)
+ ),
+ 0,
+ "new"
+ )]
+ ),
+ (6...7),
+ (43...44)
+ ),
+ (44...45),
+ (45...48),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "new"
+ ),
+ KeywordHashNode(50...67)(
+ [AssocNode(50...67)(
+ SymbolNode(50...53)((50...51), (51...53), nil, "at"),
+ StringNode(57...67)(
+ (57...58),
+ (58...66),
+ (66...67),
+ "endpoint"
+ ),
+ (54...56)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "mount"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_and.txt b/test/yarp/snapshots/seattlerb/bug_and.txt
new file mode 100644
index 0000000000..b81ddb4d87
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_and.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [AndNode(0...13)(TrueNode(0...4)(), TrueNode(9...13)(), (5...8)),
+ AndNode(15...26)(
+ TrueNode(15...19)(),
+ ArrayNode(24...26)([], (24...25), (25...26)),
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_args__19.txt b/test/yarp/snapshots/seattlerb/bug_args__19.txt
new file mode 100644
index 0000000000..64dece1b91
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_args__19.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...16)(
+ [:a, :b],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [RequiredDestructuredParameterNode(5...11)(
+ [RequiredParameterNode(6...7)(:a),
+ RequiredParameterNode(9...10)(:b)],
+ (5...6),
+ (10...11)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ StatementsNode(13...14)(
+ [CallNode(13...14)(nil, nil, (13...14), nil, nil, nil, nil, 0, "d")]
+ ),
+ (2...3),
+ (15...16)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_args_masgn.txt b/test/yarp/snapshots/seattlerb/bug_args_masgn.txt
new file mode 100644
index 0000000000..5a79af6c92
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_args_masgn.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:a, :b, :c],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [RequiredDestructuredParameterNode(5...11)(
+ [RequiredParameterNode(6...7)(:a),
+ RequiredParameterNode(9...10)(:b)],
+ (5...6),
+ (10...11)
+ ),
+ RequiredParameterNode(13...14)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_args_masgn2.txt b/test/yarp/snapshots/seattlerb/bug_args_masgn2.txt
new file mode 100644
index 0000000000..410d5f7ebd
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_args_masgn2.txt
@@ -0,0 +1,46 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...22)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...20)(
+ ParametersNode(5...19)(
+ [RequiredDestructuredParameterNode(5...16)(
+ [RequiredDestructuredParameterNode(6...12)(
+ [RequiredParameterNode(7...8)(:a),
+ RequiredParameterNode(10...11)(:b)],
+ (6...7),
+ (11...12)
+ ),
+ RequiredParameterNode(14...15)(:c)],
+ (5...6),
+ (15...16)
+ ),
+ RequiredParameterNode(18...19)(:d)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (19...20)
+ ),
+ nil,
+ (2...3),
+ (21...22)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_args_masgn_outer_parens__19.txt b/test/yarp/snapshots/seattlerb/bug_args_masgn_outer_parens__19.txt
new file mode 100644
index 0000000000..c0b97dce6b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_args_masgn_outer_parens__19.txt
@@ -0,0 +1,45 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [CallNode(0...19)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...19)(
+ [:k, :v, :i],
+ BlockParametersNode(4...17)(
+ ParametersNode(5...16)(
+ [RequiredDestructuredParameterNode(5...16)(
+ [RequiredDestructuredParameterNode(6...12)(
+ [RequiredParameterNode(7...8)(:k),
+ RequiredParameterNode(10...11)(:v)],
+ (6...7),
+ (11...12)
+ ),
+ RequiredParameterNode(14...15)(:i)],
+ (5...6),
+ (15...16)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (16...17)
+ ),
+ nil,
+ (2...3),
+ (18...19)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_call_arglist_parens.txt b/test/yarp/snapshots/seattlerb/bug_call_arglist_parens.txt
new file mode 100644
index 0000000000..61193bb0a6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_call_arglist_parens.txt
@@ -0,0 +1,87 @@
+ProgramNode(6...94)(
+ [],
+ StatementsNode(6...94)(
+ [DefNode(6...39)(
+ (10...11),
+ nil,
+ nil,
+ StatementsNode(20...29)(
+ [CallNode(20...29)(
+ nil,
+ nil,
+ (20...21),
+ nil,
+ ArgumentsNode(22...29)(
+ [ParenthesesNode(22...26)(
+ StatementsNode(24...25)([IntegerNode(24...25)()]),
+ (22...23),
+ (25...26)
+ ),
+ IntegerNode(28...29)()]
+ ),
+ nil,
+ nil,
+ 0,
+ "g"
+ )]
+ ),
+ [],
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ (36...39)
+ ),
+ DefNode(48...82)(
+ (52...53),
+ nil,
+ nil,
+ StatementsNode(64...72)(
+ [CallNode(64...72)(
+ nil,
+ nil,
+ (64...65),
+ nil,
+ ArgumentsNode(66...72)(
+ [ParenthesesNode(66...69)(
+ StatementsNode(67...68)([IntegerNode(67...68)()]),
+ (66...67),
+ (68...69)
+ ),
+ IntegerNode(71...72)()]
+ ),
+ nil,
+ nil,
+ 0,
+ "g"
+ )]
+ ),
+ [],
+ (48...51),
+ nil,
+ (53...54),
+ (54...55),
+ nil,
+ (79...82)
+ ),
+ CallNode(85...94)(
+ nil,
+ nil,
+ (85...86),
+ nil,
+ ArgumentsNode(87...94)(
+ [ParenthesesNode(87...91)(
+ StatementsNode(89...90)([IntegerNode(89...90)()]),
+ (87...88),
+ (90...91)
+ ),
+ IntegerNode(93...94)()]
+ ),
+ nil,
+ nil,
+ 0,
+ "g"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_case_when_regexp.txt b/test/yarp/snapshots/seattlerb/bug_case_when_regexp.txt
new file mode 100644
index 0000000000..0b898fd523
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_case_when_regexp.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CaseNode(0...26)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "x"),
+ [WhenNode(9...17)(
+ (9...13),
+ [RegularExpressionNode(14...17)(
+ (14...15),
+ (15...16),
+ (16...17),
+ "x",
+ 0
+ )],
+ nil
+ )],
+ nil,
+ (0...4),
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_comma.txt b/test/yarp/snapshots/seattlerb/bug_comma.txt
new file mode 100644
index 0000000000..b4dbc7db5a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_comma.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [IfNode(0...24)(
+ (0...2),
+ CallNode(3...15)(
+ nil,
+ nil,
+ (3...7),
+ nil,
+ ArgumentsNode(8...15)(
+ [StringNode(8...10)((8...9), (9...10), nil, "d"),
+ CallNode(12...15)(
+ nil,
+ nil,
+ (12...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "dir"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "test"
+ ),
+ nil,
+ nil,
+ (21...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_cond_pct.txt b/test/yarp/snapshots/seattlerb/bug_cond_pct.txt
new file mode 100644
index 0000000000..6a73ca7493
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_cond_pct.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CaseNode(0...28)(
+ nil,
+ [WhenNode(6...23)(
+ (6...10),
+ [RegularExpressionNode(11...23)(
+ (11...14),
+ (14...22),
+ (22...23),
+ "blahblah",
+ 0
+ )],
+ nil
+ )],
+ nil,
+ (0...4),
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_hash_args.txt b/test/yarp/snapshots/seattlerb/bug_hash_args.txt
new file mode 100644
index 0000000000..1eec48e930
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_hash_args.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [CallNode(0...19)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...18)(
+ [SymbolNode(4...8)((4...5), (5...8), nil, "bar"),
+ KeywordHashNode(10...18)(
+ [AssocNode(10...18)(
+ SymbolNode(10...14)(nil, (10...13), (13...14), "baz"),
+ NilNode(15...18)(),
+ nil
+ )]
+ )]
+ ),
+ (18...19),
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_hash_args_trailing_comma.txt b/test/yarp/snapshots/seattlerb/bug_hash_args_trailing_comma.txt
new file mode 100644
index 0000000000..3801df91bf
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_hash_args_trailing_comma.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...18)(
+ [SymbolNode(4...8)((4...5), (5...8), nil, "bar"),
+ KeywordHashNode(10...18)(
+ [AssocNode(10...18)(
+ SymbolNode(10...14)(nil, (10...13), (13...14), "baz"),
+ NilNode(15...18)(),
+ nil
+ )]
+ )]
+ ),
+ (19...20),
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_hash_interp_array.txt b/test/yarp/snapshots/seattlerb/bug_hash_interp_array.txt
new file mode 100644
index 0000000000..fff5c3bfb6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_hash_interp_array.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [HashNode(0...13)(
+ (0...1),
+ [AssocNode(2...11)(
+ InterpolatedSymbolNode(2...8)(
+ (2...3),
+ [EmbeddedStatementsNode(3...6)((3...5), nil, (5...6))],
+ (6...8)
+ ),
+ ArrayNode(9...11)([], (9...10), (10...11)),
+ nil
+ )],
+ (12...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_masgn_right.txt b/test/yarp/snapshots/seattlerb/bug_masgn_right.txt
new file mode 100644
index 0000000000..beee1f7990
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_masgn_right.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:a, :b, :c],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...14)(
+ [RequiredParameterNode(9...10)(:b),
+ RequiredParameterNode(12...13)(:c)],
+ (8...9),
+ (13...14)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_not_parens.txt b/test/yarp/snapshots/seattlerb/bug_not_parens.txt
new file mode 100644
index 0000000000..3a12af1da8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_not_parens.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (0...3),
+ (3...4),
+ nil,
+ (5...6),
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/bug_op_asgn_rescue.txt b/test/yarp/snapshots/seattlerb/bug_op_asgn_rescue.txt
new file mode 100644
index 0000000000..2a445ebfdb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/bug_op_asgn_rescue.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...18)(
+ [:a],
+ StatementsNode(0...18)(
+ [LocalVariableOperatorOrWriteNode(0...18)(
+ (0...1),
+ (2...5),
+ RescueModifierNode(6...18)(
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b"),
+ (8...14),
+ NilNode(15...18)()
+ ),
+ :a
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_and.txt b/test/yarp/snapshots/seattlerb/call_and.txt
new file mode 100644
index 0000000000..d6b4d8d6ce
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_and.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ "&"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_arg_assoc.txt b/test/yarp/snapshots/seattlerb/call_arg_assoc.txt
new file mode 100644
index 0000000000..e6c88afdf0
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_arg_assoc.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...10)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...9)(
+ [IntegerNode(2...3)(),
+ KeywordHashNode(5...9)(
+ [AssocNode(5...9)(
+ IntegerNode(5...6)(),
+ IntegerNode(8...9)(),
+ (6...8)
+ )]
+ )]
+ ),
+ (9...10),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_arg_assoc_kwsplat.txt b/test/yarp/snapshots/seattlerb/call_arg_assoc_kwsplat.txt
new file mode 100644
index 0000000000..076fe7a8b2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_arg_assoc_kwsplat.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...15)(
+ [IntegerNode(2...3)(),
+ KeywordHashNode(5...15)(
+ [AssocNode(5...10)(
+ SymbolNode(5...8)(nil, (5...7), (7...8), "kw"),
+ IntegerNode(9...10)(),
+ nil
+ ),
+ AssocSplatNode(12...15)(IntegerNode(14...15)(), (12...14))]
+ )]
+ ),
+ (15...16),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_arg_kwsplat.txt b/test/yarp/snapshots/seattlerb/call_arg_kwsplat.txt
new file mode 100644
index 0000000000..9571678cf7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_arg_kwsplat.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...8)(
+ [CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "b"),
+ KeywordHashNode(5...8)(
+ [AssocSplatNode(5...8)(IntegerNode(7...8)(), (5...7))]
+ )]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_args_assoc_quoted.txt b/test/yarp/snapshots/seattlerb/call_args_assoc_quoted.txt
new file mode 100644
index 0000000000..792b07c41d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_args_assoc_quoted.txt
@@ -0,0 +1,82 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...11)(
+ [KeywordHashNode(2...11)(
+ [AssocNode(2...11)(
+ InterpolatedSymbolNode(2...9)(
+ (2...3),
+ [EmbeddedStatementsNode(3...7)(
+ (3...5),
+ StatementsNode(5...6)(
+ [CallNode(5...6)(
+ nil,
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "k"
+ )]
+ ),
+ (6...7)
+ )],
+ (7...9)
+ ),
+ IntegerNode(9...11)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ CallNode(13...21)(
+ nil,
+ nil,
+ (13...14),
+ nil,
+ ArgumentsNode(15...21)(
+ [KeywordHashNode(15...21)(
+ [AssocNode(15...21)(
+ SymbolNode(15...19)((15...16), (16...17), (17...19), "k"),
+ IntegerNode(19...21)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ CallNode(23...31)(
+ nil,
+ nil,
+ (23...24),
+ nil,
+ ArgumentsNode(25...31)(
+ [KeywordHashNode(25...31)(
+ [AssocNode(25...31)(
+ SymbolNode(25...29)((25...26), (26...27), (27...29), "k"),
+ IntegerNode(29...31)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_args_assoc_trailing_comma.txt b/test/yarp/snapshots/seattlerb/call_args_assoc_trailing_comma.txt
new file mode 100644
index 0000000000..432a7c0a44
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_args_assoc_trailing_comma.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...9)(
+ [IntegerNode(2...3)(),
+ KeywordHashNode(5...9)(
+ [AssocNode(5...9)(
+ IntegerNode(5...6)(),
+ IntegerNode(8...9)(),
+ (6...8)
+ )]
+ )]
+ ),
+ (10...11),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_args_command.txt b/test/yarp/snapshots/seattlerb/call_args_command.txt
new file mode 100644
index 0000000000..649e360f18
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_args_command.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(4...9)(
+ [CallNode(4...9)(
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "c"),
+ (5...6),
+ (6...7),
+ nil,
+ ArgumentsNode(8...9)([IntegerNode(8...9)()]),
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_array_arg.txt b/test/yarp/snapshots/seattlerb/call_array_arg.txt
new file mode 100644
index 0000000000..ade225a9e6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_array_arg.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...4),
+ nil,
+ ArgumentsNode(5...13)(
+ [ArrayNode(5...13)(
+ [SymbolNode(6...8)((6...7), (7...8), nil, "b"),
+ SymbolNode(10...12)((10...11), (11...12), nil, "c")],
+ (5...6),
+ (12...13)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_array_block_call.txt b/test/yarp/snapshots/seattlerb/call_array_block_call.txt
new file mode 100644
index 0000000000..460621a131
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_array_block_call.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [CallNode(0...19)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...19)(
+ [ArrayNode(2...19)(
+ [NilNode(4...7)(),
+ CallNode(9...17)(
+ nil,
+ nil,
+ (9...10),
+ nil,
+ nil,
+ nil,
+ BlockNode(11...17)([], nil, nil, (11...13), (14...17)),
+ 0,
+ "b"
+ )],
+ (2...3),
+ (18...19)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_array_lambda_block_call.txt b/test/yarp/snapshots/seattlerb/call_array_lambda_block_call.txt
new file mode 100644
index 0000000000..1d8c2f1472
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_array_lambda_block_call.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...11)(
+ [ArrayNode(2...11)(
+ [LambdaNode(3...10)(
+ [],
+ (3...5),
+ BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
+ nil
+ )],
+ (2...3),
+ (10...11)
+ )]
+ ),
+ nil,
+ BlockNode(12...18)([], nil, nil, (12...14), (15...18)),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_array_lit_inline_hash.txt b/test/yarp/snapshots/seattlerb/call_array_lit_inline_hash.txt
new file mode 100644
index 0000000000..ef336c5a15
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_array_lit_inline_hash.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...15)(
+ [ArrayNode(2...15)(
+ [SymbolNode(3...5)((3...4), (4...5), nil, "b"),
+ KeywordHashNode(7...14)(
+ [AssocNode(7...14)(
+ SymbolNode(7...9)((7...8), (8...9), nil, "c"),
+ IntegerNode(13...14)(),
+ (10...12)
+ )]
+ )],
+ (2...3),
+ (14...15)
+ )]
+ ),
+ (15...16),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_assoc.txt b/test/yarp/snapshots/seattlerb/call_assoc.txt
new file mode 100644
index 0000000000..bd6a6e286c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_assoc.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...6)(
+ [KeywordHashNode(2...6)(
+ [AssocNode(2...6)(
+ IntegerNode(2...3)(),
+ IntegerNode(5...6)(),
+ (3...5)
+ )]
+ )]
+ ),
+ (6...7),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_assoc_new.txt b/test/yarp/snapshots/seattlerb/call_assoc_new.txt
new file mode 100644
index 0000000000..525b3b1472
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_assoc_new.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...5)(
+ [KeywordHashNode(2...5)(
+ [AssocNode(2...5)(
+ SymbolNode(2...4)(nil, (2...3), (3...4), "a"),
+ IntegerNode(4...5)(),
+ nil
+ )]
+ )]
+ ),
+ (5...6),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_assoc_new_if_multiline.txt b/test/yarp/snapshots/seattlerb/call_assoc_new_if_multiline.txt
new file mode 100644
index 0000000000..5bfb5a0887
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_assoc_new_if_multiline.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [CallNode(0...24)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...23)(
+ [KeywordHashNode(2...23)(
+ [AssocNode(2...23)(
+ SymbolNode(2...4)(nil, (2...3), (3...4), "b"),
+ IfNode(5...23)(
+ (5...7),
+ SymbolNode(8...10)((8...9), (9...10), nil, "c"),
+ StatementsNode(11...12)([IntegerNode(11...12)()]),
+ ElseNode(13...23)(
+ (13...17),
+ StatementsNode(18...19)([IntegerNode(18...19)()]),
+ (20...23)
+ ),
+ (20...23)
+ ),
+ nil
+ )]
+ )]
+ ),
+ (23...24),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_assoc_trailing_comma.txt b/test/yarp/snapshots/seattlerb/call_assoc_trailing_comma.txt
new file mode 100644
index 0000000000..0f68852c19
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_assoc_trailing_comma.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...6)(
+ [KeywordHashNode(2...6)(
+ [AssocNode(2...6)(
+ IntegerNode(2...3)(),
+ IntegerNode(5...6)(),
+ (3...5)
+ )]
+ )]
+ ),
+ (7...8),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_bang_command_call.txt b/test/yarp/snapshots/seattlerb/call_bang_command_call.txt
new file mode 100644
index 0000000000..37cf8e13af
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_bang_command_call.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(2...7)(
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "a"),
+ (3...4),
+ (4...5),
+ nil,
+ ArgumentsNode(6...7)([IntegerNode(6...7)()]),
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_bang_squiggle.txt b/test/yarp/snapshots/seattlerb/call_bang_squiggle.txt
new file mode 100644
index 0000000000..5614695771
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_bang_squiggle.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ nil,
+ 0,
+ "!~"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_begin_call_block_call.txt b/test/yarp/snapshots/seattlerb/call_begin_call_block_call.txt
new file mode 100644
index 0000000000..7d0e92cf1d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_begin_call_block_call.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...22)(
+ [BeginNode(2...22)(
+ (2...7),
+ StatementsNode(8...18)(
+ [CallNode(8...18)(
+ CallNode(8...9)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (9...10),
+ (10...11),
+ nil,
+ nil,
+ nil,
+ BlockNode(12...18)([], nil, nil, (12...14), (15...18)),
+ 0,
+ "c"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (19...22)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_block_arg_named.txt b/test/yarp/snapshots/seattlerb/call_block_arg_named.txt
new file mode 100644
index 0000000000..e0d6cc8e03
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_block_arg_named.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...6)(
+ [BlockArgumentNode(2...6)(
+ CallNode(3...6)(nil, nil, (3...6), nil, nil, nil, nil, 0, "blk"),
+ (2...3)
+ )]
+ ),
+ (6...7),
+ nil,
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_carat.txt b/test/yarp/snapshots/seattlerb/call_carat.txt
new file mode 100644
index 0000000000..bea1ff7c68
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_carat.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ "^"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_colon2.txt b/test/yarp/snapshots/seattlerb/call_colon2.txt
new file mode 100644
index 0000000000..36955f3b23
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_colon2.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ ConstantReadNode(0...1)(),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_colon_parens.txt b/test/yarp/snapshots/seattlerb/call_colon_parens.txt
new file mode 100644
index 0000000000..2e707afcfb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_colon_parens.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ (1...3),
+ (0...0),
+ (3...4),
+ nil,
+ (4...5),
+ nil,
+ 0,
+ "call"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_div.txt b/test/yarp/snapshots/seattlerb/call_div.txt
new file mode 100644
index 0000000000..f7caf10414
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_div.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_dot_parens.txt b/test/yarp/snapshots/seattlerb/call_dot_parens.txt
new file mode 100644
index 0000000000..5a32c3b9cf
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_dot_parens.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ IntegerNode(0...1)(),
+ (1...2),
+ (0...0),
+ (2...3),
+ nil,
+ (3...4),
+ nil,
+ 0,
+ "call"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_env.txt b/test/yarp/snapshots/seattlerb/call_env.txt
new file mode 100644
index 0000000000..9f2860ab56
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_env.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "happy"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_eq3.txt b/test/yarp/snapshots/seattlerb/call_eq3.txt
new file mode 100644
index 0000000000..192a3c97c5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_eq3.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...5),
+ nil,
+ ArgumentsNode(6...7)([IntegerNode(6...7)()]),
+ nil,
+ nil,
+ 0,
+ "==="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_gt.txt b/test/yarp/snapshots/seattlerb/call_gt.txt
new file mode 100644
index 0000000000..9eadb5ee2f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_gt.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ ">"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_kwsplat.txt b/test/yarp/snapshots/seattlerb/call_kwsplat.txt
new file mode 100644
index 0000000000..c5b45b9cb2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_kwsplat.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...5)(
+ [KeywordHashNode(2...5)(
+ [AssocSplatNode(2...5)(IntegerNode(4...5)(), (2...4))]
+ )]
+ ),
+ (5...6),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_leading_dots.txt b/test/yarp/snapshots/seattlerb/call_leading_dots.txt
new file mode 100644
index 0000000000..47f2c8e5c5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_leading_dots.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (2...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (5...6),
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_leading_dots_comment.txt b/test/yarp/snapshots/seattlerb/call_leading_dots_comment.txt
new file mode 100644
index 0000000000..0f64dd7e26
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_leading_dots_comment.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (2...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (9...10),
+ (10...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_lt.txt b/test/yarp/snapshots/seattlerb/call_lt.txt
new file mode 100644
index 0000000000..11fcd8c44f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_lt.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ "<"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_lte.txt b/test/yarp/snapshots/seattlerb/call_lte.txt
new file mode 100644
index 0000000000..5ad45cbf0e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_lte.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ nil,
+ 0,
+ "<="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_not.txt b/test/yarp/snapshots/seattlerb/call_not.txt
new file mode 100644
index 0000000000..d42b852ead
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_not.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ IntegerNode(4...6)(),
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_pipe.txt b/test/yarp/snapshots/seattlerb/call_pipe.txt
new file mode 100644
index 0000000000..e372fce6e5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_pipe.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ "|"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_rshift.txt b/test/yarp/snapshots/seattlerb/call_rshift.txt
new file mode 100644
index 0000000000..9a523669eb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_rshift.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ nil,
+ 0,
+ ">>"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_self_brackets.txt b/test/yarp/snapshots/seattlerb/call_self_brackets.txt
new file mode 100644
index 0000000000..7dfe5a50be
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_self_brackets.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ SelfNode(0...4)(),
+ nil,
+ (4...7),
+ (4...5),
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ (6...7),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_spaceship.txt b/test/yarp/snapshots/seattlerb/call_spaceship.txt
new file mode 100644
index 0000000000..a7ee865978
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_spaceship.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...5),
+ nil,
+ ArgumentsNode(6...7)([IntegerNode(6...7)()]),
+ nil,
+ nil,
+ 0,
+ "<=>"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_stabby_do_end_with_block.txt b/test/yarp/snapshots/seattlerb/call_stabby_do_end_with_block.txt
new file mode 100644
index 0000000000..e48578da2a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_stabby_do_end_with_block.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...13)(
+ [LambdaNode(2...13)(
+ [],
+ (2...4),
+ nil,
+ StatementsNode(8...9)([IntegerNode(8...9)()])
+ )]
+ ),
+ nil,
+ BlockNode(14...22)(
+ [],
+ nil,
+ StatementsNode(17...18)([IntegerNode(17...18)()]),
+ (14...16),
+ (19...22)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_stabby_with_braces_block.txt b/test/yarp/snapshots/seattlerb/call_stabby_with_braces_block.txt
new file mode 100644
index 0000000000..36fbd7fb1a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_stabby_with_braces_block.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [CallNode(0...19)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...10)(
+ [LambdaNode(2...10)(
+ [],
+ (2...4),
+ nil,
+ StatementsNode(7...8)([IntegerNode(7...8)()])
+ )]
+ ),
+ nil,
+ BlockNode(11...19)(
+ [],
+ nil,
+ StatementsNode(14...15)([IntegerNode(14...15)()]),
+ (11...13),
+ (16...19)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_star.txt b/test/yarp/snapshots/seattlerb/call_star.txt
new file mode 100644
index 0000000000..1e4683a882
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_star.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ nil,
+ nil,
+ 0,
+ "*"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_star2.txt b/test/yarp/snapshots/seattlerb/call_star2.txt
new file mode 100644
index 0000000000..d051c4a313
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_star2.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ IntegerNode(0...1)(),
+ nil,
+ (2...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_trailing_comma.txt b/test/yarp/snapshots/seattlerb/call_trailing_comma.txt
new file mode 100644
index 0000000000..da971880af
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_trailing_comma.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...3)([IntegerNode(2...3)()]),
+ (4...5),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_trailing_dots.txt b/test/yarp/snapshots/seattlerb/call_trailing_dots.txt
new file mode 100644
index 0000000000..929decb5f1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_trailing_dots.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (4...5),
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/call_unary_bang.txt b/test/yarp/snapshots/seattlerb/call_unary_bang.txt
new file mode 100644
index 0000000000..e0de2a924f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/call_unary_bang.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...2)(
+ [],
+ StatementsNode(0...2)(
+ [CallNode(0...2)(
+ IntegerNode(1...2)(),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in.txt b/test/yarp/snapshots/seattlerb/case_in.txt
new file mode 100644
index 0000000000..981905526c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in.txt
@@ -0,0 +1,607 @@
+ProgramNode(0...746)(
+ [:b, :_, :lhs, :x, :rhs, :c, :e],
+ StatementsNode(0...746)(
+ [CaseNode(0...20)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...16)(
+ HashPatternNode(12...16)(
+ nil,
+ [AssocNode(12...16)(
+ SymbolNode(12...16)((12...13), (13...14), (14...16), "b"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ nil,
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (17...20)
+ ),
+ CaseNode(22...44)(
+ SymbolNode(27...29)((27...28), (28...29), nil, "a"),
+ [InNode(30...40)(
+ ArrayNode(33...40)(
+ [SymbolNode(36...37)(nil, (36...37), nil, "a"),
+ SymbolNode(38...39)(nil, (38...39), nil, "b")],
+ (33...36),
+ (39...40)
+ ),
+ nil,
+ (30...32),
+ nil
+ )],
+ nil,
+ (22...26),
+ (41...44)
+ ),
+ CaseNode(46...68)(
+ SymbolNode(51...53)((51...52), (52...53), nil, "a"),
+ [InNode(54...64)(
+ ArrayNode(57...64)(
+ [StringNode(60...61)(nil, (60...61), nil, "a"),
+ StringNode(62...63)(nil, (62...63), nil, "b")],
+ (57...60),
+ (63...64)
+ ),
+ nil,
+ (54...56),
+ nil
+ )],
+ nil,
+ (46...50),
+ (65...68)
+ ),
+ CaseNode(70...92)(
+ SymbolNode(75...77)((75...76), (76...77), nil, "a"),
+ [InNode(78...88)(
+ ArrayNode(81...88)(
+ [SymbolNode(84...85)(nil, (84...85), nil, "a"),
+ SymbolNode(86...87)(nil, (86...87), nil, "b")],
+ (81...84),
+ (87...88)
+ ),
+ nil,
+ (78...80),
+ nil
+ )],
+ nil,
+ (70...74),
+ (89...92)
+ ),
+ CaseNode(94...116)(
+ SymbolNode(99...101)((99...100), (100...101), nil, "a"),
+ [InNode(102...112)(
+ ArrayNode(105...112)(
+ [StringNode(108...109)(nil, (108...109), nil, "a"),
+ StringNode(110...111)(nil, (110...111), nil, "b")],
+ (105...108),
+ (111...112)
+ ),
+ nil,
+ (102...104),
+ nil
+ )],
+ nil,
+ (94...98),
+ (113...116)
+ ),
+ CaseNode(118...140)(
+ SymbolNode(123...125)((123...124), (124...125), nil, "a"),
+ [InNode(126...135)(
+ RangeNode(130...135)(nil, IntegerNode(133...135)(), (130...133), 1),
+ nil,
+ (126...128),
+ nil
+ )],
+ nil,
+ (118...122),
+ (137...140)
+ ),
+ CaseNode(142...163)(
+ SymbolNode(147...149)((147...148), (148...149), nil, "a"),
+ [InNode(150...158)(
+ RangeNode(154...158)(nil, IntegerNode(156...158)(), (154...156), 0),
+ nil,
+ (150...152),
+ nil
+ )],
+ nil,
+ (142...146),
+ (160...163)
+ ),
+ CaseNode(165...186)(
+ SymbolNode(170...172)((170...171), (171...172), nil, "a"),
+ [InNode(173...181)(
+ RangeNode(177...181)(IntegerNode(177...178)(), nil, (178...181), 1),
+ nil,
+ (173...175),
+ nil
+ )],
+ nil,
+ (165...169),
+ (183...186)
+ ),
+ CaseNode(188...210)(
+ SymbolNode(193...195)((193...194), (194...195), nil, "a"),
+ [InNode(196...205)(
+ RangeNode(200...205)(
+ IntegerNode(200...201)(),
+ IntegerNode(204...205)(),
+ (201...204),
+ 1
+ ),
+ nil,
+ (196...198),
+ nil
+ )],
+ nil,
+ (188...192),
+ (207...210)
+ ),
+ CaseNode(212...231)(
+ SymbolNode(217...219)((217...218), (218...219), nil, "a"),
+ [InNode(220...226)(IntegerNode(224...226)(), nil, (220...222), nil)],
+ nil,
+ (212...216),
+ (228...231)
+ ),
+ CaseNode(233...253)(
+ SymbolNode(238...240)((238...239), (239...240), nil, "a"),
+ [InNode(241...249)(
+ HashPatternNode(244...249)(
+ nil,
+ [NoKeywordsParameterNode(244...249)((244...246), (246...249))],
+ nil,
+ nil,
+ nil
+ ),
+ nil,
+ (241...243),
+ nil
+ )],
+ nil,
+ (233...237),
+ (250...253)
+ ),
+ CaseNode(255...278)(
+ SymbolNode(260...262)((260...261), (261...262), nil, "a"),
+ [InNode(263...274)(
+ RegularExpressionNode(266...274)(
+ (266...267),
+ (267...273),
+ (273...274),
+ "regexp",
+ 0
+ ),
+ nil,
+ (263...265),
+ nil
+ )],
+ nil,
+ (255...259),
+ (275...278)
+ ),
+ CaseNode(280...305)(
+ SymbolNode(285...287)((285...286), (286...287), nil, "a"),
+ [InNode(288...301)(
+ ArrayPatternNode(291...301)(
+ nil,
+ [SymbolNode(291...293)((291...292), (292...293), nil, "b")],
+ SplatNode(295...297)(
+ (295...296),
+ LocalVariableWriteNode(296...297)(:_, 0, nil, (296...297), nil)
+ ),
+ [SymbolNode(299...301)((299...300), (300...301), nil, "c")],
+ nil,
+ nil
+ ),
+ nil,
+ (288...290),
+ nil
+ )],
+ nil,
+ (280...284),
+ (302...305)
+ ),
+ CaseNode(307...330)(
+ SymbolNode(312...314)((312...313), (313...314), nil, "a"),
+ [InNode(315...326)(
+ ArrayPatternNode(318...326)(
+ nil,
+ [SymbolNode(318...320)((318...319), (319...320), nil, "b"),
+ ArrayPatternNode(322...326)(
+ nil,
+ [SymbolNode(323...325)((323...324), (324...325), nil, "c")],
+ nil,
+ [],
+ (322...323),
+ (325...326)
+ )],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ (315...317),
+ nil
+ )],
+ nil,
+ (307...311),
+ (327...330)
+ ),
+ CaseNode(332...355)(
+ SymbolNode(337...339)((337...338), (338...339), nil, "a"),
+ [InNode(340...351)(
+ ArrayPatternNode(343...351)(
+ ConstantReadNode(343...349)(),
+ [],
+ nil,
+ [],
+ (349...350),
+ (350...351)
+ ),
+ nil,
+ (340...342),
+ nil
+ )],
+ nil,
+ (332...336),
+ (352...355)
+ ),
+ CaseNode(357...393)(
+ SymbolNode(362...364)((362...363), (363...364), nil, "a"),
+ [InNode(365...389)(
+ FindPatternNode(368...389)(
+ ConstantReadNode(368...374)(),
+ SplatNode(375...379)(
+ (375...376),
+ LocalVariableWriteNode(376...379)(:lhs, 0, nil, (376...379), nil)
+ ),
+ [LocalVariableWriteNode(381...382)(:x, 0, nil, (381...382), nil)],
+ SplatNode(384...388)(
+ (384...385),
+ LocalVariableWriteNode(385...388)(:rhs, 0, nil, (385...388), nil)
+ ),
+ (374...375),
+ (388...389)
+ ),
+ nil,
+ (365...367),
+ nil
+ )],
+ nil,
+ (357...361),
+ (390...393)
+ ),
+ CaseNode(395...431)(
+ SymbolNode(400...402)((400...401), (401...402), nil, "a"),
+ [InNode(403...427)(
+ FindPatternNode(406...427)(
+ ConstantReadNode(406...412)(),
+ SplatNode(413...417)(
+ (413...414),
+ LocalVariableWriteNode(414...417)(:lhs, 0, nil, (414...417), nil)
+ ),
+ [LocalVariableWriteNode(419...420)(:x, 0, nil, (419...420), nil)],
+ SplatNode(422...426)(
+ (422...423),
+ LocalVariableWriteNode(423...426)(:rhs, 0, nil, (423...426), nil)
+ ),
+ (412...413),
+ (426...427)
+ ),
+ nil,
+ (403...405),
+ nil
+ )],
+ nil,
+ (395...399),
+ (428...431)
+ ),
+ CaseNode(433...467)(
+ SymbolNode(438...440)((438...439), (439...440), nil, "a"),
+ [InNode(441...463)(
+ ArrayPatternNode(444...463)(
+ nil,
+ [LambdaNode(445...459)(
+ [:b],
+ (445...447),
+ BlockParametersNode(447...450)(
+ ParametersNode(448...449)(
+ [RequiredParameterNode(448...449)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (447...448),
+ (449...450)
+ ),
+ StatementsNode(453...457)([TrueNode(453...457)()])
+ ),
+ LocalVariableWriteNode(461...462)(:c, 0, nil, (461...462), nil)],
+ nil,
+ [],
+ (444...445),
+ (462...463)
+ ),
+ nil,
+ (441...443),
+ nil
+ )],
+ nil,
+ (433...437),
+ (464...467)
+ ),
+ CaseNode(469...509)(
+ SymbolNode(474...476)((474...475), (475...476), nil, "a"),
+ [InNode(477...505)(
+ ArrayPatternNode(480...505)(
+ nil,
+ [SymbolNode(481...483)((481...482), (482...483), nil, "a"),
+ LocalVariableWriteNode(485...486)(:b, 0, nil, (485...486), nil),
+ LocalVariableWriteNode(488...489)(:c, 0, nil, (488...489), nil),
+ ArrayPatternNode(491...504)(
+ nil,
+ [SymbolNode(492...494)((492...493), (493...494), nil, "d")],
+ SplatNode(496...498)(
+ (496...497),
+ LocalVariableWriteNode(497...498)(
+ :e,
+ 0,
+ nil,
+ (497...498),
+ nil
+ )
+ ),
+ [NilNode(500...503)()],
+ (491...492),
+ (503...504)
+ )],
+ nil,
+ [],
+ (480...481),
+ (504...505)
+ ),
+ nil,
+ (477...479),
+ nil
+ )],
+ nil,
+ (469...473),
+ (506...509)
+ ),
+ CaseNode(511...535)(
+ SymbolNode(516...518)((516...517), (517...518), nil, "a"),
+ [InNode(519...531)(
+ ArrayPatternNode(522...531)(
+ nil,
+ [ConstantReadNode(523...524)()],
+ SplatNode(526...527)((526...527), nil),
+ [ConstantReadNode(529...530)()],
+ (522...523),
+ (530...531)
+ ),
+ nil,
+ (519...521),
+ nil
+ )],
+ nil,
+ (511...515),
+ (532...535)
+ ),
+ CaseNode(537...571)(
+ SymbolNode(542...544)((542...543), (543...544), nil, "a"),
+ [InNode(545...567)(
+ ArrayPatternNode(548...567)(
+ nil,
+ [ArrayPatternNode(549...556)(
+ nil,
+ [SymbolNode(550...552)((550...551), (551...552), nil, "b"),
+ LocalVariableWriteNode(554...555)(
+ :c,
+ 0,
+ nil,
+ (554...555),
+ nil
+ )],
+ nil,
+ [],
+ (549...550),
+ (555...556)
+ ),
+ ArrayPatternNode(558...566)(
+ nil,
+ [SymbolNode(559...561)((559...560), (560...561), nil, "d"),
+ PinnedVariableNode(563...565)(
+ LocalVariableReadNode(564...565)(:e, 0),
+ (563...564)
+ )],
+ nil,
+ [],
+ (558...559),
+ (565...566)
+ )],
+ nil,
+ [],
+ (548...549),
+ (566...567)
+ ),
+ nil,
+ (545...547),
+ nil
+ )],
+ nil,
+ (537...541),
+ (568...571)
+ ),
+ CaseNode(573...590)(
+ SymbolNode(578...580)((578...579), (579...580), nil, "a"),
+ [InNode(581...586)(
+ ArrayPatternNode(584...586)(
+ nil,
+ [],
+ nil,
+ [],
+ (584...585),
+ (585...586)
+ ),
+ nil,
+ (581...583),
+ nil
+ )],
+ nil,
+ (573...577),
+ (587...590)
+ ),
+ CaseNode(592...613)(
+ SymbolNode(597...599)((597...598), (598...599), nil, "a"),
+ [InNode(600...609)(
+ ArrayPatternNode(603...609)(
+ nil,
+ [PinnedExpressionNode(604...608)(
+ CallNode(606...607)(
+ nil,
+ nil,
+ (606...607),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (604...605),
+ (605...606),
+ (607...608)
+ )],
+ nil,
+ [],
+ (603...604),
+ (608...609)
+ ),
+ nil,
+ (600...602),
+ nil
+ )],
+ nil,
+ (592...596),
+ (610...613)
+ ),
+ CaseNode(615...646)(
+ SymbolNode(620...622)((620...621), (621...622), nil, "a"),
+ [InNode(623...642)(
+ ArrayPatternNode(626...642)(
+ nil,
+ [PinnedVariableNode(627...630)(
+ InstanceVariableReadNode(628...630)(),
+ (627...628)
+ ),
+ PinnedVariableNode(632...635)(
+ GlobalVariableReadNode(633...635)(),
+ (632...633)
+ ),
+ PinnedVariableNode(637...641)(
+ ClassVariableReadNode(638...641)(),
+ (637...638)
+ )],
+ nil,
+ [],
+ (626...627),
+ (641...642)
+ ),
+ nil,
+ (623...625),
+ nil
+ )],
+ nil,
+ (615...619),
+ (643...646)
+ ),
+ CaseNode(648...672)(
+ SymbolNode(653...655)((653...654), (654...655), nil, "a"),
+ [InNode(656...668)(
+ XStringNode(659...668)(
+ (659...660),
+ (660...667),
+ (667...668),
+ "echo hi"
+ ),
+ nil,
+ (656...658),
+ nil
+ )],
+ nil,
+ (648...652),
+ (669...672)
+ ),
+ CaseNode(674...702)(
+ SymbolNode(679...681)((679...680), (680...681), nil, "a"),
+ [InNode(682...698)(
+ ArrayPatternNode(685...698)(
+ nil,
+ [NilNode(685...688)(), NilNode(690...693)(), NilNode(695...698)()],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ (682...684),
+ nil
+ )],
+ nil,
+ (674...678),
+ (699...702)
+ ),
+ CaseNode(704...727)(
+ SymbolNode(709...711)((709...710), (710...711), nil, "a"),
+ [InNode(712...723)(
+ HashPatternNode(715...723)(
+ nil,
+ [AssocNode(717...721)(
+ SymbolNode(717...721)(
+ (717...718),
+ (718...719),
+ (719...721),
+ "b"
+ ),
+ nil,
+ nil
+ )],
+ nil,
+ (715...716),
+ (722...723)
+ ),
+ nil,
+ (712...714),
+ nil
+ )],
+ nil,
+ (704...708),
+ (724...727)
+ ),
+ CaseNode(729...746)(
+ SymbolNode(734...736)((734...735), (735...736), nil, "a"),
+ [InNode(737...742)(
+ HashPatternNode(740...742)(nil, [], nil, (740...741), (741...742)),
+ nil,
+ (737...739),
+ nil
+ )],
+ nil,
+ (729...733),
+ (743...746)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_31.txt b/test/yarp/snapshots/seattlerb/case_in_31.txt
new file mode 100644
index 0000000000..26ff5c913f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_31.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...28)(
+ [:c],
+ StatementsNode(0...28)(
+ [CaseNode(0...28)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...24)(
+ ArrayPatternNode(11...19)(
+ nil,
+ [SymbolNode(12...14)((12...13), (13...14), nil, "b")],
+ SplatNode(16...18)(
+ (16...17),
+ LocalVariableWriteNode(17...18)(:c, 0, nil, (17...18), nil)
+ ),
+ [],
+ (11...12),
+ (18...19)
+ ),
+ StatementsNode(22...24)(
+ [SymbolNode(22...24)((22...23), (23...24), nil, "d")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_37.txt b/test/yarp/snapshots/seattlerb/case_in_37.txt
new file mode 100644
index 0000000000..721c6173d5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_37.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...36)(
+ [],
+ StatementsNode(0...36)(
+ [CaseNode(0...36)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...32)(
+ HashPatternNode(11...27)(
+ nil,
+ [AssocNode(13...25)(
+ SymbolNode(13...15)(nil, (13...14), (14...15), "b"),
+ ArrayPatternNode(16...25)(
+ nil,
+ [ConstantReadNode(17...21)()],
+ SplatNode(23...24)((23...24), nil),
+ [],
+ (16...17),
+ (24...25)
+ ),
+ nil
+ )],
+ nil,
+ (11...12),
+ (26...27)
+ ),
+ StatementsNode(30...32)(
+ [SymbolNode(30...32)((30...31), (31...32), nil, "c")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (33...36)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_42.txt b/test/yarp/snapshots/seattlerb/case_in_42.txt
new file mode 100644
index 0000000000..7cd17bb0e1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_42.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...30)(
+ [:_],
+ StatementsNode(0...30)(
+ [CaseNode(0...30)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...26)(
+ ArrayPatternNode(11...17)(
+ nil,
+ [SymbolNode(11...13)((11...12), (12...13), nil, "b")],
+ SplatNode(15...17)(
+ (15...16),
+ LocalVariableWriteNode(16...17)(:_, 0, nil, (16...17), nil)
+ ),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(23...26)([NilNode(23...26)()]),
+ (8...10),
+ (18...22)
+ )],
+ nil,
+ (0...4),
+ (27...30)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_42_2.txt b/test/yarp/snapshots/seattlerb/case_in_42_2.txt
new file mode 100644
index 0000000000..7c0c87e98c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_42_2.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...32)(
+ [:list],
+ StatementsNode(0...32)(
+ [CaseNode(0...32)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...28)(
+ ArrayPatternNode(11...19)(
+ ConstantReadNode(11...12)(),
+ [],
+ SplatNode(13...18)(
+ (13...14),
+ LocalVariableWriteNode(14...18)(:list, 0, nil, (14...18), nil)
+ ),
+ [],
+ (12...13),
+ (18...19)
+ ),
+ StatementsNode(25...28)([NilNode(25...28)()]),
+ (8...10),
+ (20...24)
+ )],
+ nil,
+ (0...4),
+ (29...32)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_47.txt b/test/yarp/snapshots/seattlerb/case_in_47.txt
new file mode 100644
index 0000000000..727efebdde
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_47.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CaseNode(0...31)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...27)(
+ ArrayPatternNode(11...22)(
+ nil,
+ [],
+ SplatNode(12...13)((12...13), nil),
+ [SymbolNode(15...17)((15...16), (16...17), nil, "b"),
+ SymbolNode(19...21)((19...20), (20...21), nil, "c")],
+ (11...12),
+ (21...22)
+ ),
+ StatementsNode(25...27)(
+ [SymbolNode(25...27)((25...26), (26...27), nil, "d")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (28...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_67.txt b/test/yarp/snapshots/seattlerb/case_in_67.txt
new file mode 100644
index 0000000000..094d6711aa
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_67.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [CaseNode(0...27)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...23)(
+ RangeNode(11...14)(IntegerNode(11...12)(), nil, (12...14), 0),
+ StatementsNode(20...23)([NilNode(20...23)()]),
+ (8...10),
+ (15...19)
+ )],
+ nil,
+ (0...4),
+ (24...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_86.txt b/test/yarp/snapshots/seattlerb/case_in_86.txt
new file mode 100644
index 0000000000..0475e9ef9a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_86.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [CaseNode(0...43)(
+ ArrayNode(5...13)(
+ [SymbolNode(6...8)((6...7), (7...8), nil, "a"),
+ SymbolNode(10...12)((10...11), (11...12), nil, "b")],
+ (5...6),
+ (12...13)
+ ),
+ [InNode(14...39)(
+ ArrayPatternNode(17...30)(
+ nil,
+ [ConstantPathNode(17...27)(
+ nil,
+ ConstantReadNode(19...27)(),
+ (17...19)
+ )],
+ SplatNode(29...30)((29...30), nil),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(36...39)([NilNode(36...39)()]),
+ (14...16),
+ (31...35)
+ )],
+ nil,
+ (0...4),
+ (40...43)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_86_2.txt b/test/yarp/snapshots/seattlerb/case_in_86_2.txt
new file mode 100644
index 0000000000..067835c5be
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_86_2.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [CaseNode(0...43)(
+ ArrayNode(5...13)(
+ [SymbolNode(6...8)((6...7), (7...8), nil, "a"),
+ SymbolNode(10...12)((10...11), (11...12), nil, "b")],
+ (5...6),
+ (12...13)
+ ),
+ [InNode(14...39)(
+ ArrayPatternNode(17...30)(
+ nil,
+ [],
+ SplatNode(17...18)((17...18), nil),
+ [ConstantPathNode(20...30)(
+ nil,
+ ConstantReadNode(22...30)(),
+ (20...22)
+ )],
+ nil,
+ nil
+ ),
+ StatementsNode(36...39)([NilNode(36...39)()]),
+ (14...16),
+ (31...35)
+ )],
+ nil,
+ (0...4),
+ (40...43)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_array_pat_const.txt b/test/yarp/snapshots/seattlerb/case_in_array_pat_const.txt
new file mode 100644
index 0000000000..b8eee48203
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_array_pat_const.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...24)(
+ [:c],
+ StatementsNode(0...24)(
+ [CaseNode(0...24)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...20)(
+ ArrayPatternNode(11...15)(
+ ConstantReadNode(11...12)(),
+ [LocalVariableWriteNode(13...14)(:c, 0, nil, (13...14), nil)],
+ nil,
+ [],
+ (12...13),
+ (14...15)
+ ),
+ StatementsNode(18...20)(
+ [SymbolNode(18...20)((18...19), (19...20), nil, "d")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (21...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_array_pat_const2.txt b/test/yarp/snapshots/seattlerb/case_in_array_pat_const2.txt
new file mode 100644
index 0000000000..2e29ef9d16
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_array_pat_const2.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...27)(
+ [:d],
+ StatementsNode(0...27)(
+ [CaseNode(0...27)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...23)(
+ ArrayPatternNode(11...18)(
+ ConstantPathNode(11...15)(
+ ConstantReadNode(11...12)(),
+ ConstantReadNode(14...15)(),
+ (12...14)
+ ),
+ [LocalVariableWriteNode(16...17)(:d, 0, nil, (16...17), nil)],
+ nil,
+ [],
+ (15...16),
+ (17...18)
+ ),
+ StatementsNode(21...23)(
+ [SymbolNode(21...23)((21...22), (22...23), nil, "e")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (24...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_array_pat_paren_assign.txt b/test/yarp/snapshots/seattlerb/case_in_array_pat_paren_assign.txt
new file mode 100644
index 0000000000..85b069fb00
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_array_pat_paren_assign.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...29)(
+ [:d],
+ StatementsNode(0...29)(
+ [CaseNode(0...29)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...25)(
+ ArrayPatternNode(11...20)(
+ ConstantReadNode(11...12)(),
+ [CapturePatternNode(13...19)(
+ ConstantReadNode(13...14)(),
+ LocalVariableWriteNode(18...19)(:d, 0, nil, (18...19), nil),
+ (15...17)
+ )],
+ nil,
+ [],
+ (12...13),
+ (19...20)
+ ),
+ StatementsNode(23...25)(
+ [SymbolNode(23...25)((23...24), (24...25), nil, "d")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_const.txt b/test/yarp/snapshots/seattlerb/case_in_const.txt
new file mode 100644
index 0000000000..3f8dde74fd
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_const.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CaseNode(0...28)(
+ ConstantReadNode(5...10)(),
+ [InNode(11...24)(
+ ConstantReadNode(14...19)(),
+ StatementsNode(22...24)(
+ [SymbolNode(22...24)((22...23), (23...24), nil, "b")]
+ ),
+ (11...13),
+ nil
+ )],
+ nil,
+ (0...4),
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_else.txt b/test/yarp/snapshots/seattlerb/case_in_else.txt
new file mode 100644
index 0000000000..fe2e6e7ee9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_else.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...38)(
+ [],
+ StatementsNode(0...38)(
+ [CaseNode(0...38)(
+ ConstantReadNode(5...10)(),
+ [InNode(11...24)(
+ ConstantReadNode(14...19)(),
+ StatementsNode(22...24)(
+ [SymbolNode(22...24)((22...23), (23...24), nil, "b")]
+ ),
+ (11...13),
+ nil
+ )],
+ ElseNode(25...38)(
+ (25...29),
+ StatementsNode(32...34)(
+ [SymbolNode(32...34)((32...33), (33...34), nil, "c")]
+ ),
+ (35...38)
+ ),
+ (0...4),
+ (35...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_find.txt b/test/yarp/snapshots/seattlerb/case_in_find.txt
new file mode 100644
index 0000000000..2d36642369
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_find.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...27)(
+ [:a, :b],
+ StatementsNode(0...27)(
+ [CaseNode(0...27)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(10...23)(
+ FindPatternNode(13...23)(
+ nil,
+ SplatNode(13...15)(
+ (13...14),
+ LocalVariableWriteNode(14...15)(:a, 0, nil, (14...15), nil)
+ ),
+ [SymbolNode(17...19)((17...18), (18...19), nil, "+")],
+ SplatNode(21...23)(
+ (21...22),
+ LocalVariableWriteNode(22...23)(:b, 0, nil, (22...23), nil)
+ ),
+ nil,
+ nil
+ ),
+ nil,
+ (10...12),
+ nil
+ )],
+ nil,
+ (0...4),
+ (24...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_find_array.txt b/test/yarp/snapshots/seattlerb/case_in_find_array.txt
new file mode 100644
index 0000000000..410fda576a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_find_array.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...28)(
+ [:c],
+ StatementsNode(0...28)(
+ [CaseNode(0...28)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...24)(
+ FindPatternNode(11...24)(
+ nil,
+ SplatNode(12...13)((12...13), nil),
+ [SymbolNode(15...17)((15...16), (16...17), nil, "b"),
+ LocalVariableWriteNode(19...20)(:c, 0, nil, (19...20), nil)],
+ SplatNode(22...23)((22...23), nil),
+ (11...12),
+ (23...24)
+ ),
+ nil,
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_hash_pat.txt b/test/yarp/snapshots/seattlerb/case_in_hash_pat.txt
new file mode 100644
index 0000000000..b7c8e7eb82
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_hash_pat.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [CaseNode(0...43)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...39)(
+ HashPatternNode(11...29)(
+ nil,
+ [AssocNode(13...19)(
+ SymbolNode(13...15)(nil, (13...14), (14...15), "b"),
+ StringNode(16...19)((16...17), (17...18), (18...19), "c"),
+ nil
+ ),
+ AssocNode(21...27)(
+ SymbolNode(21...23)(nil, (21...22), (22...23), "d"),
+ StringNode(24...27)((24...25), (25...26), (26...27), "e"),
+ nil
+ )],
+ nil,
+ (11...12),
+ (28...29)
+ ),
+ StatementsNode(37...39)(
+ [SymbolNode(37...39)((37...38), (38...39), nil, "f")]
+ ),
+ (8...10),
+ (30...34)
+ )],
+ nil,
+ (0...4),
+ (40...43)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_hash_pat_assign.txt b/test/yarp/snapshots/seattlerb/case_in_hash_pat_assign.txt
new file mode 100644
index 0000000000..92933ca071
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_hash_pat_assign.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...56)(
+ [:x, :f],
+ StatementsNode(0...56)(
+ [CaseNode(0...56)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...52)(
+ HashPatternNode(11...42)(
+ nil,
+ [AssocNode(13...28)(
+ SymbolNode(13...15)(nil, (13...14), (14...15), "b"),
+ CapturePatternNode(16...28)(
+ ConstantReadNode(16...23)(),
+ LocalVariableWriteNode(27...28)(:x, 0, nil, (27...28), nil),
+ (24...26)
+ ),
+ nil
+ ),
+ AssocNode(30...36)(
+ SymbolNode(30...32)(nil, (30...31), (31...32), "d"),
+ StringNode(33...36)((33...34), (34...35), (35...36), "e"),
+ nil
+ ),
+ AssocNode(38...40)(
+ SymbolNode(38...40)(nil, (38...39), (39...40), "f"),
+ nil,
+ nil
+ )],
+ nil,
+ (11...12),
+ (41...42)
+ ),
+ StatementsNode(50...52)(
+ [SymbolNode(50...52)((50...51), (51...52), nil, "g")]
+ ),
+ (8...10),
+ (43...47)
+ )],
+ nil,
+ (0...4),
+ (53...56)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_assign.txt b/test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_assign.txt
new file mode 100644
index 0000000000..2b822fdd44
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_assign.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CaseNode(0...28)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...24)(
+ HashPatternNode(11...19)(
+ ConstantReadNode(11...12)(),
+ [AssocNode(13...18)(
+ SymbolNode(13...15)(nil, (13...14), (14...15), "a"),
+ IntegerNode(16...18)(),
+ nil
+ )],
+ nil,
+ (12...13),
+ (18...19)
+ ),
+ StatementsNode(22...24)(
+ [SymbolNode(22...24)((22...23), (23...24), nil, "d")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_true.txt b/test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_true.txt
new file mode 100644
index 0000000000..c1bc104eff
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_hash_pat_paren_true.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...32)(
+ [],
+ StatementsNode(0...32)(
+ [CaseNode(0...32)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...28)(
+ HashPatternNode(11...18)(
+ nil,
+ [AssocNode(11...18)(
+ SymbolNode(11...13)(nil, (11...12), (12...13), "b"),
+ TrueNode(14...18)(),
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ StatementsNode(26...28)(
+ [SymbolNode(26...28)((26...27), (27...28), nil, "c")]
+ ),
+ (8...10),
+ (19...23)
+ )],
+ nil,
+ (0...4),
+ (29...32)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_hash_pat_rest.txt b/test/yarp/snapshots/seattlerb/case_in_hash_pat_rest.txt
new file mode 100644
index 0000000000..ed7b166852
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_hash_pat_rest.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...35)(
+ [:c, :rest],
+ StatementsNode(0...35)(
+ [CaseNode(0...35)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...31)(
+ HashPatternNode(11...23)(
+ nil,
+ [AssocNode(11...15)(
+ SymbolNode(11...13)(nil, (11...12), (12...13), "b"),
+ LocalVariableWriteNode(14...15)(:c, 0, nil, (14...15), nil),
+ nil
+ ),
+ AssocSplatNode(17...23)(
+ LocalVariableWriteNode(19...23)(:rest, 0, nil, (19...23), nil),
+ (17...19)
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ StatementsNode(29...31)(
+ [SymbolNode(29...31)((29...30), (30...31), nil, "d")]
+ ),
+ (8...10),
+ (24...28)
+ )],
+ nil,
+ (0...4),
+ (32...35)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_hash_pat_rest_solo.txt b/test/yarp/snapshots/seattlerb/case_in_hash_pat_rest_solo.txt
new file mode 100644
index 0000000000..7bdc02e6fb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_hash_pat_rest_solo.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...29)(
+ [:rest],
+ StatementsNode(0...29)(
+ [CaseNode(0...29)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...25)(
+ HashPatternNode(11...17)(
+ nil,
+ [AssocSplatNode(11...17)(
+ LocalVariableWriteNode(13...17)(:rest, 0, nil, (13...17), nil),
+ (11...13)
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ StatementsNode(23...25)(
+ [SymbolNode(23...25)((23...24), (24...25), nil, "d")]
+ ),
+ (8...10),
+ (18...22)
+ )],
+ nil,
+ (0...4),
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_if_unless_post_mod.txt b/test/yarp/snapshots/seattlerb/case_in_if_unless_post_mod.txt
new file mode 100644
index 0000000000..5091c3d7f9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_if_unless_post_mod.txt
@@ -0,0 +1,39 @@
+ProgramNode(0...52)(
+ [],
+ StatementsNode(0...52)(
+ [CaseNode(0...52)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...25)(
+ IfNode(11...20)(
+ (13...15),
+ TrueNode(16...20)(),
+ StatementsNode(11...12)([ConstantReadNode(11...12)()]),
+ nil,
+ nil
+ ),
+ StatementsNode(23...25)(
+ [SymbolNode(23...25)((23...24), (24...25), nil, "C")]
+ ),
+ (8...10),
+ nil
+ ),
+ InNode(26...48)(
+ UnlessNode(29...43)(
+ (31...37),
+ FalseNode(38...43)(),
+ StatementsNode(29...30)([ConstantReadNode(29...30)()]),
+ nil,
+ nil
+ ),
+ StatementsNode(46...48)(
+ [SymbolNode(46...48)((46...47), (47...48), nil, "E")]
+ ),
+ (26...28),
+ nil
+ )],
+ nil,
+ (0...4),
+ (49...52)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_multiple.txt b/test/yarp/snapshots/seattlerb/case_in_multiple.txt
new file mode 100644
index 0000000000..e35b87ff5c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_multiple.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [CaseNode(0...37)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...20)(
+ ConstantPathNode(11...15)(
+ ConstantReadNode(11...12)(),
+ ConstantReadNode(14...15)(),
+ (12...14)
+ ),
+ StatementsNode(18...20)(
+ [SymbolNode(18...20)((18...19), (19...20), nil, "C")]
+ ),
+ (8...10),
+ nil
+ ),
+ InNode(21...33)(
+ ConstantPathNode(24...28)(
+ ConstantReadNode(24...25)(),
+ ConstantReadNode(27...28)(),
+ (25...27)
+ ),
+ StatementsNode(31...33)(
+ [SymbolNode(31...33)((31...32), (32...33), nil, "F")]
+ ),
+ (21...23),
+ nil
+ )],
+ nil,
+ (0...4),
+ (34...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/case_in_or.txt b/test/yarp/snapshots/seattlerb/case_in_or.txt
new file mode 100644
index 0000000000..a8c251b414
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/case_in_or.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CaseNode(0...25)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...21)(
+ AlternationPatternNode(11...16)(
+ ConstantReadNode(11...12)(),
+ ConstantReadNode(15...16)(),
+ (13...14)
+ ),
+ StatementsNode(19...21)(
+ [SymbolNode(19...21)((19...20), (20...21), nil, "d")]
+ ),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (22...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/class_comments.txt b/test/yarp/snapshots/seattlerb/class_comments.txt
new file mode 100644
index 0000000000..12b347ee8a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/class_comments.txt
@@ -0,0 +1,28 @@
+ProgramNode(19...71)(
+ [],
+ StatementsNode(19...71)(
+ [ClassNode(19...71)(
+ [],
+ (19...24),
+ ConstantReadNode(25...26)(),
+ nil,
+ nil,
+ StatementsNode(40...67)(
+ [DefNode(40...67)(
+ (44...48),
+ nil,
+ nil,
+ nil,
+ [],
+ (40...43),
+ nil,
+ nil,
+ nil,
+ nil,
+ (64...67)
+ )]
+ ),
+ (68...71)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/cond_unary_minus.txt b/test/yarp/snapshots/seattlerb/cond_unary_minus.txt
new file mode 100644
index 0000000000..79d8f4a09a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/cond_unary_minus.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [IfNode(0...10)(
+ (0...2),
+ CallNode(3...5)(
+ IntegerNode(4...5)(),
+ nil,
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ nil,
+ nil,
+ (7...10)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/const_2_op_asgn_or2.txt b/test/yarp/snapshots/seattlerb/const_2_op_asgn_or2.txt
new file mode 100644
index 0000000000..dfaac5447c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/const_2_op_asgn_or2.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [ConstantPathOperatorOrWriteNode(0...12)(
+ ConstantPathNode(0...6)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ ConstantReadNode(5...6)(),
+ (3...5)
+ ),
+ (7...10),
+ IntegerNode(11...12)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/const_3_op_asgn_or.txt b/test/yarp/snapshots/seattlerb/const_3_op_asgn_or.txt
new file mode 100644
index 0000000000..c9d4dbfe31
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/const_3_op_asgn_or.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [ConstantPathOperatorOrWriteNode(0...9)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ (4...7),
+ IntegerNode(8...9)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/const_op_asgn_and1.txt b/test/yarp/snapshots/seattlerb/const_op_asgn_and1.txt
new file mode 100644
index 0000000000..1e7dce0226
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/const_op_asgn_and1.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [ConstantPathOperatorWriteNode(0...8)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ (4...6),
+ IntegerNode(7...8)(),
+ :&
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/const_op_asgn_and2.txt b/test/yarp/snapshots/seattlerb/const_op_asgn_and2.txt
new file mode 100644
index 0000000000..85739dac2d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/const_op_asgn_and2.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [ConstantPathOperatorAndWriteNode(0...9)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ (4...7),
+ IntegerNode(8...9)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/const_op_asgn_or.txt b/test/yarp/snapshots/seattlerb/const_op_asgn_or.txt
new file mode 100644
index 0000000000..d1bfe6cd4d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/const_op_asgn_or.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [ConstantPathOperatorOrWriteNode(0...10)(
+ ConstantPathNode(0...4)(
+ ConstantReadNode(0...1)(),
+ ConstantReadNode(3...4)(),
+ (1...3)
+ ),
+ (5...8),
+ IntegerNode(9...10)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dasgn_icky2.txt b/test/yarp/snapshots/seattlerb/dasgn_icky2.txt
new file mode 100644
index 0000000000..26d5ca491c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dasgn_icky2.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...76)(
+ [],
+ StatementsNode(0...76)(
+ [CallNode(0...76)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...76)(
+ [:v],
+ nil,
+ StatementsNode(7...72)(
+ [LocalVariableWriteNode(7...14)(
+ :v,
+ 0,
+ NilNode(11...14)(),
+ (7...8),
+ (9...10)
+ ),
+ BeginNode(17...72)(
+ (17...22),
+ StatementsNode(27...32)(
+ [YieldNode(27...32)((27...32), nil, nil, nil)]
+ ),
+ RescueNode(35...66)(
+ (35...41),
+ [ConstantReadNode(42...51)()],
+ (52...54),
+ LocalVariableWriteNode(55...56)(:v, 0, nil, (55...56), nil),
+ StatementsNode(61...66)([BreakNode(61...66)(nil, (61...66))]),
+ nil
+ ),
+ nil,
+ nil,
+ (69...72)
+ )]
+ ),
+ (2...4),
+ (73...76)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defined_eh_parens.txt b/test/yarp/snapshots/seattlerb/defined_eh_parens.txt
new file mode 100644
index 0000000000..5aedca1fbb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defined_eh_parens.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [DefinedNode(0...12)((8...9), IntegerNode(9...11)(), (11...12), (0...8))]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_arg_asplat_arg.txt b/test/yarp/snapshots/seattlerb/defn_arg_asplat_arg.txt
new file mode 100644
index 0000000000..6e7e9478f1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_arg_asplat_arg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [DefNode(0...29)(
+ (4...8),
+ nil,
+ ParametersNode(9...24)(
+ [RequiredParameterNode(9...15)(:interp)],
+ [],
+ [RequiredParameterNode(20...24)(:args)],
+ RestParameterNode(17...18)((17...18), nil),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:interp, :*, :args],
+ (0...3),
+ nil,
+ (8...9),
+ (24...25),
+ nil,
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_arg_forward_args.txt b/test/yarp/snapshots/seattlerb/defn_arg_forward_args.txt
new file mode 100644
index 0000000000..c3e8e7d010
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_arg_forward_args.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [DefNode(0...29)(
+ (4...5),
+ nil,
+ ParametersNode(6...12)(
+ [RequiredParameterNode(6...7)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(9...12)(),
+ nil
+ ),
+ StatementsNode(15...24)(
+ [CallNode(15...24)(
+ nil,
+ nil,
+ (15...16),
+ (16...17),
+ ArgumentsNode(17...23)(
+ [LocalVariableReadNode(17...18)(:x, 0),
+ ForwardingArgumentsNode(20...23)()]
+ ),
+ (23...24),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:x, :"..."],
+ (0...3),
+ nil,
+ (5...6),
+ (12...13),
+ nil,
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_args_forward_args.txt b/test/yarp/snapshots/seattlerb/defn_args_forward_args.txt
new file mode 100644
index 0000000000..c14a1868ed
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_args_forward_args.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...41)(
+ [],
+ StatementsNode(0...41)(
+ [DefNode(0...41)(
+ (4...5),
+ nil,
+ ParametersNode(6...18)(
+ [RequiredParameterNode(6...7)(:x),
+ RequiredParameterNode(9...10)(:y),
+ RequiredParameterNode(12...13)(:z)],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(15...18)(),
+ nil
+ ),
+ StatementsNode(21...36)(
+ [CallNode(21...36)(
+ nil,
+ nil,
+ (21...22),
+ (22...23),
+ ArgumentsNode(23...35)(
+ [SymbolNode(23...27)((23...24), (24...27), nil, "get"),
+ LocalVariableReadNode(29...30)(:z, 0),
+ ForwardingArgumentsNode(32...35)()]
+ ),
+ (35...36),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:x, :y, :z, :"..."],
+ (0...3),
+ nil,
+ (5...6),
+ (18...19),
+ nil,
+ (38...41)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_comments.txt b/test/yarp/snapshots/seattlerb/defn_comments.txt
new file mode 100644
index 0000000000..1ff1c127bd
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_comments.txt
@@ -0,0 +1,18 @@
+ProgramNode(19...31)(
+ [],
+ StatementsNode(19...31)(
+ [DefNode(19...31)(
+ (23...27),
+ nil,
+ nil,
+ nil,
+ [],
+ (19...22),
+ nil,
+ nil,
+ nil,
+ nil,
+ (28...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_endless_command.txt b/test/yarp/snapshots/seattlerb/defn_endless_command.txt
new file mode 100644
index 0000000000..7e1989cf6f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_endless_command.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [DefNode(0...33)(
+ (4...15),
+ nil,
+ nil,
+ StatementsNode(18...33)(
+ [CallNode(18...33)(
+ nil,
+ nil,
+ (18...30),
+ nil,
+ ArgumentsNode(31...33)([IntegerNode(31...33)()]),
+ nil,
+ nil,
+ 0,
+ "other_method"
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ (16...17),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_endless_command_rescue.txt b/test/yarp/snapshots/seattlerb/defn_endless_command_rescue.txt
new file mode 100644
index 0000000000..bed7b31b5a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_endless_command_rescue.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [DefNode(0...43)(
+ (4...15),
+ nil,
+ nil,
+ StatementsNode(18...43)(
+ [CallNode(18...43)(
+ nil,
+ nil,
+ (18...30),
+ nil,
+ ArgumentsNode(31...43)(
+ [RescueModifierNode(31...43)(
+ IntegerNode(31...33)(),
+ (34...40),
+ IntegerNode(41...43)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "other_method"
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ (16...17),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_forward_args.txt b/test/yarp/snapshots/seattlerb/defn_forward_args.txt
new file mode 100644
index 0000000000..0fbe6f0d70
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_forward_args.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [DefNode(0...23)(
+ (4...5),
+ nil,
+ ParametersNode(6...9)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(6...9)(),
+ nil
+ ),
+ StatementsNode(12...18)(
+ [CallNode(12...18)(
+ nil,
+ nil,
+ (12...13),
+ (13...14),
+ ArgumentsNode(14...17)([ForwardingArgumentsNode(14...17)()]),
+ (17...18),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:"..."],
+ (0...3),
+ nil,
+ (5...6),
+ (9...10),
+ nil,
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_env.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_env.txt
new file mode 100644
index 0000000000..5872579ee6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_env.txt
@@ -0,0 +1,45 @@
+ProgramNode(0...45)(
+ [],
+ StatementsNode(0...45)(
+ [DefNode(0...45)(
+ (4...8),
+ nil,
+ ParametersNode(9...18)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(9...18)((9...11), (11...18)),
+ nil
+ ),
+ StatementsNode(20...41)(
+ [CallNode(20...41)(
+ nil,
+ nil,
+ (20...30),
+ (30...31),
+ ArgumentsNode(31...40)(
+ [KeywordHashNode(31...40)(
+ [AssocSplatNode(31...40)(
+ LocalVariableReadNode(33...40)(:testing, 0),
+ (31...33)
+ )]
+ )]
+ ),
+ (40...41),
+ nil,
+ 0,
+ "test_splat"
+ )]
+ ),
+ [:testing],
+ (0...3),
+ nil,
+ (8...9),
+ (18...19),
+ nil,
+ (42...45)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_kwarg.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_kwarg.txt
new file mode 100644
index 0000000000..6dcd4aaf2b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_kwarg.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [DefNode(0...24)(
+ (4...5),
+ nil,
+ ParametersNode(6...19)(
+ [RequiredParameterNode(6...7)(:a)],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(9...13)((9...11), IntegerNode(12...13)()),
+ KeywordParameterNode(15...19)((15...17), IntegerNode(18...19)())],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b, :c],
+ (0...3),
+ nil,
+ (5...6),
+ (19...20),
+ nil,
+ (21...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat.txt
new file mode 100644
index 0000000000..5bc6490a6f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [DefNode(0...20)(
+ (4...5),
+ nil,
+ ParametersNode(6...15)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...10)((6...8), IntegerNode(9...10)())],
+ KeywordRestParameterNode(12...15)((12...14), (14...15)),
+ nil
+ ),
+ nil,
+ [:b, :c],
+ (0...3),
+ nil,
+ (5...6),
+ (15...16),
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt
new file mode 100644
index 0000000000..3dfb42f6d7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_kwsplat_anon.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [DefNode(0...19)(
+ (4...5),
+ nil,
+ ParametersNode(6...14)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...10)((6...8), IntegerNode(9...10)())],
+ KeywordRestParameterNode(12...14)((12...14), nil),
+ nil
+ ),
+ nil,
+ [:b, :**],
+ (0...3),
+ nil,
+ (5...6),
+ (14...15),
+ nil,
+ (16...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_lvar.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_lvar.txt
new file mode 100644
index 0000000000..f4f6964c58
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_lvar.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [DefNode(0...26)(
+ (4...7),
+ nil,
+ ParametersNode(8...16)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(8...16)(
+ (8...11),
+ SymbolNode(12...16)((12...13), (13...16), nil, "val")
+ )],
+ nil,
+ nil
+ ),
+ StatementsNode(19...21)([LocalVariableReadNode(19...21)(:kw, 0)]),
+ [:kw],
+ (0...3),
+ nil,
+ (7...8),
+ (16...17),
+ nil,
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_no_parens.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_no_parens.txt
new file mode 100644
index 0000000000..b0649973ac
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_no_parens.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [DefNode(0...14)(
+ (4...5),
+ nil,
+ ParametersNode(6...10)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...10)((6...8), IntegerNode(9...10)())],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (11...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_kwarg_val.txt b/test/yarp/snapshots/seattlerb/defn_kwarg_val.txt
new file mode 100644
index 0000000000..dfa99b7066
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_kwarg_val.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [DefNode(0...17)(
+ (4...5),
+ nil,
+ ParametersNode(6...12)(
+ [RequiredParameterNode(6...7)(:a)],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(9...12)((9...11), IntegerNode(11...12)())],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b],
+ (0...3),
+ nil,
+ (5...6),
+ (12...13),
+ nil,
+ (14...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_no_kwargs.txt b/test/yarp/snapshots/seattlerb/defn_no_kwargs.txt
new file mode 100644
index 0000000000..a5046e04e4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_no_kwargs.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [DefNode(0...17)(
+ (4...5),
+ nil,
+ ParametersNode(6...11)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ NoKeywordsParameterNode(6...11)((6...8), (8...11)),
+ nil
+ ),
+ nil,
+ [],
+ (0...3),
+ nil,
+ (5...6),
+ (11...12),
+ nil,
+ (14...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_oneliner.txt b/test/yarp/snapshots/seattlerb/defn_oneliner.txt
new file mode 100644
index 0000000000..053400c564
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_oneliner.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [DefNode(0...27)(
+ (4...8),
+ nil,
+ ParametersNode(9...12)(
+ [RequiredParameterNode(9...12)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(16...27)(
+ [CallNode(16...27)(
+ nil,
+ nil,
+ (16...22),
+ (22...23),
+ ArgumentsNode(23...26)([LocalVariableReadNode(23...26)(:cmd, 0)]),
+ (26...27),
+ nil,
+ 0,
+ "system"
+ )]
+ ),
+ [:cmd],
+ (0...3),
+ nil,
+ (8...9),
+ (12...13),
+ (14...15),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt b/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt
new file mode 100644
index 0000000000..30aaf7190e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_oneliner_eq2.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [ClassNode(0...28)(
+ [],
+ (0...5),
+ ConstantReadNode(6...7)(),
+ nil,
+ nil,
+ StatementsNode(10...24)(
+ [DefNode(10...24)(
+ (14...16),
+ nil,
+ ParametersNode(17...18)(
+ [RequiredParameterNode(17...18)(:o)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(22...24)([IntegerNode(22...24)()]),
+ [:o],
+ (10...13),
+ nil,
+ (16...17),
+ (18...19),
+ (20...21),
+ nil
+ )]
+ ),
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_oneliner_noargs.txt b/test/yarp/snapshots/seattlerb/defn_oneliner_noargs.txt
new file mode 100644
index 0000000000..b560a37f61
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_oneliner_noargs.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [DefNode(0...17)(
+ (4...8),
+ nil,
+ nil,
+ StatementsNode(11...17)(
+ [CallNode(11...17)(
+ nil,
+ nil,
+ (11...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "system"
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ (9...10),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_oneliner_noargs_parentheses.txt b/test/yarp/snapshots/seattlerb/defn_oneliner_noargs_parentheses.txt
new file mode 100644
index 0000000000..7a106c57d6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_oneliner_noargs_parentheses.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [DefNode(0...19)(
+ (4...8),
+ nil,
+ nil,
+ StatementsNode(13...19)(
+ [CallNode(13...19)(
+ nil,
+ nil,
+ (13...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "system"
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ (8...9),
+ (9...10),
+ (11...12),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_oneliner_rescue.txt b/test/yarp/snapshots/seattlerb/defn_oneliner_rescue.txt
new file mode 100644
index 0000000000..5032c52203
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_oneliner_rescue.txt
@@ -0,0 +1,132 @@
+ProgramNode(0...130)(
+ [],
+ StatementsNode(0...130)(
+ [DefNode(0...44)(
+ (4...8),
+ nil,
+ ParametersNode(9...12)(
+ [RequiredParameterNode(9...12)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ BeginNode(16...44)(
+ nil,
+ StatementsNode(16...27)(
+ [CallNode(16...27)(
+ nil,
+ nil,
+ (16...22),
+ (22...23),
+ ArgumentsNode(23...26)(
+ [LocalVariableReadNode(23...26)(:cmd, 0)]
+ ),
+ (26...27),
+ nil,
+ 0,
+ "system"
+ )]
+ ),
+ RescueNode(28...40)(
+ (28...34),
+ [],
+ nil,
+ nil,
+ StatementsNode(37...40)([NilNode(37...40)()]),
+ nil
+ ),
+ nil,
+ nil,
+ (41...44)
+ ),
+ [:cmd],
+ (0...3),
+ nil,
+ (8...9),
+ (12...13),
+ nil,
+ (41...44)
+ ),
+ DefNode(47...89)(
+ (51...55),
+ nil,
+ ParametersNode(56...59)(
+ [RequiredParameterNode(56...59)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(63...85)(
+ [RescueModifierNode(63...85)(
+ CallNode(63...74)(
+ nil,
+ nil,
+ (63...69),
+ (69...70),
+ ArgumentsNode(70...73)(
+ [LocalVariableReadNode(70...73)(:cmd, 0)]
+ ),
+ (73...74),
+ nil,
+ 0,
+ "system"
+ ),
+ (75...81),
+ NilNode(82...85)()
+ )]
+ ),
+ [:cmd],
+ (47...50),
+ nil,
+ (55...56),
+ (59...60),
+ nil,
+ (86...89)
+ ),
+ DefNode(92...130)(
+ (96...100),
+ nil,
+ ParametersNode(101...104)(
+ [RequiredParameterNode(101...104)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(108...130)(
+ [RescueModifierNode(108...130)(
+ CallNode(108...119)(
+ nil,
+ nil,
+ (108...114),
+ (114...115),
+ ArgumentsNode(115...118)(
+ [LocalVariableReadNode(115...118)(:cmd, 0)]
+ ),
+ (118...119),
+ nil,
+ 0,
+ "system"
+ ),
+ (120...126),
+ NilNode(127...130)()
+ )]
+ ),
+ [:cmd],
+ (92...95),
+ nil,
+ (100...101),
+ (104...105),
+ (106...107),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_opt_last_arg.txt b/test/yarp/snapshots/seattlerb/defn_opt_last_arg.txt
new file mode 100644
index 0000000000..d4064d0f34
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_opt_last_arg.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [DefNode(0...21)(
+ (4...5),
+ nil,
+ ParametersNode(6...17)(
+ [],
+ [OptionalParameterNode(6...17)(
+ :arg,
+ (6...9),
+ (10...11),
+ FalseNode(12...17)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:arg],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (18...21)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_opt_reg.txt b/test/yarp/snapshots/seattlerb/defn_opt_reg.txt
new file mode 100644
index 0000000000..5796adf1e9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_opt_reg.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [DefNode(0...19)(
+ (4...5),
+ nil,
+ ParametersNode(6...14)(
+ [],
+ [OptionalParameterNode(6...11)(
+ :a,
+ (6...7),
+ (7...8),
+ NilNode(8...11)()
+ )],
+ [RequiredParameterNode(13...14)(:b)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b],
+ (0...3),
+ nil,
+ (5...6),
+ (14...15),
+ nil,
+ (16...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_opt_splat_arg.txt b/test/yarp/snapshots/seattlerb/defn_opt_splat_arg.txt
new file mode 100644
index 0000000000..cd181b55b3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_opt_splat_arg.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [DefNode(0...24)(
+ (4...5),
+ nil,
+ ParametersNode(7...19)(
+ [],
+ [OptionalParameterNode(7...12)(
+ :a,
+ (7...8),
+ (9...10),
+ IntegerNode(11...12)()
+ )],
+ [RequiredParameterNode(18...19)(:c)],
+ RestParameterNode(14...16)((14...15), (15...16)),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b, :c],
+ (0...3),
+ nil,
+ (6...7),
+ (19...20),
+ nil,
+ (21...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_powarg.txt b/test/yarp/snapshots/seattlerb/defn_powarg.txt
new file mode 100644
index 0000000000..a6d63f56cb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_powarg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [DefNode(0...17)(
+ (4...5),
+ nil,
+ ParametersNode(6...12)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(6...12)((6...8), (8...12)),
+ nil
+ ),
+ nil,
+ [:opts],
+ (0...3),
+ nil,
+ (5...6),
+ (12...13),
+ nil,
+ (14...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_reg_opt_reg.txt b/test/yarp/snapshots/seattlerb/defn_reg_opt_reg.txt
new file mode 100644
index 0000000000..c7e9c64087
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_reg_opt_reg.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [DefNode(0...23)(
+ (4...5),
+ nil,
+ ParametersNode(6...18)(
+ [RequiredParameterNode(6...7)(:a)],
+ [OptionalParameterNode(9...15)(
+ :b,
+ (9...10),
+ (11...12),
+ SymbolNode(13...15)((13...14), (14...15), nil, "c")
+ )],
+ [RequiredParameterNode(17...18)(:d)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b, :d],
+ (0...3),
+ nil,
+ (5...6),
+ (18...19),
+ nil,
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_splat_arg.txt b/test/yarp/snapshots/seattlerb/defn_splat_arg.txt
new file mode 100644
index 0000000000..0fb8bb01c1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_splat_arg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [DefNode(0...15)(
+ (4...5),
+ nil,
+ ParametersNode(6...10)(
+ [],
+ [],
+ [RequiredParameterNode(9...10)(:a)],
+ RestParameterNode(6...7)((6...7), nil),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:*, :a],
+ (0...3),
+ nil,
+ (5...6),
+ (10...11),
+ nil,
+ (12...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defn_unary_not.txt b/test/yarp/snapshots/seattlerb/defn_unary_not.txt
new file mode 100644
index 0000000000..9fbee1764f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defn_unary_not.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [DefNode(0...17)(
+ (4...6),
+ nil,
+ nil,
+ StatementsNode(8...12)([TrueNode(8...12)()]),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (14...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defns_reserved.txt b/test/yarp/snapshots/seattlerb/defns_reserved.txt
new file mode 100644
index 0000000000..07b165898e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defns_reserved.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [DefNode(0...20)(
+ (9...15),
+ SelfNode(4...8)(),
+ nil,
+ nil,
+ [],
+ (0...3),
+ (8...9),
+ nil,
+ nil,
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_as_arg_with_do_block_inside.txt b/test/yarp/snapshots/seattlerb/defs_as_arg_with_do_block_inside.txt
new file mode 100644
index 0000000000..57e5932ab4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_as_arg_with_do_block_inside.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [CallNode(0...30)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...30)(
+ [DefNode(2...30)(
+ (11...12),
+ SelfNode(6...10)(),
+ nil,
+ StatementsNode(14...25)(
+ [CallNode(14...25)(
+ CallNode(14...15)(
+ nil,
+ nil,
+ (14...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ (15...16),
+ (16...17),
+ nil,
+ nil,
+ nil,
+ BlockNode(18...25)([], nil, nil, (18...20), (22...25)),
+ 0,
+ "y"
+ )]
+ ),
+ [],
+ (2...5),
+ (10...11),
+ nil,
+ nil,
+ nil,
+ (27...30)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_comments.txt b/test/yarp/snapshots/seattlerb/defs_comments.txt
new file mode 100644
index 0000000000..55a3054373
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_comments.txt
@@ -0,0 +1,18 @@
+ProgramNode(19...36)(
+ [],
+ StatementsNode(19...36)(
+ [DefNode(19...36)(
+ (28...32),
+ SelfNode(23...27)(),
+ nil,
+ nil,
+ [],
+ (19...22),
+ (27...28),
+ nil,
+ nil,
+ nil,
+ (33...36)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_endless_command.txt b/test/yarp/snapshots/seattlerb/defs_endless_command.txt
new file mode 100644
index 0000000000..11572715af
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_endless_command.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...35)(
+ [],
+ StatementsNode(0...35)(
+ [DefNode(0...35)(
+ (6...17),
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "x"),
+ nil,
+ StatementsNode(20...35)(
+ [CallNode(20...35)(
+ nil,
+ nil,
+ (20...32),
+ nil,
+ ArgumentsNode(33...35)([IntegerNode(33...35)()]),
+ nil,
+ nil,
+ 0,
+ "other_method"
+ )]
+ ),
+ [],
+ (0...3),
+ (5...6),
+ nil,
+ nil,
+ (18...19),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_endless_command_rescue.txt b/test/yarp/snapshots/seattlerb/defs_endless_command_rescue.txt
new file mode 100644
index 0000000000..b657a3f19d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_endless_command_rescue.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...45)(
+ [],
+ StatementsNode(0...45)(
+ [DefNode(0...45)(
+ (6...17),
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "x"),
+ nil,
+ StatementsNode(20...45)(
+ [CallNode(20...45)(
+ nil,
+ nil,
+ (20...32),
+ nil,
+ ArgumentsNode(33...45)(
+ [RescueModifierNode(33...45)(
+ IntegerNode(33...35)(),
+ (36...42),
+ IntegerNode(43...45)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "other_method"
+ )]
+ ),
+ [],
+ (0...3),
+ (5...6),
+ nil,
+ nil,
+ (18...19),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_kwarg.txt b/test/yarp/snapshots/seattlerb/defs_kwarg.txt
new file mode 100644
index 0000000000..0309161b8e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_kwarg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [DefNode(0...19)(
+ (9...10),
+ SelfNode(4...8)(),
+ ParametersNode(11...15)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(11...15)((11...13), IntegerNode(14...15)())],
+ nil,
+ nil
+ ),
+ nil,
+ [:b],
+ (0...3),
+ (8...9),
+ nil,
+ nil,
+ nil,
+ (16...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_oneliner.txt b/test/yarp/snapshots/seattlerb/defs_oneliner.txt
new file mode 100644
index 0000000000..60ea01092f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_oneliner.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...32)(
+ [],
+ StatementsNode(0...32)(
+ [DefNode(0...32)(
+ (9...13),
+ SelfNode(4...8)(),
+ ParametersNode(14...17)(
+ [RequiredParameterNode(14...17)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(21...32)(
+ [CallNode(21...32)(
+ nil,
+ nil,
+ (21...27),
+ (27...28),
+ ArgumentsNode(28...31)([LocalVariableReadNode(28...31)(:cmd, 0)]),
+ (31...32),
+ nil,
+ 0,
+ "system"
+ )]
+ ),
+ [:cmd],
+ (0...3),
+ (8...9),
+ (13...14),
+ (17...18),
+ (19...20),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt b/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt
new file mode 100644
index 0000000000..8a4f9e9086
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_oneliner_eq2.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [ClassNode(0...33)(
+ [],
+ (0...5),
+ ConstantReadNode(6...7)(),
+ nil,
+ nil,
+ StatementsNode(10...29)(
+ [DefNode(10...29)(
+ (19...21),
+ SelfNode(14...18)(),
+ ParametersNode(22...23)(
+ [RequiredParameterNode(22...23)(:o)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(27...29)([IntegerNode(27...29)()]),
+ [:o],
+ (10...13),
+ (18...19),
+ (21...22),
+ (23...24),
+ (25...26),
+ nil
+ )]
+ ),
+ (30...33)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/defs_oneliner_rescue.txt b/test/yarp/snapshots/seattlerb/defs_oneliner_rescue.txt
new file mode 100644
index 0000000000..90269cc14a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/defs_oneliner_rescue.txt
@@ -0,0 +1,132 @@
+ProgramNode(0...145)(
+ [],
+ StatementsNode(0...145)(
+ [DefNode(0...49)(
+ (9...13),
+ SelfNode(4...8)(),
+ ParametersNode(14...17)(
+ [RequiredParameterNode(14...17)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ BeginNode(21...49)(
+ nil,
+ StatementsNode(21...32)(
+ [CallNode(21...32)(
+ nil,
+ nil,
+ (21...27),
+ (27...28),
+ ArgumentsNode(28...31)(
+ [LocalVariableReadNode(28...31)(:cmd, 0)]
+ ),
+ (31...32),
+ nil,
+ 0,
+ "system"
+ )]
+ ),
+ RescueNode(33...45)(
+ (33...39),
+ [],
+ nil,
+ nil,
+ StatementsNode(42...45)([NilNode(42...45)()]),
+ nil
+ ),
+ nil,
+ nil,
+ (46...49)
+ ),
+ [:cmd],
+ (0...3),
+ (8...9),
+ (13...14),
+ (17...18),
+ nil,
+ (46...49)
+ ),
+ DefNode(52...99)(
+ (61...65),
+ SelfNode(56...60)(),
+ ParametersNode(66...69)(
+ [RequiredParameterNode(66...69)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(73...95)(
+ [RescueModifierNode(73...95)(
+ CallNode(73...84)(
+ nil,
+ nil,
+ (73...79),
+ (79...80),
+ ArgumentsNode(80...83)(
+ [LocalVariableReadNode(80...83)(:cmd, 0)]
+ ),
+ (83...84),
+ nil,
+ 0,
+ "system"
+ ),
+ (85...91),
+ NilNode(92...95)()
+ )]
+ ),
+ [:cmd],
+ (52...55),
+ (60...61),
+ (65...66),
+ (69...70),
+ nil,
+ (96...99)
+ ),
+ DefNode(102...145)(
+ (111...115),
+ SelfNode(106...110)(),
+ ParametersNode(116...119)(
+ [RequiredParameterNode(116...119)(:cmd)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(123...145)(
+ [RescueModifierNode(123...145)(
+ CallNode(123...134)(
+ nil,
+ nil,
+ (123...129),
+ (129...130),
+ ArgumentsNode(130...133)(
+ [LocalVariableReadNode(130...133)(:cmd, 0)]
+ ),
+ (133...134),
+ nil,
+ 0,
+ "system"
+ ),
+ (135...141),
+ NilNode(142...145)()
+ )]
+ ),
+ [:cmd],
+ (102...105),
+ (110...111),
+ (115...116),
+ (119...120),
+ (121...122),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/do_bug.txt b/test/yarp/snapshots/seattlerb/do_bug.txt
new file mode 100644
index 0000000000..8226a3fa45
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/do_bug.txt
@@ -0,0 +1,46 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [CallNode(0...3)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...3)([IntegerNode(2...3)()]),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(4...33)(
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "a"),
+ (5...6),
+ (6...7),
+ nil,
+ nil,
+ nil,
+ BlockNode(8...33)(
+ [:c],
+ BlockParametersNode(11...14)(
+ ParametersNode(12...13)(
+ [RequiredParameterNode(12...13)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (11...12),
+ (13...14)
+ ),
+ nil,
+ (8...10),
+ (30...33)
+ ),
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/do_lambda.txt b/test/yarp/snapshots/seattlerb/do_lambda.txt
new file mode 100644
index 0000000000..86b3548eb4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/do_lambda.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [LambdaNode(0...11)(
+ [],
+ (0...2),
+ BlockParametersNode(2...4)(nil, [], (2...3), (3...4)),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dot2_nil__26.txt b/test/yarp/snapshots/seattlerb/dot2_nil__26.txt
new file mode 100644
index 0000000000..2db1072701
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dot2_nil__26.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)(
+ [RangeNode(0...3)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (1...3),
+ 0
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dot3_nil__26.txt b/test/yarp/snapshots/seattlerb/dot3_nil__26.txt
new file mode 100644
index 0000000000..fce5824c9d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dot3_nil__26.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [RangeNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (1...4),
+ 1
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dstr_evstr.txt b/test/yarp/snapshots/seattlerb/dstr_evstr.txt
new file mode 100644
index 0000000000..c744aeee37
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dstr_evstr.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [InterpolatedStringNode(0...12)(
+ (0...1),
+ [EmbeddedStatementsNode(1...7)(
+ (1...3),
+ StatementsNode(3...6)(
+ [StringNode(3...6)((3...4), (4...5), (5...6), "a")]
+ ),
+ (6...7)
+ ),
+ EmbeddedStatementsNode(7...11)(
+ (7...9),
+ StatementsNode(9...10)(
+ [CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "b")]
+ ),
+ (10...11)
+ )],
+ (11...12)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dstr_evstr_empty_end.txt b/test/yarp/snapshots/seattlerb/dstr_evstr_empty_end.txt
new file mode 100644
index 0000000000..113270b9c0
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dstr_evstr_empty_end.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [InterpolatedSymbolNode(0...11)(
+ (0...2),
+ [EmbeddedStatementsNode(2...10)(
+ (2...4),
+ StatementsNode(4...9)(
+ [CallNode(4...9)(
+ nil,
+ nil,
+ (4...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "field"
+ )]
+ ),
+ (9...10)
+ )],
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dstr_lex_state.txt b/test/yarp/snapshots/seattlerb/dstr_lex_state.txt
new file mode 100644
index 0000000000..50e327ab9c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dstr_lex_state.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [InterpolatedStringNode(0...8)(
+ (0...1),
+ [EmbeddedStatementsNode(1...7)(
+ (1...3),
+ StatementsNode(3...6)(
+ [CallNode(3...6)(
+ nil,
+ nil,
+ (3...4),
+ nil,
+ ArgumentsNode(4...6)(
+ [SymbolNode(4...6)((4...5), (5...6), nil, "a")]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (6...7)
+ )],
+ (7...8)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dstr_str.txt b/test/yarp/snapshots/seattlerb/dstr_str.txt
new file mode 100644
index 0000000000..e17b035d2f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dstr_str.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [InterpolatedStringNode(0...10)(
+ (0...1),
+ [EmbeddedStatementsNode(1...7)(
+ (1...3),
+ StatementsNode(3...6)(
+ [StringNode(3...6)((3...4), (4...5), (5...6), "a")]
+ ),
+ (6...7)
+ ),
+ StringNode(7...9)(nil, (7...9), nil, " b")],
+ (9...10)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dsym_esc_to_sym.txt b/test/yarp/snapshots/seattlerb/dsym_esc_to_sym.txt
new file mode 100644
index 0000000000..41a66c6143
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dsym_esc_to_sym.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [InterpolatedSymbolNode(0...17)(
+ (0...2),
+ [StringNode(2...16)(nil, (2...16), nil, "Varietà")],
+ (16...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/dsym_to_sym.txt b/test/yarp/snapshots/seattlerb/dsym_to_sym.txt
new file mode 100644
index 0000000000..67c71efb2d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/dsym_to_sym.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...32)(
+ [],
+ StatementsNode(0...32)(
+ [AliasNode(0...17)(
+ InterpolatedSymbolNode(6...11)(
+ (6...8),
+ [StringNode(8...10)(nil, (8...10), nil, "<<")],
+ (10...11)
+ ),
+ InterpolatedSymbolNode(12...17)(
+ (12...14),
+ [StringNode(14...16)(nil, (14...16), nil, ">>")],
+ (16...17)
+ ),
+ (0...5)
+ ),
+ AliasNode(19...32)(
+ SymbolNode(25...28)((25...26), (26...28), nil, "<<"),
+ SymbolNode(29...32)((29...30), (30...32), nil, ">>"),
+ (19...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/eq_begin_line_numbers.txt b/test/yarp/snapshots/seattlerb/eq_begin_line_numbers.txt
new file mode 100644
index 0000000000..46a167a8de
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/eq_begin_line_numbers.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)([IntegerNode(0...1)(), IntegerNode(30...31)()])
+)
diff --git a/test/yarp/snapshots/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt b/test/yarp/snapshots/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt
new file mode 100644
index 0000000000..805f6f9bd0
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/eq_begin_why_wont_people_use_their_spacebar.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [CallNode(0...29)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "h"),
+ nil,
+ (1...4),
+ (1...2),
+ ArgumentsNode(2...29)(
+ [CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "k"),
+ BeginNode(5...29)(
+ (5...10),
+ StatementsNode(18...20)([IntegerNode(18...20)()]),
+ nil,
+ nil,
+ nil,
+ (26...29)
+ )]
+ ),
+ (3...4),
+ nil,
+ 0,
+ "[]="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/evstr_evstr.txt b/test/yarp/snapshots/seattlerb/evstr_evstr.txt
new file mode 100644
index 0000000000..e4b49cb84d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/evstr_evstr.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [InterpolatedStringNode(0...10)(
+ (0...1),
+ [EmbeddedStatementsNode(1...5)(
+ (1...3),
+ StatementsNode(3...4)(
+ [CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "a")]
+ ),
+ (4...5)
+ ),
+ EmbeddedStatementsNode(5...9)(
+ (5...7),
+ StatementsNode(7...8)(
+ [CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "b")]
+ ),
+ (8...9)
+ )],
+ (9...10)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/evstr_str.txt b/test/yarp/snapshots/seattlerb/evstr_str.txt
new file mode 100644
index 0000000000..4571199189
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/evstr_str.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [InterpolatedStringNode(0...8)(
+ (0...1),
+ [EmbeddedStatementsNode(1...5)(
+ (1...3),
+ StatementsNode(3...4)(
+ [CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "a")]
+ ),
+ (4...5)
+ ),
+ StringNode(5...7)(nil, (5...7), nil, " b")],
+ (7...8)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/expr_not_bang.txt b/test/yarp/snapshots/seattlerb/expr_not_bang.txt
new file mode 100644
index 0000000000..ed1649eff8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/expr_not_bang.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ CallNode(2...5)(
+ nil,
+ nil,
+ (2...3),
+ nil,
+ ArgumentsNode(4...5)(
+ [CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/f_kw.txt b/test/yarp/snapshots/seattlerb/f_kw.txt
new file mode 100644
index 0000000000..ace0997f9e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/f_kw.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [DefNode(0...15)(
+ (4...5),
+ nil,
+ ParametersNode(6...10)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...10)((6...8), IntegerNode(8...10)())],
+ nil,
+ nil
+ ),
+ nil,
+ [:k],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (12...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/f_kw__required.txt b/test/yarp/snapshots/seattlerb/f_kw__required.txt
new file mode 100644
index 0000000000..38d564599f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/f_kw__required.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [DefNode(0...13)(
+ (4...5),
+ nil,
+ ParametersNode(6...8)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...8)((6...8), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:k],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (10...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/flip2_env_lvar.txt b/test/yarp/snapshots/seattlerb/flip2_env_lvar.txt
new file mode 100644
index 0000000000..623be4987e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/flip2_env_lvar.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [IfNode(0...16)(
+ (0...2),
+ RangeNode(3...7)(
+ CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "a"),
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b"),
+ (4...6),
+ 0
+ ),
+ nil,
+ nil,
+ (13...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/float_with_if_modifier.txt b/test/yarp/snapshots/seattlerb/float_with_if_modifier.txt
new file mode 100644
index 0000000000..c27a5bfe3b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/float_with_if_modifier.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [IfNode(0...10)(
+ (3...5),
+ TrueNode(6...10)(),
+ StatementsNode(0...3)([FloatNode(0...3)()]),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc__backslash_dos_format.txt b/test/yarp/snapshots/seattlerb/heredoc__backslash_dos_format.txt
new file mode 100644
index 0000000000..36bb254c51
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc__backslash_dos_format.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...35)(
+ [:str],
+ StatementsNode(0...35)(
+ [LocalVariableWriteNode(0...35)(
+ :str,
+ 0,
+ InterpolatedStringNode(6...35)(
+ (6...12),
+ [StringNode(14...30)(
+ nil,
+ (14...30),
+ nil,
+ "before\u0000\u0000after\r\n"
+ )],
+ (30...35)
+ ),
+ (0...3),
+ (4...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_backslash_nl.txt b/test/yarp/snapshots/seattlerb/heredoc_backslash_nl.txt
new file mode 100644
index 0000000000..36a074222b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_backslash_nl.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...93)(
+ [],
+ StatementsNode(0...93)(
+ [StringNode(0...40)(
+ (0...1),
+ (1...39),
+ (39...40),
+ " why would someone do this? \n" + " blah\n"
+ ),
+ InterpolatedStringNode(42...93)(
+ (42...49),
+ [StringNode(50...88)(
+ nil,
+ (50...88),
+ nil,
+ " why would someone do this? \n" + " blah\n"
+ )],
+ (88...93)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_bad_hex_escape.txt b/test/yarp/snapshots/seattlerb/heredoc_bad_hex_escape.txt
new file mode 100644
index 0000000000..1917020fbd
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_bad_hex_escape.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...21)(
+ [:s],
+ StatementsNode(0...21)(
+ [LocalVariableWriteNode(0...21)(
+ :s,
+ 0,
+ InterpolatedStringNode(4...21)(
+ (4...9),
+ [StringNode(10...17)(nil, (10...17), nil, "a\xE9b\n")],
+ (17...21)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_bad_oct_escape.txt b/test/yarp/snapshots/seattlerb/heredoc_bad_oct_escape.txt
new file mode 100644
index 0000000000..69776e0145
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_bad_oct_escape.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...27)(
+ [:s],
+ StatementsNode(0...27)(
+ [LocalVariableWriteNode(0...27)(
+ :s,
+ 0,
+ InterpolatedStringNode(4...27)(
+ (4...10),
+ [StringNode(11...23)(nil, (11...23), nil, "a\xA7b\n" + "cöd\n")],
+ (23...27)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_comma_arg.txt b/test/yarp/snapshots/seattlerb/heredoc_comma_arg.txt
new file mode 100644
index 0000000000..98cc3184e1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_comma_arg.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...47)(
+ [],
+ StatementsNode(0...47)(
+ [ArrayNode(0...17)(
+ [StringNode(1...15)((1...2), (2...14), (14...15), " some text\n")],
+ (0...1),
+ (16...17)
+ ),
+ ArrayNode(19...47)(
+ [InterpolatedStringNode(20...46)(
+ (20...27),
+ [StringNode(29...41)(nil, (29...41), nil, " some text\n")],
+ (41...46)
+ )],
+ (19...20),
+ (46...47)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_lineno.txt b/test/yarp/snapshots/seattlerb/heredoc_lineno.txt
new file mode 100644
index 0000000000..e0a8f91a13
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_lineno.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...41)(
+ [:c, :d],
+ StatementsNode(0...41)(
+ [LocalVariableWriteNode(0...34)(
+ :c,
+ 0,
+ InterpolatedStringNode(4...34)(
+ (4...11),
+ [StringNode(12...30)(
+ nil,
+ (12...30),
+ nil,
+ "line2\n" + "line3\n" + "line4\n"
+ )],
+ (30...34)
+ ),
+ (0...1),
+ (2...3)
+ ),
+ LocalVariableWriteNode(35...41)(
+ :d,
+ 0,
+ IntegerNode(39...41)(),
+ (35...36),
+ (37...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly.txt
new file mode 100644
index 0000000000..75c1d49310
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...31)(
+ [:a],
+ StatementsNode(0...31)(
+ [LocalVariableWriteNode(0...31)(
+ :a,
+ 0,
+ InterpolatedStringNode(4...31)(
+ (4...12),
+ [StringNode(13...25)(nil, (13...25), nil, "x\n" + "y\n" + "z\n")],
+ (25...31)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt
new file mode 100644
index 0000000000..92628b3471
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_line_plus_interpolation.txt
@@ -0,0 +1,56 @@
+ProgramNode(0...20)(
+ [:a],
+ StatementsNode(0...20)(
+ [LocalVariableWriteNode(0...20)(
+ :a,
+ 0,
+ CallNode(4...20)(
+ nil,
+ nil,
+ (4...7),
+ (7...8),
+ ArgumentsNode(8...19)(
+ [CallNode(8...19)(
+ InterpolatedStringNode(8...42)(
+ (8...14),
+ [StringNode(21...26)(nil, (21...26), nil, "\n"),
+ EmbeddedStatementsNode(26...32)(
+ (26...28),
+ StatementsNode(28...31)(
+ [CallNode(28...31)(
+ nil,
+ nil,
+ (28...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (31...32)
+ ),
+ StringNode(32...36)(nil, (32...36), nil, "baz\n")],
+ (36...42)
+ ),
+ (14...15),
+ (15...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "chop"
+ )]
+ ),
+ (19...20),
+ nil,
+ 0,
+ "foo"
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_lines.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_lines.txt
new file mode 100644
index 0000000000..895a03d219
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_blank_lines.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...24)(
+ [:a],
+ StatementsNode(0...24)(
+ [LocalVariableWriteNode(0...24)(
+ :a,
+ 0,
+ InterpolatedStringNode(4...24)(
+ (4...10),
+ [StringNode(11...20)(nil, (11...20), nil, "x\n" + "\n" + "z\n")],
+ (20...24)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_empty.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_empty.txt
new file mode 100644
index 0000000000..8de32879f3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_empty.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)([InterpolatedStringNode(0...7)((0...4), [], (5...7))])
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_interp.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_interp.txt
new file mode 100644
index 0000000000..6d99151e70
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_interp.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...42)(
+ [:a],
+ StatementsNode(0...42)(
+ [LocalVariableWriteNode(0...42)(
+ :a,
+ 0,
+ InterpolatedStringNode(4...42)(
+ (4...10),
+ [StringNode(11...22)(nil, (11...22), nil, " w\n" + "x"),
+ EmbeddedStatementsNode(22...27)(
+ (22...24),
+ StatementsNode(24...26)([IntegerNode(24...26)()]),
+ (26...27)
+ ),
+ StringNode(27...36)(nil, (27...36), nil, " y\n" + " z\n")],
+ (36...42)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_no_indent.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_no_indent.txt
new file mode 100644
index 0000000000..38fd30f6e2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_no_indent.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [InterpolatedStringNode(0...9)(
+ (0...4),
+ [StringNode(5...7)(nil, (5...7), nil, "a\n")],
+ (7...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs.txt
new file mode 100644
index 0000000000..0e18753a1c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...49)(
+ [:a],
+ StatementsNode(0...49)(
+ [LocalVariableWriteNode(0...49)(
+ :a,
+ 0,
+ InterpolatedStringNode(4...49)(
+ (4...12),
+ [StringNode(13...43)(
+ nil,
+ (13...43),
+ nil,
+ "blah blah\n" + " blah blah\n"
+ )],
+ (43...49)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs_extra.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs_extra.txt
new file mode 100644
index 0000000000..2199b41826
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_tabs_extra.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...43)(
+ [:a],
+ StatementsNode(0...43)(
+ [LocalVariableWriteNode(0...43)(
+ :a,
+ 0,
+ InterpolatedStringNode(4...43)(
+ (4...12),
+ [StringNode(13...37)(
+ nil,
+ (13...37),
+ nil,
+ "blah blah\n" + "\tblah blah\n"
+ )],
+ (37...43)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_squiggly_visually_blank_lines.txt b/test/yarp/snapshots/seattlerb/heredoc_squiggly_visually_blank_lines.txt
new file mode 100644
index 0000000000..895a03d219
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_squiggly_visually_blank_lines.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...24)(
+ [:a],
+ StatementsNode(0...24)(
+ [LocalVariableWriteNode(0...24)(
+ :a,
+ 0,
+ InterpolatedStringNode(4...24)(
+ (4...10),
+ [StringNode(11...20)(nil, (11...20), nil, "x\n" + "\n" + "z\n")],
+ (20...24)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_trailing_slash_continued_call.txt b/test/yarp/snapshots/seattlerb/heredoc_trailing_slash_continued_call.txt
new file mode 100644
index 0000000000..2ec330b49e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_trailing_slash_continued_call.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ InterpolatedStringNode(0...16)(
+ (0...5),
+ [StringNode(7...12)(nil, (7...12), nil, "blah\n")],
+ (12...16)
+ ),
+ (16...17),
+ (17...22),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "strip"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_unicode.txt b/test/yarp/snapshots/seattlerb/heredoc_unicode.txt
new file mode 100644
index 0000000000..3f0b096d94
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_unicode.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [InterpolatedStringNode(0...20)(
+ (0...9),
+ [StringNode(10...12)(nil, (10...12), nil, ".\n")],
+ (12...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes.txt b/test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes.txt
new file mode 100644
index 0000000000..24d7f88cff
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [InterpolatedStringNode(0...25)(
+ (0...5),
+ [StringNode(6...21)(nil, (6...21), nil, "foo\rbar\n" + "baz\r\n")],
+ (21...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes_windows.txt b/test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes_windows.txt
new file mode 100644
index 0000000000..6ac06a3730
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_carriage_return_escapes_windows.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [InterpolatedStringNode(0...29)(
+ (0...5),
+ [StringNode(7...24)(nil, (7...24), nil, "foo\rbar\r\n" + "baz\r\r\n")],
+ (24...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt b/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt
new file mode 100644
index 0000000000..fcf6267807
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_horrible_mix.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [InterpolatedStringNode(0...19)(
+ (0...7),
+ [StringNode(9...15)(nil, (9...15), nil, "body\r\n")],
+ (15...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns.txt b/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns.txt
new file mode 100644
index 0000000000..3c538e92d1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [InterpolatedStringNode(0...23)(
+ (0...5),
+ [StringNode(6...19)(nil, (6...19), nil, "foo\rbar\r\n" + "baz\n")],
+ (19...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns_windows.txt b/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns_windows.txt
new file mode 100644
index 0000000000..5ef9682601
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_extra_carriage_returns_windows.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [InterpolatedStringNode(0...27)(
+ (0...5),
+ [StringNode(7...22)(nil, (7...22), nil, "foo\rbar\r\r\n" + "baz\r\n")],
+ (22...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt b/test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt
new file mode 100644
index 0000000000..57cd5f75df
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [InterpolatedStringNode(0...21)(
+ (0...5),
+ [StringNode(6...11)(nil, (6...11), nil, "foo\r"),
+ EmbeddedVariableNode(11...16)(
+ (11...12),
+ InstanceVariableReadNode(12...16)()
+ ),
+ StringNode(16...17)(nil, (16...17), nil, "\n")],
+ (17...21)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt b/test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt
new file mode 100644
index 0000000000..6cc4d8ad45
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_interpolation_and_carriage_return_escapes_windows.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [InterpolatedStringNode(0...24)(
+ (0...5),
+ [StringNode(7...12)(nil, (7...12), nil, "foo\r"),
+ EmbeddedVariableNode(12...17)(
+ (12...13),
+ InstanceVariableReadNode(13...17)()
+ ),
+ StringNode(17...19)(nil, (17...19), nil, "\r\n")],
+ (19...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_not_global_interpolation.txt b/test/yarp/snapshots/seattlerb/heredoc_with_not_global_interpolation.txt
new file mode 100644
index 0000000000..3ea8c05892
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_not_global_interpolation.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [InterpolatedStringNode(0...23)(
+ (0...10),
+ [StringNode(11...15)(nil, (11...15), nil, "\#${\n")],
+ (15...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns.txt b/test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns.txt
new file mode 100644
index 0000000000..d3c5c52655
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [InterpolatedStringNode(0...18)(
+ (0...5),
+ [StringNode(6...14)(nil, (6...14), nil, "\r\n" + "\r\r\n" + "\r\n")],
+ (14...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns_windows.txt b/test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns_windows.txt
new file mode 100644
index 0000000000..c38bebfd07
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_with_only_carriage_returns_windows.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [InterpolatedStringNode(0...23)(
+ (0...5),
+ [StringNode(7...18)(
+ nil,
+ (7...18),
+ nil,
+ "\r\r\n" + "\r\r\r\n" + "\r\r\n"
+ )],
+ (18...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/heredoc_wtf_I_hate_you.txt b/test/yarp/snapshots/seattlerb/heredoc_wtf_I_hate_you.txt
new file mode 100644
index 0000000000..9547fe7657
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/heredoc_wtf_I_hate_you.txt
@@ -0,0 +1,51 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [CallNode(0...30)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...30)(
+ [CallNode(2...30)(
+ CallNode(2...26)(
+ InterpolatedStringNode(2...22)(
+ (2...8),
+ [StringNode(12...16)(nil, (12...16), nil, " a\n")],
+ (16...22)
+ ),
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(9...26)(
+ [InterpolatedStringNode(9...26)(
+ (9...10),
+ [StringNode(10...12)(nil, (10...12), nil, "b\n"),
+ StringNode(22...25)(nil, (22...25), nil, " c")],
+ (25...26)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ nil,
+ (26...27),
+ nil,
+ ArgumentsNode(27...30)(
+ [StringNode(27...30)((27...28), (28...29), (29...30), "d")]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers.txt b/test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers.txt
new file mode 100644
index 0000000000..100e56df89
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers.txt
@@ -0,0 +1,131 @@
+ProgramNode(0...104)(
+ [],
+ StatementsNode(0...104)(
+ [IfNode(0...104)(
+ (0...2),
+ TrueNode(3...7)(),
+ StatementsNode(10...100)(
+ [CallNode(10...13)(
+ nil,
+ nil,
+ (10...11),
+ nil,
+ ArgumentsNode(12...13)([IntegerNode(12...13)()]),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(16...21)(
+ CallNode(16...17)(nil, nil, (16...17), nil, nil, nil, nil, 0, "a"),
+ (17...18),
+ (18...19),
+ nil,
+ ArgumentsNode(20...21)([IntegerNode(20...21)()]),
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(24...32)(
+ CallNode(24...25)(nil, nil, (24...25), nil, nil, nil, nil, 0, "c"),
+ (25...26),
+ (26...27),
+ nil,
+ ArgumentsNode(28...32)(
+ [IntegerNode(28...29)(), IntegerNode(31...32)()]
+ ),
+ nil,
+ nil,
+ 0,
+ "d"
+ ),
+ CallNode(35...40)(
+ CallNode(35...36)(nil, nil, (35...36), nil, nil, nil, nil, 0, "e"),
+ (36...37),
+ (37...38),
+ nil,
+ ArgumentsNode(39...40)([IntegerNode(39...40)()]),
+ nil,
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(43...51)(
+ CallNode(43...44)(nil, nil, (43...44), nil, nil, nil, nil, 0, "g"),
+ (44...45),
+ (45...46),
+ nil,
+ ArgumentsNode(47...51)(
+ [IntegerNode(47...48)(), IntegerNode(50...51)()]
+ ),
+ nil,
+ nil,
+ 0,
+ "h"
+ ),
+ CallNode(54...58)(
+ nil,
+ nil,
+ (54...55),
+ (55...56),
+ ArgumentsNode(56...57)([IntegerNode(56...57)()]),
+ (57...58),
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(61...67)(
+ CallNode(61...62)(nil, nil, (61...62), nil, nil, nil, nil, 0, "a"),
+ (62...63),
+ (63...64),
+ (64...65),
+ ArgumentsNode(65...66)([IntegerNode(65...66)()]),
+ (66...67),
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(70...79)(
+ CallNode(70...71)(nil, nil, (70...71), nil, nil, nil, nil, 0, "c"),
+ (71...72),
+ (72...73),
+ (73...74),
+ ArgumentsNode(74...78)(
+ [IntegerNode(74...75)(), IntegerNode(77...78)()]
+ ),
+ (78...79),
+ nil,
+ 0,
+ "d"
+ ),
+ CallNode(82...88)(
+ CallNode(82...83)(nil, nil, (82...83), nil, nil, nil, nil, 0, "e"),
+ (83...84),
+ (84...85),
+ (85...86),
+ ArgumentsNode(86...87)([IntegerNode(86...87)()]),
+ (87...88),
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(91...100)(
+ CallNode(91...92)(nil, nil, (91...92), nil, nil, nil, nil, 0, "g"),
+ (92...93),
+ (93...94),
+ (94...95),
+ ArgumentsNode(95...99)(
+ [IntegerNode(95...96)(), IntegerNode(98...99)()]
+ ),
+ (99...100),
+ nil,
+ 0,
+ "h"
+ )]
+ ),
+ nil,
+ (101...104)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers2.txt b/test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers2.txt
new file mode 100644
index 0000000000..49bb711232
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/i_fucking_hate_line_numbers2.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...48)(
+ [:b, :c],
+ StatementsNode(0...48)(
+ [IfNode(0...46)(
+ (0...2),
+ TrueNode(3...7)(),
+ StatementsNode(15...42)(
+ [CallNode(15...21)(
+ nil,
+ nil,
+ (15...16),
+ (16...17),
+ ArgumentsNode(17...20)(
+ [StringNode(17...20)((17...18), (18...19), (19...20), "a")]
+ ),
+ (20...21),
+ nil,
+ 0,
+ "p"
+ ),
+ LocalVariableWriteNode(24...29)(
+ :b,
+ 0,
+ IntegerNode(28...29)(),
+ (24...25),
+ (26...27)
+ ),
+ CallNode(32...35)(
+ nil,
+ nil,
+ (32...33),
+ nil,
+ ArgumentsNode(34...35)([LocalVariableReadNode(34...35)(:b, 0)]),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ LocalVariableWriteNode(38...42)(
+ :c,
+ 0,
+ IntegerNode(41...42)(),
+ (38...39),
+ (40...41)
+ )]
+ ),
+ nil,
+ (43...46)
+ ),
+ CallNode(47...48)(nil, nil, (47...48), nil, nil, nil, nil, 0, "a")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/i_have_no_freakin_clue.txt b/test/yarp/snapshots/seattlerb/i_have_no_freakin_clue.txt
new file mode 100644
index 0000000000..78772ca20d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/i_have_no_freakin_clue.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [IfNode(0...13)(
+ nil,
+ IntegerNode(0...1)(),
+ StatementsNode(4...9)(
+ [CallNode(4...9)(
+ nil,
+ nil,
+ (4...5),
+ (5...6),
+ ArgumentsNode(6...8)(
+ [StringNode(6...8)((6...7), (7...7), (7...8), "")]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ ElseNode(10...13)(
+ (10...11),
+ StatementsNode(12...13)([IntegerNode(12...13)()]),
+ nil
+ ),
+ nil
+ ),
+ CallNode(14...20)(
+ nil,
+ nil,
+ (14...15),
+ nil,
+ ArgumentsNode(16...20)(
+ [KeywordHashNode(16...20)(
+ [AssocNode(16...20)(
+ SymbolNode(16...18)(nil, (16...17), (17...18), "d"),
+ IntegerNode(19...20)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/if_elsif.txt b/test/yarp/snapshots/seattlerb/if_elsif.txt
new file mode 100644
index 0000000000..6f1edfb62e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/if_elsif.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [IfNode(0...18)(
+ (0...2),
+ IntegerNode(3...4)(),
+ nil,
+ IfNode(6...13)((6...11), IntegerNode(12...13)(), nil, nil, nil),
+ (15...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/if_symbol.txt b/test/yarp/snapshots/seattlerb/if_symbol.txt
new file mode 100644
index 0000000000..4e4fdcefce
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/if_symbol.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [IfNode(0...12)(
+ (0...2),
+ CallNode(3...7)(
+ nil,
+ nil,
+ (3...4),
+ nil,
+ ArgumentsNode(5...7)([SymbolNode(5...7)((5...6), (6...7), nil, "x")]),
+ nil,
+ nil,
+ 0,
+ "f"
+ ),
+ nil,
+ nil,
+ (9...12)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/in_expr_no_case.txt b/test/yarp/snapshots/seattlerb/in_expr_no_case.txt
new file mode 100644
index 0000000000..093b2a65f8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/in_expr_no_case.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [MatchPredicateNode(0...16)(
+ StringNode(0...6)((0...1), (1...5), (5...6), "woot"),
+ ConstantReadNode(10...16)(),
+ (7...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/index_0.txt b/test/yarp/snapshots/seattlerb/index_0.txt
new file mode 100644
index 0000000000..7e2d6f980f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/index_0.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (1...3),
+ (1...2),
+ ArgumentsNode(6...7)(
+ [CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b")]
+ ),
+ (2...3),
+ nil,
+ 0,
+ "[]="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/index_0_opasgn.txt b/test/yarp/snapshots/seattlerb/index_0_opasgn.txt
new file mode 100644
index 0000000000..3271bfa598
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/index_0_opasgn.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallOperatorWriteNode(0...8)(
+ CallNode(0...3)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (1...3),
+ (1...2),
+ nil,
+ (2...3),
+ nil,
+ 0,
+ "[]="
+ ),
+ (4...6),
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "b"),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/integer_with_if_modifier.txt b/test/yarp/snapshots/seattlerb/integer_with_if_modifier.txt
new file mode 100644
index 0000000000..f57ed6c422
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/integer_with_if_modifier.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [IfNode(0...12)(
+ (5...7),
+ TrueNode(8...12)(),
+ StatementsNode(0...5)([IntegerNode(0...5)()]),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/interpolated_symbol_array_line_breaks.txt b/test/yarp/snapshots/seattlerb/interpolated_symbol_array_line_breaks.txt
new file mode 100644
index 0000000000..0a779610a6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/interpolated_symbol_array_line_breaks.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...9)(
+ [SymbolNode(4...5)(nil, (4...5), nil, "a"),
+ SymbolNode(6...7)(nil, (6...7), nil, "b")],
+ (0...3),
+ (8...9)
+ ),
+ IntegerNode(10...11)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/interpolated_word_array_line_breaks.txt b/test/yarp/snapshots/seattlerb/interpolated_word_array_line_breaks.txt
new file mode 100644
index 0000000000..901575f9a8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/interpolated_word_array_line_breaks.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...9)(
+ [StringNode(4...5)(nil, (4...5), nil, "a"),
+ StringNode(6...7)(nil, (6...7), nil, "b")],
+ (0...3),
+ (8...9)
+ ),
+ IntegerNode(10...11)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_1.txt b/test/yarp/snapshots/seattlerb/iter_args_1.txt
new file mode 100644
index 0000000000..9fdbf68818
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_1.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...11)(
+ [:a, :b],
+ BlockParametersNode(4...9)(
+ ParametersNode(5...8)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredParameterNode(7...8)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (8...9)
+ ),
+ nil,
+ (2...3),
+ (10...11)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_10_1.txt b/test/yarp/snapshots/seattlerb/iter_args_10_1.txt
new file mode 100644
index 0000000000..5da1b5260a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_10_1.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...21)(
+ [:a, :b, :c],
+ BlockParametersNode(4...19)(
+ ParametersNode(5...18)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ )],
+ [],
+ RestParameterNode(16...18)((16...17), (17...18)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (18...19)
+ ),
+ nil,
+ (2...3),
+ (20...21)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_10_2.txt b/test/yarp/snapshots/seattlerb/iter_args_10_2.txt
new file mode 100644
index 0000000000..5059820edc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_10_2.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CallNode(0...25)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...25)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...23)(
+ ParametersNode(5...22)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ )],
+ [],
+ RestParameterNode(16...18)((16...17), (17...18)),
+ [],
+ nil,
+ BlockParameterNode(20...22)((21...22), (20...21))
+ ),
+ [],
+ (4...5),
+ (22...23)
+ ),
+ nil,
+ (2...3),
+ (24...25)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_11_1.txt b/test/yarp/snapshots/seattlerb/iter_args_11_1.txt
new file mode 100644
index 0000000000..83f48569dc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_11_1.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [CallNode(0...24)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...24)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...22)(
+ ParametersNode(5...21)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ )],
+ [RequiredParameterNode(20...21)(:d)],
+ RestParameterNode(16...18)((16...17), (17...18)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (21...22)
+ ),
+ nil,
+ (2...3),
+ (23...24)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_11_2.txt b/test/yarp/snapshots/seattlerb/iter_args_11_2.txt
new file mode 100644
index 0000000000..b14ca29440
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_11_2.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallNode(0...28)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...28)(
+ [:a, :b, :c, :d, :e],
+ BlockParametersNode(4...26)(
+ ParametersNode(5...25)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...14)(
+ :b,
+ (8...9),
+ (10...11),
+ IntegerNode(12...14)()
+ )],
+ [RequiredParameterNode(20...21)(:d)],
+ RestParameterNode(16...18)((16...17), (17...18)),
+ [],
+ nil,
+ BlockParameterNode(23...25)((24...25), (23...24))
+ ),
+ [],
+ (4...5),
+ (25...26)
+ ),
+ nil,
+ (2...3),
+ (27...28)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_2__19.txt b/test/yarp/snapshots/seattlerb/iter_args_2__19.txt
new file mode 100644
index 0000000000..e9e94d3d6e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_2__19.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:a, :b],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [RequiredDestructuredParameterNode(5...11)(
+ [RequiredParameterNode(6...7)(:a),
+ RequiredParameterNode(9...10)(:b)],
+ (5...6),
+ (10...11)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_3.txt b/test/yarp/snapshots/seattlerb/iter_args_3.txt
new file mode 100644
index 0000000000..8d191cc2e5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_3.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...20)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...18)(
+ ParametersNode(5...17)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...14)(
+ [RequiredParameterNode(9...10)(:b),
+ RequiredParameterNode(12...13)(:c)],
+ (8...9),
+ (13...14)
+ ),
+ RequiredParameterNode(16...17)(:d)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (17...18)
+ ),
+ nil,
+ (2...3),
+ (19...20)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_4.txt b/test/yarp/snapshots/seattlerb/iter_args_4.txt
new file mode 100644
index 0000000000..eaa140a522
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_4.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...16)(
+ [:a, :b, :c],
+ BlockParametersNode(4...14)(
+ ParametersNode(5...13)(
+ [RequiredParameterNode(5...6)(:a)],
+ [],
+ [RequiredParameterNode(12...13)(:c)],
+ RestParameterNode(8...10)((8...9), (9...10)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (13...14)
+ ),
+ nil,
+ (2...3),
+ (15...16)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_5.txt b/test/yarp/snapshots/seattlerb/iter_args_5.txt
new file mode 100644
index 0000000000..826ec62097
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_5.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...13)(
+ [:a, :b],
+ BlockParametersNode(4...11)(
+ ParametersNode(5...10)(
+ [RequiredParameterNode(5...6)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(8...10)((9...10), (8...9))
+ ),
+ [],
+ (4...5),
+ (10...11)
+ ),
+ nil,
+ (2...3),
+ (12...13)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_6.txt b/test/yarp/snapshots/seattlerb/iter_args_6.txt
new file mode 100644
index 0000000000..8a69456b62
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_6.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:a, :b, :c],
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [RequiredParameterNode(5...6)(:a)],
+ [OptionalParameterNode(8...12)(
+ :b,
+ (8...9),
+ (9...10),
+ IntegerNode(10...12)()
+ )],
+ [RequiredParameterNode(14...15)(:c)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_7_1.txt b/test/yarp/snapshots/seattlerb/iter_args_7_1.txt
new file mode 100644
index 0000000000..ad285d8cad
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_7_1.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:a, :b],
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :a,
+ (5...6),
+ (7...8),
+ IntegerNode(9...11)()
+ )],
+ [],
+ RestParameterNode(13...15)((13...14), (14...15)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_7_2.txt b/test/yarp/snapshots/seattlerb/iter_args_7_2.txt
new file mode 100644
index 0000000000..c151325c93
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_7_2.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...22)(
+ [:a, :b, :c],
+ BlockParametersNode(4...20)(
+ ParametersNode(5...19)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :a,
+ (5...6),
+ (7...8),
+ IntegerNode(9...11)()
+ )],
+ [],
+ RestParameterNode(13...15)((13...14), (14...15)),
+ [],
+ nil,
+ BlockParameterNode(17...19)((18...19), (17...18))
+ ),
+ [],
+ (4...5),
+ (19...20)
+ ),
+ nil,
+ (2...3),
+ (21...22)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_8_1.txt b/test/yarp/snapshots/seattlerb/iter_args_8_1.txt
new file mode 100644
index 0000000000..1a4ed0f599
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_8_1.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...21)(
+ [:a, :b, :c],
+ BlockParametersNode(4...19)(
+ ParametersNode(5...18)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :a,
+ (5...6),
+ (7...8),
+ IntegerNode(9...11)()
+ )],
+ [RequiredParameterNode(17...18)(:c)],
+ RestParameterNode(13...15)((13...14), (14...15)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (18...19)
+ ),
+ nil,
+ (2...3),
+ (20...21)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_8_2.txt b/test/yarp/snapshots/seattlerb/iter_args_8_2.txt
new file mode 100644
index 0000000000..84b0ae8e65
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_8_2.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CallNode(0...25)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...25)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...23)(
+ ParametersNode(5...22)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :a,
+ (5...6),
+ (7...8),
+ IntegerNode(9...11)()
+ )],
+ [RequiredParameterNode(17...18)(:c)],
+ RestParameterNode(13...15)((13...14), (14...15)),
+ [],
+ nil,
+ BlockParameterNode(20...22)((21...22), (20...21))
+ ),
+ [],
+ (4...5),
+ (22...23)
+ ),
+ nil,
+ (2...3),
+ (24...25)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_9_1.txt b/test/yarp/snapshots/seattlerb/iter_args_9_1.txt
new file mode 100644
index 0000000000..68d1fe9338
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_9_1.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:a, :b],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :a,
+ (5...6),
+ (7...8),
+ IntegerNode(9...11)()
+ )],
+ [RequiredParameterNode(13...14)(:b)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_args_9_2.txt b/test/yarp/snapshots/seattlerb/iter_args_9_2.txt
new file mode 100644
index 0000000000..b85e5a84bb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_args_9_2.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...21)(
+ [:a, :b, :c],
+ BlockParametersNode(4...19)(
+ ParametersNode(5...18)(
+ [],
+ [OptionalParameterNode(5...11)(
+ :a,
+ (5...6),
+ (7...8),
+ IntegerNode(9...11)()
+ )],
+ [RequiredParameterNode(13...14)(:b)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(16...18)((17...18), (16...17))
+ ),
+ [],
+ (4...5),
+ (18...19)
+ ),
+ nil,
+ (2...3),
+ (20...21)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_kwarg.txt b/test/yarp/snapshots/seattlerb/iter_kwarg.txt
new file mode 100644
index 0000000000..a3984ee42f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_kwarg.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...12)(
+ [:b],
+ BlockParametersNode(4...10)(
+ ParametersNode(5...9)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(5...9)((5...7), IntegerNode(8...9)())],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (9...10)
+ ),
+ nil,
+ (2...3),
+ (11...12)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/iter_kwarg_kwsplat.txt b/test/yarp/snapshots/seattlerb/iter_kwarg_kwsplat.txt
new file mode 100644
index 0000000000..39dce0cca3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/iter_kwarg_kwsplat.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:b, :c],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(5...9)((5...7), IntegerNode(8...9)())],
+ KeywordRestParameterNode(11...14)((11...13), (13...14)),
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me.txt b/test/yarp/snapshots/seattlerb/kill_me.txt
new file mode 100644
index 0000000000..ba5d6c3aed
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:a, :b, :c],
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...15)(
+ [RequiredParameterNode(9...10)(:b),
+ SplatNode(12...14)(
+ (12...13),
+ RequiredParameterNode(13...14)(:c)
+ )],
+ (8...9),
+ (14...15)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me2.txt b/test/yarp/snapshots/seattlerb/kill_me2.txt
new file mode 100644
index 0000000000..3981937066
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me2.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...13)(
+ [:a, :b],
+ BlockParametersNode(4...11)(
+ ParametersNode(5...10)(
+ [],
+ [],
+ [RequiredParameterNode(9...10)(:b)],
+ RestParameterNode(5...7)((5...6), (6...7)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (10...11)
+ ),
+ nil,
+ (2...3),
+ (12...13)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me3.txt b/test/yarp/snapshots/seattlerb/kill_me3.txt
new file mode 100644
index 0000000000..7a25bc9c8b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me3.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:a, :b, :c],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [],
+ [],
+ [RequiredParameterNode(9...10)(:b)],
+ RestParameterNode(5...7)((5...6), (6...7)),
+ [],
+ nil,
+ BlockParameterNode(12...14)((13...14), (12...13))
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me4.txt b/test/yarp/snapshots/seattlerb/kill_me4.txt
new file mode 100644
index 0000000000..80211017a6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me4.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...17)(
+ [:a],
+ StatementsNode(0...17)(
+ [LocalVariableWriteNode(0...17)(
+ :a,
+ 0,
+ IfNode(2...17)(
+ nil,
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "b"),
+ StatementsNode(6...10)([TrueNode(6...10)()]),
+ ElseNode(10...17)(
+ (10...11),
+ StatementsNode(12...17)([FalseNode(12...17)()]),
+ nil
+ ),
+ nil
+ ),
+ (0...1),
+ (1...2)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me5.txt b/test/yarp/snapshots/seattlerb/kill_me5.txt
new file mode 100644
index 0000000000..e7aaafc87a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me5.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [CallNode(0...19)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...19)(
+ [LambdaNode(2...19)(
+ [],
+ (2...4),
+ BlockParametersNode(4...6)(nil, [], (4...5), (5...6)),
+ StatementsNode(9...17)(
+ [CallNode(9...17)(
+ nil,
+ nil,
+ (9...10),
+ nil,
+ nil,
+ nil,
+ BlockNode(11...17)([], nil, nil, (11...13), (14...17)),
+ 0,
+ "g"
+ )]
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_10.txt b/test/yarp/snapshots/seattlerb/kill_me_10.txt
new file mode 100644
index 0000000000..7b7dc6f41b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_10.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:a, :b, :c],
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...15)(
+ [SplatNode(9...11)(
+ (9...10),
+ RequiredParameterNode(10...11)(:b)
+ ),
+ RequiredParameterNode(13...14)(:c)],
+ (8...9),
+ (14...15)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_11.txt b/test/yarp/snapshots/seattlerb/kill_me_11.txt
new file mode 100644
index 0000000000..c5b8b81b18
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_11.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...14)(
+ [:a],
+ BlockParametersNode(4...12)(
+ ParametersNode(5...11)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...11)(
+ [SplatNode(9...10)((9...10), nil)],
+ (8...9),
+ (10...11)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (11...12)
+ ),
+ nil,
+ (2...3),
+ (13...14)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_12.txt b/test/yarp/snapshots/seattlerb/kill_me_12.txt
new file mode 100644
index 0000000000..87dd280a9e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_12.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:a, :b],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...14)(
+ [SplatNode(9...10)((9...10), nil),
+ RequiredParameterNode(12...13)(:b)],
+ (8...9),
+ (13...14)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_6.txt b/test/yarp/snapshots/seattlerb/kill_me_6.txt
new file mode 100644
index 0000000000..578a22e843
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_6.txt
@@ -0,0 +1,45 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...21)(
+ [:a, :b, :c, :d],
+ BlockParametersNode(4...19)(
+ ParametersNode(5...18)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...18)(
+ [RequiredParameterNode(9...10)(:b),
+ SplatNode(12...14)(
+ (12...13),
+ RequiredParameterNode(13...14)(:c)
+ ),
+ RequiredParameterNode(16...17)(:d)],
+ (8...9),
+ (17...18)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (18...19)
+ ),
+ nil,
+ (2...3),
+ (20...21)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_7.txt b/test/yarp/snapshots/seattlerb/kill_me_7.txt
new file mode 100644
index 0000000000..a306b1f895
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_7.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...17)(
+ [:a, :b],
+ BlockParametersNode(4...15)(
+ ParametersNode(5...14)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...14)(
+ [RequiredParameterNode(9...10)(:b),
+ SplatNode(12...13)((12...13), nil)],
+ (8...9),
+ (13...14)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (14...15)
+ ),
+ nil,
+ (2...3),
+ (16...17)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_8.txt b/test/yarp/snapshots/seattlerb/kill_me_8.txt
new file mode 100644
index 0000000000..9d0eb81357
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_8.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...20)(
+ [:a, :b, :c],
+ BlockParametersNode(4...18)(
+ ParametersNode(5...17)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...17)(
+ [RequiredParameterNode(9...10)(:b),
+ SplatNode(12...13)((12...13), nil),
+ RequiredParameterNode(15...16)(:c)],
+ (8...9),
+ (16...17)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (17...18)
+ ),
+ nil,
+ (2...3),
+ (19...20)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/kill_me_9.txt b/test/yarp/snapshots/seattlerb/kill_me_9.txt
new file mode 100644
index 0000000000..a3a5ccd89d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/kill_me_9.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...15)(
+ [:a, :b],
+ BlockParametersNode(4...13)(
+ ParametersNode(5...12)(
+ [RequiredParameterNode(5...6)(:a),
+ RequiredDestructuredParameterNode(8...12)(
+ [SplatNode(9...11)(
+ (9...10),
+ RequiredParameterNode(10...11)(:b)
+ )],
+ (8...9),
+ (11...12)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (12...13)
+ ),
+ nil,
+ (2...3),
+ (14...15)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/label_vs_string.txt b/test/yarp/snapshots/seattlerb/label_vs_string.txt
new file mode 100644
index 0000000000..bc2718a208
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/label_vs_string.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ CallNode(0...4)(nil, nil, (0...4), nil, nil, nil, nil, 0, "_buf"),
+ nil,
+ (5...7),
+ nil,
+ ArgumentsNode(8...12)(
+ [StringNode(8...12)((8...9), (9...11), (11...12), ":\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "<<"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lambda_do_vs_brace.txt b/test/yarp/snapshots/seattlerb/lambda_do_vs_brace.txt
new file mode 100644
index 0000000000..1c9e2efc33
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lambda_do_vs_brace.txt
@@ -0,0 +1,63 @@
+ProgramNode(0...46)(
+ [],
+ StatementsNode(0...46)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...11)([LambdaNode(2...11)([], (2...4), nil, nil)]),
+ nil,
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(13...20)(
+ nil,
+ nil,
+ (13...14),
+ nil,
+ ArgumentsNode(15...20)([LambdaNode(15...20)([], (15...17), nil, nil)]),
+ nil,
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(22...35)(
+ nil,
+ nil,
+ (22...23),
+ nil,
+ ArgumentsNode(24...35)(
+ [LambdaNode(24...35)(
+ [],
+ (24...26),
+ BlockParametersNode(26...28)(nil, [], (26...27), (27...28)),
+ nil
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(37...46)(
+ nil,
+ nil,
+ (37...38),
+ nil,
+ ArgumentsNode(39...46)(
+ [LambdaNode(39...46)(
+ [],
+ (39...41),
+ BlockParametersNode(41...43)(nil, [], (41...42), (42...43)),
+ nil
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_arg_rescue_arg.txt b/test/yarp/snapshots/seattlerb/lasgn_arg_rescue_arg.txt
new file mode 100644
index 0000000000..03ec05d3a3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_arg_rescue_arg.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...14)(
+ [:a],
+ StatementsNode(0...14)(
+ [LocalVariableWriteNode(0...14)(
+ :a,
+ 0,
+ RescueModifierNode(4...14)(
+ IntegerNode(4...5)(),
+ (6...12),
+ IntegerNode(13...14)()
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_call_bracket_rescue_arg.txt b/test/yarp/snapshots/seattlerb/lasgn_call_bracket_rescue_arg.txt
new file mode 100644
index 0000000000..c28b8c2178
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_call_bracket_rescue_arg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...17)(
+ [:a],
+ StatementsNode(0...17)(
+ [LocalVariableWriteNode(0...17)(
+ :a,
+ 0,
+ RescueModifierNode(4...17)(
+ CallNode(4...8)(
+ nil,
+ nil,
+ (4...5),
+ (5...6),
+ ArgumentsNode(6...7)([IntegerNode(6...7)()]),
+ (7...8),
+ nil,
+ 0,
+ "b"
+ ),
+ (9...15),
+ IntegerNode(16...17)()
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_call_nobracket_rescue_arg.txt b/test/yarp/snapshots/seattlerb/lasgn_call_nobracket_rescue_arg.txt
new file mode 100644
index 0000000000..bfb7c9b678
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_call_nobracket_rescue_arg.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...16)(
+ [:a],
+ StatementsNode(0...16)(
+ [LocalVariableWriteNode(0...16)(
+ :a,
+ 0,
+ CallNode(4...16)(
+ nil,
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...16)(
+ [RescueModifierNode(6...16)(
+ IntegerNode(6...7)(),
+ (8...14),
+ IntegerNode(15...16)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_command.txt b/test/yarp/snapshots/seattlerb/lasgn_command.txt
new file mode 100644
index 0000000000..3f27e4f78c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_command.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...9)(
+ [:a],
+ StatementsNode(0...9)(
+ [LocalVariableWriteNode(0...9)(
+ :a,
+ 0,
+ CallNode(4...9)(
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "b"),
+ (5...6),
+ (6...7),
+ nil,
+ ArgumentsNode(8...9)([IntegerNode(8...9)()]),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_env.txt b/test/yarp/snapshots/seattlerb/lasgn_env.txt
new file mode 100644
index 0000000000..33f2f4701c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_env.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...6)(
+ [:a],
+ StatementsNode(0...6)(
+ [LocalVariableWriteNode(0...6)(
+ :a,
+ 0,
+ IntegerNode(4...6)(),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_ivar_env.txt b/test/yarp/snapshots/seattlerb/lasgn_ivar_env.txt
new file mode 100644
index 0000000000..b71eeaf2a7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_ivar_env.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [InstanceVariableWriteNode(0...7)((0...2), IntegerNode(5...7)(), (3...4))]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_lasgn_command_call.txt b/test/yarp/snapshots/seattlerb/lasgn_lasgn_command_call.txt
new file mode 100644
index 0000000000..4c272c1680
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_lasgn_command_call.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...11)(
+ [:a, :b],
+ StatementsNode(0...11)(
+ [LocalVariableWriteNode(0...11)(
+ :a,
+ 0,
+ LocalVariableWriteNode(4...11)(
+ :b,
+ 0,
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (4...5),
+ (6...7)
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/lasgn_middle_splat.txt b/test/yarp/snapshots/seattlerb/lasgn_middle_splat.txt
new file mode 100644
index 0000000000..b9cb8e9f9b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/lasgn_middle_splat.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...12)(
+ [:a],
+ StatementsNode(0...12)(
+ [LocalVariableWriteNode(0...12)(
+ :a,
+ 0,
+ ArrayNode(4...12)(
+ [CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "b"),
+ SplatNode(7...9)(
+ (7...8),
+ CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "c")
+ ),
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "d")],
+ nil,
+ nil
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt b/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt
new file mode 100644
index 0000000000..2ab320eda8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/magic_encoding_comment.txt
@@ -0,0 +1,36 @@
+ProgramNode(18...90)(
+ [],
+ StatementsNode(18...90)(
+ [ClassNode(18...90)(
+ [],
+ (18...23),
+ ConstantReadNode(24...52)(),
+ nil,
+ nil,
+ StatementsNode(54...86)(
+ [DefNode(54...86)(
+ (63...65),
+ SelfNode(58...62)(),
+ nil,
+ StatementsNode(67...81)(
+ [LocalVariableWriteNode(67...81)(
+ :così,
+ 0,
+ SymbolNode(75...81)((75...76), (76...81), nil, "però"),
+ (67...72),
+ (73...74)
+ )]
+ ),
+ [:così],
+ (54...57),
+ (62...63),
+ nil,
+ nil,
+ nil,
+ (83...86)
+ )]
+ ),
+ (87...90)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_anon_splat_arg.txt b/test/yarp/snapshots/seattlerb/masgn_anon_splat_arg.txt
new file mode 100644
index 0000000000..eb18d7615b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_anon_splat_arg.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...8)(
+ [:a],
+ StatementsNode(0...8)(
+ [MultiWriteNode(0...8)(
+ [MultiWriteNode(0...1)(
+ [SplatNode(0...1)((0...1), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(3...4)(:a, 0, nil, (3...4), nil)],
+ (5...6),
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "b"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_arg_colon_arg.txt b/test/yarp/snapshots/seattlerb/masgn_arg_colon_arg.txt
new file mode 100644
index 0000000000..4b90bf3ddc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_arg_colon_arg.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...11)(
+ [:a],
+ StatementsNode(0...11)(
+ [MultiWriteNode(0...11)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ CallNode(3...7)(
+ CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "b"),
+ (4...6),
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c="
+ )],
+ (8...9),
+ CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "d"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_arg_ident.txt b/test/yarp/snapshots/seattlerb/masgn_arg_ident.txt
new file mode 100644
index 0000000000..7ca20a45ad
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_arg_ident.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...10)(
+ [:a],
+ StatementsNode(0...10)(
+ [MultiWriteNode(0...10)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ CallNode(3...6)(
+ CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "b"),
+ (4...5),
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "C="
+ )],
+ (7...8),
+ CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "d"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_arg_splat_arg.txt b/test/yarp/snapshots/seattlerb/masgn_arg_splat_arg.txt
new file mode 100644
index 0000000000..cdabe61852
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_arg_splat_arg.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...12)(
+ [:a, :b, :c],
+ StatementsNode(0...12)(
+ [MultiWriteNode(0...12)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ SplatNode(3...5)(
+ (3...4),
+ LocalVariableWriteNode(4...5)(:b, 0, nil, (4...5), nil)
+ ),
+ LocalVariableWriteNode(7...8)(:c, 0, nil, (7...8), nil)],
+ (9...10),
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "d"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_colon2.txt b/test/yarp/snapshots/seattlerb/masgn_colon2.txt
new file mode 100644
index 0000000000..32d035afa3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_colon2.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...14)(
+ [:a],
+ StatementsNode(0...14)(
+ [MultiWriteNode(0...14)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ ConstantPathWriteNode(3...7)(
+ ConstantPathNode(3...7)(
+ CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "b"),
+ ConstantReadNode(6...7)(),
+ (4...6)
+ ),
+ nil,
+ nil
+ )],
+ (8...9),
+ ArrayNode(10...14)(
+ [IntegerNode(10...11)(), IntegerNode(13...14)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_colon3.txt b/test/yarp/snapshots/seattlerb/masgn_colon3.txt
new file mode 100644
index 0000000000..f02dcc1f50
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_colon3.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [MultiWriteNode(0...15)(
+ [ConstantPathWriteNode(0...3)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ nil,
+ nil
+ ),
+ ConstantPathWriteNode(5...8)(
+ ConstantPathNode(5...8)(nil, ConstantReadNode(7...8)(), (5...7)),
+ nil,
+ nil
+ )],
+ (9...10),
+ ArrayNode(11...15)(
+ [IntegerNode(11...12)(), IntegerNode(14...15)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_command_call.txt b/test/yarp/snapshots/seattlerb/masgn_command_call.txt
new file mode 100644
index 0000000000..8ffc56de6f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_command_call.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...10)(
+ [:a],
+ StatementsNode(0...10)(
+ [MultiWriteNode(0...10)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ SplatNode(1...2)((1...2), nil)],
+ (3...4),
+ CallNode(5...10)(
+ CallNode(5...6)(nil, nil, (5...6), nil, nil, nil, nil, 0, "b"),
+ (6...7),
+ (7...8),
+ nil,
+ ArgumentsNode(9...10)([IntegerNode(9...10)()]),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_double_paren.txt b/test/yarp/snapshots/seattlerb/masgn_double_paren.txt
new file mode 100644
index 0000000000..85b4f05f31
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_double_paren.txt
@@ -0,0 +1,19 @@
+ProgramNode(2...9)(
+ [:a, :b],
+ StatementsNode(2...9)(
+ [MultiWriteNode(2...9)(
+ [MultiWriteNode(2...5)(
+ [LocalVariableWriteNode(2...3)(:a, 0, nil, (2...3), nil),
+ LocalVariableWriteNode(4...5)(:b, 0, nil, (4...5), nil)],
+ nil,
+ nil,
+ (1...2),
+ (5...6)
+ )],
+ (7...8),
+ CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "c"),
+ (0...1),
+ (6...7)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_lhs_splat.txt b/test/yarp/snapshots/seattlerb/masgn_lhs_splat.txt
new file mode 100644
index 0000000000..e8606e7152
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_lhs_splat.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...12)(
+ [:a],
+ StatementsNode(0...12)(
+ [MultiWriteNode(0...12)(
+ [SplatNode(0...2)(
+ (0...1),
+ LocalVariableWriteNode(1...2)(:a, 0, nil, (1...2), nil)
+ )],
+ (3...4),
+ ArrayNode(5...12)(
+ [IntegerNode(5...6)(), IntegerNode(8...9)(), IntegerNode(11...12)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_paren.txt b/test/yarp/snapshots/seattlerb/masgn_paren.txt
new file mode 100644
index 0000000000..cdf4678bc4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_paren.txt
@@ -0,0 +1,23 @@
+ProgramNode(1...12)(
+ [:a, :b],
+ StatementsNode(1...12)(
+ [MultiWriteNode(1...12)(
+ [LocalVariableWriteNode(1...2)(:a, 0, nil, (1...2), nil),
+ LocalVariableWriteNode(4...5)(:b, 0, nil, (4...5), nil)],
+ (7...8),
+ CallNode(9...12)(
+ CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "c"),
+ (10...11),
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ ),
+ (0...1),
+ (5...6)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_splat_arg.txt b/test/yarp/snapshots/seattlerb/masgn_splat_arg.txt
new file mode 100644
index 0000000000..783ddde19a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_splat_arg.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...9)(
+ [:a, :b],
+ StatementsNode(0...9)(
+ [MultiWriteNode(0...9)(
+ [MultiWriteNode(0...2)(
+ [SplatNode(0...2)(
+ (0...1),
+ LocalVariableWriteNode(1...2)(:a, 0, nil, (1...2), nil)
+ )],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(4...5)(:b, 0, nil, (4...5), nil)],
+ (6...7),
+ CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "c"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_splat_arg_arg.txt b/test/yarp/snapshots/seattlerb/masgn_splat_arg_arg.txt
new file mode 100644
index 0000000000..be516e972b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_splat_arg_arg.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...12)(
+ [:a, :b, :c],
+ StatementsNode(0...12)(
+ [MultiWriteNode(0...12)(
+ [MultiWriteNode(0...2)(
+ [SplatNode(0...2)(
+ (0...1),
+ LocalVariableWriteNode(1...2)(:a, 0, nil, (1...2), nil)
+ )],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(4...5)(:b, 0, nil, (4...5), nil),
+ LocalVariableWriteNode(7...8)(:c, 0, nil, (7...8), nil)],
+ (9...10),
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "d"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_star.txt b/test/yarp/snapshots/seattlerb/masgn_star.txt
new file mode 100644
index 0000000000..8b7cb8e266
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_star.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [MultiWriteNode(0...5)(
+ [SplatNode(0...1)((0...1), nil)],
+ (2...3),
+ IntegerNode(4...5)(),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/masgn_var_star_var.txt b/test/yarp/snapshots/seattlerb/masgn_var_star_var.txt
new file mode 100644
index 0000000000..b172d0bb86
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/masgn_var_star_var.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...11)(
+ [:a, :b],
+ StatementsNode(0...11)(
+ [MultiWriteNode(0...11)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ SplatNode(3...4)((3...4), nil),
+ LocalVariableWriteNode(6...7)(:b, 0, nil, (6...7), nil)],
+ (8...9),
+ CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "c"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/messy_op_asgn_lineno.txt b/test/yarp/snapshots/seattlerb/messy_op_asgn_lineno.txt
new file mode 100644
index 0000000000..146ce2d61a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/messy_op_asgn_lineno.txt
@@ -0,0 +1,55 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...15)(
+ [ParenthesesNode(2...15)(
+ StatementsNode(3...14)(
+ [ConstantPathOperatorWriteNode(3...14)(
+ ConstantPathNode(3...7)(
+ ConstantReadNode(3...4)(),
+ ConstantReadNode(6...7)(),
+ (4...6)
+ ),
+ (8...10),
+ CallNode(11...14)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ ArgumentsNode(13...14)(
+ [CallNode(13...14)(
+ nil,
+ nil,
+ (13...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "e"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "d"
+ ),
+ :*
+ )]
+ ),
+ (2...3),
+ (14...15)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/method_call_assoc_trailing_comma.txt b/test/yarp/snapshots/seattlerb/method_call_assoc_trailing_comma.txt
new file mode 100644
index 0000000000..9b8bec66d2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/method_call_assoc_trailing_comma.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...10)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ (3...4),
+ ArgumentsNode(4...8)(
+ [KeywordHashNode(4...8)(
+ [AssocNode(4...8)(
+ IntegerNode(4...5)(),
+ IntegerNode(7...8)(),
+ (5...7)
+ )]
+ )]
+ ),
+ (9...10),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/method_call_trailing_comma.txt b/test/yarp/snapshots/seattlerb/method_call_trailing_comma.txt
new file mode 100644
index 0000000000..93a93d6a15
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/method_call_trailing_comma.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ (3...4),
+ ArgumentsNode(4...5)([IntegerNode(4...5)()]),
+ (6...7),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_back_anonsplat.txt b/test/yarp/snapshots/seattlerb/mlhs_back_anonsplat.txt
new file mode 100644
index 0000000000..410cfc8f14
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_back_anonsplat.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...14)(
+ [:a, :b, :c],
+ StatementsNode(0...14)(
+ [MultiWriteNode(0...14)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ LocalVariableWriteNode(3...4)(:b, 0, nil, (3...4), nil),
+ LocalVariableWriteNode(6...7)(:c, 0, nil, (6...7), nil),
+ SplatNode(9...10)((9...10), nil)],
+ (11...12),
+ CallNode(13...14)(nil, nil, (13...14), nil, nil, nil, nil, 0, "f"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_back_splat.txt b/test/yarp/snapshots/seattlerb/mlhs_back_splat.txt
new file mode 100644
index 0000000000..8086347e13
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_back_splat.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...15)(
+ [:a, :b, :c, :s],
+ StatementsNode(0...15)(
+ [MultiWriteNode(0...15)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ LocalVariableWriteNode(3...4)(:b, 0, nil, (3...4), nil),
+ LocalVariableWriteNode(6...7)(:c, 0, nil, (6...7), nil),
+ SplatNode(9...11)(
+ (9...10),
+ LocalVariableWriteNode(10...11)(:s, 0, nil, (10...11), nil)
+ )],
+ (12...13),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "f"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_front_anonsplat.txt b/test/yarp/snapshots/seattlerb/mlhs_front_anonsplat.txt
new file mode 100644
index 0000000000..beaadf1892
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_front_anonsplat.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...14)(
+ [:x, :y, :z],
+ StatementsNode(0...14)(
+ [MultiWriteNode(0...14)(
+ [MultiWriteNode(0...1)(
+ [SplatNode(0...1)((0...1), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(3...4)(:x, 0, nil, (3...4), nil),
+ LocalVariableWriteNode(6...7)(:y, 0, nil, (6...7), nil),
+ LocalVariableWriteNode(9...10)(:z, 0, nil, (9...10), nil)],
+ (11...12),
+ CallNode(13...14)(nil, nil, (13...14), nil, nil, nil, nil, 0, "f"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_front_splat.txt b/test/yarp/snapshots/seattlerb/mlhs_front_splat.txt
new file mode 100644
index 0000000000..0c786546d3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_front_splat.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...15)(
+ [:s, :x, :y, :z],
+ StatementsNode(0...15)(
+ [MultiWriteNode(0...15)(
+ [MultiWriteNode(0...2)(
+ [SplatNode(0...2)(
+ (0...1),
+ LocalVariableWriteNode(1...2)(:s, 0, nil, (1...2), nil)
+ )],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(4...5)(:x, 0, nil, (4...5), nil),
+ LocalVariableWriteNode(7...8)(:y, 0, nil, (7...8), nil),
+ LocalVariableWriteNode(10...11)(:z, 0, nil, (10...11), nil)],
+ (12...13),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "f"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_keyword.txt b/test/yarp/snapshots/seattlerb/mlhs_keyword.txt
new file mode 100644
index 0000000000..2b5fc37ee0
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_keyword.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...4),
+ (4...5),
+ ArgumentsNode(5...15)([TrueNode(5...9)(), TrueNode(11...15)()]),
+ (15...16),
+ nil,
+ 0,
+ "!="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_mid_anonsplat.txt b/test/yarp/snapshots/seattlerb/mlhs_mid_anonsplat.txt
new file mode 100644
index 0000000000..54cab7d7f8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_mid_anonsplat.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...23)(
+ [:a, :b, :c, :x, :y, :z],
+ StatementsNode(0...23)(
+ [MultiWriteNode(0...23)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ LocalVariableWriteNode(3...4)(:b, 0, nil, (3...4), nil),
+ LocalVariableWriteNode(6...7)(:c, 0, nil, (6...7), nil),
+ SplatNode(9...10)((9...10), nil),
+ LocalVariableWriteNode(12...13)(:x, 0, nil, (12...13), nil),
+ LocalVariableWriteNode(15...16)(:y, 0, nil, (15...16), nil),
+ LocalVariableWriteNode(18...19)(:z, 0, nil, (18...19), nil)],
+ (20...21),
+ CallNode(22...23)(nil, nil, (22...23), nil, nil, nil, nil, 0, "f"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_mid_splat.txt b/test/yarp/snapshots/seattlerb/mlhs_mid_splat.txt
new file mode 100644
index 0000000000..e8dd882dd2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_mid_splat.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...24)(
+ [:a, :b, :c, :s, :x, :y, :z],
+ StatementsNode(0...24)(
+ [MultiWriteNode(0...24)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ LocalVariableWriteNode(3...4)(:b, 0, nil, (3...4), nil),
+ LocalVariableWriteNode(6...7)(:c, 0, nil, (6...7), nil),
+ SplatNode(9...11)(
+ (9...10),
+ LocalVariableWriteNode(10...11)(:s, 0, nil, (10...11), nil)
+ ),
+ LocalVariableWriteNode(13...14)(:x, 0, nil, (13...14), nil),
+ LocalVariableWriteNode(16...17)(:y, 0, nil, (16...17), nil),
+ LocalVariableWriteNode(19...20)(:z, 0, nil, (19...20), nil)],
+ (21...22),
+ CallNode(23...24)(nil, nil, (23...24), nil, nil, nil, nil, 0, "f"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/mlhs_rescue.txt b/test/yarp/snapshots/seattlerb/mlhs_rescue.txt
new file mode 100644
index 0000000000..cd6276e76e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/mlhs_rescue.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...18)(
+ [:a, :b],
+ StatementsNode(0...18)(
+ [MultiWriteNode(0...18)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ LocalVariableWriteNode(3...4)(:b, 0, nil, (3...4), nil)],
+ (5...6),
+ RescueModifierNode(7...18)(
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "f"),
+ (9...15),
+ IntegerNode(16...18)()
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/module_comments.txt b/test/yarp/snapshots/seattlerb/module_comments.txt
new file mode 100644
index 0000000000..5d11f23a4d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/module_comments.txt
@@ -0,0 +1,26 @@
+ProgramNode(22...75)(
+ [],
+ StatementsNode(22...75)(
+ [ModuleNode(22...75)(
+ [],
+ (22...28),
+ ConstantReadNode(29...30)(),
+ StatementsNode(44...71)(
+ [DefNode(44...71)(
+ (48...52),
+ nil,
+ nil,
+ nil,
+ [],
+ (44...47),
+ nil,
+ nil,
+ nil,
+ nil,
+ (68...71)
+ )]
+ ),
+ (72...75)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/motherfuckin_leading_dots.txt b/test/yarp/snapshots/seattlerb/motherfuckin_leading_dots.txt
new file mode 100644
index 0000000000..352bcbab60
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/motherfuckin_leading_dots.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (2...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/motherfuckin_leading_dots2.txt b/test/yarp/snapshots/seattlerb/motherfuckin_leading_dots2.txt
new file mode 100644
index 0000000000..8a246f5827
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/motherfuckin_leading_dots2.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [IntegerNode(0...1)(),
+ RangeNode(2...5)(nil, IntegerNode(4...5)(), (2...4), 0)]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/multiline_hash_declaration.txt b/test/yarp/snapshots/seattlerb/multiline_hash_declaration.txt
new file mode 100644
index 0000000000..e6e341fc7c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/multiline_hash_declaration.txt
@@ -0,0 +1,62 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...13)(
+ [KeywordHashNode(2...13)(
+ [AssocNode(2...13)(
+ SymbolNode(2...8)(nil, (2...7), (7...8), "state"),
+ HashNode(10...13)((10...11), [], (12...13)),
+ nil
+ )]
+ )]
+ ),
+ (13...14),
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(16...29)(
+ nil,
+ nil,
+ (16...17),
+ (17...18),
+ ArgumentsNode(18...28)(
+ [KeywordHashNode(18...28)(
+ [AssocNode(18...28)(
+ SymbolNode(18...24)(nil, (18...23), (23...24), "state"),
+ HashNode(25...28)((25...26), [], (27...28)),
+ nil
+ )]
+ )]
+ ),
+ (28...29),
+ nil,
+ 0,
+ "f"
+ ),
+ CallNode(31...43)(
+ nil,
+ nil,
+ (31...32),
+ (32...33),
+ ArgumentsNode(33...42)(
+ [KeywordHashNode(33...42)(
+ [AssocNode(33...42)(
+ SymbolNode(33...39)(nil, (33...38), (38...39), "state"),
+ HashNode(40...42)((40...41), [], (41...42)),
+ nil
+ )]
+ )]
+ ),
+ (42...43),
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/non_interpolated_symbol_array_line_breaks.txt b/test/yarp/snapshots/seattlerb/non_interpolated_symbol_array_line_breaks.txt
new file mode 100644
index 0000000000..0a779610a6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/non_interpolated_symbol_array_line_breaks.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...9)(
+ [SymbolNode(4...5)(nil, (4...5), nil, "a"),
+ SymbolNode(6...7)(nil, (6...7), nil, "b")],
+ (0...3),
+ (8...9)
+ ),
+ IntegerNode(10...11)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/non_interpolated_word_array_line_breaks.txt b/test/yarp/snapshots/seattlerb/non_interpolated_word_array_line_breaks.txt
new file mode 100644
index 0000000000..901575f9a8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/non_interpolated_word_array_line_breaks.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...9)(
+ [StringNode(4...5)(nil, (4...5), nil, "a"),
+ StringNode(6...7)(nil, (6...7), nil, "b")],
+ (0...3),
+ (8...9)
+ ),
+ IntegerNode(10...11)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_command_call.txt b/test/yarp/snapshots/seattlerb/op_asgn_command_call.txt
new file mode 100644
index 0000000000..256a063f40
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_command_call.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...11)(
+ [:a],
+ StatementsNode(0...11)(
+ [LocalVariableOperatorOrWriteNode(0...11)(
+ (0...1),
+ (2...5),
+ CallNode(6...11)(
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b"),
+ (7...8),
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ :a
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_dot_ident_command_call.txt b/test/yarp/snapshots/seattlerb/op_asgn_dot_ident_command_call.txt
new file mode 100644
index 0000000000..0bb9c07eba
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_dot_ident_command_call.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallOperatorOrWriteNode(0...11)(
+ CallNode(0...3)(
+ ConstantReadNode(0...1)(),
+ (1...2),
+ (2...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "B="
+ ),
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (4...7)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_index_command_call.txt b/test/yarp/snapshots/seattlerb/op_asgn_index_command_call.txt
new file mode 100644
index 0000000000..9b7b6f93da
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_index_command_call.txt
@@ -0,0 +1,32 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallOperatorOrWriteNode(0...16)(
+ CallNode(0...5)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (1...5),
+ (1...2),
+ ArgumentsNode(2...4)([SymbolNode(2...4)((2...3), (3...4), nil, "b")]),
+ (4...5),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(10...16)(
+ nil,
+ nil,
+ (10...11),
+ nil,
+ ArgumentsNode(12...16)(
+ [IntegerNode(12...13)(), IntegerNode(15...16)()]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (6...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_const_command_call.txt b/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_const_command_call.txt
new file mode 100644
index 0000000000..051acb85b5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_const_command_call.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ConstantPathOperatorWriteNode(0...11)(
+ ConstantPathNode(0...4)(
+ ConstantReadNode(0...1)(),
+ ConstantReadNode(3...4)(),
+ (1...3)
+ ),
+ (5...7),
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)(
+ [CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "d")]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ :*
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier1.txt b/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier1.txt
new file mode 100644
index 0000000000..88847480ee
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier1.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallOperatorWriteNode(0...9)(
+ CallNode(0...4)(
+ ConstantReadNode(0...1)(),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (5...7),
+ IntegerNode(8...9)(),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier_command_call.txt b/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier_command_call.txt
new file mode 100644
index 0000000000..5ca0e3ce5c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_primary_colon_identifier_command_call.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallOperatorWriteNode(0...11)(
+ CallNode(0...4)(
+ ConstantReadNode(0...1)(),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (5...7),
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)(
+ [CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "d")]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ :*
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/op_asgn_val_dot_ident_command_call.txt b/test/yarp/snapshots/seattlerb/op_asgn_val_dot_ident_command_call.txt
new file mode 100644
index 0000000000..363660cf20
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/op_asgn_val_dot_ident_command_call.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallOperatorOrWriteNode(0...11)(
+ CallNode(0...3)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (4...7)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_def_special_name.txt b/test/yarp/snapshots/seattlerb/parse_def_special_name.txt
new file mode 100644
index 0000000000..a266ddf094
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_def_special_name.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [DefNode(0...13)(
+ (4...8),
+ nil,
+ nil,
+ nil,
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (10...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_if_not_canonical.txt b/test/yarp/snapshots/seattlerb/parse_if_not_canonical.txt
new file mode 100644
index 0000000000..3d90e11f4c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_if_not_canonical.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...41)(
+ [],
+ StatementsNode(0...41)(
+ [IfNode(0...41)(
+ (0...2),
+ CallNode(3...15)(
+ CallNode(7...15)(
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "var"),
+ (10...11),
+ (11...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil?"
+ ),
+ nil,
+ (3...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ StatementsNode(21...26)(
+ [StringNode(21...26)((21...22), (22...25), (25...26), "foo")]
+ ),
+ ElseNode(27...41)(
+ (27...31),
+ StatementsNode(32...37)(
+ [StringNode(32...37)((32...33), (33...36), (36...37), "bar")]
+ ),
+ (38...41)
+ ),
+ (38...41)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_if_not_noncanonical.txt b/test/yarp/snapshots/seattlerb/parse_if_not_noncanonical.txt
new file mode 100644
index 0000000000..3d90e11f4c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_if_not_noncanonical.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...41)(
+ [],
+ StatementsNode(0...41)(
+ [IfNode(0...41)(
+ (0...2),
+ CallNode(3...15)(
+ CallNode(7...15)(
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "var"),
+ (10...11),
+ (11...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil?"
+ ),
+ nil,
+ (3...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ StatementsNode(21...26)(
+ [StringNode(21...26)((21...22), (22...25), (25...26), "foo")]
+ ),
+ ElseNode(27...41)(
+ (27...31),
+ StatementsNode(32...37)(
+ [StringNode(32...37)((32...33), (33...36), (36...37), "bar")]
+ ),
+ (38...41)
+ ),
+ (38...41)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_block.txt b/test/yarp/snapshots/seattlerb/parse_line_block.txt
new file mode 100644
index 0000000000..51282de977
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_block.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...10)(
+ [:a],
+ StatementsNode(0...10)(
+ [LocalVariableWriteNode(0...6)(
+ :a,
+ 0,
+ IntegerNode(4...6)(),
+ (0...1),
+ (2...3)
+ ),
+ CallNode(7...10)(
+ nil,
+ nil,
+ (7...8),
+ nil,
+ ArgumentsNode(9...10)([LocalVariableReadNode(9...10)(:a, 0)]),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_block_inline_comment.txt b/test/yarp/snapshots/seattlerb/parse_line_block_inline_comment.txt
new file mode 100644
index 0000000000..76b2ec33fa
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_block_inline_comment.txt
@@ -0,0 +1,8 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "b"),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_block_inline_comment_leading_newlines.txt b/test/yarp/snapshots/seattlerb/parse_line_block_inline_comment_leading_newlines.txt
new file mode 100644
index 0000000000..0345dae43e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_block_inline_comment_leading_newlines.txt
@@ -0,0 +1,8 @@
+ProgramNode(3...36)(
+ [],
+ StatementsNode(3...36)(
+ [CallNode(3...4)(nil, nil, (3...4), nil, nil, nil, nil, 0, "a"),
+ CallNode(5...6)(nil, nil, (5...6), nil, nil, nil, nil, 0, "b"),
+ CallNode(35...36)(nil, nil, (35...36), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_block_inline_multiline_comment.txt b/test/yarp/snapshots/seattlerb/parse_line_block_inline_multiline_comment.txt
new file mode 100644
index 0000000000..d8486cb823
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_block_inline_multiline_comment.txt
@@ -0,0 +1,8 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "b"),
+ CallNode(32...33)(nil, nil, (32...33), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt b/test/yarp/snapshots/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt
new file mode 100644
index 0000000000..b7cca1732b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_call_ivar_arg_no_parens_line_break.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...4)([InstanceVariableReadNode(2...4)()]),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_call_ivar_line_break_paren.txt b/test/yarp/snapshots/seattlerb/parse_line_call_ivar_line_break_paren.txt
new file mode 100644
index 0000000000..ae67416e67
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_call_ivar_line_break_paren.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...4)([InstanceVariableReadNode(2...4)()]),
+ (5...6),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_call_no_args.txt b/test/yarp/snapshots/seattlerb/parse_line_call_no_args.txt
new file mode 100644
index 0000000000..229bfdaa9f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_call_no_args.txt
@@ -0,0 +1,48 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [CallNode(0...23)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...23)(
+ [:x, :y],
+ BlockParametersNode(5...11)(
+ ParametersNode(6...10)(
+ [RequiredParameterNode(6...7)(:x),
+ RequiredParameterNode(9...10)(:y)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (5...6),
+ (10...11)
+ ),
+ StatementsNode(14...19)(
+ [CallNode(14...19)(
+ LocalVariableReadNode(14...15)(:x, 0),
+ nil,
+ (16...17),
+ nil,
+ ArgumentsNode(18...19)([LocalVariableReadNode(18...19)(:y, 0)]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (2...4),
+ (20...23)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_defn_complex.txt b/test/yarp/snapshots/seattlerb/parse_line_defn_complex.txt
new file mode 100644
index 0000000000..adf81b25d1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_defn_complex.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [DefNode(0...40)(
+ (4...5),
+ nil,
+ ParametersNode(6...7)(
+ [RequiredParameterNode(6...7)(:y)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(11...35)(
+ [CallNode(11...15)(
+ nil,
+ nil,
+ (11...12),
+ (12...13),
+ ArgumentsNode(13...14)([LocalVariableReadNode(13...14)(:y, 0)]),
+ (14...15),
+ nil,
+ 0,
+ "p"
+ ),
+ LocalVariableOperatorWriteNode(18...24)(
+ (18...19),
+ (20...22),
+ IntegerNode(23...24)(),
+ :y,
+ :*
+ ),
+ ReturnNode(27...35)(
+ (27...33),
+ ArgumentsNode(34...35)([LocalVariableReadNode(34...35)(:y, 0)])
+ )]
+ ),
+ [:y],
+ (0...3),
+ nil,
+ (5...6),
+ (7...8),
+ nil,
+ (37...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_defn_no_parens.txt b/test/yarp/snapshots/seattlerb/parse_line_defn_no_parens.txt
new file mode 100644
index 0000000000..ff61047cbb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_defn_no_parens.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [DefNode(0...10)(
+ (4...5),
+ nil,
+ nil,
+ nil,
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (7...10)
+ ),
+ DefNode(12...21)(
+ (16...17),
+ nil,
+ nil,
+ nil,
+ [],
+ (12...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ (18...21)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_defn_no_parens_args.txt b/test/yarp/snapshots/seattlerb/parse_line_defn_no_parens_args.txt
new file mode 100644
index 0000000000..eec5acfcd7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_defn_no_parens_args.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [DefNode(0...11)(
+ (4...5),
+ nil,
+ ParametersNode(6...7)(
+ [RequiredParameterNode(6...7)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (8...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_dot2.txt b/test/yarp/snapshots/seattlerb/parse_line_dot2.txt
new file mode 100644
index 0000000000..b535ac7c1c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_dot2.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [RangeNode(0...5)(IntegerNode(0...1)(), IntegerNode(4...5)(), (1...3), 0),
+ RangeNode(6...11)(
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "a"),
+ CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "b"),
+ (7...9),
+ 0
+ ),
+ CallNode(12...13)(nil, nil, (12...13), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_dot2_open.txt b/test/yarp/snapshots/seattlerb/parse_line_dot2_open.txt
new file mode 100644
index 0000000000..757e052c08
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_dot2_open.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [RangeNode(0...3)(IntegerNode(0...1)(), nil, (1...3), 0),
+ RangeNode(6...9)(
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (7...9),
+ 0
+ ),
+ CallNode(12...13)(nil, nil, (12...13), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_dot3.txt b/test/yarp/snapshots/seattlerb/parse_line_dot3.txt
new file mode 100644
index 0000000000..d50e6dc275
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_dot3.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [RangeNode(0...6)(IntegerNode(0...1)(), IntegerNode(5...6)(), (1...4), 1),
+ RangeNode(7...13)(
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "a"),
+ CallNode(12...13)(nil, nil, (12...13), nil, nil, nil, nil, 0, "b"),
+ (8...11),
+ 1
+ ),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_dot3_open.txt b/test/yarp/snapshots/seattlerb/parse_line_dot3_open.txt
new file mode 100644
index 0000000000..16cdc0cce8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_dot3_open.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [RangeNode(0...4)(IntegerNode(0...1)(), nil, (1...4), 1),
+ RangeNode(7...11)(
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (8...11),
+ 1
+ ),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_dstr_escaped_newline.txt b/test/yarp/snapshots/seattlerb/parse_line_dstr_escaped_newline.txt
new file mode 100644
index 0000000000..b6f92191b6
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_dstr_escaped_newline.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedStringNode(0...9)(
+ (0...1),
+ [StringNode(1...4)(nil, (1...4), nil, "a\n"),
+ EmbeddedStatementsNode(4...8)((4...6), nil, (7...8))],
+ (8...9)
+ ),
+ TrueNode(10...14)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_dstr_soft_newline.txt b/test/yarp/snapshots/seattlerb/parse_line_dstr_soft_newline.txt
new file mode 100644
index 0000000000..a22199b3ac
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_dstr_soft_newline.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [InterpolatedStringNode(0...8)(
+ (0...1),
+ [StringNode(1...3)(nil, (1...3), nil, "a\n"),
+ EmbeddedStatementsNode(3...7)((3...5), nil, (6...7))],
+ (7...8)
+ ),
+ TrueNode(9...13)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_evstr_after_break.txt b/test/yarp/snapshots/seattlerb/parse_line_evstr_after_break.txt
new file mode 100644
index 0000000000..3807c61b20
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_evstr_after_break.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [StringConcatNode(0...11)(
+ StringNode(0...3)((0...1), (1...2), (2...3), "a"),
+ InterpolatedStringNode(5...11)(
+ (5...6),
+ [EmbeddedStatementsNode(6...10)(
+ (6...8),
+ StatementsNode(8...9)(
+ [CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "b")]
+ ),
+ (9...10)
+ )],
+ (10...11)
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_hash_lit.txt b/test/yarp/snapshots/seattlerb/parse_line_hash_lit.txt
new file mode 100644
index 0000000000..a7dd5a1f7b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_hash_lit.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [HashNode(0...13)(
+ (0...1),
+ [AssocNode(2...10)(
+ SymbolNode(2...5)((2...3), (3...5), nil, "s1"),
+ IntegerNode(9...10)(),
+ (6...8)
+ )],
+ (12...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_heredoc.txt b/test/yarp/snapshots/seattlerb/parse_line_heredoc.txt
new file mode 100644
index 0000000000..e2a8c1c665
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_heredoc.txt
@@ -0,0 +1,42 @@
+ProgramNode(6...88)(
+ [:string],
+ StatementsNode(6...88)(
+ [LocalVariableWriteNode(6...31)(
+ :string,
+ 0,
+ CallNode(15...31)(
+ InterpolatedStringNode(15...71)(
+ (15...25),
+ [StringNode(32...57)(
+ nil,
+ (32...57),
+ nil,
+ " very long string\n"
+ )],
+ (57...71)
+ ),
+ (25...26),
+ (26...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "strip"
+ ),
+ (6...12),
+ (13...14)
+ ),
+ CallNode(77...88)(
+ nil,
+ nil,
+ (77...81),
+ nil,
+ ArgumentsNode(82...88)([LocalVariableReadNode(82...88)(:string, 0)]),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_heredoc_evstr.txt b/test/yarp/snapshots/seattlerb/parse_line_heredoc_evstr.txt
new file mode 100644
index 0000000000..e24231dcf9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_heredoc_evstr.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedStringNode(0...14)(
+ (0...4),
+ [StringNode(5...7)(nil, (5...7), nil, "a\n"),
+ EmbeddedStatementsNode(7...11)(
+ (7...9),
+ StatementsNode(9...10)(
+ [CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "b")]
+ ),
+ (10...11)
+ ),
+ StringNode(11...12)(nil, (11...12), nil, "\n")],
+ (12...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt b/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt
new file mode 100644
index 0000000000..573a260958
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_heredoc_hardnewline.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...48)(
+ [],
+ StatementsNode(0...48)(
+ [InterpolatedStringNode(0...34)(
+ (0...8),
+ [StringNode(9...28)(
+ nil,
+ (9...28),
+ nil,
+ "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n" + "\n"
+ )],
+ (28...34)
+ ),
+ ClassNode(35...48)(
+ [],
+ (35...40),
+ ConstantReadNode(41...44)(),
+ nil,
+ nil,
+ nil,
+ (45...48)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_heredoc_regexp_chars.txt b/test/yarp/snapshots/seattlerb/parse_line_heredoc_regexp_chars.txt
new file mode 100644
index 0000000000..c252ec45dc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_heredoc_regexp_chars.txt
@@ -0,0 +1,32 @@
+ProgramNode(6...74)(
+ [:string],
+ StatementsNode(6...74)(
+ [LocalVariableWriteNode(6...57)(
+ :string,
+ 0,
+ InterpolatedStringNode(15...57)(
+ (15...22),
+ [StringNode(23...48)(
+ nil,
+ (23...48),
+ nil,
+ " very long string\n"
+ )],
+ (48...57)
+ ),
+ (6...12),
+ (13...14)
+ ),
+ CallNode(63...74)(
+ nil,
+ nil,
+ (63...67),
+ nil,
+ ArgumentsNode(68...74)([LocalVariableReadNode(68...74)(:string, 0)]),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_iter_call_no_parens.txt b/test/yarp/snapshots/seattlerb/parse_line_iter_call_no_parens.txt
new file mode 100644
index 0000000000..53c7b38660
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_iter_call_no_parens.txt
@@ -0,0 +1,50 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CallNode(0...25)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...3)(
+ [CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ BlockNode(4...25)(
+ [:x, :y],
+ BlockParametersNode(7...13)(
+ ParametersNode(8...12)(
+ [RequiredParameterNode(8...9)(:x),
+ RequiredParameterNode(11...12)(:y)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (7...8),
+ (12...13)
+ ),
+ StatementsNode(16...21)(
+ [CallNode(16...21)(
+ LocalVariableReadNode(16...17)(:x, 0),
+ nil,
+ (18...19),
+ nil,
+ ArgumentsNode(20...21)([LocalVariableReadNode(20...21)(:y, 0)]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (4...6),
+ (22...25)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_iter_call_parens.txt b/test/yarp/snapshots/seattlerb/parse_line_iter_call_parens.txt
new file mode 100644
index 0000000000..229243ea66
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_iter_call_parens.txt
@@ -0,0 +1,50 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CallNode(0...26)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...3)(
+ [CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "a")]
+ ),
+ (3...4),
+ BlockNode(5...26)(
+ [:x, :y],
+ BlockParametersNode(8...14)(
+ ParametersNode(9...13)(
+ [RequiredParameterNode(9...10)(:x),
+ RequiredParameterNode(12...13)(:y)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (8...9),
+ (13...14)
+ ),
+ StatementsNode(17...22)(
+ [CallNode(17...22)(
+ LocalVariableReadNode(17...18)(:x, 0),
+ nil,
+ (19...20),
+ nil,
+ ArgumentsNode(21...22)([LocalVariableReadNode(21...22)(:y, 0)]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (5...7),
+ (23...26)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_multiline_str.txt b/test/yarp/snapshots/seattlerb/parse_line_multiline_str.txt
new file mode 100644
index 0000000000..e12f68cfb2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_multiline_str.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [StringNode(0...5)((0...1), (1...4), (4...5), "a\n" + "b"),
+ IntegerNode(6...7)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_multiline_str_literal_n.txt b/test/yarp/snapshots/seattlerb/parse_line_multiline_str_literal_n.txt
new file mode 100644
index 0000000000..92a7b9fed1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_multiline_str_literal_n.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [StringNode(0...6)((0...1), (1...5), (5...6), "a\n" + "b"),
+ IntegerNode(7...8)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_newlines.txt b/test/yarp/snapshots/seattlerb/parse_line_newlines.txt
new file mode 100644
index 0000000000..14b0c8cecc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_newlines.txt
@@ -0,0 +1 @@
+ProgramNode(0...4)([], StatementsNode(0...4)([TrueNode(0...4)()]))
diff --git a/test/yarp/snapshots/seattlerb/parse_line_op_asgn.txt b/test/yarp/snapshots/seattlerb/parse_line_op_asgn.txt
new file mode 100644
index 0000000000..e65af5c08d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_op_asgn.txt
@@ -0,0 +1,13 @@
+ProgramNode(6...34)(
+ [:foo],
+ StatementsNode(6...34)(
+ [LocalVariableOperatorWriteNode(6...24)(
+ (6...9),
+ (10...12),
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "bar"),
+ :foo,
+ :+
+ ),
+ CallNode(31...34)(nil, nil, (31...34), nil, nil, nil, nil, 0, "baz")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_postexe.txt b/test/yarp/snapshots/seattlerb/parse_line_postexe.txt
new file mode 100644
index 0000000000..775d209272
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_postexe.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [PostExecutionNode(0...11)(
+ StatementsNode(6...9)(
+ [CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (0...3),
+ (4...5),
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_preexe.txt b/test/yarp/snapshots/seattlerb/parse_line_preexe.txt
new file mode 100644
index 0000000000..59ede98b60
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_preexe.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [PreExecutionNode(0...13)(
+ StatementsNode(8...11)(
+ [CallNode(8...11)(nil, nil, (8...11), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (0...5),
+ (6...7),
+ (12...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_rescue.txt b/test/yarp/snapshots/seattlerb/parse_line_rescue.txt
new file mode 100644
index 0000000000..1a1fc6b01d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_rescue.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...35)(
+ [],
+ StatementsNode(0...35)(
+ [BeginNode(0...35)(
+ (0...5),
+ StatementsNode(8...9)(
+ [CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "a")]
+ ),
+ RescueNode(10...31)(
+ (10...16),
+ [],
+ nil,
+ nil,
+ StatementsNode(19...20)(
+ [CallNode(19...20)(nil, nil, (19...20), nil, nil, nil, nil, 0, "b")]
+ ),
+ RescueNode(21...31)(
+ (21...27),
+ [],
+ nil,
+ nil,
+ StatementsNode(30...31)(
+ [CallNode(30...31)(
+ nil,
+ nil,
+ (30...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil
+ )
+ ),
+ nil,
+ nil,
+ (32...35)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_return.txt b/test/yarp/snapshots/seattlerb/parse_line_return.txt
new file mode 100644
index 0000000000..17ba7af0a5
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_return.txt
@@ -0,0 +1,31 @@
+ProgramNode(6...77)(
+ [],
+ StatementsNode(6...77)(
+ [DefNode(6...77)(
+ (10...14),
+ nil,
+ nil,
+ StatementsNode(23...67)(
+ [IfNode(23...67)(
+ (23...25),
+ TrueNode(26...30)(),
+ StatementsNode(46...55)(
+ [ReturnNode(46...55)(
+ (46...52),
+ ArgumentsNode(53...55)([IntegerNode(53...55)()])
+ )]
+ ),
+ nil,
+ (64...67)
+ )]
+ ),
+ [],
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ (74...77)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_str_with_newline_escape.txt b/test/yarp/snapshots/seattlerb/parse_line_str_with_newline_escape.txt
new file mode 100644
index 0000000000..e75463a0e3
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_str_with_newline_escape.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...12)(
+ [StringNode(2...6)((2...3), (3...5), (5...6), "\n"),
+ TrueNode(8...12)()]
+ ),
+ (12...13),
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_to_ary.txt b/test/yarp/snapshots/seattlerb/parse_line_to_ary.txt
new file mode 100644
index 0000000000..da2c3f5b23
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_to_ary.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...10)(
+ [:a, :b],
+ StatementsNode(0...10)(
+ [MultiWriteNode(0...8)(
+ [LocalVariableWriteNode(0...1)(:a, 0, nil, (0...1), nil),
+ LocalVariableWriteNode(3...4)(:b, 0, nil, (3...4), nil)],
+ (5...6),
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "c"),
+ nil,
+ nil
+ ),
+ CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "d")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_line_trailing_newlines.txt b/test/yarp/snapshots/seattlerb/parse_line_trailing_newlines.txt
new file mode 100644
index 0000000000..c28a53ddc8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_line_trailing_newlines.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)(
+ [CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_opt_call_args_assocs_comma.txt b/test/yarp/snapshots/seattlerb/parse_opt_call_args_assocs_comma.txt
new file mode 100644
index 0000000000..9a84d358bc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_opt_call_args_assocs_comma.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ IntegerNode(0...1)(),
+ nil,
+ (1...8),
+ (1...2),
+ ArgumentsNode(2...6)(
+ [KeywordHashNode(2...6)(
+ [AssocNode(2...6)(
+ IntegerNode(2...3)(),
+ IntegerNode(5...6)(),
+ (3...5)
+ )]
+ )]
+ ),
+ (7...8),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_opt_call_args_lit_comma.txt b/test/yarp/snapshots/seattlerb/parse_opt_call_args_lit_comma.txt
new file mode 100644
index 0000000000..a058d01284
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_opt_call_args_lit_comma.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ IntegerNode(0...1)(),
+ nil,
+ (1...5),
+ (1...2),
+ ArgumentsNode(2...3)([IntegerNode(2...3)()]),
+ (4...5),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_019.txt b/test/yarp/snapshots/seattlerb/parse_pattern_019.txt
new file mode 100644
index 0000000000..0b31742498
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_019.txt
@@ -0,0 +1,32 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CaseNode(0...26)(
+ IntegerNode(5...6)(),
+ [InNode(7...22)(
+ RangeNode(10...15)(
+ CallNode(10...12)(
+ IntegerNode(11...12)(),
+ nil,
+ (10...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ IntegerNode(14...15)(),
+ (12...14),
+ 0
+ ),
+ StatementsNode(18...22)([TrueNode(18...22)()]),
+ (7...9),
+ nil
+ )],
+ nil,
+ (0...4),
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_044.txt b/test/yarp/snapshots/seattlerb/parse_pattern_044.txt
new file mode 100644
index 0000000000..572197b776
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_044.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CaseNode(0...31)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "obj"),
+ [InNode(9...27)(
+ ArrayPatternNode(12...20)(
+ ConstantReadNode(12...18)(),
+ [],
+ nil,
+ [],
+ (18...19),
+ (19...20)
+ ),
+ StatementsNode(23...27)([TrueNode(23...27)()]),
+ (9...11),
+ nil
+ )],
+ nil,
+ (0...4),
+ (28...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_051.txt b/test/yarp/snapshots/seattlerb/parse_pattern_051.txt
new file mode 100644
index 0000000000..7f2410212d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_051.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...36)(
+ [],
+ StatementsNode(0...36)(
+ [CaseNode(0...36)(
+ ArrayNode(5...14)(
+ [IntegerNode(6...7)(), IntegerNode(9...10)(), IntegerNode(12...13)()],
+ (5...6),
+ (13...14)
+ ),
+ [InNode(15...32)(
+ ArrayPatternNode(18...25)(
+ nil,
+ [IntegerNode(19...20)(), IntegerNode(22...23)()],
+ nil,
+ [],
+ (18...19),
+ (24...25)
+ ),
+ StatementsNode(28...32)([TrueNode(28...32)()]),
+ (15...17),
+ nil
+ )],
+ nil,
+ (0...4),
+ (33...36)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_058.txt b/test/yarp/snapshots/seattlerb/parse_pattern_058.txt
new file mode 100644
index 0000000000..23b0ba5d10
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_058.txt
@@ -0,0 +1,46 @@
+ProgramNode(0...43)(
+ [:a, :rest],
+ StatementsNode(0...43)(
+ [CaseNode(0...43)(
+ HashNode(5...11)(
+ (5...6),
+ [AssocNode(6...10)(
+ SymbolNode(6...8)(nil, (6...7), (7...8), "a"),
+ IntegerNode(9...10)(),
+ nil
+ )],
+ (10...11)
+ ),
+ [InNode(12...39)(
+ HashPatternNode(15...27)(
+ nil,
+ [AssocNode(16...18)(
+ SymbolNode(16...18)(nil, (16...17), (17...18), "a"),
+ nil,
+ nil
+ ),
+ AssocSplatNode(20...26)(
+ LocalVariableWriteNode(22...26)(:rest, 0, nil, (22...26), nil),
+ (20...22)
+ )],
+ nil,
+ (15...16),
+ (26...27)
+ ),
+ StatementsNode(30...39)(
+ [ArrayNode(30...39)(
+ [LocalVariableReadNode(31...32)(:a, 0),
+ LocalVariableReadNode(34...38)(:rest, 0)],
+ (30...31),
+ (38...39)
+ )]
+ ),
+ (12...14),
+ nil
+ )],
+ nil,
+ (0...4),
+ (40...43)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_058_2.txt b/test/yarp/snapshots/seattlerb/parse_pattern_058_2.txt
new file mode 100644
index 0000000000..c1ba037a62
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_058_2.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...33)(
+ [:a],
+ StatementsNode(0...33)(
+ [CaseNode(0...33)(
+ HashNode(5...11)(
+ (5...6),
+ [AssocNode(6...10)(
+ SymbolNode(6...8)(nil, (6...7), (7...8), "a"),
+ IntegerNode(9...10)(),
+ nil
+ )],
+ (10...11)
+ ),
+ [InNode(12...29)(
+ HashPatternNode(15...23)(
+ nil,
+ [AssocNode(16...18)(
+ SymbolNode(16...18)(nil, (16...17), (17...18), "a"),
+ nil,
+ nil
+ ),
+ AssocSplatNode(20...22)(nil, (20...22))],
+ nil,
+ (15...16),
+ (22...23)
+ ),
+ StatementsNode(26...29)(
+ [ArrayNode(26...29)(
+ [LocalVariableReadNode(27...28)(:a, 0)],
+ (26...27),
+ (28...29)
+ )]
+ ),
+ (12...14),
+ nil
+ )],
+ nil,
+ (0...4),
+ (30...33)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_069.txt b/test/yarp/snapshots/seattlerb/parse_pattern_069.txt
new file mode 100644
index 0000000000..1d3772e93f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_069.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CaseNode(0...31)(
+ SymbolNode(5...7)((5...6), (6...7), nil, "a"),
+ [InNode(8...27)(
+ HashPatternNode(11...23)(
+ ConstantReadNode(11...17)(),
+ [AssocNode(18...22)(
+ SymbolNode(18...20)(nil, (18...19), (19...20), "b"),
+ IntegerNode(21...22)(),
+ nil
+ )],
+ nil,
+ (17...18),
+ (22...23)
+ ),
+ StatementsNode(26...27)([IntegerNode(26...27)()]),
+ (8...10),
+ nil
+ )],
+ nil,
+ (0...4),
+ (28...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_pattern_076.txt b/test/yarp/snapshots/seattlerb/parse_pattern_076.txt
new file mode 100644
index 0000000000..493223169b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_pattern_076.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...39)(
+ [],
+ StatementsNode(0...39)(
+ [CaseNode(0...39)(
+ HashNode(5...11)(
+ (5...6),
+ [AssocNode(6...10)(
+ SymbolNode(6...8)(nil, (6...7), (7...8), "a"),
+ IntegerNode(9...10)(),
+ nil
+ )],
+ (10...11)
+ ),
+ [InNode(12...35)(
+ HashPatternNode(15...28)(
+ nil,
+ [AssocNode(16...20)(
+ SymbolNode(16...18)(nil, (16...17), (17...18), "a"),
+ IntegerNode(19...20)(),
+ nil
+ ),
+ NoKeywordsParameterNode(22...27)((22...24), (24...27))],
+ nil,
+ (15...16),
+ (27...28)
+ ),
+ StatementsNode(31...35)([TrueNode(31...35)()]),
+ (12...14),
+ nil
+ )],
+ nil,
+ (0...4),
+ (36...39)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_until_not_canonical.txt b/test/yarp/snapshots/seattlerb/parse_until_not_canonical.txt
new file mode 100644
index 0000000000..6ac4c6f042
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_until_not_canonical.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [UntilNode(0...30)(
+ (0...5),
+ CallNode(6...18)(
+ CallNode(10...18)(
+ CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var"
+ ),
+ (13...14),
+ (14...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil?"
+ ),
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ StatementsNode(21...26)(
+ [StringNode(21...26)((21...22), (22...25), (25...26), "foo")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_until_not_noncanonical.txt b/test/yarp/snapshots/seattlerb/parse_until_not_noncanonical.txt
new file mode 100644
index 0000000000..6ac4c6f042
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_until_not_noncanonical.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [UntilNode(0...30)(
+ (0...5),
+ CallNode(6...18)(
+ CallNode(10...18)(
+ CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var"
+ ),
+ (13...14),
+ (14...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil?"
+ ),
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ StatementsNode(21...26)(
+ [StringNode(21...26)((21...22), (22...25), (25...26), "foo")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_while_not_canonical.txt b/test/yarp/snapshots/seattlerb/parse_while_not_canonical.txt
new file mode 100644
index 0000000000..754694cefe
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_while_not_canonical.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [WhileNode(0...30)(
+ (0...5),
+ CallNode(6...18)(
+ CallNode(10...18)(
+ CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var"
+ ),
+ (13...14),
+ (14...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil?"
+ ),
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ StatementsNode(21...26)(
+ [StringNode(21...26)((21...22), (22...25), (25...26), "foo")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/parse_while_not_noncanonical.txt b/test/yarp/snapshots/seattlerb/parse_while_not_noncanonical.txt
new file mode 100644
index 0000000000..754694cefe
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/parse_while_not_noncanonical.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [WhileNode(0...30)(
+ (0...5),
+ CallNode(6...18)(
+ CallNode(10...18)(
+ CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var"
+ ),
+ (13...14),
+ (14...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nil?"
+ ),
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ StatementsNode(21...26)(
+ [StringNode(21...26)((21...22), (22...25), (25...26), "foo")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/pctW_lineno.txt b/test/yarp/snapshots/seattlerb/pctW_lineno.txt
new file mode 100644
index 0000000000..c9ed993026
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/pctW_lineno.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [ArrayNode(0...28)(
+ [StringNode(3...7)(nil, (3...7), nil, "a\n" + "b"),
+ StringNode(8...9)(nil, (8...9), nil, "c"),
+ StringNode(10...11)(nil, (10...11), nil, "d"),
+ StringNode(12...16)(nil, (12...16), nil, "e\n" + "f"),
+ StringNode(17...19)(nil, (17...19), nil, "gy"),
+ StringNode(20...23)(nil, (20...23), nil, "hy"),
+ StringNode(24...27)(nil, (24...27), nil, "iy")],
+ (0...3),
+ (27...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/pct_Q_backslash_nl.txt b/test/yarp/snapshots/seattlerb/pct_Q_backslash_nl.txt
new file mode 100644
index 0000000000..f8e3421ee4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/pct_Q_backslash_nl.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)([StringNode(0...7)((0...3), (3...6), (6...7), " \n")])
+)
diff --git a/test/yarp/snapshots/seattlerb/pct_nl.txt b/test/yarp/snapshots/seattlerb/pct_nl.txt
new file mode 100644
index 0000000000..8435c33e6a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/pct_nl.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...7)(
+ [:x],
+ StatementsNode(0...7)(
+ [LocalVariableWriteNode(0...7)(
+ :x,
+ 0,
+ StringNode(4...7)((4...6), (6...6), (6...7), ""),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/pipe_semicolon.txt b/test/yarp/snapshots/seattlerb/pipe_semicolon.txt
new file mode 100644
index 0000000000..912eef6176
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/pipe_semicolon.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallNode(0...18)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...18)(
+ [:c],
+ BlockParametersNode(7...14)(nil, [(11...12)], (7...8), (13...14)),
+ nil,
+ (4...6),
+ (15...18)
+ ),
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/pipe_space.txt b/test/yarp/snapshots/seattlerb/pipe_space.txt
new file mode 100644
index 0000000000..dc569222e1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/pipe_space.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...14)(
+ [],
+ BlockParametersNode(7...10)(nil, [], (7...8), (9...10)),
+ nil,
+ (4...6),
+ (11...14)
+ ),
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/qWords_space.txt b/test/yarp/snapshots/seattlerb/qWords_space.txt
new file mode 100644
index 0000000000..6713c4ba71
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qWords_space.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)([ArrayNode(0...5)([], (0...3), (4...5))])
+)
diff --git a/test/yarp/snapshots/seattlerb/qsymbols.txt b/test/yarp/snapshots/seattlerb/qsymbols.txt
new file mode 100644
index 0000000000..7cf54611c2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qsymbols.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [ArrayNode(0...9)(
+ [SymbolNode(3...4)(nil, (3...4), nil, "a"),
+ SymbolNode(5...6)(nil, (5...6), nil, "b"),
+ SymbolNode(7...8)(nil, (7...8), nil, "c")],
+ (0...3),
+ (8...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/qsymbols_empty.txt b/test/yarp/snapshots/seattlerb/qsymbols_empty.txt
new file mode 100644
index 0000000000..cad298895b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qsymbols_empty.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)([ArrayNode(0...4)([], (0...3), (3...4))])
+)
diff --git a/test/yarp/snapshots/seattlerb/qsymbols_empty_space.txt b/test/yarp/snapshots/seattlerb/qsymbols_empty_space.txt
new file mode 100644
index 0000000000..6713c4ba71
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qsymbols_empty_space.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)([ArrayNode(0...5)([], (0...3), (4...5))])
+)
diff --git a/test/yarp/snapshots/seattlerb/qsymbols_interp.txt b/test/yarp/snapshots/seattlerb/qsymbols_interp.txt
new file mode 100644
index 0000000000..2f4a44fc23
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qsymbols_interp.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [ArrayNode(0...15)(
+ [SymbolNode(3...4)(nil, (3...4), nil, "a"),
+ InterpolatedSymbolNode(5...12)(
+ nil,
+ [StringNode(5...6)(nil, (5...6), nil, "b"),
+ EmbeddedStatementsNode(6...12)(
+ (6...8),
+ StatementsNode(8...11)(
+ [CallNode(8...11)(
+ IntegerNode(8...9)(),
+ nil,
+ (9...10),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (11...12)
+ )],
+ nil
+ ),
+ SymbolNode(13...14)(nil, (13...14), nil, "c")],
+ (0...3),
+ (14...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/quoted_symbol_hash_arg.txt b/test/yarp/snapshots/seattlerb/quoted_symbol_hash_arg.txt
new file mode 100644
index 0000000000..861fcaa6a2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/quoted_symbol_hash_arg.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ ArgumentsNode(5...12)(
+ [KeywordHashNode(5...12)(
+ [AssocNode(5...12)(
+ SymbolNode(5...9)((5...6), (6...7), (7...9), "a"),
+ HashNode(10...12)((10...11), [], (11...12)),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/quoted_symbol_keys.txt b/test/yarp/snapshots/seattlerb/quoted_symbol_keys.txt
new file mode 100644
index 0000000000..59b2b5d62d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/quoted_symbol_keys.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [HashNode(0...11)(
+ (0...1),
+ [AssocNode(2...9)(
+ SymbolNode(2...6)((2...3), (3...4), (4...6), "a"),
+ SymbolNode(7...9)((7...8), (8...9), nil, "b"),
+ nil
+ )],
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/qw_escape.txt b/test/yarp/snapshots/seattlerb/qw_escape.txt
new file mode 100644
index 0000000000..0bf3fd8d8b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qw_escape.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [StringNode(0...7)((0...3), (3...6), (6...7), "\u0001'")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/qw_escape_term.txt b/test/yarp/snapshots/seattlerb/qw_escape_term.txt
new file mode 100644
index 0000000000..2c9eb48c3d
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qw_escape_term.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [StringNode(0...26)(
+ (0...3),
+ (3...25),
+ (25...26),
+ "blah blah \\| blah blah"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/qwords_empty.txt b/test/yarp/snapshots/seattlerb/qwords_empty.txt
new file mode 100644
index 0000000000..cad298895b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/qwords_empty.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)([ArrayNode(0...4)([], (0...3), (3...4))])
+)
diff --git a/test/yarp/snapshots/seattlerb/read_escape_unicode_curlies.txt b/test/yarp/snapshots/seattlerb/read_escape_unicode_curlies.txt
new file mode 100644
index 0000000000..26583c05a1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/read_escape_unicode_curlies.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)([StringNode(0...9)((0...1), (1...9), nil, " ")])
+)
diff --git a/test/yarp/snapshots/seattlerb/read_escape_unicode_h4.txt b/test/yarp/snapshots/seattlerb/read_escape_unicode_h4.txt
new file mode 100644
index 0000000000..b17128c620
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/read_escape_unicode_h4.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)([StringNode(0...7)((0...1), (1...7), nil, " ")])
+)
diff --git a/test/yarp/snapshots/seattlerb/regexp.txt b/test/yarp/snapshots/seattlerb/regexp.txt
new file mode 100644
index 0000000000..122d26a249
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/regexp.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...45)(
+ [],
+ StatementsNode(0...45)(
+ [RegularExpressionNode(0...5)((0...1), (1...4), (4...5), "wtf", 0),
+ RegularExpressionNode(7...13)((7...8), (8...11), (11...13), "wtf", 2),
+ RegularExpressionNode(15...21)(
+ (15...16),
+ (16...19),
+ (19...21),
+ "wtf",
+ 16
+ ),
+ RegularExpressionNode(23...30)(
+ (23...24),
+ (24...27),
+ (27...30),
+ "wtf",
+ 18
+ ),
+ RegularExpressionNode(32...45)(
+ (32...33),
+ (33...36),
+ (36...45),
+ "wtf",
+ 18
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/regexp_esc_C_slash.txt b/test/yarp/snapshots/seattlerb/regexp_esc_C_slash.txt
new file mode 100644
index 0000000000..2605080304
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/regexp_esc_C_slash.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [RegularExpressionNode(0...7)((0...1), (1...6), (6...7), "\u0003d", 0)]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/regexp_esc_u.txt b/test/yarp/snapshots/seattlerb/regexp_esc_u.txt
new file mode 100644
index 0000000000..8b13368704
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/regexp_esc_u.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [RegularExpressionNode(0...17)((0...1), (1...16), (16...17), "[!-']", 0)]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/regexp_escape_extended.txt b/test/yarp/snapshots/seattlerb/regexp_escape_extended.txt
new file mode 100644
index 0000000000..699de5a196
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/regexp_escape_extended.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [RegularExpressionNode(0...6)((0...1), (1...5), (5...6), "“", 0)]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/regexp_unicode_curlies.txt b/test/yarp/snapshots/seattlerb/regexp_unicode_curlies.txt
new file mode 100644
index 0000000000..e4502db3f7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/regexp_unicode_curlies.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [RegularExpressionNode(0...15)((0...1), (1...14), (14...15), "샞몾", 0),
+ RegularExpressionNode(17...25)((17...18), (18...24), (24...25), "ß", 0)]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/required_kwarg_no_value.txt b/test/yarp/snapshots/seattlerb/required_kwarg_no_value.txt
new file mode 100644
index 0000000000..95cf0e279a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/required_kwarg_no_value.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [DefNode(0...16)(
+ (4...5),
+ nil,
+ ParametersNode(6...12)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...8)((6...8), nil),
+ KeywordParameterNode(10...12)((10...12), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :b],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (13...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rescue_do_end_ensure_result.txt b/test/yarp/snapshots/seattlerb/rescue_do_end_ensure_result.txt
new file mode 100644
index 0000000000..52721053a8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rescue_do_end_ensure_result.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [CallNode(0...42)(
+ CallNode(0...37)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ nil,
+ nil,
+ BlockNode(5...37)(
+ [],
+ nil,
+ BeginNode(10...37)(
+ nil,
+ StatementsNode(10...16)(
+ [SymbolNode(10...16)((10...11), (11...16), nil, "begin")]
+ ),
+ nil,
+ nil,
+ EnsureNode(17...37)(
+ (17...23),
+ StatementsNode(26...33)(
+ [SymbolNode(26...33)((26...27), (27...33), nil, "ensure")]
+ ),
+ (34...37)
+ ),
+ (34...37)
+ ),
+ (5...7),
+ (34...37)
+ ),
+ 0,
+ "proc"
+ ),
+ (37...38),
+ (38...42),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "call"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rescue_do_end_no_raise.txt b/test/yarp/snapshots/seattlerb/rescue_do_end_no_raise.txt
new file mode 100644
index 0000000000..c4d46c2f7a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rescue_do_end_no_raise.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...66)(
+ [],
+ StatementsNode(0...66)(
+ [CallNode(0...66)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...66)(
+ [],
+ nil,
+ BeginNode(9...66)(
+ nil,
+ StatementsNode(9...15)(
+ [SymbolNode(9...15)((9...10), (10...15), nil, "begin")]
+ ),
+ RescueNode(16...32)(
+ (16...22),
+ [],
+ nil,
+ nil,
+ StatementsNode(25...32)(
+ [SymbolNode(25...32)((25...26), (26...32), nil, "rescue")]
+ ),
+ nil
+ ),
+ ElseNode(33...52)(
+ (33...37),
+ StatementsNode(40...45)(
+ [SymbolNode(40...45)((40...41), (41...45), nil, "else")]
+ ),
+ (46...52)
+ ),
+ EnsureNode(46...66)(
+ (46...52),
+ StatementsNode(55...62)(
+ [SymbolNode(55...62)((55...56), (56...62), nil, "ensure")]
+ ),
+ (63...66)
+ ),
+ (63...66)
+ ),
+ (4...6),
+ (63...66)
+ ),
+ 0,
+ "tap"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rescue_do_end_raised.txt b/test/yarp/snapshots/seattlerb/rescue_do_end_raised.txt
new file mode 100644
index 0000000000..7209e7eb47
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rescue_do_end_raised.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...35)(
+ [],
+ StatementsNode(0...35)(
+ [CallNode(0...35)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...35)(
+ [],
+ nil,
+ BeginNode(9...35)(
+ nil,
+ StatementsNode(9...14)(
+ [CallNode(9...14)(
+ nil,
+ nil,
+ (9...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "raise"
+ )]
+ ),
+ nil,
+ nil,
+ EnsureNode(15...35)(
+ (15...21),
+ StatementsNode(24...31)(
+ [SymbolNode(24...31)((24...25), (25...31), nil, "ensure")]
+ ),
+ (32...35)
+ ),
+ (32...35)
+ ),
+ (4...6),
+ (32...35)
+ ),
+ 0,
+ "tap"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rescue_do_end_rescued.txt b/test/yarp/snapshots/seattlerb/rescue_do_end_rescued.txt
new file mode 100644
index 0000000000..07d7a0aa6a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rescue_do_end_rescued.txt
@@ -0,0 +1,62 @@
+ProgramNode(0...65)(
+ [],
+ StatementsNode(0...65)(
+ [CallNode(0...65)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...65)(
+ [],
+ nil,
+ BeginNode(9...65)(
+ nil,
+ StatementsNode(9...14)(
+ [CallNode(9...14)(
+ nil,
+ nil,
+ (9...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "raise"
+ )]
+ ),
+ RescueNode(15...31)(
+ (15...21),
+ [],
+ nil,
+ nil,
+ StatementsNode(24...31)(
+ [SymbolNode(24...31)((24...25), (25...31), nil, "rescue")]
+ ),
+ nil
+ ),
+ ElseNode(32...51)(
+ (32...36),
+ StatementsNode(39...44)(
+ [SymbolNode(39...44)((39...40), (40...44), nil, "else")]
+ ),
+ (45...51)
+ ),
+ EnsureNode(45...65)(
+ (45...51),
+ StatementsNode(54...61)(
+ [SymbolNode(54...61)((54...55), (55...61), nil, "ensure")]
+ ),
+ (62...65)
+ ),
+ (62...65)
+ ),
+ (4...6),
+ (62...65)
+ ),
+ 0,
+ "tap"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rescue_in_block.txt b/test/yarp/snapshots/seattlerb/rescue_in_block.txt
new file mode 100644
index 0000000000..0a9d040814
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rescue_in_block.txt
@@ -0,0 +1,48 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CallNode(0...26)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ nil,
+ nil,
+ BlockNode(5...26)(
+ [],
+ nil,
+ BeginNode(8...26)(
+ nil,
+ nil,
+ RescueNode(8...22)(
+ (8...14),
+ [],
+ nil,
+ nil,
+ StatementsNode(17...22)(
+ [CallNode(17...22)(
+ nil,
+ nil,
+ (17...22),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "stuff"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (23...26)
+ ),
+ (5...7),
+ (23...26)
+ ),
+ 0,
+ "blah"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rescue_parens.txt b/test/yarp/snapshots/seattlerb/rescue_parens.txt
new file mode 100644
index 0000000000..f7f6a7783e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rescue_parens.txt
@@ -0,0 +1,48 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...14)(
+ [ParenthesesNode(2...14)(
+ StatementsNode(3...13)(
+ [RescueModifierNode(3...13)(
+ CallNode(3...4)(
+ nil,
+ nil,
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (5...11),
+ CallNode(12...13)(
+ nil,
+ nil,
+ (12...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )
+ )]
+ ),
+ (2...3),
+ (13...14)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/return_call_assocs.txt b/test/yarp/snapshots/seattlerb/return_call_assocs.txt
new file mode 100644
index 0000000000..72edbbbfa4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/return_call_assocs.txt
@@ -0,0 +1,142 @@
+ProgramNode(0...106)(
+ [],
+ StatementsNode(0...106)(
+ [ReturnNode(0...17)(
+ (0...6),
+ ArgumentsNode(7...17)(
+ [IntegerNode(7...8)(),
+ KeywordHashNode(10...17)(
+ [AssocNode(10...17)(
+ SymbolNode(10...12)((10...11), (11...12), nil, "z"),
+ IntegerNode(16...17)(),
+ (13...15)
+ )]
+ )]
+ )
+ ),
+ ReturnNode(19...45)(
+ (19...25),
+ ArgumentsNode(26...45)(
+ [IntegerNode(26...27)(),
+ KeywordHashNode(29...45)(
+ [AssocNode(29...36)(
+ SymbolNode(29...31)((29...30), (30...31), nil, "z"),
+ IntegerNode(35...36)(),
+ (32...34)
+ ),
+ AssocNode(38...45)(
+ SymbolNode(38...40)((38...39), (39...40), nil, "w"),
+ IntegerNode(44...45)(),
+ (41...43)
+ )]
+ )]
+ )
+ ),
+ ReturnNode(47...61)(
+ (47...53),
+ ArgumentsNode(54...61)(
+ [CallNode(54...61)(
+ nil,
+ nil,
+ (54...55),
+ nil,
+ ArgumentsNode(56...61)(
+ [KeywordHashNode(56...61)(
+ [AssocNode(56...61)(
+ SymbolNode(56...58)((56...57), (57...58), nil, "z"),
+ IntegerNode(60...61)(),
+ (58...60)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ )
+ ),
+ ReturnNode(63...75)(
+ (63...69),
+ ArgumentsNode(70...75)(
+ [CallNode(70...75)(
+ nil,
+ nil,
+ (70...71),
+ nil,
+ ArgumentsNode(72...75)(
+ [KeywordHashNode(72...75)(
+ [AssocNode(72...75)(
+ SymbolNode(72...74)(nil, (72...73), (73...74), "z"),
+ IntegerNode(74...75)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ )
+ ),
+ ReturnNode(77...90)(
+ (77...83),
+ ArgumentsNode(84...90)(
+ [CallNode(84...90)(
+ nil,
+ nil,
+ (84...85),
+ (85...86),
+ ArgumentsNode(86...89)(
+ [KeywordHashNode(86...89)(
+ [AssocNode(86...89)(
+ SymbolNode(86...88)(nil, (86...87), (87...88), "z"),
+ IntegerNode(88...89)(),
+ nil
+ )]
+ )]
+ ),
+ (89...90),
+ nil,
+ 0,
+ "y"
+ )]
+ )
+ ),
+ ReturnNode(92...106)(
+ (92...98),
+ ArgumentsNode(99...106)(
+ [CallNode(99...106)(
+ nil,
+ nil,
+ (99...100),
+ (100...101),
+ ArgumentsNode(101...105)(
+ [KeywordHashNode(101...105)(
+ [AssocNode(101...105)(
+ CallNode(101...102)(
+ nil,
+ nil,
+ (101...102),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "z"
+ ),
+ IntegerNode(104...105)(),
+ (102...104)
+ )]
+ )]
+ ),
+ (105...106),
+ nil,
+ 0,
+ "y"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/rhs_asgn.txt b/test/yarp/snapshots/seattlerb/rhs_asgn.txt
new file mode 100644
index 0000000000..7ba161b170
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/rhs_asgn.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...7)(
+ [:n],
+ StatementsNode(0...7)(
+ [MatchRequiredNode(0...7)(
+ IntegerNode(0...2)(),
+ LocalVariableWriteNode(6...7)(:n, 0, nil, (6...7), nil),
+ (3...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/ruby21_numbers.txt b/test/yarp/snapshots/seattlerb/ruby21_numbers.txt
new file mode 100644
index 0000000000..f250397d15
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/ruby21_numbers.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [ArrayNode(0...13)(
+ [ImaginaryNode(1...3)(IntegerNode(1...2)()),
+ RationalNode(5...7)(IntegerNode(5...6)()),
+ ImaginaryNode(9...12)(RationalNode(9...11)(IntegerNode(9...10)()))],
+ (0...1),
+ (12...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_attrasgn.txt b/test/yarp/snapshots/seattlerb/safe_attrasgn.txt
new file mode 100644
index 0000000000..fabbcb5ca7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_attrasgn.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ ArgumentsNode(7...8)([IntegerNode(7...8)()]),
+ nil,
+ nil,
+ 1,
+ "b="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_attrasgn_constant.txt b/test/yarp/snapshots/seattlerb/safe_attrasgn_constant.txt
new file mode 100644
index 0000000000..b821504034
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_attrasgn_constant.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ ArgumentsNode(7...8)([IntegerNode(7...8)()]),
+ nil,
+ nil,
+ 1,
+ "B="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_call.txt b/test/yarp/snapshots/seattlerb/safe_call.txt
new file mode 100644
index 0000000000..1621715838
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_call.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_call_after_newline.txt b/test/yarp/snapshots/seattlerb/safe_call_after_newline.txt
new file mode 100644
index 0000000000..d57c4b14f7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_call_after_newline.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (2...4),
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_call_dot_parens.txt b/test/yarp/snapshots/seattlerb/safe_call_dot_parens.txt
new file mode 100644
index 0000000000..3eee73711e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_call_dot_parens.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [CallNode(0...5)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (0...0),
+ (3...4),
+ nil,
+ (4...5),
+ nil,
+ 1,
+ "call"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_call_newline.txt b/test/yarp/snapshots/seattlerb/safe_call_newline.txt
new file mode 100644
index 0000000000..1621715838
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_call_newline.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_call_operator.txt b/test/yarp/snapshots/seattlerb/safe_call_operator.txt
new file mode 100644
index 0000000000..797d9795c1
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_call_operator.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ nil,
+ 1,
+ ">"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_call_rhs_newline.txt b/test/yarp/snapshots/seattlerb/safe_call_rhs_newline.txt
new file mode 100644
index 0000000000..373fd18537
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_call_rhs_newline.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...8)(
+ [:c],
+ StatementsNode(0...8)(
+ [LocalVariableWriteNode(0...8)(
+ :c,
+ 0,
+ CallNode(4...8)(
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "a"),
+ (5...7),
+ (7...8),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_calls.txt b/test/yarp/snapshots/seattlerb/safe_calls.txt
new file mode 100644
index 0000000000..ef0fe5c7a8
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_calls.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...10)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ ),
+ (4...6),
+ (6...7),
+ (7...8),
+ ArgumentsNode(8...9)([IntegerNode(8...9)()]),
+ (9...10),
+ nil,
+ 1,
+ "c"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_op_asgn.txt b/test/yarp/snapshots/seattlerb/safe_op_asgn.txt
new file mode 100644
index 0000000000..a90eecb8fd
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_op_asgn.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallOperatorWriteNode(0...11)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b="
+ ),
+ (5...7),
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...9),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "x"
+ ),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/safe_op_asgn2.txt b/test/yarp/snapshots/seattlerb/safe_op_asgn2.txt
new file mode 100644
index 0000000000..bf00e7947b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/safe_op_asgn2.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallOperatorOrWriteNode(0...10)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b="
+ ),
+ CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "x"),
+ (5...8)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/slashy_newlines_within_string.txt b/test/yarp/snapshots/seattlerb/slashy_newlines_within_string.txt
new file mode 100644
index 0000000000..fed889aa90
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/slashy_newlines_within_string.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [CallNode(0...33)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ ArgumentsNode(5...33)(
+ [StringNode(5...33)(
+ (5...6),
+ (6...32),
+ (32...33),
+ "hello\n" + " my\n" + " dear\n" + " friend"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ ),
+ CallNode(35...40)(
+ CallNode(35...36)(nil, nil, (35...36), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (37...38),
+ nil,
+ ArgumentsNode(39...40)(
+ [CallNode(39...40)(nil, nil, (39...40), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_arg_no_paren.txt b/test/yarp/snapshots/seattlerb/stabby_arg_no_paren.txt
new file mode 100644
index 0000000000..bbbd0a3fcf
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_arg_no_paren.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [LambdaNode(0...5)(
+ [:a],
+ (0...2),
+ BlockParametersNode(2...3)(
+ ParametersNode(2...3)(
+ [RequiredParameterNode(2...3)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt b/test/yarp/snapshots/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt
new file mode 100644
index 0000000000..9475ba9c3f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_arg_opt_splat_arg_block_omfg.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [LambdaNode(0...23)(
+ [:b, :c, :d, :e, :f],
+ (0...2),
+ BlockParametersNode(2...21)(
+ ParametersNode(3...20)(
+ [RequiredParameterNode(3...4)(:b)],
+ [OptionalParameterNode(6...9)(
+ :c,
+ (6...7),
+ (7...8),
+ IntegerNode(8...9)()
+ )],
+ [RequiredParameterNode(15...16)(:e)],
+ RestParameterNode(11...13)((11...12), (12...13)),
+ [],
+ nil,
+ BlockParameterNode(18...20)((19...20), (18...19))
+ ),
+ [],
+ (2...3),
+ (20...21)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_block_iter_call.txt b/test/yarp/snapshots/seattlerb/stabby_block_iter_call.txt
new file mode 100644
index 0000000000..9d56711a76
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_block_iter_call.txt
@@ -0,0 +1,45 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CallNode(0...25)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...25)(
+ [LambdaNode(2...25)(
+ [],
+ (2...4),
+ BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
+ StatementsNode(11...21)(
+ [CallNode(11...21)(
+ CallNode(11...12)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (12...13),
+ (13...14),
+ nil,
+ nil,
+ nil,
+ BlockNode(15...21)([], nil, nil, (15...17), (18...21)),
+ 0,
+ "b"
+ )]
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_block_iter_call_no_target_with_arg.txt b/test/yarp/snapshots/seattlerb/stabby_block_iter_call_no_target_with_arg.txt
new file mode 100644
index 0000000000..c24b3c63c7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_block_iter_call_no_target_with_arg.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CallNode(0...26)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...26)(
+ [LambdaNode(2...26)(
+ [],
+ (2...4),
+ BlockParametersNode(5...7)(nil, [], (5...6), (6...7)),
+ StatementsNode(11...22)(
+ [CallNode(11...22)(
+ nil,
+ nil,
+ (11...12),
+ (12...13),
+ ArgumentsNode(13...14)([IntegerNode(13...14)()]),
+ (14...15),
+ BlockNode(16...22)([], nil, nil, (16...18), (19...22)),
+ 0,
+ "a"
+ )]
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_block_kw.txt b/test/yarp/snapshots/seattlerb/stabby_block_kw.txt
new file mode 100644
index 0000000000..9554c9d37a
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_block_kw.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [LambdaNode(0...13)(
+ [:k],
+ (0...2),
+ BlockParametersNode(3...9)(
+ ParametersNode(4...8)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(4...8)((4...6), IntegerNode(6...8)())],
+ nil,
+ nil
+ ),
+ [],
+ (3...4),
+ (8...9)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_block_kw__required.txt b/test/yarp/snapshots/seattlerb/stabby_block_kw__required.txt
new file mode 100644
index 0000000000..e2bdaf8124
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_block_kw__required.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [LambdaNode(0...11)(
+ [:k],
+ (0...2),
+ BlockParametersNode(3...7)(
+ ParametersNode(4...6)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(4...6)((4...6), nil)],
+ nil,
+ nil
+ ),
+ [],
+ (3...4),
+ (6...7)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/stabby_proc_scope.txt b/test/yarp/snapshots/seattlerb/stabby_proc_scope.txt
new file mode 100644
index 0000000000..d8aef65941
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/stabby_proc_scope.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [LambdaNode(0...11)(
+ [:a, :b],
+ (0...2),
+ BlockParametersNode(2...8)(
+ ParametersNode(3...4)(
+ [RequiredParameterNode(3...4)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(6...7)],
+ (2...3),
+ (7...8)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_backslashes.txt b/test/yarp/snapshots/seattlerb/str_backslashes.txt
new file mode 100644
index 0000000000..8ad6906611
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_backslashes.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...204)(
+ [],
+ StatementsNode(0...204)(
+ [CallNode(0...204)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...204)(
+ [StringNode(2...204)(
+ (2...3),
+ (3...203),
+ (203...204),
+ "\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_double_double_escaped_newline.txt b/test/yarp/snapshots/seattlerb/str_double_double_escaped_newline.txt
new file mode 100644
index 0000000000..fa91f00d29
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_double_double_escaped_newline.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...7)(
+ [StringNode(2...7)((2...3), (3...6), (6...7), "\\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_double_escaped_newline.txt b/test/yarp/snapshots/seattlerb/str_double_escaped_newline.txt
new file mode 100644
index 0000000000..2ff6d74fbb
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_double_escaped_newline.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...6)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...6)(
+ [StringNode(2...6)((2...3), (3...5), (5...6), "\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_double_newline.txt b/test/yarp/snapshots/seattlerb/str_double_newline.txt
new file mode 100644
index 0000000000..a8e003e997
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_double_newline.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...5)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...5)(
+ [StringNode(2...5)((2...3), (3...4), (4...5), "\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_evstr.txt b/test/yarp/snapshots/seattlerb/str_evstr.txt
new file mode 100644
index 0000000000..54cd37035f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_evstr.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [InterpolatedStringNode(0...8)(
+ (0...1),
+ [StringNode(1...3)(nil, (1...3), nil, "a "),
+ EmbeddedStatementsNode(3...7)(
+ (3...5),
+ StatementsNode(5...6)(
+ [CallNode(5...6)(nil, nil, (5...6), nil, nil, nil, nil, 0, "b")]
+ ),
+ (6...7)
+ )],
+ (7...8)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_evstr_escape.txt b/test/yarp/snapshots/seattlerb/str_evstr_escape.txt
new file mode 100644
index 0000000000..41b2b9e294
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_evstr_escape.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [InterpolatedStringNode(0...16)(
+ (0...1),
+ [StringNode(1...3)(nil, (1...3), nil, "a "),
+ EmbeddedStatementsNode(3...7)(
+ (3...5),
+ StatementsNode(5...6)(
+ [CallNode(5...6)(nil, nil, (5...6), nil, nil, nil, nil, 0, "b")]
+ ),
+ (6...7)
+ ),
+ StringNode(7...15)(nil, (7...15), nil, "½")],
+ (15...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_heredoc_interp.txt b/test/yarp/snapshots/seattlerb/str_heredoc_interp.txt
new file mode 100644
index 0000000000..3564378399
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_heredoc_interp.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [InterpolatedStringNode(0...17)(
+ (0...4),
+ [EmbeddedStatementsNode(5...9)(
+ (5...7),
+ StatementsNode(7...8)(
+ [CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "x")]
+ ),
+ (8...9)
+ ),
+ StringNode(9...16)(nil, (9...16), nil, "\n" + "blah2\n")],
+ (16...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_interp_ternary_or_label.txt b/test/yarp/snapshots/seattlerb/str_interp_ternary_or_label.txt
new file mode 100644
index 0000000000..d712ca00a4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_interp_ternary_or_label.txt
@@ -0,0 +1,89 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [InterpolatedStringNode(0...23)(
+ (0...1),
+ [EmbeddedStatementsNode(1...22)(
+ (1...3),
+ StatementsNode(3...21)(
+ [IfNode(3...21)(
+ nil,
+ CallNode(3...7)(
+ CallNode(3...4)(
+ nil,
+ nil,
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (4...5),
+ (5...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b?"
+ ),
+ StatementsNode(10...17)(
+ [CallNode(10...17)(
+ CallNode(10...14)(
+ StringNode(10...12)((10...11), (11...11), (11...12), ""),
+ nil,
+ (12...13),
+ nil,
+ ArgumentsNode(13...14)(
+ [CallNode(13...14)(
+ nil,
+ nil,
+ (13...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ nil,
+ (14...15),
+ nil,
+ ArgumentsNode(15...17)(
+ [StringNode(15...17)(
+ (15...16),
+ (16...16),
+ (16...17),
+ ""
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ ElseNode(17...21)(
+ (17...18),
+ StatementsNode(19...21)(
+ [StringNode(19...21)((19...20), (20...20), (20...21), "")]
+ ),
+ nil
+ ),
+ nil
+ )]
+ ),
+ (21...22)
+ )],
+ (22...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_lit_concat_bad_encodings.txt b/test/yarp/snapshots/seattlerb/str_lit_concat_bad_encodings.txt
new file mode 100644
index 0000000000..350cc6b6b9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_lit_concat_bad_encodings.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...131)(
+ [],
+ StatementsNode(0...131)(
+ [StringConcatNode(0...131)(
+ StringNode(0...62)(
+ (0...1),
+ (1...61),
+ (61...62),
+ "\xE3Ӌー\x83\xE3\x83コ\xA3\x82\x99"
+ ),
+ StringNode(73...131)(
+ (73...74),
+ (74...130),
+ (130...131),
+ "ンパý;foo@bar.com"
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_newline_hash_line_number.txt b/test/yarp/snapshots/seattlerb/str_newline_hash_line_number.txt
new file mode 100644
index 0000000000..e56d74eed7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_newline_hash_line_number.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [StringNode(0...11)(
+ (0...1),
+ (1...10),
+ (10...11),
+ "\n" + "\n" + "\n" + "\n" + "#"
+ ),
+ IntegerNode(12...13)()]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_pct_Q_nested.txt b/test/yarp/snapshots/seattlerb/str_pct_Q_nested.txt
new file mode 100644
index 0000000000..57b00effb7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_pct_Q_nested.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [InterpolatedStringNode(0...26)(
+ (0...3),
+ [StringNode(3...11)(nil, (3...11), nil, "before ["),
+ EmbeddedStatementsNode(11...18)(
+ (11...13),
+ StatementsNode(13...17)(
+ [CallNode(13...17)(
+ nil,
+ nil,
+ (13...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "nest"
+ )]
+ ),
+ (17...18)
+ ),
+ StringNode(18...25)(nil, (18...25), nil, "] after")],
+ (25...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_pct_nested_nested.txt b/test/yarp/snapshots/seattlerb/str_pct_nested_nested.txt
new file mode 100644
index 0000000000..b615b691cc
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_pct_nested_nested.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [InterpolatedStringNode(0...20)(
+ (0...2),
+ [StringNode(2...5)(nil, (2...5), nil, " { "),
+ EmbeddedStatementsNode(5...16)(
+ (5...7),
+ StatementsNode(8...14)(
+ [InterpolatedStringNode(8...14)(
+ (8...9),
+ [EmbeddedStatementsNode(9...13)(
+ (9...11),
+ StatementsNode(11...12)([IntegerNode(11...12)()]),
+ (12...13)
+ )],
+ (13...14)
+ )]
+ ),
+ (15...16)
+ ),
+ StringNode(16...19)(nil, (16...19), nil, " } ")],
+ (19...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_pct_q.txt b/test/yarp/snapshots/seattlerb/str_pct_q.txt
new file mode 100644
index 0000000000..be3f92365c
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_pct_q.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [StringNode(0...9)((0...3), (3...8), (8...9), "a b c")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_single_double_escaped_newline.txt b/test/yarp/snapshots/seattlerb/str_single_double_escaped_newline.txt
new file mode 100644
index 0000000000..fa91f00d29
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_single_double_escaped_newline.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...7)(
+ [StringNode(2...7)((2...3), (3...6), (6...7), "\\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_single_escaped_newline.txt b/test/yarp/snapshots/seattlerb/str_single_escaped_newline.txt
new file mode 100644
index 0000000000..1d2b327f6b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_single_escaped_newline.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...6)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...6)(
+ [StringNode(2...6)((2...3), (3...5), (5...6), "\\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(7...8)(nil, nil, (7...8), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_single_newline.txt b/test/yarp/snapshots/seattlerb/str_single_newline.txt
new file mode 100644
index 0000000000..a8e003e997
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_single_newline.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...5)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...5)(
+ [StringNode(2...5)((2...3), (3...4), (4...5), "\n")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b")]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_str.txt b/test/yarp/snapshots/seattlerb/str_str.txt
new file mode 100644
index 0000000000..964ac52f5f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_str.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [InterpolatedStringNode(0...10)(
+ (0...1),
+ [StringNode(1...3)(nil, (1...3), nil, "a "),
+ EmbeddedStatementsNode(3...9)(
+ (3...5),
+ StatementsNode(5...8)(
+ [StringNode(5...8)((5...6), (6...7), (7...8), "b")]
+ ),
+ (8...9)
+ )],
+ (9...10)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/str_str_str.txt b/test/yarp/snapshots/seattlerb/str_str_str.txt
new file mode 100644
index 0000000000..f7ca61b950
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/str_str_str.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [InterpolatedStringNode(0...12)(
+ (0...1),
+ [StringNode(1...3)(nil, (1...3), nil, "a "),
+ EmbeddedStatementsNode(3...9)(
+ (3...5),
+ StatementsNode(5...8)(
+ [StringNode(5...8)((5...6), (6...7), (7...8), "b")]
+ ),
+ (8...9)
+ ),
+ StringNode(9...11)(nil, (9...11), nil, " c")],
+ (11...12)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/super_arg.txt b/test/yarp/snapshots/seattlerb/super_arg.txt
new file mode 100644
index 0000000000..3885dbac14
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/super_arg.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [SuperNode(0...8)(
+ (0...5),
+ nil,
+ ArgumentsNode(6...8)([IntegerNode(6...8)()]),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/symbol_empty.txt b/test/yarp/snapshots/seattlerb/symbol_empty.txt
new file mode 100644
index 0000000000..f299d17642
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/symbol_empty.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)([SymbolNode(0...3)((0...2), (2...2), (2...3), "")])
+)
diff --git a/test/yarp/snapshots/seattlerb/symbol_list.txt b/test/yarp/snapshots/seattlerb/symbol_list.txt
new file mode 100644
index 0000000000..cfd59c4e0e
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/symbol_list.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [ArrayNode(0...13)(
+ [InterpolatedSymbolNode(3...7)(
+ nil,
+ [EmbeddedStatementsNode(3...7)(
+ (3...5),
+ StatementsNode(5...6)(
+ [CallNode(5...6)(nil, nil, (5...6), nil, nil, nil, nil, 0, "a")]
+ ),
+ (6...7)
+ )],
+ nil
+ ),
+ InterpolatedSymbolNode(8...12)(
+ nil,
+ [EmbeddedStatementsNode(8...12)(
+ (8...10),
+ StatementsNode(10...11)(
+ [CallNode(10...11)(
+ nil,
+ nil,
+ (10...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (11...12)
+ )],
+ nil
+ )],
+ (0...3),
+ (12...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/symbols.txt b/test/yarp/snapshots/seattlerb/symbols.txt
new file mode 100644
index 0000000000..7cf54611c2
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/symbols.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [ArrayNode(0...9)(
+ [SymbolNode(3...4)(nil, (3...4), nil, "a"),
+ SymbolNode(5...6)(nil, (5...6), nil, "b"),
+ SymbolNode(7...8)(nil, (7...8), nil, "c")],
+ (0...3),
+ (8...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/symbols_empty.txt b/test/yarp/snapshots/seattlerb/symbols_empty.txt
new file mode 100644
index 0000000000..cad298895b
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/symbols_empty.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)([ArrayNode(0...4)([], (0...3), (3...4))])
+)
diff --git a/test/yarp/snapshots/seattlerb/symbols_empty_space.txt b/test/yarp/snapshots/seattlerb/symbols_empty_space.txt
new file mode 100644
index 0000000000..6713c4ba71
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/symbols_empty_space.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)([ArrayNode(0...5)([], (0...3), (4...5))])
+)
diff --git a/test/yarp/snapshots/seattlerb/symbols_interp.txt b/test/yarp/snapshots/seattlerb/symbols_interp.txt
new file mode 100644
index 0000000000..2aa2914312
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/symbols_interp.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [ArrayNode(0...15)(
+ [SymbolNode(3...4)(nil, (3...4), nil, "a"),
+ SymbolNode(5...12)(nil, (5...12), nil, "b\#{1+1}"),
+ SymbolNode(13...14)(nil, (13...14), nil, "c")],
+ (0...3),
+ (14...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/thingy.txt b/test/yarp/snapshots/seattlerb/thingy.txt
new file mode 100644
index 0000000000..1a1c467f47
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/thingy.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...6)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "f"),
+ (1...2),
+ (0...0),
+ (2...3),
+ ArgumentsNode(3...5)([IntegerNode(3...5)()]),
+ (5...6),
+ nil,
+ 0,
+ "call"
+ ),
+ CallNode(8...15)(
+ CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "f"),
+ (9...11),
+ (0...0),
+ (11...12),
+ ArgumentsNode(12...14)([IntegerNode(12...14)()]),
+ (14...15),
+ nil,
+ 0,
+ "call"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/uminus_float.txt b/test/yarp/snapshots/seattlerb/uminus_float.txt
new file mode 100644
index 0000000000..ba5db74284
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/uminus_float.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ FloatNode(1...4)(),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/unary_minus.txt b/test/yarp/snapshots/seattlerb/unary_minus.txt
new file mode 100644
index 0000000000..abe6695149
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/unary_minus.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...2)(
+ [],
+ StatementsNode(0...2)(
+ [CallNode(0...2)(
+ CallNode(1...2)(nil, nil, (1...2), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/unary_plus.txt b/test/yarp/snapshots/seattlerb/unary_plus.txt
new file mode 100644
index 0000000000..635c033e94
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/unary_plus.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...2)(
+ [],
+ StatementsNode(0...2)(
+ [CallNode(0...2)(
+ CallNode(1...2)(nil, nil, (1...2), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+@"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/unary_plus_on_literal.txt b/test/yarp/snapshots/seattlerb/unary_plus_on_literal.txt
new file mode 100644
index 0000000000..08370e47e9
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/unary_plus_on_literal.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)(
+ [CallNode(0...3)(
+ SymbolNode(1...3)((1...2), (2...3), nil, "a"),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+@"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/unary_tilde.txt b/test/yarp/snapshots/seattlerb/unary_tilde.txt
new file mode 100644
index 0000000000..e73fdd577f
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/unary_tilde.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...2)(
+ [],
+ StatementsNode(0...2)(
+ [CallNode(0...2)(
+ CallNode(1...2)(nil, nil, (1...2), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "~"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/utf8_bom.txt b/test/yarp/snapshots/seattlerb/utf8_bom.txt
new file mode 100644
index 0000000000..81f1227688
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/utf8_bom.txt
@@ -0,0 +1,16 @@
+ProgramNode(26...29)(
+ [],
+ StatementsNode(26...29)(
+ [CallNode(26...29)(
+ nil,
+ nil,
+ (26...27),
+ nil,
+ ArgumentsNode(28...29)([IntegerNode(28...29)()]),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/when_splat.txt b/test/yarp/snapshots/seattlerb/when_splat.txt
new file mode 100644
index 0000000000..a4caedf301
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/when_splat.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CaseNode(0...25)(
+ CallNode(5...6)(nil, nil, (5...6), nil, nil, nil, nil, 0, "a"),
+ [WhenNode(8...15)(
+ (8...12),
+ [SplatNode(13...15)(
+ (13...14),
+ CallNode(14...15)(nil, nil, (14...15), nil, nil, nil, nil, 0, "b")
+ )],
+ nil
+ )],
+ nil,
+ (0...4),
+ (22...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/words_interp.txt b/test/yarp/snapshots/seattlerb/words_interp.txt
new file mode 100644
index 0000000000..658901cbda
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/words_interp.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [ArrayNode(0...9)(
+ [InterpolatedStringNode(0...8)(
+ nil,
+ [EmbeddedStatementsNode(3...7)(
+ (3...5),
+ StatementsNode(5...6)([IntegerNode(5...6)()]),
+ (6...7)
+ ),
+ StringNode(7...8)(nil, (7...8), nil, "b")],
+ nil
+ )],
+ (0...3),
+ (8...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/wtf.txt b/test/yarp/snapshots/seattlerb/wtf.txt
new file mode 100644
index 0000000000..20e419bbc4
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/wtf.txt
@@ -0,0 +1,48 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [LambdaNode(0...25)(
+ [:a, :b],
+ (0...2),
+ BlockParametersNode(2...12)(
+ ParametersNode(3...11)(
+ [RequiredParameterNode(3...4)(:a)],
+ [OptionalParameterNode(6...11)(
+ :b,
+ (6...7),
+ (7...8),
+ NilNode(8...11)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (2...3),
+ (11...12)
+ ),
+ StatementsNode(15...23)(
+ [CallNode(15...23)(
+ nil,
+ nil,
+ (15...16),
+ nil,
+ ArgumentsNode(17...23)(
+ [ArrayNode(17...23)(
+ [LocalVariableReadNode(18...19)(:a, 0),
+ LocalVariableReadNode(21...22)(:b, 0)],
+ (17...18),
+ (22...23)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/wtf_7.txt b/test/yarp/snapshots/seattlerb/wtf_7.txt
new file mode 100644
index 0000000000..e74a531178
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/wtf_7.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...2),
+ (2...3),
+ nil,
+ ArgumentsNode(4...7)(
+ [ParenthesesNode(4...7)(
+ StatementsNode(5...6)([IntegerNode(5...6)()]),
+ (4...5),
+ (6...7)
+ )]
+ ),
+ nil,
+ BlockNode(8...11)(
+ [],
+ nil,
+ StatementsNode(9...10)(
+ [CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "c")]
+ ),
+ (8...9),
+ (10...11)
+ ),
+ 0,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/wtf_8.txt b/test/yarp/snapshots/seattlerb/wtf_8.txt
new file mode 100644
index 0000000000..211cd9f048
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/wtf_8.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (11...12),
+ nil,
+ ArgumentsNode(5...8)(
+ [ParenthesesNode(5...8)(
+ StatementsNode(6...7)([IntegerNode(6...7)()]),
+ (5...6),
+ (7...8)
+ )]
+ ),
+ nil,
+ BlockNode(9...12)(
+ [],
+ nil,
+ StatementsNode(10...11)(
+ [CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "c")]
+ ),
+ (9...10),
+ (11...12)
+ ),
+ 0,
+ "}"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/yield_arg.txt b/test/yarp/snapshots/seattlerb/yield_arg.txt
new file mode 100644
index 0000000000..8fa3535617
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/yield_arg.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [YieldNode(0...8)(
+ (0...5),
+ nil,
+ ArgumentsNode(6...8)([IntegerNode(6...8)()]),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/yield_call_assocs.txt b/test/yarp/snapshots/seattlerb/yield_call_assocs.txt
new file mode 100644
index 0000000000..e6a56df147
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/yield_call_assocs.txt
@@ -0,0 +1,154 @@
+ProgramNode(0...100)(
+ [],
+ StatementsNode(0...100)(
+ [YieldNode(0...16)(
+ (0...5),
+ nil,
+ ArgumentsNode(6...16)(
+ [IntegerNode(6...7)(),
+ KeywordHashNode(9...16)(
+ [AssocNode(9...16)(
+ SymbolNode(9...11)((9...10), (10...11), nil, "z"),
+ IntegerNode(15...16)(),
+ (12...14)
+ )]
+ )]
+ ),
+ nil
+ ),
+ YieldNode(18...43)(
+ (18...23),
+ nil,
+ ArgumentsNode(24...43)(
+ [IntegerNode(24...25)(),
+ KeywordHashNode(27...43)(
+ [AssocNode(27...34)(
+ SymbolNode(27...29)((27...28), (28...29), nil, "z"),
+ IntegerNode(33...34)(),
+ (30...32)
+ ),
+ AssocNode(36...43)(
+ SymbolNode(36...38)((36...37), (37...38), nil, "w"),
+ IntegerNode(42...43)(),
+ (39...41)
+ )]
+ )]
+ ),
+ nil
+ ),
+ YieldNode(45...58)(
+ (45...50),
+ nil,
+ ArgumentsNode(51...58)(
+ [CallNode(51...58)(
+ nil,
+ nil,
+ (51...52),
+ nil,
+ ArgumentsNode(53...58)(
+ [KeywordHashNode(53...58)(
+ [AssocNode(53...58)(
+ SymbolNode(53...55)((53...54), (54...55), nil, "z"),
+ IntegerNode(57...58)(),
+ (55...57)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ nil
+ ),
+ YieldNode(60...71)(
+ (60...65),
+ nil,
+ ArgumentsNode(66...71)(
+ [CallNode(66...71)(
+ nil,
+ nil,
+ (66...67),
+ nil,
+ ArgumentsNode(68...71)(
+ [KeywordHashNode(68...71)(
+ [AssocNode(68...71)(
+ SymbolNode(68...70)(nil, (68...69), (69...70), "z"),
+ IntegerNode(70...71)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ nil
+ ),
+ YieldNode(73...85)(
+ (73...78),
+ nil,
+ ArgumentsNode(79...85)(
+ [CallNode(79...85)(
+ nil,
+ nil,
+ (79...80),
+ (80...81),
+ ArgumentsNode(81...84)(
+ [KeywordHashNode(81...84)(
+ [AssocNode(81...84)(
+ SymbolNode(81...83)(nil, (81...82), (82...83), "z"),
+ IntegerNode(83...84)(),
+ nil
+ )]
+ )]
+ ),
+ (84...85),
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ nil
+ ),
+ YieldNode(87...100)(
+ (87...92),
+ nil,
+ ArgumentsNode(93...100)(
+ [CallNode(93...100)(
+ nil,
+ nil,
+ (93...94),
+ (94...95),
+ ArgumentsNode(95...99)(
+ [KeywordHashNode(95...99)(
+ [AssocNode(95...99)(
+ CallNode(95...96)(
+ nil,
+ nil,
+ (95...96),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "z"
+ ),
+ IntegerNode(98...99)(),
+ (96...98)
+ )]
+ )]
+ ),
+ (99...100),
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/seattlerb/yield_empty_parens.txt b/test/yarp/snapshots/seattlerb/yield_empty_parens.txt
new file mode 100644
index 0000000000..14871f50e7
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/yield_empty_parens.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)([YieldNode(0...7)((0...5), (5...6), nil, (6...7))])
+)
diff --git a/test/yarp/snapshots/seattlerb/zomg_sometimes_i_hate_this_project.txt b/test/yarp/snapshots/seattlerb/zomg_sometimes_i_hate_this_project.txt
new file mode 100644
index 0000000000..ffc7e315da
--- /dev/null
+++ b/test/yarp/snapshots/seattlerb/zomg_sometimes_i_hate_this_project.txt
@@ -0,0 +1,81 @@
+ProgramNode(6...66)(
+ [],
+ StatementsNode(6...66)(
+ [HashNode(6...66)(
+ (6...7),
+ [AssocNode(16...41)(
+ SymbolNode(16...18)(nil, (16...17), (17...18), "a"),
+ CallNode(19...41)(
+ nil,
+ nil,
+ (19...25),
+ nil,
+ nil,
+ nil,
+ BlockNode(26...41)(
+ [],
+ nil,
+ StatementsNode(28...39)(
+ [IfNode(28...39)(
+ nil,
+ CallNode(28...29)(
+ nil,
+ nil,
+ (28...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ StatementsNode(32...35)(
+ [CallNode(32...35)(
+ nil,
+ nil,
+ (32...33),
+ (33...34),
+ nil,
+ (34...35),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ ElseNode(36...39)(
+ (36...37),
+ StatementsNode(38...39)(
+ [CallNode(38...39)(
+ nil,
+ nil,
+ (38...39),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil
+ ),
+ nil
+ )]
+ ),
+ (26...27),
+ (40...41)
+ ),
+ 0,
+ "lambda"
+ ),
+ nil
+ ),
+ AssocNode(51...57)(
+ SymbolNode(51...53)(nil, (51...52), (52...53), "e"),
+ NilNode(54...57)(),
+ nil
+ )],
+ (65...66)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/single_quote_heredocs.txt b/test/yarp/snapshots/single_quote_heredocs.txt
new file mode 100644
index 0000000000..3e53eb791b
--- /dev/null
+++ b/test/yarp/snapshots/single_quote_heredocs.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...48)(
+ [],
+ StatementsNode(0...48)(
+ [InterpolatedStringNode(0...48)(
+ (0...8),
+ [StringNode(9...44)(
+ nil,
+ (9...44),
+ nil,
+ " cd L:\\Work\\MG3710IQPro\\Develop\n"
+ )],
+ (44...48)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/strings.txt b/test/yarp/snapshots/strings.txt
new file mode 100644
index 0000000000..9b2821a0fd
--- /dev/null
+++ b/test/yarp/snapshots/strings.txt
@@ -0,0 +1,201 @@
+ProgramNode(0...497)(
+ [],
+ StatementsNode(0...497)(
+ [StringNode(0...6)((0...2), (2...5), (5...6), "abc"),
+ StringNode(8...14)((8...10), (10...13), (13...14), "abc"),
+ StringNode(16...22)((16...18), (18...21), (21...22), "abc"),
+ StringNode(24...30)((24...26), (26...29), (29...30), "abc"),
+ StringNode(32...38)((32...34), (34...37), (37...38), "abc"),
+ StringNode(40...46)((40...42), (42...45), (45...46), "abc"),
+ StringNode(48...54)((48...50), (50...53), (53...54), "abc"),
+ StringNode(56...62)((56...58), (58...61), (61...62), "abc"),
+ StringNode(64...70)((64...66), (66...69), (69...70), "abc"),
+ StringNode(72...78)((72...74), (74...77), (77...78), "abc"),
+ StringNode(80...86)((80...82), (82...85), (85...86), "abc"),
+ StringNode(88...94)((88...90), (90...93), (93...94), "abc"),
+ ArrayNode(96...104)([], (96...99), (103...104)),
+ StringNode(106...112)((106...108), (108...111), (111...112), "abc"),
+ StringNode(114...120)((114...116), (116...119), (119...120), "abc"),
+ InterpolatedStringNode(122...130)(
+ (122...123),
+ [EmbeddedVariableNode(123...129)(
+ (123...124),
+ ClassVariableReadNode(124...129)()
+ )],
+ (129...130)
+ ),
+ StringNode(132...138)((132...134), (134...137), (137...138), "abc"),
+ InterpolatedStringNode(140...157)(
+ (140...142),
+ [StringNode(142...146)(nil, (142...146), nil, "aaa "),
+ EmbeddedStatementsNode(146...152)(
+ (146...148),
+ StatementsNode(148...151)(
+ [CallNode(148...151)(
+ nil,
+ nil,
+ (148...151),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bbb"
+ )]
+ ),
+ (151...152)
+ ),
+ StringNode(152...156)(nil, (152...156), nil, " ccc")],
+ (156...157)
+ ),
+ StringNode(159...167)((159...161), (161...166), (166...167), "foo[]"),
+ CallNode(169...183)(
+ StringNode(169...174)((169...170), (170...173), (173...174), "foo"),
+ nil,
+ (175...176),
+ nil,
+ ArgumentsNode(178...183)(
+ [StringNode(178...183)((178...179), (179...182), (182...183), "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ StringNode(185...192)((185...188), (188...191), (191...192), "abc"),
+ SymbolNode(194...201)((194...197), (197...200), (200...201), "abc"),
+ StringNode(203...209)((203...205), (205...208), (208...209), "abc"),
+ StringNode(211...213)((211...212), (212...212), (212...213), ""),
+ StringNode(215...220)((215...216), (216...219), (219...220), "abc"),
+ StringNode(222...229)((222...223), (223...228), (228...229), "\#@---"),
+ InterpolatedStringNode(231...247)(
+ (231...232),
+ [StringNode(232...236)(nil, (232...236), nil, "aaa "),
+ EmbeddedStatementsNode(236...242)(
+ (236...238),
+ StatementsNode(238...241)(
+ [CallNode(238...241)(
+ nil,
+ nil,
+ (238...241),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bbb"
+ )]
+ ),
+ (241...242)
+ ),
+ StringNode(242...246)(nil, (242...246), nil, " ccc")],
+ (246...247)
+ ),
+ StringNode(249...254)((249...250), (250...253), (253...254), "abc"),
+ ArrayNode(256...265)(
+ [StringNode(259...260)(nil, (259...260), nil, "a"),
+ StringNode(261...262)(nil, (261...262), nil, "b"),
+ StringNode(263...264)(nil, (263...264), nil, "c")],
+ (256...259),
+ (264...265)
+ ),
+ ArrayNode(267...284)(
+ [StringNode(270...273)(nil, (270...273), nil, "a[]"),
+ StringNode(274...279)(nil, (274...279), nil, "b[[]]"),
+ StringNode(280...283)(nil, (280...283), nil, "c[]")],
+ (267...270),
+ (283...284)
+ ),
+ ArrayNode(286...304)(
+ [StringNode(289...297)(nil, (289...297), nil, "foo\\ bar"),
+ StringNode(298...303)(nil, (298...303), nil, "\\\#{1}")],
+ (286...289),
+ (303...304)
+ ),
+ ArrayNode(306...322)(
+ [StringNode(309...317)(nil, (309...317), nil, "foo\\ bar"),
+ StringNode(318...321)(nil, (318...321), nil, "baz")],
+ (306...309),
+ (321...322)
+ ),
+ ArrayNode(324...338)(
+ [StringNode(327...328)(nil, (327...328), nil, "a"),
+ InterpolatedStringNode(0...335)(
+ nil,
+ [StringNode(329...330)(nil, (329...330), nil, "b"),
+ EmbeddedStatementsNode(330...334)(
+ (330...332),
+ StatementsNode(332...333)(
+ [CallNode(332...333)(
+ nil,
+ nil,
+ (332...333),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (333...334)
+ ),
+ StringNode(334...335)(nil, (334...335), nil, "d")],
+ nil
+ ),
+ StringNode(336...337)(nil, (336...337), nil, "e")],
+ (324...327),
+ (337...338)
+ ),
+ ArrayNode(340...349)(
+ [StringNode(343...344)(nil, (343...344), nil, "a"),
+ StringNode(345...346)(nil, (345...346), nil, "b"),
+ StringNode(347...348)(nil, (347...348), nil, "c")],
+ (340...343),
+ (348...349)
+ ),
+ ArrayNode(351...368)(
+ [StringNode(357...358)(nil, (357...358), nil, "a"),
+ StringNode(361...362)(nil, (361...362), nil, "b"),
+ StringNode(365...366)(nil, (365...366), nil, "c")],
+ (351...354),
+ (367...368)
+ ),
+ StringNode(370...385)(
+ (370...371),
+ (371...384),
+ (384...385),
+ "' foo ' bar"
+ ),
+ StringNode(387...402)(
+ (387...388),
+ (388...401),
+ (401...402),
+ "\\ foo \\ bar"
+ ),
+ InterpolatedStringNode(404...411)(
+ (404...405),
+ [EmbeddedVariableNode(405...410)(
+ (405...406),
+ GlobalVariableReadNode(406...410)()
+ )],
+ (410...411)
+ ),
+ InterpolatedStringNode(413...420)(
+ (413...414),
+ [EmbeddedVariableNode(414...419)(
+ (414...415),
+ InstanceVariableReadNode(415...419)()
+ )],
+ (419...420)
+ ),
+ StringNode(422...437)((422...423), (423...436), (436...437), "\a # a"),
+ StringNode(439...452)((439...440), (440...451), (451...452), "\a # a"),
+ StringNode(454...460)((454...456), (456...459), (459...460), "abc"),
+ StringNode(462...468)((462...464), (464...467), (467...468), "abc"),
+ StringNode(470...476)((470...472), (472...475), (475...476), "abc"),
+ StringNode(478...484)((478...480), (480...483), (483...484), "abc"),
+ StringNode(486...488)((486...487), (487...488), nil, "a"),
+ StringNode(490...497)((490...493), (493...496), (496...497), "abc")]
+ )
+)
diff --git a/test/yarp/snapshots/super.txt b/test/yarp/snapshots/super.txt
new file mode 100644
index 0000000000..e9d32d14bd
--- /dev/null
+++ b/test/yarp/snapshots/super.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [ForwardingSuperNode(0...5)(nil),
+ SuperNode(7...14)((7...12), (12...13), nil, (13...14), nil),
+ SuperNode(16...24)(
+ (16...21),
+ (21...22),
+ ArgumentsNode(22...23)([IntegerNode(22...23)()]),
+ (23...24),
+ nil
+ ),
+ SuperNode(26...40)(
+ (26...31),
+ (31...32),
+ ArgumentsNode(32...39)(
+ [IntegerNode(32...33)(),
+ IntegerNode(35...36)(),
+ IntegerNode(38...39)()]
+ ),
+ (39...40),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/symbols.txt b/test/yarp/snapshots/symbols.txt
new file mode 100644
index 0000000000..6e8e1c0bb7
--- /dev/null
+++ b/test/yarp/snapshots/symbols.txt
@@ -0,0 +1,147 @@
+ProgramNode(0...345)(
+ [],
+ StatementsNode(0...345)(
+ [SymbolNode(0...6)((0...2), (2...5), (5...6), "abc"),
+ InterpolatedSymbolNode(8...17)(
+ (8...10),
+ [EmbeddedStatementsNode(10...16)(
+ (10...12),
+ StatementsNode(12...15)(
+ [CallNode(12...15)(
+ nil,
+ nil,
+ (12...15),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var"
+ )]
+ ),
+ (15...16)
+ )],
+ (16...17)
+ ),
+ InterpolatedSymbolNode(19...29)(
+ (19...21),
+ [StringNode(21...24)(nil, (21...24), nil, "abc"),
+ EmbeddedStatementsNode(24...28)(
+ (24...26),
+ StatementsNode(26...27)([IntegerNode(26...27)()]),
+ (27...28)
+ )],
+ (28...29)
+ ),
+ ArrayNode(31...51)(
+ [SymbolNode(32...35)((32...33), (33...35), nil, "Υ"),
+ SymbolNode(37...40)((37...38), (38...40), nil, "ά"),
+ SymbolNode(42...45)((42...43), (43...45), nil, "ŗ"),
+ SymbolNode(47...50)((47...48), (48...50), nil, "ρ")],
+ (31...32),
+ (50...51)
+ ),
+ SymbolNode(53...56)((53...54), (54...56), nil, "-@"),
+ SymbolNode(58...60)((58...59), (59...60), nil, "-"),
+ SymbolNode(62...64)((62...63), (63...64), nil, "%"),
+ SymbolNode(66...68)((66...67), (67...68), nil, "|"),
+ SymbolNode(70...73)((70...71), (71...73), nil, "+@"),
+ SymbolNode(75...77)((75...76), (76...77), nil, "+"),
+ SymbolNode(79...81)((79...80), (80...81), nil, "/"),
+ SymbolNode(83...86)((83...84), (84...86), nil, "**"),
+ SymbolNode(88...90)((88...89), (89...90), nil, "*"),
+ SymbolNode(92...95)((92...93), (93...95), nil, "~@"),
+ ArrayNode(97...113)(
+ [IntegerNode(98...99)(),
+ FloatNode(101...104)(),
+ RationalNode(106...108)(IntegerNode(106...107)()),
+ ImaginaryNode(110...112)(IntegerNode(110...111)())],
+ (97...98),
+ (112...113)
+ ),
+ SymbolNode(115...117)((115...116), (116...117), nil, "~"),
+ SymbolNode(119...121)((119...120), (120...121), nil, "a"),
+ ArrayNode(123...132)(
+ [SymbolNode(126...127)(nil, (126...127), nil, "a"),
+ SymbolNode(128...129)(nil, (128...129), nil, "b"),
+ SymbolNode(130...131)(nil, (130...131), nil, "c")],
+ (123...126),
+ (131...132)
+ ),
+ ArrayNode(134...158)(
+ [SymbolNode(137...138)(nil, (137...138), nil, "a"),
+ SymbolNode(139...144)(nil, (139...144), nil, "b\#{1}"),
+ SymbolNode(145...150)(nil, (145...150), nil, "\#{2}c"),
+ SymbolNode(151...157)(nil, (151...157), nil, "d\#{3}f")],
+ (134...137),
+ (157...158)
+ ),
+ ArrayNode(160...184)(
+ [SymbolNode(163...164)(nil, (163...164), nil, "a"),
+ InterpolatedSymbolNode(165...170)(
+ nil,
+ [StringNode(165...166)(nil, (165...166), nil, "b"),
+ EmbeddedStatementsNode(166...170)(
+ (166...168),
+ StatementsNode(168...169)([IntegerNode(168...169)()]),
+ (169...170)
+ )],
+ nil
+ ),
+ InterpolatedSymbolNode(171...176)(
+ nil,
+ [EmbeddedStatementsNode(171...175)(
+ (171...173),
+ StatementsNode(173...174)([IntegerNode(173...174)()]),
+ (174...175)
+ ),
+ StringNode(175...176)(nil, (175...176), nil, "c")],
+ nil
+ ),
+ InterpolatedSymbolNode(177...183)(
+ nil,
+ [StringNode(177...178)(nil, (177...178), nil, "d"),
+ EmbeddedStatementsNode(178...182)(
+ (178...180),
+ StatementsNode(180...181)([IntegerNode(180...181)()]),
+ (181...182)
+ ),
+ StringNode(182...183)(nil, (182...183), nil, "f")],
+ nil
+ )],
+ (160...163),
+ (183...184)
+ ),
+ SymbolNode(186...190)((186...187), (187...190), nil, "@@a"),
+ SymbolNode(192...197)((192...193), (193...197), nil, "👍"),
+ ArrayNode(199...206)(
+ [SymbolNode(202...205)(nil, (202...205), nil, "a\\b")],
+ (199...202),
+ (205...206)
+ ),
+ SymbolNode(208...211)((208...209), (209...211), nil, "$a"),
+ SymbolNode(213...216)((213...214), (214...216), nil, "@a"),
+ SymbolNode(218...221)((218...219), (219...221), nil, "do"),
+ SymbolNode(223...225)((223...224), (224...225), nil, "&"),
+ SymbolNode(227...229)((227...228), (228...229), nil, "`"),
+ SymbolNode(231...234)((231...232), (232...234), nil, "!@"),
+ SymbolNode(236...239)((236...237), (237...239), nil, "!~"),
+ SymbolNode(241...243)((241...242), (242...243), nil, "!"),
+ SymbolNode(245...248)((245...246), (246...248), nil, "[]"),
+ SymbolNode(250...254)((250...251), (251...254), nil, "[]="),
+ SymbolNode(256...258)((256...257), (257...258), nil, "^"),
+ SymbolNode(260...263)((260...261), (261...263), nil, "=="),
+ SymbolNode(265...269)((265...266), (266...269), nil, "==="),
+ SymbolNode(271...274)((271...272), (272...274), nil, "=~"),
+ SymbolNode(276...279)((276...277), (277...279), nil, ">="),
+ SymbolNode(281...284)((281...282), (282...284), nil, ">>"),
+ SymbolNode(286...288)((286...287), (287...288), nil, ">"),
+ SymbolNode(290...294)((290...291), (291...294), nil, "<=>"),
+ SymbolNode(296...299)((296...297), (297...299), nil, "<="),
+ SymbolNode(301...304)((301...302), (302...304), nil, "<<"),
+ SymbolNode(306...308)((306...307), (307...308), nil, "<"),
+ SymbolNode(310...319)((310...311), (311...319), nil, "__LINE__"),
+ SymbolNode(321...330)((321...322), (322...330), nil, "__FILE__"),
+ SymbolNode(332...345)((332...333), (333...345), nil, "__ENCODING__")]
+ )
+)
diff --git a/test/yarp/snapshots/ternary_operator.txt b/test/yarp/snapshots/ternary_operator.txt
new file mode 100644
index 0000000000..11d6495783
--- /dev/null
+++ b/test/yarp/snapshots/ternary_operator.txt
@@ -0,0 +1,134 @@
+ProgramNode(0...117)(
+ [],
+ StatementsNode(0...117)(
+ [IfNode(0...9)(
+ nil,
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(4...5)(
+ [CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "b")]
+ ),
+ ElseNode(6...9)(
+ (6...7),
+ StatementsNode(8...9)(
+ [CallNode(8...9)(nil, nil, (8...9), nil, nil, nil, nil, 0, "c")]
+ ),
+ nil
+ ),
+ nil
+ ),
+ IfNode(11...38)(
+ nil,
+ CallNode(11...12)(nil, nil, (11...12), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(15...25)(
+ [DefinedNode(15...25)(
+ nil,
+ CallNode(24...25)(nil, nil, (24...25), nil, nil, nil, nil, 0, "b"),
+ nil,
+ (15...23)
+ )]
+ ),
+ ElseNode(26...38)(
+ (26...27),
+ StatementsNode(28...38)(
+ [DefinedNode(28...38)(
+ nil,
+ CallNode(37...38)(
+ nil,
+ nil,
+ (37...38),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ nil,
+ (28...36)
+ )]
+ ),
+ nil
+ ),
+ nil
+ ),
+ IfNode(40...55)(
+ nil,
+ CallNode(40...46)(nil, nil, (40...46), nil, nil, nil, nil, 0, "empty?"),
+ StatementsNode(47...51)([TrueNode(47...51)()]),
+ ElseNode(51...55)(
+ (51...52),
+ StatementsNode(52...55)([NilNode(52...55)()]),
+ nil
+ ),
+ nil
+ ),
+ IfNode(57...73)(
+ nil,
+ CallNode(57...63)(nil, nil, (57...63), nil, nil, nil, nil, 0, "empty?"),
+ StatementsNode(64...69)([FalseNode(64...69)()]),
+ ElseNode(69...73)(
+ (69...70),
+ StatementsNode(70...73)([NilNode(70...73)()]),
+ nil
+ ),
+ nil
+ ),
+ IfNode(75...89)(
+ nil,
+ CallNode(75...81)(nil, nil, (75...81), nil, nil, nil, nil, 0, "empty?"),
+ StatementsNode(82...85)([NilNode(82...85)()]),
+ ElseNode(85...89)(
+ (85...86),
+ StatementsNode(86...89)([NilNode(86...89)()]),
+ nil
+ ),
+ nil
+ ),
+ IfNode(91...101)(
+ nil,
+ CallNode(91...93)(nil, nil, (91...93), nil, nil, nil, nil, 0, "a?"),
+ StatementsNode(94...97)([NilNode(94...97)()]),
+ ElseNode(97...101)(
+ (97...98),
+ StatementsNode(98...101)([NilNode(98...101)()]),
+ nil
+ ),
+ nil
+ ),
+ IfNode(103...117)(
+ nil,
+ CallNode(103...104)(nil, nil, (103...104), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(106...110)(
+ [CallNode(106...110)(
+ nil,
+ nil,
+ (106...110),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var1"
+ )]
+ ),
+ ElseNode(111...117)(
+ (111...112),
+ StatementsNode(113...117)(
+ [CallNode(113...117)(
+ nil,
+ nil,
+ (113...117),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "var2"
+ )]
+ ),
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/tilde_heredocs.txt b/test/yarp/snapshots/tilde_heredocs.txt
new file mode 100644
index 0000000000..fc51879e4f
--- /dev/null
+++ b/test/yarp/snapshots/tilde_heredocs.txt
@@ -0,0 +1,136 @@
+ProgramNode(0...387)(
+ [],
+ StatementsNode(0...387)(
+ [InterpolatedStringNode(0...15)(
+ (0...6),
+ [StringNode(7...11)(nil, (7...11), nil, "a\n")],
+ (11...15)
+ ),
+ InterpolatedStringNode(16...38)(
+ (16...22),
+ [StringNode(23...34)(nil, (23...34), nil, "\ta\n" + "b\n" + "\t\tc\n")],
+ (34...38)
+ ),
+ InterpolatedStringNode(39...59)(
+ (39...45),
+ [StringNode(46...48)(nil, (46...48), nil, ""),
+ EmbeddedStatementsNode(48...52)(
+ (48...50),
+ StatementsNode(50...51)([IntegerNode(50...51)()]),
+ (51...52)
+ ),
+ StringNode(52...55)(nil, (52...55), nil, " a\n")],
+ (55...59)
+ ),
+ InterpolatedStringNode(60...80)(
+ (60...66),
+ [StringNode(67...71)(nil, (67...71), nil, "a "),
+ EmbeddedStatementsNode(71...75)(
+ (71...73),
+ StatementsNode(73...74)([IntegerNode(73...74)()]),
+ (74...75)
+ ),
+ StringNode(75...76)(nil, (75...76), nil, "\n")],
+ (76...80)
+ ),
+ InterpolatedStringNode(81...102)(
+ (81...87),
+ [StringNode(88...93)(nil, (88...93), nil, " a\n"),
+ EmbeddedStatementsNode(93...97)(
+ (93...95),
+ StatementsNode(95...96)([IntegerNode(95...96)()]),
+ (96...97)
+ ),
+ StringNode(97...98)(nil, (97...98), nil, "\n")],
+ (98...102)
+ ),
+ InterpolatedStringNode(103...125)(
+ (103...109),
+ [StringNode(110...116)(nil, (110...116), nil, "a\n"),
+ EmbeddedStatementsNode(116...120)(
+ (116...118),
+ StatementsNode(118...119)([IntegerNode(118...119)()]),
+ (119...120)
+ ),
+ StringNode(120...121)(nil, (120...121), nil, "\n")],
+ (121...125)
+ ),
+ InterpolatedStringNode(126...145)(
+ (126...132),
+ [StringNode(133...141)(nil, (133...141), nil, "a\n" + "b\n")],
+ (141...145)
+ ),
+ InterpolatedStringNode(146...166)(
+ (146...152),
+ [StringNode(153...162)(nil, (153...162), nil, "a\n" + " b\n")],
+ (162...166)
+ ),
+ InterpolatedStringNode(167...187)(
+ (167...173),
+ [StringNode(174...183)(nil, (174...183), nil, "\ta\n" + "b\n")],
+ (183...187)
+ ),
+ InterpolatedStringNode(188...210)(
+ (188...196),
+ [StringNode(197...206)(nil, (197...206), nil, "a \#{1}\n")],
+ (206...210)
+ ),
+ InterpolatedStringNode(211...229)(
+ (211...217),
+ [StringNode(218...225)(nil, (218...225), nil, "a\n" + " b\n")],
+ (225...229)
+ ),
+ InterpolatedStringNode(230...248)(
+ (230...236),
+ [StringNode(237...244)(nil, (237...244), nil, " a\n" + "b\n")],
+ (244...248)
+ ),
+ InterpolatedStringNode(249...275)(
+ (249...255),
+ [StringNode(256...271)(nil, (256...271), nil, "a\n" + "b\n")],
+ (271...275)
+ ),
+ InterpolatedStringNode(276...296)(
+ (276...282),
+ [StringNode(283...292)(nil, (283...292), nil, "a\n" + "\n" + "b\n")],
+ (292...296)
+ ),
+ InterpolatedStringNode(297...317)(
+ (297...303),
+ [StringNode(304...313)(nil, (304...313), nil, "a\n" + "\n" + "b\n")],
+ (313...317)
+ ),
+ InterpolatedStringNode(318...340)(
+ (318...324),
+ [StringNode(325...336)(
+ nil,
+ (325...336),
+ nil,
+ "a\n" + "\n" + "\n" + "\n" + "b\n"
+ )],
+ (336...340)
+ ),
+ InterpolatedStringNode(341...365)(
+ (341...347),
+ [StringNode(348...351)(nil, (348...351), nil, "\n"),
+ EmbeddedStatementsNode(351...355)(
+ (351...353),
+ StatementsNode(353...354)([IntegerNode(353...354)()]),
+ (354...355)
+ ),
+ StringNode(355...357)(nil, (355...357), nil, "a\n")],
+ (357...365)
+ ),
+ InterpolatedStringNode(366...387)(
+ (366...372),
+ [StringNode(373...375)(nil, (373...375), nil, ""),
+ EmbeddedStatementsNode(375...379)(
+ (375...377),
+ StatementsNode(377...378)([IntegerNode(377...378)()]),
+ (378...379)
+ ),
+ StringNode(379...383)(nil, (379...383), nil, "\n" + "\tb\n")],
+ (383...387)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/undef.txt b/test/yarp/snapshots/undef.txt
new file mode 100644
index 0000000000..d3173a3f1c
--- /dev/null
+++ b/test/yarp/snapshots/undef.txt
@@ -0,0 +1,50 @@
+ProgramNode(0...116)(
+ [],
+ StatementsNode(0...116)(
+ [UndefNode(0...7)([SymbolNode(6...7)(nil, (6...7), nil, "a")], (0...5)),
+ UndefNode(9...19)(
+ [SymbolNode(15...16)(nil, (15...16), nil, "a"),
+ SymbolNode(18...19)(nil, (18...19), nil, "b")],
+ (9...14)
+ ),
+ UndefNode(21...29)(
+ [SymbolNode(27...29)(nil, (27...29), nil, "if")],
+ (21...26)
+ ),
+ UndefNode(31...40)(
+ [SymbolNode(37...40)(nil, (37...40), nil, "<=>")],
+ (31...36)
+ ),
+ UndefNode(42...50)(
+ [SymbolNode(48...50)((48...49), (49...50), nil, "a")],
+ (42...47)
+ ),
+ UndefNode(52...68)(
+ [SymbolNode(58...60)((58...59), (59...60), nil, "a"),
+ SymbolNode(62...64)((62...63), (63...64), nil, "b"),
+ SymbolNode(66...68)((66...67), (67...68), nil, "c")],
+ (52...57)
+ ),
+ UndefNode(70...82)(
+ [SymbolNode(76...82)((76...78), (78...81), (81...82), "abc")],
+ (70...75)
+ ),
+ UndefNode(84...100)(
+ [InterpolatedSymbolNode(90...100)(
+ (90...92),
+ [StringNode(92...95)(nil, (92...95), nil, "abc"),
+ EmbeddedStatementsNode(95...99)(
+ (95...97),
+ StatementsNode(97...98)([IntegerNode(97...98)()]),
+ (98...99)
+ )],
+ (99...100)
+ )],
+ (84...89)
+ ),
+ UndefNode(102...116)(
+ [SymbolNode(108...116)(nil, (108...116), nil, "Constant")],
+ (102...107)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unescaping.txt b/test/yarp/snapshots/unescaping.txt
new file mode 100644
index 0000000000..e63e8eb072
--- /dev/null
+++ b/test/yarp/snapshots/unescaping.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...55)(
+ [],
+ StatementsNode(0...55)(
+ [ArrayNode(0...10)(
+ [StringNode(1...9)((1...2), (2...8), (8...9), "\u0003{1}")],
+ (0...1),
+ (9...10)
+ ),
+ RegularExpressionNode(12...20)(
+ (12...13),
+ (13...19),
+ (19...20),
+ "\u0003{1}",
+ 0
+ ),
+ StringNode(22...30)((22...23), (23...29), (29...30), "\u0003{1}"),
+ InterpolatedStringNode(32...55)(
+ (32...39),
+ [StringNode(40...50)(nil, (40...50), nil, "\u0003{1}\n")],
+ (50...55)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unless.txt b/test/yarp/snapshots/unless.txt
new file mode 100644
index 0000000000..66d61a7307
--- /dev/null
+++ b/test/yarp/snapshots/unless.txt
@@ -0,0 +1,83 @@
+ProgramNode(0...141)(
+ [],
+ StatementsNode(0...141)(
+ [UnlessNode(0...19)(
+ (0...6),
+ TrueNode(7...11)(),
+ StatementsNode(13...14)([IntegerNode(13...14)()]),
+ nil,
+ (16...19)
+ ),
+ UnlessNode(21...45)(
+ (21...27),
+ TrueNode(28...32)(),
+ StatementsNode(33...34)([IntegerNode(33...34)()]),
+ ElseNode(35...45)(
+ (35...39),
+ StatementsNode(40...41)([IntegerNode(40...41)()]),
+ (42...45)
+ ),
+ (42...45)
+ ),
+ UnlessNode(47...60)(
+ (49...55),
+ TrueNode(56...60)(),
+ StatementsNode(47...48)([IntegerNode(47...48)()]),
+ nil,
+ nil
+ ),
+ UnlessNode(62...79)(
+ (68...74),
+ TrueNode(75...79)(),
+ StatementsNode(62...67)([BreakNode(62...67)(nil, (62...67))]),
+ nil,
+ nil
+ ),
+ UnlessNode(81...97)(
+ (86...92),
+ TrueNode(93...97)(),
+ StatementsNode(81...85)([NextNode(81...85)(nil, (81...85))]),
+ nil,
+ nil
+ ),
+ UnlessNode(99...117)(
+ (106...112),
+ TrueNode(113...117)(),
+ StatementsNode(99...105)([ReturnNode(99...105)((99...105), nil)]),
+ nil,
+ nil
+ ),
+ UnlessNode(119...141)(
+ (130...136),
+ CallNode(137...141)(
+ nil,
+ nil,
+ (137...141),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar?"
+ ),
+ StatementsNode(119...129)(
+ [CallNode(119...129)(
+ nil,
+ nil,
+ (119...122),
+ nil,
+ ArgumentsNode(123...129)(
+ [SymbolNode(123...125)((123...124), (124...125), nil, "a"),
+ SymbolNode(127...129)((127...128), (128...129), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/alias.txt b/test/yarp/snapshots/unparser/corpus/literal/alias.txt
new file mode 100644
index 0000000000..cf6c04cd2e
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/alias.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [AliasNode(0...15)(
+ GlobalVariableReadNode(6...10)(),
+ GlobalVariableReadNode(11...15)(),
+ (0...5)
+ ),
+ AliasNode(16...31)(
+ SymbolNode(22...26)((22...23), (23...26), nil, "foo"),
+ SymbolNode(27...31)((27...28), (28...31), nil, "bar"),
+ (16...21)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/assignment.txt b/test/yarp/snapshots/unparser/corpus/literal/assignment.txt
new file mode 100644
index 0000000000..1e06024e29
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/assignment.txt
@@ -0,0 +1,718 @@
+ProgramNode(0...719)(
+ [:a, :b, :foo, :c, :x],
+ StatementsNode(0...719)(
+ [GlobalVariableWriteNode(0...6)((0...2), (3...4), IntegerNode(5...6)()),
+ MultiWriteNode(8...24)(
+ [GlobalVariableWriteNode(8...10)((8...10), nil, nil),
+ GlobalVariableWriteNode(12...14)((12...14), nil, nil)],
+ (16...17),
+ ArrayNode(18...24)(
+ [IntegerNode(19...20)(), IntegerNode(22...23)()],
+ (18...19),
+ (23...24)
+ ),
+ (7...8),
+ (14...15)
+ ),
+ MultiWriteNode(27...38)(
+ [MultiWriteNode(27...29)(
+ [LocalVariableWriteNode(27...28)(:a, 0, nil, (27...28), nil),
+ SplatNode(28...29)((28...29), nil)],
+ nil,
+ nil,
+ (26...27),
+ (29...30)
+ ),
+ LocalVariableWriteNode(32...33)(:b, 0, nil, (32...33), nil)],
+ (35...36),
+ IntegerNode(37...38)(),
+ (25...26),
+ (33...34)
+ ),
+ MultiWriteNode(40...48)(
+ [SplatNode(40...42)(
+ (40...41),
+ LocalVariableWriteNode(41...42)(:a, 0, nil, (41...42), nil)
+ )],
+ (44...45),
+ ArrayNode(46...48)([], (46...47), (47...48)),
+ (39...40),
+ (42...43)
+ ),
+ MultiWriteNode(50...64)(
+ [SplatNode(50...54)(
+ (50...51),
+ LocalVariableWriteNode(51...54)(:foo, 0, nil, (51...54), nil)
+ )],
+ (56...57),
+ ArrayNode(58...64)(
+ [IntegerNode(59...60)(), IntegerNode(62...63)()],
+ (58...59),
+ (63...64)
+ ),
+ (49...50),
+ (54...55)
+ ),
+ MultiWriteNode(66...84)(
+ [ClassVariableWriteNode(66...69)((66...69), nil, nil),
+ ClassVariableWriteNode(71...74)((71...74), nil, nil)],
+ (76...77),
+ ArrayNode(78...84)(
+ [IntegerNode(79...80)(), IntegerNode(82...83)()],
+ (78...79),
+ (83...84)
+ ),
+ (65...66),
+ (74...75)
+ ),
+ MultiWriteNode(86...102)(
+ [InstanceVariableWriteNode(86...88)((86...88), nil, nil),
+ InstanceVariableWriteNode(90...92)((90...92), nil, nil)],
+ (94...95),
+ ArrayNode(96...102)(
+ [IntegerNode(97...98)(), IntegerNode(100...101)()],
+ (96...97),
+ (101...102)
+ ),
+ (85...86),
+ (92...93)
+ ),
+ MultiWriteNode(104...128)(
+ [LocalVariableWriteNode(104...105)(:a, 0, nil, (104...105), nil),
+ MultiWriteNode(108...113)(
+ [LocalVariableWriteNode(108...109)(:b, 0, nil, (108...109), nil),
+ LocalVariableWriteNode(111...112)(:c, 0, nil, (111...112), nil)],
+ nil,
+ nil,
+ (107...108),
+ (112...113)
+ )],
+ (115...116),
+ ArrayNode(117...128)(
+ [IntegerNode(118...119)(),
+ ArrayNode(121...127)(
+ [IntegerNode(122...123)(), IntegerNode(125...126)()],
+ (121...122),
+ (126...127)
+ )],
+ (117...118),
+ (127...128)
+ ),
+ (103...104),
+ (113...114)
+ ),
+ MultiWriteNode(130...144)(
+ [LocalVariableWriteNode(130...131)(:a, 0, nil, (130...131), nil),
+ SplatNode(133...134)((133...134), nil)],
+ (136...137),
+ ArrayNode(138...144)(
+ [IntegerNode(139...140)(), IntegerNode(142...143)()],
+ (138...139),
+ (143...144)
+ ),
+ (129...130),
+ (134...135)
+ ),
+ MultiWriteNode(146...163)(
+ [LocalVariableWriteNode(146...147)(:a, 0, nil, (146...147), nil),
+ SplatNode(149...153)(
+ (149...150),
+ LocalVariableWriteNode(150...153)(:foo, 0, nil, (150...153), nil)
+ )],
+ (155...156),
+ ArrayNode(157...163)(
+ [IntegerNode(158...159)(), IntegerNode(161...162)()],
+ (157...158),
+ (162...163)
+ ),
+ (145...146),
+ (153...154)
+ ),
+ MultiWriteNode(165...179)(
+ [LocalVariableWriteNode(165...166)(:a, 0, nil, (165...166), nil),
+ LocalVariableWriteNode(168...169)(:b, 0, nil, (168...169), nil)],
+ (171...172),
+ ArrayNode(173...179)(
+ [IntegerNode(174...175)(), IntegerNode(177...178)()],
+ (173...174),
+ (178...179)
+ ),
+ (164...165),
+ (169...170)
+ ),
+ MultiWriteNode(181...192)(
+ [LocalVariableWriteNode(181...182)(:a, 0, nil, (181...182), nil),
+ LocalVariableWriteNode(184...185)(:b, 0, nil, (184...185), nil)],
+ (187...188),
+ LocalVariableReadNode(189...192)(:foo, 0),
+ (180...181),
+ (185...186)
+ ),
+ MultiWriteNode(194...203)(
+ [LocalVariableWriteNode(194...195)(:a, 0, nil, (194...195), nil),
+ SplatNode(195...196)((195...196), nil)],
+ (198...199),
+ LocalVariableReadNode(200...203)(:foo, 0),
+ (193...194),
+ (196...197)
+ ),
+ MultiWriteNode(205...227)(
+ [CallNode(205...210)(
+ LocalVariableReadNode(205...206)(:a, 0),
+ (206...207),
+ (207...210),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo="
+ ),
+ CallNode(212...217)(
+ LocalVariableReadNode(212...213)(:a, 0),
+ (213...214),
+ (214...217),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar="
+ )],
+ (219...220),
+ ArrayNode(221...227)(
+ [IntegerNode(222...223)(), IntegerNode(225...226)()],
+ (221...222),
+ (226...227)
+ ),
+ (204...205),
+ (217...218)
+ ),
+ MultiWriteNode(229...252)(
+ [CallNode(229...236)(
+ LocalVariableReadNode(229...230)(:a, 0),
+ nil,
+ (230...236),
+ (230...231),
+ ArgumentsNode(231...235)(
+ [SplatNode(231...235)(
+ (231...232),
+ LocalVariableReadNode(232...235)(:foo, 0)
+ )]
+ ),
+ (235...236),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(238...242)(
+ LocalVariableReadNode(238...239)(:a, 0),
+ nil,
+ (239...242),
+ (239...240),
+ ArgumentsNode(240...241)([IntegerNode(240...241)()]),
+ (241...242),
+ nil,
+ 0,
+ "[]="
+ )],
+ (244...245),
+ ArrayNode(246...252)(
+ [IntegerNode(247...248)(), IntegerNode(250...251)()],
+ (246...247),
+ (251...252)
+ ),
+ (228...229),
+ (242...243)
+ ),
+ MultiWriteNode(254...274)(
+ [CallNode(254...258)(
+ LocalVariableReadNode(254...255)(:a, 0),
+ nil,
+ (255...258),
+ (255...256),
+ ArgumentsNode(256...257)([IntegerNode(256...257)()]),
+ (257...258),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(260...264)(
+ LocalVariableReadNode(260...261)(:a, 0),
+ nil,
+ (261...264),
+ (261...262),
+ ArgumentsNode(262...263)([IntegerNode(262...263)()]),
+ (263...264),
+ nil,
+ 0,
+ "[]="
+ )],
+ (266...267),
+ ArrayNode(268...274)(
+ [IntegerNode(269...270)(), IntegerNode(272...273)()],
+ (268...269),
+ (273...274)
+ ),
+ (253...254),
+ (264...265)
+ ),
+ MultiWriteNode(276...287)(
+ [SplatNode(276...282)(
+ (276...277),
+ CallNode(277...282)(
+ LocalVariableReadNode(277...278)(:c, 0),
+ (278...279),
+ (279...282),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo="
+ )
+ )],
+ (284...285),
+ IntegerNode(286...287)(),
+ (275...276),
+ (282...283)
+ ),
+ ConstantPathWriteNode(288...301)(
+ ConstantPathNode(288...293)(
+ nil,
+ ConstantReadNode(290...293)(),
+ (288...290)
+ ),
+ (294...295),
+ ConstantPathNode(296...301)(
+ nil,
+ ConstantReadNode(298...301)(),
+ (296...298)
+ )
+ ),
+ ClassVariableWriteNode(302...309)(
+ (302...305),
+ IntegerNode(308...309)(),
+ (306...307)
+ ),
+ InstanceVariableWriteNode(310...316)(
+ (310...312),
+ IntegerNode(315...316)(),
+ (313...314)
+ ),
+ ConstantPathWriteNode(317...326)(
+ ConstantReadNode(317...322)(),
+ (323...324),
+ IntegerNode(325...326)()
+ ),
+ ConstantPathWriteNode(327...350)(
+ ConstantPathNode(327...346)(
+ ConstantPathNode(327...339)(
+ ConstantReadNode(327...331)(),
+ ConstantReadNode(333...339)(),
+ (331...333)
+ ),
+ ConstantReadNode(341...346)(),
+ (339...341)
+ ),
+ (347...348),
+ IntegerNode(349...350)()
+ ),
+ LocalVariableWriteNode(351...367)(
+ :a,
+ 0,
+ ParenthesesNode(355...367)(
+ StatementsNode(357...366)(
+ [MultiWriteNode(357...366)(
+ [LocalVariableWriteNode(357...358)(:b, 0, nil, (357...358), nil),
+ LocalVariableWriteNode(360...361)(
+ :c,
+ 0,
+ nil,
+ (360...361),
+ nil
+ )],
+ (363...364),
+ IntegerNode(365...366)(),
+ (356...357),
+ (361...362)
+ )]
+ ),
+ (355...356),
+ (366...367)
+ ),
+ (351...352),
+ (353...354)
+ ),
+ LocalVariableWriteNode(368...373)(
+ :a,
+ 0,
+ IntegerNode(372...373)(),
+ (368...369),
+ (370...371)
+ ),
+ LocalVariableWriteNode(374...385)(
+ :foo,
+ 0,
+ CallNode(380...385)(
+ nil,
+ nil,
+ (380...383),
+ (383...384),
+ nil,
+ (384...385),
+ nil,
+ 0,
+ "foo"
+ ),
+ (374...377),
+ (378...379)
+ ),
+ CallNode(386...395)(
+ LocalVariableReadNode(386...389)(:foo, 0),
+ (389...390),
+ (390...393),
+ (393...394),
+ nil,
+ (394...395),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(396...409)(
+ LocalVariableReadNode(396...399)(:foo, 0),
+ (399...400),
+ (400...403),
+ (403...404),
+ ArgumentsNode(404...408)(
+ [IntegerNode(404...405)(), IntegerNode(407...408)()]
+ ),
+ (408...409),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(410...421)(
+ LocalVariableReadNode(410...413)(:foo, 0),
+ (413...414),
+ (414...417),
+ nil,
+ ArgumentsNode(417...421)([TrueNode(417...421)()]),
+ nil,
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(422...441)(
+ LocalVariableReadNode(422...425)(:foo, 0),
+ nil,
+ (425...433),
+ (425...426),
+ ArgumentsNode(426...441)(
+ [SplatNode(426...432)(
+ (426...427),
+ CallNode(427...432)(
+ nil,
+ nil,
+ (427...432),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "index"
+ )
+ ),
+ CallNode(436...441)(
+ nil,
+ nil,
+ (436...441),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "value"
+ )]
+ ),
+ (432...433),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(442...459)(
+ LocalVariableReadNode(442...445)(:foo, 0),
+ nil,
+ (445...451),
+ (445...446),
+ ArgumentsNode(446...459)(
+ [RangeNode(446...450)(
+ IntegerNode(446...447)(),
+ IntegerNode(449...450)(),
+ (447...449),
+ 0
+ ),
+ CallNode(454...459)(
+ nil,
+ nil,
+ (454...459),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "value"
+ )]
+ ),
+ (450...451),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(460...469)(
+ LocalVariableReadNode(460...463)(:foo, 0),
+ nil,
+ (463...465),
+ (463...464),
+ ArgumentsNode(468...469)([IntegerNode(468...469)()]),
+ (464...465),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(470...487)(
+ LocalVariableReadNode(470...473)(:foo, 0),
+ nil,
+ (473...479),
+ (473...474),
+ ArgumentsNode(474...487)(
+ [LocalVariableReadNode(474...475)(:a, 0),
+ LocalVariableReadNode(477...478)(:b, 0),
+ CallNode(482...487)(
+ nil,
+ nil,
+ (482...487),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "value"
+ )]
+ ),
+ (478...479),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(488...506)(
+ LocalVariableReadNode(488...491)(:foo, 0),
+ nil,
+ (491...498),
+ (491...492),
+ ArgumentsNode(492...506)(
+ [CallNode(492...497)(
+ nil,
+ nil,
+ (492...497),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "index"
+ ),
+ CallNode(501...506)(
+ nil,
+ nil,
+ (501...506),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "value"
+ )]
+ ),
+ (497...498),
+ nil,
+ 0,
+ "[]="
+ ),
+ LocalVariableWriteNode(507...514)(
+ :x,
+ 0,
+ StringNode(511...514)((511...513), (513...513), (513...514), ""),
+ (507...508),
+ (509...510)
+ ),
+ CallNode(515...522)(
+ LocalVariableReadNode(515...516)(:x, 0),
+ (516...517),
+ (517...518),
+ nil,
+ ArgumentsNode(519...522)(
+ [StringNode(519...522)((519...521), (521...521), (521...522), "")]
+ ),
+ nil,
+ nil,
+ 0,
+ "x="
+ ),
+ CallNode(523...535)(
+ LocalVariableReadNode(523...524)(:x, 0),
+ nil,
+ (524...529),
+ (524...525),
+ ArgumentsNode(525...535)(
+ [StringNode(525...528)((525...527), (527...527), (527...528), ""),
+ CallNode(532...535)(
+ nil,
+ nil,
+ (532...535),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (528...529),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallOperatorOrWriteNode(536...550)(
+ CallNode(536...542)(
+ LocalVariableReadNode(536...537)(:a, 0),
+ nil,
+ (537...542),
+ (537...538),
+ ArgumentsNode(538...541)(
+ [StringNode(538...541)((538...540), (540...540), (540...541), "")]
+ ),
+ (541...542),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(547...550)(
+ nil,
+ nil,
+ (547...550),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (543...546)
+ ),
+ InstanceVariableOperatorOrWriteNode(551...561)(
+ (551...553),
+ (554...557),
+ StringNode(558...561)((558...560), (560...560), (560...561), "")
+ ),
+ LocalVariableWriteNode(562...591)(
+ :x,
+ 0,
+ InterpolatedStringNode(566...591)(
+ (566...576),
+ [StringNode(577...579)(nil, (577...579), nil, " "),
+ EmbeddedStatementsNode(579...582)((579...581), nil, (581...582)),
+ StringNode(582...583)(nil, (582...583), nil, "\n")],
+ (583...591)
+ ),
+ (562...563),
+ (564...565)
+ ),
+ CallNode(591...620)(
+ LocalVariableReadNode(591...592)(:x, 0),
+ (592...593),
+ (593...594),
+ nil,
+ ArgumentsNode(595...620)(
+ [InterpolatedStringNode(595...620)(
+ (595...605),
+ [StringNode(606...608)(nil, (606...608), nil, " "),
+ EmbeddedStatementsNode(608...611)((608...610), nil, (610...611)),
+ StringNode(611...612)(nil, (611...612), nil, "\n")],
+ (612...620)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "x="
+ ),
+ CallNode(620...651)(
+ LocalVariableReadNode(620...621)(:x, 0),
+ nil,
+ (621...623),
+ (621...622),
+ ArgumentsNode(626...651)(
+ [InterpolatedStringNode(626...651)(
+ (626...636),
+ [StringNode(637...639)(nil, (637...639), nil, " "),
+ EmbeddedStatementsNode(639...642)((639...641), nil, (641...642)),
+ StringNode(642...643)(nil, (642...643), nil, "\n")],
+ (643...651)
+ )]
+ ),
+ (622...623),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallOperatorOrWriteNode(651...672)(
+ CallNode(651...664)(
+ LocalVariableReadNode(651...652)(:a, 0),
+ nil,
+ (652...664),
+ (652...653),
+ ArgumentsNode(653...687)(
+ [InterpolatedStringNode(653...687)(
+ (653...663),
+ [StringNode(673...675)(nil, (673...675), nil, " "),
+ EmbeddedStatementsNode(675...678)(
+ (675...677),
+ nil,
+ (677...678)
+ ),
+ StringNode(678...679)(nil, (678...679), nil, "\n")],
+ (679...687)
+ )]
+ ),
+ (663...664),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(669...672)(
+ nil,
+ nil,
+ (669...672),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (665...668)
+ ),
+ InstanceVariableOperatorOrWriteNode(687...719)(
+ (687...689),
+ (690...693),
+ InterpolatedStringNode(694...719)(
+ (694...704),
+ [StringNode(705...707)(nil, (705...707), nil, " "),
+ EmbeddedStatementsNode(707...710)((707...709), nil, (709...710)),
+ StringNode(710...711)(nil, (710...711), nil, "\n")],
+ (711...719)
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/block.txt b/test/yarp/snapshots/unparser/corpus/literal/block.txt
new file mode 100644
index 0000000000..7d4bd2c4e6
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/block.txt
@@ -0,0 +1,1286 @@
+ProgramNode(0...737)(
+ [],
+ StatementsNode(0...737)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...7)([], nil, nil, (4...5), (6...7)),
+ 0,
+ "foo"
+ ),
+ CallNode(8...19)(
+ nil,
+ nil,
+ (8...11),
+ nil,
+ nil,
+ nil,
+ BlockNode(12...19)(
+ [:a],
+ BlockParametersNode(14...17)(
+ ParametersNode(15...16)(
+ [RequiredParameterNode(15...16)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (14...15),
+ (16...17)
+ ),
+ nil,
+ (12...13),
+ (18...19)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(20...32)(
+ nil,
+ nil,
+ (20...23),
+ nil,
+ nil,
+ nil,
+ BlockNode(24...32)(
+ [:a],
+ BlockParametersNode(26...30)(
+ ParametersNode(27...29)(
+ [RequiredParameterNode(27...28)(:a)],
+ [],
+ [],
+ RestParameterNode(28...29)((28...29), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (26...27),
+ (29...30)
+ ),
+ nil,
+ (24...25),
+ (31...32)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(33...48)(
+ nil,
+ nil,
+ (33...36),
+ nil,
+ nil,
+ nil,
+ BlockNode(37...48)(
+ [:a, :x],
+ BlockParametersNode(39...46)(
+ ParametersNode(40...42)(
+ [RequiredParameterNode(40...41)(:a)],
+ [],
+ [],
+ RestParameterNode(41...42)((41...42), nil),
+ [],
+ nil,
+ nil
+ ),
+ [(44...45)],
+ (39...40),
+ (45...46)
+ ),
+ nil,
+ (37...38),
+ (47...48)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(49...63)(
+ nil,
+ nil,
+ (49...52),
+ nil,
+ nil,
+ nil,
+ BlockNode(53...63)(
+ [:a, :b],
+ BlockParametersNode(55...61)(
+ ParametersNode(56...60)(
+ [RequiredParameterNode(56...57)(:a),
+ RequiredParameterNode(59...60)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (55...56),
+ (60...61)
+ ),
+ nil,
+ (53...54),
+ (62...63)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(64...80)(
+ nil,
+ nil,
+ (64...67),
+ (67...68),
+ ArgumentsNode(68...69)([IntegerNode(68...69)()]),
+ (69...70),
+ BlockNode(71...80)(
+ [],
+ nil,
+ StatementsNode(75...78)([NilNode(75...78)()]),
+ (71...72),
+ (79...80)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(81...102)(
+ nil,
+ nil,
+ (81...84),
+ nil,
+ nil,
+ nil,
+ BlockNode(85...102)(
+ [:a, :b],
+ BlockParametersNode(87...94)(
+ ParametersNode(88...93)(
+ [RequiredParameterNode(88...89)(:a)],
+ [],
+ [],
+ RestParameterNode(91...93)((91...92), (92...93)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (87...88),
+ (93...94)
+ ),
+ StatementsNode(97...100)([NilNode(97...100)()]),
+ (85...86),
+ (101...102)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(103...123)(
+ nil,
+ nil,
+ (103...106),
+ nil,
+ nil,
+ nil,
+ BlockNode(107...123)(
+ [:a, :*],
+ BlockParametersNode(109...115)(
+ ParametersNode(110...114)(
+ [RequiredParameterNode(110...111)(:a)],
+ [],
+ [],
+ RestParameterNode(113...114)((113...114), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (109...110),
+ (114...115)
+ ),
+ StatementsNode(118...121)([NilNode(118...121)()]),
+ (107...108),
+ (122...123)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(124...137)(
+ nil,
+ nil,
+ (124...127),
+ nil,
+ nil,
+ nil,
+ BlockNode(128...137)(
+ [],
+ nil,
+ StatementsNode(132...135)(
+ [CallNode(132...135)(
+ nil,
+ nil,
+ (132...135),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (128...129),
+ (136...137)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(138...165)(
+ CallNode(138...141)(
+ nil,
+ nil,
+ (138...141),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (141...142),
+ (142...145),
+ nil,
+ nil,
+ nil,
+ BlockNode(146...165)(
+ [:a, :b, :c],
+ BlockParametersNode(148...159)(
+ ParametersNode(149...158)(
+ [RequiredDestructuredParameterNode(149...155)(
+ [RequiredParameterNode(150...151)(:a),
+ RequiredParameterNode(153...154)(:b)],
+ (149...150),
+ (154...155)
+ ),
+ RequiredParameterNode(157...158)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (148...149),
+ (158...159)
+ ),
+ StatementsNode(162...163)(
+ [CallNode(162...163)(
+ nil,
+ nil,
+ (162...163),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (146...147),
+ (164...165)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(166...185)(
+ CallNode(166...169)(
+ nil,
+ nil,
+ (166...169),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (169...170),
+ (170...173),
+ nil,
+ nil,
+ nil,
+ BlockNode(174...185)(
+ [:a, :b],
+ BlockParametersNode(176...183)(
+ ParametersNode(177...179)(
+ [],
+ [],
+ [],
+ RestParameterNode(177...179)((177...178), (178...179)),
+ [],
+ nil,
+ nil
+ ),
+ [(181...182)],
+ (176...177),
+ (182...183)
+ ),
+ nil,
+ (174...175),
+ (184...185)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(186...204)(
+ CallNode(186...189)(
+ nil,
+ nil,
+ (186...189),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (189...190),
+ (190...193),
+ nil,
+ nil,
+ nil,
+ BlockNode(194...204)(
+ [:a, :b],
+ BlockParametersNode(196...202)(
+ ParametersNode(197...198)(
+ [RequiredParameterNode(197...198)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(200...201)],
+ (196...197),
+ (201...202)
+ ),
+ nil,
+ (194...195),
+ (203...204)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(205...225)(
+ CallNode(205...208)(
+ nil,
+ nil,
+ (205...208),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (208...209),
+ (209...212),
+ nil,
+ nil,
+ nil,
+ BlockNode(213...225)(
+ [:a, :b],
+ BlockParametersNode(215...223)(
+ nil,
+ [(218...219), (221...222)],
+ (215...216),
+ (222...223)
+ ),
+ nil,
+ (213...214),
+ (224...225)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(226...245)(
+ CallNode(226...229)(
+ nil,
+ nil,
+ (226...229),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (229...230),
+ (230...233),
+ nil,
+ nil,
+ nil,
+ BlockNode(234...245)(
+ [:*],
+ BlockParametersNode(236...239)(
+ ParametersNode(237...238)(
+ [],
+ [],
+ [],
+ RestParameterNode(237...238)((237...238), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (236...237),
+ (238...239)
+ ),
+ StatementsNode(242...243)(
+ [CallNode(242...243)(
+ nil,
+ nil,
+ (242...243),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (234...235),
+ (244...245)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(246...267)(
+ CallNode(246...249)(
+ nil,
+ nil,
+ (246...249),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (249...250),
+ (250...253),
+ nil,
+ nil,
+ nil,
+ BlockNode(254...267)(
+ [],
+ BlockParametersNode(256...261)(
+ ParametersNode(257...260)(
+ [RequiredDestructuredParameterNode(257...260)(
+ [SplatNode(258...259)((258...259), nil)],
+ (257...258),
+ (259...260)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (256...257),
+ (260...261)
+ ),
+ StatementsNode(264...265)(
+ [CallNode(264...265)(
+ nil,
+ nil,
+ (264...265),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (254...255),
+ (266...267)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(268...291)(
+ CallNode(268...271)(
+ nil,
+ nil,
+ (268...271),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (271...272),
+ (272...275),
+ nil,
+ nil,
+ nil,
+ BlockNode(276...291)(
+ [],
+ BlockParametersNode(278...285)(
+ ParametersNode(279...284)(
+ [RequiredDestructuredParameterNode(279...284)(
+ [RequiredDestructuredParameterNode(280...283)(
+ [SplatNode(281...282)((281...282), nil)],
+ (280...281),
+ (282...283)
+ )],
+ (279...280),
+ (283...284)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (278...279),
+ (284...285)
+ ),
+ StatementsNode(288...289)(
+ [CallNode(288...289)(
+ nil,
+ nil,
+ (288...289),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (276...277),
+ (290...291)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(292...318)(
+ CallNode(292...295)(
+ nil,
+ nil,
+ (292...295),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (295...296),
+ (296...299),
+ nil,
+ nil,
+ nil,
+ BlockNode(300...318)(
+ [:a],
+ BlockParametersNode(302...312)(
+ ParametersNode(303...311)(
+ [RequiredDestructuredParameterNode(303...311)(
+ [RequiredParameterNode(304...305)(:a),
+ RequiredDestructuredParameterNode(307...310)(
+ [SplatNode(308...309)((308...309), nil)],
+ (307...308),
+ (309...310)
+ )],
+ (303...304),
+ (310...311)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (302...303),
+ (311...312)
+ ),
+ StatementsNode(315...316)(
+ [CallNode(315...316)(
+ nil,
+ nil,
+ (315...316),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (300...301),
+ (317...318)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(319...343)(
+ CallNode(319...322)(
+ nil,
+ nil,
+ (319...322),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (322...323),
+ (323...326),
+ nil,
+ nil,
+ nil,
+ BlockNode(327...343)(
+ [:a, :b],
+ BlockParametersNode(329...337)(
+ ParametersNode(330...336)(
+ [RequiredDestructuredParameterNode(330...336)(
+ [RequiredParameterNode(331...332)(:a),
+ RequiredParameterNode(334...335)(:b)],
+ (330...331),
+ (335...336)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (329...330),
+ (336...337)
+ ),
+ StatementsNode(340...341)(
+ [CallNode(340...341)(
+ nil,
+ nil,
+ (340...341),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (327...328),
+ (342...343)
+ ),
+ 0,
+ "bar"
+ ),
+ CallNode(344...359)(
+ CallNode(344...355)(
+ CallNode(344...347)(
+ nil,
+ nil,
+ (344...347),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (347...348),
+ (348...351),
+ nil,
+ nil,
+ nil,
+ BlockNode(352...355)([], nil, nil, (352...353), (354...355)),
+ 0,
+ "bar"
+ ),
+ (355...356),
+ (356...359),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(360...390)(
+ nil,
+ nil,
+ (360...361),
+ nil,
+ nil,
+ nil,
+ BlockNode(362...390)(
+ [:e],
+ nil,
+ BeginNode(365...390)(
+ nil,
+ nil,
+ RescueNode(365...386)(
+ (365...371),
+ [ConstantReadNode(372...381)()],
+ (382...384),
+ LocalVariableWriteNode(385...386)(:e, 0, nil, (385...386), nil),
+ nil,
+ nil
+ ),
+ nil,
+ nil,
+ (387...390)
+ ),
+ (362...364),
+ (387...390)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(391...435)(
+ nil,
+ nil,
+ (391...392),
+ nil,
+ nil,
+ nil,
+ BlockNode(393...435)(
+ [:bar],
+ nil,
+ BeginNode(398...435)(
+ nil,
+ StatementsNode(398...401)(
+ [CallNode(398...401)(
+ nil,
+ nil,
+ (398...401),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ RescueNode(402...431)(
+ (402...408),
+ [ConstantReadNode(409...418)()],
+ (419...421),
+ LocalVariableWriteNode(422...425)(:bar, 0, nil, (422...425), nil),
+ StatementsNode(428...431)(
+ [LocalVariableReadNode(428...431)(:bar, 0)]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (432...435)
+ ),
+ (393...395),
+ (432...435)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(436...479)(
+ nil,
+ nil,
+ (436...437),
+ nil,
+ nil,
+ nil,
+ BlockNode(438...479)(
+ [],
+ nil,
+ BeginNode(443...479)(
+ nil,
+ StatementsNode(443...446)(
+ [CallNode(443...446)(
+ nil,
+ nil,
+ (443...446),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(447...475)(
+ (447...453),
+ [ConstantReadNode(454...463)(),
+ SplatNode(465...469)(
+ (465...466),
+ CallNode(466...469)(
+ nil,
+ nil,
+ (466...469),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ nil,
+ nil,
+ StatementsNode(472...475)(
+ [CallNode(472...475)(
+ nil,
+ nil,
+ (472...475),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (476...479)
+ ),
+ (438...440),
+ (476...479)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(480...536)(
+ nil,
+ nil,
+ (480...481),
+ nil,
+ nil,
+ nil,
+ BlockNode(482...536)(
+ [:exception],
+ nil,
+ BeginNode(487...536)(
+ nil,
+ StatementsNode(487...490)(
+ [CallNode(487...490)(
+ nil,
+ nil,
+ (487...490),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(491...532)(
+ (491...497),
+ [ConstantReadNode(498...507)(),
+ SplatNode(509...513)(
+ (509...510),
+ CallNode(510...513)(
+ nil,
+ nil,
+ (510...513),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ (514...516),
+ LocalVariableWriteNode(517...526)(
+ :exception,
+ 0,
+ nil,
+ (517...526),
+ nil
+ ),
+ StatementsNode(529...532)(
+ [CallNode(529...532)(
+ nil,
+ nil,
+ (529...532),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (533...536)
+ ),
+ (482...484),
+ (533...536)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(537...569)(
+ nil,
+ nil,
+ (537...538),
+ nil,
+ nil,
+ nil,
+ BlockNode(539...569)(
+ [],
+ nil,
+ BeginNode(544...569)(
+ nil,
+ StatementsNode(544...547)(
+ [CallNode(544...547)(
+ nil,
+ nil,
+ (544...547),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(548...565)(
+ (548...554),
+ [SplatNode(555...559)(
+ (555...556),
+ CallNode(556...559)(
+ nil,
+ nil,
+ (556...559),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ nil,
+ nil,
+ StatementsNode(562...565)(
+ [CallNode(562...565)(
+ nil,
+ nil,
+ (562...565),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (566...569)
+ ),
+ (539...541),
+ (566...569)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(570...601)(
+ nil,
+ nil,
+ (570...571),
+ nil,
+ nil,
+ nil,
+ BlockNode(572...601)(
+ [],
+ nil,
+ BeginNode(577...601)(
+ nil,
+ StatementsNode(577...580)(
+ [CallNode(577...580)(
+ nil,
+ nil,
+ (577...580),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(581...597)(
+ (581...587),
+ [ConstantReadNode(588...597)()],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ nil,
+ nil,
+ (598...601)
+ ),
+ (572...574),
+ (598...601)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(602...634)(
+ nil,
+ nil,
+ (602...603),
+ nil,
+ nil,
+ nil,
+ BlockNode(604...634)(
+ [],
+ nil,
+ BeginNode(609...634)(
+ nil,
+ StatementsNode(609...612)(
+ [CallNode(609...612)(
+ nil,
+ nil,
+ (609...612),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(613...619)((613...619), [], nil, nil, nil, nil),
+ ElseNode(620...634)(
+ (620...624),
+ StatementsNode(627...630)(
+ [CallNode(627...630)(
+ nil,
+ nil,
+ (627...630),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (631...634)
+ ),
+ nil,
+ (631...634)
+ ),
+ (604...606),
+ (631...634)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(635...680)(
+ nil,
+ nil,
+ (635...636),
+ nil,
+ nil,
+ nil,
+ BlockNode(637...680)(
+ [:exception],
+ nil,
+ BeginNode(642...680)(
+ nil,
+ StatementsNode(642...645)(
+ [CallNode(642...645)(
+ nil,
+ nil,
+ (642...645),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(646...676)(
+ (646...652),
+ [SplatNode(653...657)(
+ (653...654),
+ CallNode(654...657)(
+ nil,
+ nil,
+ (654...657),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ (658...660),
+ LocalVariableWriteNode(661...670)(
+ :exception,
+ 0,
+ nil,
+ (661...670),
+ nil
+ ),
+ StatementsNode(673...676)(
+ [CallNode(673...676)(
+ nil,
+ nil,
+ (673...676),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (677...680)
+ ),
+ (637...639),
+ (677...680)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(681...696)(
+ nil,
+ nil,
+ (681...682),
+ nil,
+ nil,
+ nil,
+ BlockNode(683...696)(
+ [],
+ nil,
+ BeginNode(686...696)(
+ nil,
+ nil,
+ nil,
+ nil,
+ EnsureNode(686...696)((686...692), nil, (693...696)),
+ (693...696)
+ ),
+ (683...685),
+ (693...696)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(697...719)(
+ nil,
+ nil,
+ (697...698),
+ nil,
+ nil,
+ nil,
+ BlockNode(699...719)(
+ [],
+ nil,
+ BeginNode(702...719)(
+ nil,
+ nil,
+ RescueNode(702...708)((702...708), [], nil, nil, nil, nil),
+ nil,
+ EnsureNode(709...719)((709...715), nil, (716...719)),
+ (716...719)
+ ),
+ (699...701),
+ (716...719)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(720...737)(
+ nil,
+ nil,
+ (720...723),
+ nil,
+ nil,
+ nil,
+ BlockNode(724...737)(
+ [],
+ nil,
+ StatementsNode(728...735)(
+ [CallNode(728...735)(
+ CallNode(728...730)(
+ nil,
+ nil,
+ (728...730),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_1"
+ ),
+ nil,
+ (731...732),
+ nil,
+ ArgumentsNode(733...735)(
+ [CallNode(733...735)(
+ nil,
+ nil,
+ (733...735),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_2"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (724...725),
+ (736...737)
+ ),
+ 0,
+ "bar"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/case.txt b/test/yarp/snapshots/unparser/corpus/literal/case.txt
new file mode 100644
index 0000000000..3a3041c0b6
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/case.txt
@@ -0,0 +1,402 @@
+ProgramNode(0...284)(
+ [],
+ StatementsNode(0...284)(
+ [CaseNode(0...38)(
+ nil,
+ [WhenNode(5...19)(
+ (5...9),
+ [CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ StatementsNode(16...19)(
+ [CallNode(16...19)(
+ nil,
+ nil,
+ (16...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ )
+ ),
+ WhenNode(20...34)(
+ (20...24),
+ [CallNode(25...28)(
+ nil,
+ nil,
+ (25...28),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )],
+ StatementsNode(31...34)(
+ [CallNode(31...34)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ nil,
+ (0...4),
+ (35...38)
+ ),
+ CaseNode(39...75)(
+ CallNode(44...47)(nil, nil, (44...47), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(48...56)(
+ (48...52),
+ [CallNode(53...56)(
+ nil,
+ nil,
+ (53...56),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ nil
+ ),
+ WhenNode(57...71)(
+ (57...61),
+ [CallNode(62...65)(
+ nil,
+ nil,
+ (62...65),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )],
+ StatementsNode(68...71)(
+ [CallNode(68...71)(
+ nil,
+ nil,
+ (68...71),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ nil,
+ (39...43),
+ (72...75)
+ ),
+ CaseNode(76...118)(
+ CallNode(81...84)(nil, nil, (81...84), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(85...99)(
+ (85...89),
+ [CallNode(90...93)(
+ nil,
+ nil,
+ (90...93),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ StatementsNode(96...99)(
+ [CallNode(96...99)(
+ nil,
+ nil,
+ (96...99),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ )
+ ),
+ WhenNode(100...114)(
+ (100...104),
+ [CallNode(105...108)(
+ nil,
+ nil,
+ (105...108),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )],
+ StatementsNode(111...114)(
+ [CallNode(111...114)(
+ nil,
+ nil,
+ (111...114),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ nil,
+ (76...80),
+ (115...118)
+ ),
+ CaseNode(119...154)(
+ CallNode(124...127)(
+ nil,
+ nil,
+ (124...127),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [WhenNode(128...150)(
+ (128...132),
+ [CallNode(133...136)(
+ nil,
+ nil,
+ (133...136),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(138...141)(
+ nil,
+ nil,
+ (138...141),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )],
+ StatementsNode(144...150)(
+ [SymbolNode(144...150)((144...145), (145...150), nil, "other")]
+ )
+ )],
+ nil,
+ (119...123),
+ (151...154)
+ ),
+ CaseNode(155...186)(
+ CallNode(160...163)(
+ nil,
+ nil,
+ (160...163),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [WhenNode(164...182)(
+ (164...168),
+ [SplatNode(169...173)(
+ (169...170),
+ CallNode(170...173)(
+ nil,
+ nil,
+ (170...173),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ StatementsNode(176...182)(
+ [SymbolNode(176...182)((176...177), (177...182), nil, "value")]
+ )
+ )],
+ nil,
+ (155...159),
+ (183...186)
+ ),
+ CaseNode(187...226)(
+ CallNode(192...195)(
+ nil,
+ nil,
+ (192...195),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [WhenNode(196...210)(
+ (196...200),
+ [CallNode(201...204)(
+ nil,
+ nil,
+ (201...204),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ StatementsNode(207...210)(
+ [CallNode(207...210)(
+ nil,
+ nil,
+ (207...210),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ )
+ )],
+ ElseNode(211...226)(
+ (211...215),
+ StatementsNode(218...222)(
+ [SymbolNode(218...222)((218...219), (219...222), nil, "foo")]
+ ),
+ (223...226)
+ ),
+ (187...191),
+ (223...226)
+ ),
+ CaseNode(227...255)(
+ CallNode(232...235)(
+ nil,
+ nil,
+ (232...235),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [WhenNode(236...251)(
+ (236...240),
+ [SplatNode(241...251)(
+ (241...242),
+ CallNode(242...251)(
+ CallNode(242...245)(
+ nil,
+ nil,
+ (242...245),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (246...247),
+ nil,
+ ArgumentsNode(248...251)(
+ [CallNode(248...251)(
+ nil,
+ nil,
+ (248...251),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "|"
+ )
+ )],
+ nil
+ )],
+ nil,
+ (227...231),
+ (252...255)
+ ),
+ CaseNode(256...284)(
+ CallNode(261...264)(
+ nil,
+ nil,
+ (261...264),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [WhenNode(265...280)(
+ (265...269),
+ [SplatNode(270...280)(
+ (270...271),
+ CallNode(271...280)(
+ CallNode(271...274)(
+ nil,
+ nil,
+ (271...274),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (274...275),
+ (275...278),
+ nil,
+ ArgumentsNode(279...280)([IntegerNode(279...280)()]),
+ nil,
+ nil,
+ 0,
+ "baz="
+ )
+ )],
+ nil
+ )],
+ nil,
+ (256...260),
+ (281...284)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/class.txt b/test/yarp/snapshots/unparser/corpus/literal/class.txt
new file mode 100644
index 0000000000..eee58beb4c
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/class.txt
@@ -0,0 +1,162 @@
+ProgramNode(0...213)(
+ [],
+ StatementsNode(0...213)(
+ [ClassNode(0...11)(
+ [],
+ (0...5),
+ ConstantReadNode(6...7)(),
+ nil,
+ nil,
+ nil,
+ (8...11)
+ ),
+ SingletonClassNode(13...27)(
+ [],
+ (13...18),
+ (19...21),
+ CallNode(22...23)(nil, nil, (22...23), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (24...27)
+ ),
+ SingletonClassNode(29...47)(
+ [],
+ (29...34),
+ (35...37),
+ CallNode(38...39)(nil, nil, (38...39), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(42...43)(
+ [CallNode(42...43)(nil, nil, (42...43), nil, nil, nil, nil, 0, "b")]
+ ),
+ (44...47)
+ ),
+ ClassNode(49...63)(
+ [],
+ (49...54),
+ ConstantPathNode(55...59)(
+ ConstantReadNode(55...56)(),
+ ConstantReadNode(58...59)(),
+ (56...58)
+ ),
+ nil,
+ nil,
+ nil,
+ (60...63)
+ ),
+ ClassNode(65...82)(
+ [],
+ (65...70),
+ ConstantPathNode(71...78)(
+ ConstantPathNode(71...75)(
+ ConstantReadNode(71...72)(),
+ ConstantReadNode(74...75)(),
+ (72...74)
+ ),
+ ConstantReadNode(77...78)(),
+ (75...77)
+ ),
+ nil,
+ nil,
+ nil,
+ (79...82)
+ ),
+ ClassNode(84...99)(
+ [],
+ (84...89),
+ ConstantReadNode(90...91)(),
+ (92...93),
+ ConstantReadNode(94...95)(),
+ nil,
+ (96...99)
+ ),
+ ClassNode(101...119)(
+ [],
+ (101...106),
+ ConstantReadNode(107...108)(),
+ (109...110),
+ ConstantPathNode(111...115)(
+ ConstantReadNode(111...112)(),
+ ConstantReadNode(114...115)(),
+ (112...114)
+ ),
+ nil,
+ (116...119)
+ ),
+ ClassNode(121...142)(
+ [],
+ (121...126),
+ ConstantPathNode(127...131)(
+ ConstantReadNode(127...128)(),
+ ConstantReadNode(130...131)(),
+ (128...130)
+ ),
+ (132...133),
+ ConstantPathNode(134...138)(
+ ConstantReadNode(134...135)(),
+ ConstantReadNode(137...138)(),
+ (135...137)
+ ),
+ nil,
+ (139...142)
+ ),
+ ClassNode(144...198)(
+ [],
+ (144...149),
+ ConstantReadNode(150...151)(),
+ nil,
+ nil,
+ StatementsNode(154...194)(
+ [CallNode(154...168)(
+ nil,
+ nil,
+ (154...161),
+ (161...162),
+ ArgumentsNode(162...167)(
+ [CallNode(162...167)(
+ ConstantReadNode(162...163)(),
+ (163...164),
+ (164...167),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "new"
+ )]
+ ),
+ (167...168),
+ nil,
+ 0,
+ "include"
+ ),
+ DefNode(172...194)(
+ (176...179),
+ nil,
+ nil,
+ StatementsNode(184...188)(
+ [SymbolNode(184...188)((184...185), (185...188), nil, "bar")]
+ ),
+ [],
+ (172...175),
+ nil,
+ nil,
+ nil,
+ nil,
+ (191...194)
+ )]
+ ),
+ (195...198)
+ ),
+ ClassNode(200...213)(
+ [],
+ (200...205),
+ ConstantPathNode(206...209)(
+ nil,
+ ConstantReadNode(208...209)(),
+ (206...208)
+ ),
+ nil,
+ nil,
+ nil,
+ (210...213)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/control.txt b/test/yarp/snapshots/unparser/corpus/literal/control.txt
new file mode 100644
index 0000000000..182bddab60
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/control.txt
@@ -0,0 +1,83 @@
+ProgramNode(0...144)(
+ [],
+ StatementsNode(0...144)(
+ [NextNode(0...4)(nil, (0...4)),
+ ReturnNode(5...11)((5...11), nil),
+ BreakNode(12...17)(nil, (12...17)),
+ RetryNode(18...23)(),
+ RedoNode(24...28)(),
+ ReturnNode(29...37)(
+ (29...35),
+ ArgumentsNode(36...37)([IntegerNode(36...37)()])
+ ),
+ ReturnNode(38...49)(
+ (38...44),
+ ArgumentsNode(45...49)([IntegerNode(45...46)(), IntegerNode(48...49)()])
+ ),
+ ReturnNode(50...69)(
+ (50...56),
+ ArgumentsNode(57...69)(
+ [IfNode(57...69)(
+ nil,
+ TrueNode(57...61)(),
+ StatementsNode(64...65)([IntegerNode(64...65)()]),
+ ElseNode(66...69)(
+ (66...67),
+ StatementsNode(68...69)([IntegerNode(68...69)()]),
+ nil
+ ),
+ nil
+ )]
+ )
+ ),
+ BreakNode(70...88)(
+ ArgumentsNode(76...88)(
+ [IfNode(76...88)(
+ nil,
+ TrueNode(76...80)(),
+ StatementsNode(83...84)([IntegerNode(83...84)()]),
+ ElseNode(85...88)(
+ (85...86),
+ StatementsNode(87...88)([IntegerNode(87...88)()]),
+ nil
+ ),
+ nil
+ )]
+ ),
+ (70...75)
+ ),
+ NextNode(89...106)(
+ ArgumentsNode(94...106)(
+ [IfNode(94...106)(
+ nil,
+ TrueNode(94...98)(),
+ StatementsNode(101...102)([IntegerNode(101...102)()]),
+ ElseNode(103...106)(
+ (103...104),
+ StatementsNode(105...106)([IntegerNode(105...106)()]),
+ nil
+ ),
+ nil
+ )]
+ ),
+ (89...93)
+ ),
+ ReturnNode(107...144)(
+ (107...113),
+ ArgumentsNode(114...144)(
+ [TrueNode(114...118)(),
+ IfNode(120...144)(
+ (120...122),
+ TrueNode(123...127)(),
+ StatementsNode(130...131)([IntegerNode(130...131)()]),
+ ElseNode(132...144)(
+ (132...136),
+ StatementsNode(139...140)([IntegerNode(139...140)()]),
+ (141...144)
+ ),
+ (141...144)
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/def.txt b/test/yarp/snapshots/unparser/corpus/literal/def.txt
new file mode 100644
index 0000000000..dab4a983c9
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/def.txt
@@ -0,0 +1,1019 @@
+ProgramNode(0...913)(
+ [],
+ StatementsNode(0...913)(
+ [DefNode(0...46)(
+ (4...7),
+ nil,
+ nil,
+ BeginNode(10...46)(
+ nil,
+ StatementsNode(10...11)(
+ [CallNode(10...11)(nil, nil, (10...11), nil, nil, nil, nil, 0, "a")]
+ ),
+ RescueNode(12...22)(
+ (12...18),
+ [],
+ nil,
+ nil,
+ StatementsNode(21...22)(
+ [CallNode(21...22)(
+ nil,
+ nil,
+ (21...22),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ ElseNode(23...38)(
+ (23...27),
+ StatementsNode(30...31)(
+ [CallNode(30...31)(
+ nil,
+ nil,
+ (30...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (32...38)
+ ),
+ EnsureNode(32...46)(
+ (32...38),
+ StatementsNode(41...42)(
+ [CallNode(41...42)(
+ nil,
+ nil,
+ (41...42),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (43...46)
+ ),
+ (43...46)
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (43...46)
+ ),
+ DefNode(48...103)(
+ (52...55),
+ nil,
+ nil,
+ BeginNode(58...103)(
+ nil,
+ StatementsNode(58...68)(
+ [RescueModifierNode(58...68)(
+ CallNode(58...59)(
+ nil,
+ nil,
+ (58...59),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (60...66),
+ CallNode(67...68)(
+ nil,
+ nil,
+ (67...68),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )
+ )]
+ ),
+ RescueNode(69...79)(
+ (69...75),
+ [],
+ nil,
+ nil,
+ StatementsNode(78...79)(
+ [CallNode(78...79)(
+ nil,
+ nil,
+ (78...79),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ ElseNode(80...95)(
+ (80...84),
+ StatementsNode(87...88)(
+ [CallNode(87...88)(
+ nil,
+ nil,
+ (87...88),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (89...95)
+ ),
+ EnsureNode(89...103)(
+ (89...95),
+ StatementsNode(98...99)(
+ [CallNode(98...99)(
+ nil,
+ nil,
+ (98...99),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (100...103)
+ ),
+ (100...103)
+ ),
+ [],
+ (48...51),
+ nil,
+ nil,
+ nil,
+ nil,
+ (100...103)
+ ),
+ DefNode(105...128)(
+ (109...112),
+ nil,
+ ParametersNode(113...123)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(113...117)((113...117), nil),
+ KeywordParameterNode(119...123)((119...123), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar, :baz],
+ (105...108),
+ nil,
+ (112...113),
+ (123...124),
+ nil,
+ (125...128)
+ ),
+ DefNode(130...141)(
+ (134...137),
+ nil,
+ nil,
+ nil,
+ [],
+ (130...133),
+ nil,
+ nil,
+ nil,
+ nil,
+ (138...141)
+ ),
+ DefNode(143...160)(
+ (147...150),
+ nil,
+ nil,
+ StatementsNode(153...156)(
+ [CallNode(153...156)(
+ nil,
+ nil,
+ (153...156),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [],
+ (143...146),
+ nil,
+ nil,
+ nil,
+ nil,
+ (157...160)
+ ),
+ DefNode(162...205)(
+ (166...169),
+ nil,
+ nil,
+ BeginNode(172...205)(
+ nil,
+ StatementsNode(172...175)(
+ [CallNode(172...175)(
+ nil,
+ nil,
+ (172...175),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ RescueNode(176...188)(
+ (176...182),
+ [],
+ nil,
+ nil,
+ StatementsNode(185...188)(
+ [CallNode(185...188)(
+ nil,
+ nil,
+ (185...188),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ EnsureNode(189...205)(
+ (189...195),
+ StatementsNode(198...201)(
+ [CallNode(198...201)(
+ nil,
+ nil,
+ (198...201),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (202...205)
+ ),
+ (202...205)
+ ),
+ [],
+ (162...165),
+ nil,
+ nil,
+ nil,
+ nil,
+ (202...205)
+ ),
+ DefNode(207...237)(
+ (211...214),
+ nil,
+ nil,
+ BeginNode(217...237)(
+ nil,
+ StatementsNode(217...220)(
+ [CallNode(217...220)(
+ nil,
+ nil,
+ (217...220),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ EnsureNode(221...237)(
+ (221...227),
+ StatementsNode(230...233)(
+ [CallNode(230...233)(
+ nil,
+ nil,
+ (230...233),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (234...237)
+ ),
+ (234...237)
+ ),
+ [],
+ (207...210),
+ nil,
+ nil,
+ nil,
+ nil,
+ (234...237)
+ ),
+ DefNode(239...269)(
+ (243...246),
+ nil,
+ nil,
+ BeginNode(249...269)(
+ nil,
+ StatementsNode(249...252)(
+ [CallNode(249...252)(
+ nil,
+ nil,
+ (249...252),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(253...265)(
+ (253...259),
+ [],
+ nil,
+ nil,
+ StatementsNode(262...265)(
+ [CallNode(262...265)(
+ nil,
+ nil,
+ (262...265),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (266...269)
+ ),
+ [],
+ (239...242),
+ nil,
+ nil,
+ nil,
+ nil,
+ (266...269)
+ ),
+ DefNode(271...293)(
+ (275...278),
+ nil,
+ ParametersNode(279...282)(
+ [RequiredParameterNode(279...282)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(286...289)([LocalVariableReadNode(286...289)(:bar, 0)]),
+ [:bar],
+ (271...274),
+ nil,
+ (278...279),
+ (282...283),
+ nil,
+ (290...293)
+ ),
+ DefNode(295...322)(
+ (299...302),
+ nil,
+ ParametersNode(303...311)(
+ [RequiredParameterNode(303...306)(:bar),
+ RequiredParameterNode(308...311)(:baz)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(315...318)([LocalVariableReadNode(315...318)(:bar, 0)]),
+ [:bar, :baz],
+ (295...298),
+ nil,
+ (302...303),
+ (311...312),
+ nil,
+ (319...322)
+ ),
+ DefNode(324...351)(
+ (328...331),
+ nil,
+ ParametersNode(332...340)(
+ [],
+ [OptionalParameterNode(332...340)(
+ :bar,
+ (332...335),
+ (336...337),
+ ParenthesesNode(338...340)(nil, (338...339), (339...340))
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(344...347)([LocalVariableReadNode(344...347)(:bar, 0)]),
+ [:bar],
+ (324...327),
+ nil,
+ (331...332),
+ (340...341),
+ nil,
+ (348...351)
+ ),
+ DefNode(353...382)(
+ (357...360),
+ nil,
+ ParametersNode(361...377)(
+ [],
+ [OptionalParameterNode(361...377)(
+ :bar,
+ (361...364),
+ (365...366),
+ ParenthesesNode(367...377)(
+ StatementsNode(368...376)(
+ [CallNode(368...371)(
+ nil,
+ nil,
+ (368...371),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ NilNode(373...376)()]
+ ),
+ (367...368),
+ (376...377)
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar],
+ (353...356),
+ nil,
+ (360...361),
+ (377...378),
+ nil,
+ (379...382)
+ ),
+ DefNode(384...413)(
+ (388...391),
+ nil,
+ ParametersNode(392...402)(
+ [],
+ [OptionalParameterNode(392...402)(
+ :bar,
+ (392...395),
+ (396...397),
+ TrueNode(398...402)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(406...409)([LocalVariableReadNode(406...409)(:bar, 0)]),
+ [:bar],
+ (384...387),
+ nil,
+ (391...392),
+ (402...403),
+ nil,
+ (410...413)
+ ),
+ DefNode(415...449)(
+ (419...422),
+ nil,
+ ParametersNode(423...438)(
+ [RequiredParameterNode(423...426)(:bar)],
+ [OptionalParameterNode(428...438)(
+ :baz,
+ (428...431),
+ (432...433),
+ TrueNode(434...438)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(442...445)([LocalVariableReadNode(442...445)(:bar, 0)]),
+ [:bar, :baz],
+ (415...418),
+ nil,
+ (422...423),
+ (438...439),
+ nil,
+ (446...449)
+ ),
+ DefNode(451...470)(
+ (455...458),
+ nil,
+ ParametersNode(459...465)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(459...465)(
+ (459...463),
+ IntegerNode(464...465)()
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar],
+ (451...454),
+ nil,
+ (458...459),
+ (465...466),
+ nil,
+ (467...470)
+ ),
+ DefNode(472...493)(
+ (476...479),
+ nil,
+ ParametersNode(480...488)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(480...488)(
+ (480...484),
+ CallNode(485...488)(
+ nil,
+ nil,
+ (485...488),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar],
+ (472...475),
+ nil,
+ (479...480),
+ (488...489),
+ nil,
+ (490...493)
+ ),
+ DefNode(495...518)(
+ (499...502),
+ nil,
+ ParametersNode(503...513)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(503...513)(
+ (503...507),
+ CallNode(508...513)(
+ nil,
+ nil,
+ (508...511),
+ (511...512),
+ nil,
+ (512...513),
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar],
+ (495...498),
+ nil,
+ (502...503),
+ (513...514),
+ nil,
+ (515...518)
+ ),
+ DefNode(520...540)(
+ (524...527),
+ nil,
+ ParametersNode(528...529)(
+ [],
+ [],
+ [],
+ RestParameterNode(528...529)((528...529), nil),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(533...536)(
+ [CallNode(533...536)(
+ nil,
+ nil,
+ (533...536),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:*],
+ (520...523),
+ nil,
+ (527...528),
+ (529...530),
+ nil,
+ (537...540)
+ ),
+ DefNode(542...565)(
+ (546...549),
+ nil,
+ ParametersNode(550...554)(
+ [],
+ [],
+ [],
+ RestParameterNode(550...554)((550...551), (551...554)),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(558...561)([LocalVariableReadNode(558...561)(:bar, 0)]),
+ [:bar],
+ (542...545),
+ nil,
+ (549...550),
+ (554...555),
+ nil,
+ (562...565)
+ ),
+ DefNode(567...595)(
+ (571...574),
+ nil,
+ ParametersNode(575...584)(
+ [RequiredParameterNode(575...578)(:bar)],
+ [],
+ [],
+ RestParameterNode(580...584)((580...581), (581...584)),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(588...591)([LocalVariableReadNode(588...591)(:bar, 0)]),
+ [:bar, :baz],
+ (567...570),
+ nil,
+ (574...575),
+ (584...585),
+ nil,
+ (592...595)
+ ),
+ DefNode(597...632)(
+ (601...604),
+ nil,
+ ParametersNode(605...621)(
+ [],
+ [OptionalParameterNode(605...615)(
+ :baz,
+ (605...608),
+ (609...610),
+ TrueNode(611...615)()
+ )],
+ [],
+ RestParameterNode(617...621)((617...618), (618...621)),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(625...628)(
+ [CallNode(625...628)(
+ nil,
+ nil,
+ (625...628),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:baz, :bor],
+ (597...600),
+ nil,
+ (604...605),
+ (621...622),
+ nil,
+ (629...632)
+ ),
+ DefNode(634...677)(
+ (638...641),
+ nil,
+ ParametersNode(642...666)(
+ [],
+ [OptionalParameterNode(642...652)(
+ :baz,
+ (642...645),
+ (646...647),
+ TrueNode(648...652)()
+ )],
+ [],
+ RestParameterNode(654...658)((654...655), (655...658)),
+ [],
+ nil,
+ BlockParameterNode(660...666)((661...666), (660...661))
+ ),
+ StatementsNode(670...673)(
+ [CallNode(670...673)(
+ nil,
+ nil,
+ (670...673),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:baz, :bor, :block],
+ (634...637),
+ nil,
+ (641...642),
+ (666...667),
+ nil,
+ (674...677)
+ ),
+ DefNode(679...719)(
+ (683...686),
+ nil,
+ ParametersNode(687...708)(
+ [RequiredParameterNode(687...690)(:bar)],
+ [OptionalParameterNode(692...702)(
+ :baz,
+ (692...695),
+ (696...697),
+ TrueNode(698...702)()
+ )],
+ [],
+ RestParameterNode(704...708)((704...705), (705...708)),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(712...715)([LocalVariableReadNode(712...715)(:bar, 0)]),
+ [:bar, :baz, :bor],
+ (679...682),
+ nil,
+ (686...687),
+ (708...709),
+ nil,
+ (716...719)
+ ),
+ DefNode(721...746)(
+ (725...728),
+ nil,
+ ParametersNode(729...735)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(729...735)((730...735), (729...730))
+ ),
+ StatementsNode(739...742)(
+ [CallNode(739...742)(
+ nil,
+ nil,
+ (739...742),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:block],
+ (721...724),
+ nil,
+ (728...729),
+ (735...736),
+ nil,
+ (743...746)
+ ),
+ DefNode(748...778)(
+ (752...755),
+ nil,
+ ParametersNode(756...767)(
+ [RequiredParameterNode(756...759)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(761...767)((762...767), (761...762))
+ ),
+ StatementsNode(771...774)([LocalVariableReadNode(771...774)(:bar, 0)]),
+ [:bar, :block],
+ (748...751),
+ nil,
+ (755...756),
+ (767...768),
+ nil,
+ (775...778)
+ ),
+ DefNode(780...803)(
+ (784...787),
+ nil,
+ nil,
+ StatementsNode(790...799)(
+ [CallNode(790...793)(
+ nil,
+ nil,
+ (790...793),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(796...799)(
+ nil,
+ nil,
+ (796...799),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ [],
+ (780...783),
+ nil,
+ nil,
+ nil,
+ nil,
+ (800...803)
+ ),
+ DefNode(805...821)(
+ (809...810),
+ nil,
+ ParametersNode(811...816)(
+ [RequiredDestructuredParameterNode(811...816)(
+ [RequiredDestructuredParameterNode(812...815)(
+ [RequiredParameterNode(813...814)(:a)],
+ (812...813),
+ (814...815)
+ )],
+ (811...812),
+ (815...816)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (805...808),
+ nil,
+ (810...811),
+ (816...817),
+ nil,
+ (818...821)
+ ),
+ DefNode(823...854)(
+ (827...830),
+ nil,
+ ParametersNode(831...849)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(831...835)((831...835), nil),
+ KeywordParameterNode(837...849)(
+ (837...841),
+ StringNode(842...849)(
+ (842...843),
+ (843...848),
+ (848...849),
+ "value"
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:bar, :baz],
+ (823...826),
+ nil,
+ (830...831),
+ (849...850),
+ nil,
+ (851...854)
+ ),
+ DefNode(856...896)(
+ (860...861),
+ nil,
+ nil,
+ StatementsNode(864...893)(
+ [InterpolatedStringNode(864...893)(
+ (864...874),
+ [StringNode(875...879)(nil, (875...879), nil, " "),
+ EmbeddedStatementsNode(879...882)((879...881), nil, (881...882)),
+ StringNode(882...883)(nil, (882...883), nil, "\n")],
+ (883...893)
+ )]
+ ),
+ [],
+ (856...859),
+ nil,
+ nil,
+ nil,
+ nil,
+ (893...896)
+ ),
+ DefNode(898...913)(
+ (902...903),
+ nil,
+ nil,
+ StatementsNode(906...909)(
+ [StringNode(906...909)((906...908), (908...908), (908...909), "")]
+ ),
+ [],
+ (898...901),
+ nil,
+ nil,
+ nil,
+ nil,
+ (910...913)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/defined.txt b/test/yarp/snapshots/unparser/corpus/literal/defined.txt
new file mode 100644
index 0000000000..1ea9cb9d87
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/defined.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...56)(
+ [:a, :b],
+ StatementsNode(0...56)(
+ [DefinedNode(0...14)(
+ (8...9),
+ InstanceVariableReadNode(9...13)(),
+ (13...14),
+ (0...8)
+ ),
+ DefinedNode(15...28)(
+ (23...24),
+ ConstantReadNode(24...27)(),
+ (27...28),
+ (15...23)
+ ),
+ DefinedNode(29...56)(
+ (37...38),
+ ParenthesesNode(38...55)(
+ StatementsNode(40...54)(
+ [MultiWriteNode(40...54)(
+ [LocalVariableWriteNode(40...41)(:a, 0, nil, (40...41), nil),
+ LocalVariableWriteNode(43...44)(:b, 0, nil, (43...44), nil)],
+ (46...47),
+ ArrayNode(48...54)(
+ [IntegerNode(49...50)(), IntegerNode(52...53)()],
+ (48...49),
+ (53...54)
+ ),
+ (39...40),
+ (44...45)
+ )]
+ ),
+ (38...39),
+ (54...55)
+ ),
+ (55...56),
+ (29...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/defs.txt b/test/yarp/snapshots/unparser/corpus/literal/defs.txt
new file mode 100644
index 0000000000..94a86678dc
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/defs.txt
@@ -0,0 +1,297 @@
+ProgramNode(0...266)(
+ [],
+ StatementsNode(0...266)(
+ [DefNode(0...16)(
+ (9...12),
+ SelfNode(4...8)(),
+ nil,
+ nil,
+ [],
+ (0...3),
+ (8...9),
+ nil,
+ nil,
+ nil,
+ (13...16)
+ ),
+ DefNode(18...40)(
+ (27...30),
+ SelfNode(22...26)(),
+ nil,
+ StatementsNode(33...36)(
+ [CallNode(33...36)(nil, nil, (33...36), nil, nil, nil, nil, 0, "bar")]
+ ),
+ [],
+ (18...21),
+ (26...27),
+ nil,
+ nil,
+ nil,
+ (37...40)
+ ),
+ DefNode(42...70)(
+ (51...54),
+ SelfNode(46...50)(),
+ nil,
+ StatementsNode(57...66)(
+ [CallNode(57...60)(nil, nil, (57...60), nil, nil, nil, nil, 0, "bar"),
+ CallNode(63...66)(nil, nil, (63...66), nil, nil, nil, nil, 0, "baz")]
+ ),
+ [],
+ (42...45),
+ (50...51),
+ nil,
+ nil,
+ nil,
+ (67...70)
+ ),
+ DefNode(72...93)(
+ (80...83),
+ ConstantReadNode(76...79)(),
+ nil,
+ StatementsNode(86...89)(
+ [CallNode(86...89)(nil, nil, (86...89), nil, nil, nil, nil, 0, "bar")]
+ ),
+ [],
+ (72...75),
+ (79...80),
+ nil,
+ nil,
+ nil,
+ (90...93)
+ ),
+ DefNode(95...128)(
+ (115...118),
+ ParenthesesNode(99...114)(
+ CallNode(100...113)(
+ nil,
+ nil,
+ (100...103),
+ nil,
+ nil,
+ nil,
+ BlockNode(104...113)(
+ [:bar],
+ BlockParametersNode(106...111)(
+ ParametersNode(107...110)(
+ [RequiredParameterNode(107...110)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (106...107),
+ (110...111)
+ ),
+ nil,
+ (104...105),
+ (112...113)
+ ),
+ 0,
+ "foo"
+ ),
+ (99...100),
+ (113...114)
+ ),
+ nil,
+ StatementsNode(121...124)(
+ [CallNode(121...124)(
+ nil,
+ nil,
+ (121...124),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [],
+ (95...98),
+ (114...115),
+ nil,
+ nil,
+ nil,
+ (125...128)
+ ),
+ DefNode(130...156)(
+ (143...146),
+ ParenthesesNode(134...142)(
+ CallNode(135...141)(
+ nil,
+ nil,
+ (135...138),
+ (138...139),
+ ArgumentsNode(139...140)([IntegerNode(139...140)()]),
+ (140...141),
+ nil,
+ 0,
+ "foo"
+ ),
+ (134...135),
+ (141...142)
+ ),
+ nil,
+ StatementsNode(149...152)(
+ [CallNode(149...152)(
+ nil,
+ nil,
+ (149...152),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [],
+ (130...133),
+ (142...143),
+ nil,
+ nil,
+ nil,
+ (153...156)
+ ),
+ DefNode(158...190)(
+ (177...180),
+ ParenthesesNode(162...176)(
+ CallNode(163...175)(
+ ConstantPathNode(163...171)(
+ ConstantReadNode(163...166)(),
+ ConstantReadNode(168...171)(),
+ (166...168)
+ ),
+ (171...172),
+ (172...175),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (162...163),
+ (175...176)
+ ),
+ nil,
+ StatementsNode(183...186)(
+ [CallNode(183...186)(
+ nil,
+ nil,
+ (183...186),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ [],
+ (158...161),
+ (176...177),
+ nil,
+ nil,
+ nil,
+ (187...190)
+ ),
+ DefNode(192...220)(
+ (207...210),
+ ParenthesesNode(196...206)(
+ ConstantPathNode(197...205)(
+ ConstantReadNode(197...200)(),
+ ConstantReadNode(202...205)(),
+ (200...202)
+ ),
+ (196...197),
+ (205...206)
+ ),
+ nil,
+ StatementsNode(213...216)(
+ [CallNode(213...216)(
+ nil,
+ nil,
+ (213...216),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ [],
+ (192...195),
+ (206...207),
+ nil,
+ nil,
+ nil,
+ (217...220)
+ ),
+ DefNode(222...243)(
+ (230...233),
+ ConstantReadNode(226...229)(),
+ nil,
+ StatementsNode(236...239)(
+ [CallNode(236...239)(
+ nil,
+ nil,
+ (236...239),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ [],
+ (222...225),
+ (229...230),
+ nil,
+ nil,
+ nil,
+ (240...243)
+ ),
+ DefNode(245...266)(
+ (253...256),
+ CallNode(249...252)(
+ nil,
+ nil,
+ (249...252),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ StatementsNode(259...262)(
+ [CallNode(259...262)(
+ nil,
+ nil,
+ (259...262),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ [],
+ (245...248),
+ (252...253),
+ nil,
+ nil,
+ nil,
+ (263...266)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/dstr.txt b/test/yarp/snapshots/unparser/corpus/literal/dstr.txt
new file mode 100644
index 0000000000..221a8939a7
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/dstr.txt
@@ -0,0 +1,205 @@
+ProgramNode(0...299)(
+ [],
+ StatementsNode(0...299)(
+ [IfNode(0...20)(
+ (0...2),
+ TrueNode(3...7)(),
+ StatementsNode(10...16)(
+ [InterpolatedStringNode(10...16)(
+ (10...11),
+ [EmbeddedStatementsNode(11...14)((11...13), nil, (13...14)),
+ StringNode(14...15)(nil, (14...15), nil, "a")],
+ (15...16)
+ )]
+ ),
+ nil,
+ (17...20)
+ ),
+ IfNode(21...68)(
+ (21...23),
+ TrueNode(24...28)(),
+ StatementsNode(31...64)(
+ [InterpolatedStringNode(31...61)(
+ (31...41),
+ [StringNode(42...44)(nil, (42...44), nil, "a\n"),
+ EmbeddedStatementsNode(44...47)((44...46), nil, (46...47)),
+ StringNode(47...51)(nil, (47...51), nil, "a\n" + "b\n")],
+ (51...61)
+ ),
+ CallNode(63...64)(nil, nil, (63...64), nil, nil, nil, nil, 0, "x")]
+ ),
+ nil,
+ (65...68)
+ ),
+ InterpolatedStringNode(69...109)(
+ (69...79),
+ [StringNode(80...89)(nil, (80...89), nil, "\#{}\#{}\n"),
+ EmbeddedStatementsNode(89...92)((89...91), nil, (91...92)),
+ StringNode(92...93)(nil, (92...93), nil, "\n"),
+ EmbeddedStatementsNode(93...96)((93...95), nil, (95...96)),
+ StringNode(96...97)(nil, (96...97), nil, "\n"),
+ EmbeddedStatementsNode(97...100)((97...99), nil, (99...100)),
+ StringNode(100...101)(nil, (100...101), nil, "\n")],
+ (101...109)
+ ),
+ RescueModifierNode(109...130)(
+ InterpolatedStringNode(109...145)(
+ (109...119),
+ [EmbeddedStatementsNode(131...134)((131...133), nil, (133...134)),
+ StringNode(134...137)(nil, (134...137), nil, "\n" + "a\n")],
+ (137...145)
+ ),
+ (120...126),
+ NilNode(127...130)()
+ ),
+ InterpolatedStringNode(145...151)(
+ (145...146),
+ [StringNode(146...147)(nil, (146...147), nil, "a"),
+ EmbeddedVariableNode(147...150)(
+ (147...148),
+ NumberedReferenceReadNode(148...150)()
+ )],
+ (150...151)
+ ),
+ InterpolatedStringNode(152...158)(
+ (152...153),
+ [StringNode(153...154)(nil, (153...154), nil, "a"),
+ EmbeddedVariableNode(154...157)(
+ (154...155),
+ GlobalVariableReadNode(155...157)()
+ )],
+ (157...158)
+ ),
+ InterpolatedStringNode(159...165)(
+ (159...160),
+ [StringNode(160...161)(nil, (160...161), nil, "a"),
+ EmbeddedVariableNode(161...164)(
+ (161...162),
+ InstanceVariableReadNode(162...164)()
+ )],
+ (164...165)
+ ),
+ InterpolatedStringNode(166...173)(
+ (166...167),
+ [StringNode(167...168)(nil, (167...168), nil, "a"),
+ EmbeddedVariableNode(168...172)(
+ (168...169),
+ ClassVariableReadNode(169...172)()
+ )],
+ (172...173)
+ ),
+ IfNode(174...225)(
+ (174...176),
+ TrueNode(177...181)(),
+ StatementsNode(184...222)(
+ [ReturnNode(184...222)(
+ (184...190),
+ ArgumentsNode(191...222)(
+ [InterpolatedStringNode(191...222)(
+ (191...201),
+ [StringNode(202...206)(nil, (202...206), nil, " "),
+ EmbeddedStatementsNode(206...211)(
+ (206...208),
+ StatementsNode(208...210)([IntegerNode(208...210)()]),
+ (210...211)
+ ),
+ StringNode(211...212)(nil, (211...212), nil, "\n")],
+ (212...222)
+ )]
+ )
+ )]
+ ),
+ nil,
+ (222...225)
+ ),
+ CallNode(226...241)(
+ nil,
+ nil,
+ (226...229),
+ (229...230),
+ ArgumentsNode(230...259)(
+ [InterpolatedStringNode(230...259)(
+ (230...240),
+ [StringNode(242...244)(nil, (242...244), nil, " "),
+ EmbeddedStatementsNode(244...250)(
+ (244...246),
+ StatementsNode(246...249)(
+ [CallNode(246...249)(
+ nil,
+ nil,
+ (246...249),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (249...250)
+ ),
+ StringNode(250...251)(nil, (250...251), nil, "\n")],
+ (251...259)
+ )]
+ ),
+ (240...241),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(259...299)(
+ nil,
+ nil,
+ (259...262),
+ (262...263),
+ ArgumentsNode(263...298)(
+ [InterpolatedStringNode(263...298)(
+ (263...273),
+ [StringNode(281...283)(nil, (281...283), nil, " "),
+ EmbeddedStatementsNode(283...289)(
+ (283...285),
+ StatementsNode(285...288)(
+ [CallNode(285...288)(
+ nil,
+ nil,
+ (285...288),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (288...289)
+ ),
+ StringNode(289...290)(nil, (289...290), nil, "\n")],
+ (290...298)
+ )]
+ ),
+ (273...274),
+ BlockNode(275...299)(
+ [:x],
+ BlockParametersNode(277...280)(
+ ParametersNode(278...279)(
+ [RequiredParameterNode(278...279)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (277...278),
+ (279...280)
+ ),
+ nil,
+ (275...276),
+ (298...299)
+ ),
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/empty.txt b/test/yarp/snapshots/unparser/corpus/literal/empty.txt
new file mode 100644
index 0000000000..bd3eaf5ff4
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/empty.txt
@@ -0,0 +1 @@
+ProgramNode(0...0)([], StatementsNode(0...0)([]))
diff --git a/test/yarp/snapshots/unparser/corpus/literal/empty_begin.txt b/test/yarp/snapshots/unparser/corpus/literal/empty_begin.txt
new file mode 100644
index 0000000000..d998f704cf
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/empty_begin.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...2)(
+ [],
+ StatementsNode(0...2)([ParenthesesNode(0...2)(nil, (0...1), (1...2))])
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/flipflop.txt b/test/yarp/snapshots/unparser/corpus/literal/flipflop.txt
new file mode 100644
index 0000000000..b4837b7dc8
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/flipflop.txt
@@ -0,0 +1,149 @@
+ProgramNode(0...68)(
+ [],
+ StatementsNode(0...68)(
+ [IfNode(0...33)(
+ (0...2),
+ ParenthesesNode(3...23)(
+ StatementsNode(4...22)(
+ [RangeNode(4...22)(
+ ParenthesesNode(4...12)(
+ StatementsNode(5...11)(
+ [CallNode(5...11)(
+ CallNode(5...6)(
+ nil,
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "i"
+ ),
+ nil,
+ (7...9),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ ),
+ (4...5),
+ (11...12)
+ ),
+ ParenthesesNode(14...22)(
+ StatementsNode(15...21)(
+ [CallNode(15...21)(
+ CallNode(15...16)(
+ nil,
+ nil,
+ (15...16),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "i"
+ ),
+ nil,
+ (17...19),
+ nil,
+ ArgumentsNode(20...21)([IntegerNode(20...21)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ ),
+ (14...15),
+ (21...22)
+ ),
+ (12...14),
+ 0
+ )]
+ ),
+ (3...4),
+ (22...23)
+ ),
+ StatementsNode(26...29)(
+ [CallNode(26...29)(nil, nil, (26...29), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ (30...33)
+ ),
+ IfNode(34...68)(
+ (34...36),
+ ParenthesesNode(37...58)(
+ StatementsNode(38...57)(
+ [RangeNode(38...57)(
+ ParenthesesNode(38...46)(
+ StatementsNode(39...45)(
+ [CallNode(39...45)(
+ CallNode(39...40)(
+ nil,
+ nil,
+ (39...40),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "i"
+ ),
+ nil,
+ (41...43),
+ nil,
+ ArgumentsNode(44...45)([IntegerNode(44...45)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ ),
+ (38...39),
+ (45...46)
+ ),
+ ParenthesesNode(49...57)(
+ StatementsNode(50...56)(
+ [CallNode(50...56)(
+ CallNode(50...51)(
+ nil,
+ nil,
+ (50...51),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "i"
+ ),
+ nil,
+ (52...54),
+ nil,
+ ArgumentsNode(55...56)([IntegerNode(55...56)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ ),
+ (49...50),
+ (56...57)
+ ),
+ (46...49),
+ 1
+ )]
+ ),
+ (37...38),
+ (57...58)
+ ),
+ StatementsNode(61...64)(
+ [CallNode(61...64)(nil, nil, (61...64), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ (65...68)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/for.txt b/test/yarp/snapshots/unparser/corpus/literal/for.txt
new file mode 100644
index 0000000000..4fdb3e3d73
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/for.txt
@@ -0,0 +1,130 @@
+ProgramNode(0...119)(
+ [:a, :b],
+ StatementsNode(0...119)(
+ [CallNode(0...30)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...29)(
+ [ForNode(4...29)(
+ MultiWriteNode(8...9)(
+ [LocalVariableWriteNode(8...9)(:a, 0, nil, (8...9), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ CallNode(13...16)(
+ nil,
+ nil,
+ (13...16),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ StatementsNode(22...25)(
+ [CallNode(22...25)(
+ nil,
+ nil,
+ (22...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (4...7),
+ (10...12),
+ (17...19),
+ (26...29)
+ )]
+ ),
+ (29...30),
+ nil,
+ 0,
+ "bar"
+ ),
+ ForNode(31...56)(
+ MultiWriteNode(35...36)(
+ [LocalVariableWriteNode(35...36)(:a, 0, nil, (35...36), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ CallNode(40...43)(nil, nil, (40...43), nil, nil, nil, nil, 0, "bar"),
+ StatementsNode(49...52)(
+ [CallNode(49...52)(nil, nil, (49...52), nil, nil, nil, nil, 0, "baz")]
+ ),
+ (31...34),
+ (37...39),
+ (44...46),
+ (53...56)
+ ),
+ ForNode(57...88)(
+ MultiWriteNode(61...68)(
+ [LocalVariableWriteNode(62...63)(:a, 0, nil, (62...63), nil),
+ SplatNode(65...67)(
+ (65...66),
+ LocalVariableWriteNode(66...67)(:b, 0, nil, (66...67), nil)
+ )],
+ nil,
+ nil,
+ (61...62),
+ (67...68)
+ ),
+ CallNode(72...75)(nil, nil, (72...75), nil, nil, nil, nil, 0, "bar"),
+ StatementsNode(81...84)(
+ [CallNode(81...84)(nil, nil, (81...84), nil, nil, nil, nil, 0, "baz")]
+ ),
+ (57...60),
+ (69...71),
+ (76...78),
+ (85...88)
+ ),
+ ForNode(89...119)(
+ MultiWriteNode(93...99)(
+ [LocalVariableWriteNode(94...95)(:a, 0, nil, (94...95), nil),
+ LocalVariableWriteNode(97...98)(:b, 0, nil, (97...98), nil)],
+ nil,
+ nil,
+ (93...94),
+ (98...99)
+ ),
+ CallNode(103...106)(
+ nil,
+ nil,
+ (103...106),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ StatementsNode(112...115)(
+ [CallNode(112...115)(
+ nil,
+ nil,
+ (112...115),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (89...92),
+ (100...102),
+ (107...109),
+ (116...119)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/hookexe.txt b/test/yarp/snapshots/unparser/corpus/literal/hookexe.txt
new file mode 100644
index 0000000000..9cd7da16bf
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/hookexe.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [PreExecutionNode(0...15)(
+ StatementsNode(10...13)(
+ [CallNode(10...13)(nil, nil, (10...13), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (0...5),
+ (6...7),
+ (14...15)
+ ),
+ CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "bar"),
+ PostExecutionNode(20...33)(
+ StatementsNode(28...31)(
+ [CallNode(28...31)(nil, nil, (28...31), nil, nil, nil, nil, 0, "baz")]
+ ),
+ (20...23),
+ (24...25),
+ (32...33)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/if.txt b/test/yarp/snapshots/unparser/corpus/literal/if.txt
new file mode 100644
index 0000000000..32f5fed1ed
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/if.txt
@@ -0,0 +1,201 @@
+ProgramNode(0...246)(
+ [:foo, :pair],
+ StatementsNode(0...246)(
+ [IfNode(0...18)(
+ (0...2),
+ RegularExpressionNode(3...8)((3...4), (4...7), (7...8), "foo", 0),
+ StatementsNode(11...14)(
+ [CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ (15...18)
+ ),
+ IfNode(19...31)(
+ (19...21),
+ IntegerNode(22...23)(),
+ StatementsNode(26...27)([IntegerNode(26...27)()]),
+ nil,
+ (28...31)
+ ),
+ IfNode(32...53)(
+ (32...34),
+ IntegerNode(35...36)(),
+ StatementsNode(39...40)([IntegerNode(39...40)()]),
+ ElseNode(41...53)(
+ (41...45),
+ StatementsNode(48...49)([IntegerNode(48...49)()]),
+ (50...53)
+ ),
+ (50...53)
+ ),
+ UnlessNode(54...72)(
+ (54...60),
+ IntegerNode(61...62)(),
+ StatementsNode(65...68)([NilNode(65...68)()]),
+ nil,
+ (69...72)
+ ),
+ UnlessNode(73...89)(
+ (73...79),
+ IntegerNode(80...81)(),
+ StatementsNode(84...85)([IntegerNode(84...85)()]),
+ nil,
+ (86...89)
+ ),
+ IfNode(90...100)(
+ (90...92),
+ CallNode(93...96)(nil, nil, (93...96), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ nil,
+ (97...100)
+ ),
+ ModuleNode(102...133)(
+ [:foo],
+ (102...108),
+ ConstantReadNode(109...110)(),
+ StatementsNode(113...129)(
+ [IfNode(113...129)(
+ (123...125),
+ LocalVariableReadNode(126...129)(:foo, 0),
+ StatementsNode(113...122)(
+ [LocalVariableWriteNode(113...122)(
+ :foo,
+ 0,
+ CallNode(119...122)(
+ nil,
+ nil,
+ (119...122),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (113...116),
+ (117...118)
+ )]
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (130...133)
+ ),
+ ModuleNode(135...170)(
+ [:foo],
+ (135...141),
+ ConstantReadNode(142...143)(),
+ StatementsNode(146...166)(
+ [UnlessNode(146...166)(
+ (156...162),
+ LocalVariableReadNode(163...166)(:foo, 0),
+ StatementsNode(146...155)(
+ [LocalVariableWriteNode(146...155)(
+ :foo,
+ 0,
+ CallNode(152...155)(
+ nil,
+ nil,
+ (152...155),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (146...149),
+ (150...151)
+ )]
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (167...170)
+ ),
+ UnlessNode(171...197)(
+ (171...177),
+ CallNode(178...181)(
+ nil,
+ nil,
+ (178...181),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StatementsNode(184...193)(
+ [LocalVariableWriteNode(184...193)(
+ :foo,
+ 0,
+ CallNode(190...193)(
+ nil,
+ nil,
+ (190...193),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (184...187),
+ (188...189)
+ )]
+ ),
+ nil,
+ (194...197)
+ ),
+ IfNode(198...246)(
+ (198...200),
+ CallNode(201...222)(
+ nil,
+ nil,
+ (201...204),
+ nil,
+ nil,
+ nil,
+ BlockNode(205...222)(
+ [:pair],
+ BlockParametersNode(207...213)(
+ ParametersNode(208...212)(
+ [RequiredParameterNode(208...212)(:pair)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (207...208),
+ (212...213)
+ ),
+ StatementsNode(216...220)(
+ [LocalVariableReadNode(216...220)(:pair, 0)]
+ ),
+ (205...206),
+ (221...222)
+ ),
+ 0,
+ "foo"
+ ),
+ StatementsNode(225...242)(
+ [LocalVariableWriteNode(225...236)(
+ :pair,
+ 0,
+ SymbolNode(232...236)((232...233), (233...236), nil, "foo"),
+ (225...229),
+ (230...231)
+ ),
+ LocalVariableReadNode(239...242)(:foo, 0)]
+ ),
+ nil,
+ (243...246)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/kwbegin.txt b/test/yarp/snapshots/unparser/corpus/literal/kwbegin.txt
new file mode 100644
index 0000000000..b7ed53b276
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/kwbegin.txt
@@ -0,0 +1,379 @@
+ProgramNode(0...530)(
+ [:foo, :bar, :exception],
+ StatementsNode(0...530)(
+ [BeginNode(0...16)(
+ (0...5),
+ nil,
+ RescueNode(6...12)((6...12), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (13...16)
+ ),
+ BeginNode(18...34)(
+ (18...23),
+ nil,
+ nil,
+ nil,
+ EnsureNode(24...34)((24...30), nil, (31...34)),
+ (31...34)
+ ),
+ BeginNode(36...49)(
+ (36...41),
+ StatementsNode(44...45)(
+ [CallNode(44...45)(nil, nil, (44...45), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ nil,
+ (46...49)
+ ),
+ BeginNode(51...75)(
+ (51...56),
+ StatementsNode(59...60)(
+ [CallNode(59...60)(nil, nil, (59...60), nil, nil, nil, nil, 0, "a")]
+ ),
+ RescueNode(61...71)(
+ (61...67),
+ [],
+ nil,
+ nil,
+ StatementsNode(70...71)(
+ [CallNode(70...71)(nil, nil, (70...71), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (72...75)
+ ),
+ BeginNode(77...105)(
+ (77...82),
+ StatementsNode(85...90)(
+ [CallNode(85...86)(nil, nil, (85...86), nil, nil, nil, nil, 0, "a"),
+ CallNode(89...90)(nil, nil, (89...90), nil, nil, nil, nil, 0, "b")]
+ ),
+ RescueNode(91...101)(
+ (91...97),
+ [],
+ nil,
+ nil,
+ StatementsNode(100...101)(
+ [CallNode(100...101)(
+ nil,
+ nil,
+ (100...101),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (102...105)
+ ),
+ BeginNode(107...125)(
+ (107...112),
+ nil,
+ RescueNode(113...121)(
+ (113...119),
+ [ConstantReadNode(120...121)()],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ nil,
+ nil,
+ (122...125)
+ ),
+ BeginNode(127...152)(
+ (127...132),
+ nil,
+ RescueNode(133...148)(
+ (133...139),
+ [ConstantReadNode(140...141)()],
+ (142...144),
+ LocalVariableWriteNode(145...148)(:foo, 0, nil, (145...148), nil),
+ nil,
+ nil
+ ),
+ nil,
+ nil,
+ (149...152)
+ ),
+ BeginNode(154...204)(
+ (154...159),
+ StatementsNode(162...163)(
+ [CallNode(162...163)(
+ nil,
+ nil,
+ (162...163),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(164...189)(
+ (164...170),
+ [ConstantReadNode(171...172)()],
+ nil,
+ nil,
+ StatementsNode(175...176)(
+ [CallNode(175...176)(
+ nil,
+ nil,
+ (175...176),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ RescueNode(177...189)(
+ (177...183),
+ [ConstantReadNode(184...185)()],
+ nil,
+ nil,
+ StatementsNode(188...189)(
+ [CallNode(188...189)(
+ nil,
+ nil,
+ (188...189),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil
+ )
+ ),
+ nil,
+ EnsureNode(190...204)(
+ (190...196),
+ StatementsNode(199...200)(
+ [CallNode(199...200)(
+ nil,
+ nil,
+ (199...200),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (201...204)
+ ),
+ (201...204)
+ ),
+ BeginNode(206...273)(
+ (206...211),
+ StatementsNode(214...250)(
+ [BeginNode(214...250)(
+ (214...219),
+ StatementsNode(224...235)(
+ [LocalVariableReadNode(224...227)(:foo, 0),
+ CallNode(232...235)(
+ nil,
+ nil,
+ (232...235),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ RescueNode(238...244)((238...244), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (247...250)
+ )]
+ ),
+ RescueNode(251...269)(
+ (251...257),
+ [],
+ nil,
+ nil,
+ StatementsNode(260...269)(
+ [CallNode(260...263)(
+ nil,
+ nil,
+ (260...263),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(266...269)(
+ nil,
+ nil,
+ (266...269),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (270...273)
+ ),
+ BeginNode(275...337)(
+ (275...280),
+ StatementsNode(283...316)(
+ [RescueModifierNode(283...316)(
+ CallNode(283...299)(
+ nil,
+ nil,
+ (283...288),
+ (288...289),
+ ArgumentsNode(289...298)([ConstantReadNode(289...298)()]),
+ (298...299),
+ nil,
+ 0,
+ "raise"
+ ),
+ (300...306),
+ LocalVariableWriteNode(307...316)(
+ :foo,
+ 0,
+ CallNode(313...316)(
+ nil,
+ nil,
+ (313...316),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (307...310),
+ (311...312)
+ )
+ )]
+ ),
+ RescueNode(317...333)(
+ (317...323),
+ [ConstantReadNode(324...333)()],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ nil,
+ nil,
+ (334...337)
+ ),
+ BeginNode(339...374)(
+ (339...344),
+ StatementsNode(347...350)([LocalVariableReadNode(347...350)(:foo, 0)]),
+ RescueNode(351...370)(
+ (351...357),
+ [],
+ (358...360),
+ LocalVariableWriteNode(361...364)(:bar, 0, nil, (361...364), nil),
+ StatementsNode(367...370)(
+ [LocalVariableReadNode(367...370)(:bar, 0)]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (371...374)
+ ),
+ BeginNode(376...428)(
+ (376...381),
+ StatementsNode(384...387)([LocalVariableReadNode(384...387)(:foo, 0)]),
+ RescueNode(388...424)(
+ (388...394),
+ [ConstantReadNode(395...404)(), ConstantReadNode(406...411)()],
+ (412...414),
+ LocalVariableWriteNode(415...418)(:bar, 0, nil, (415...418), nil),
+ StatementsNode(421...424)(
+ [LocalVariableReadNode(421...424)(:bar, 0)]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (425...428)
+ ),
+ BeginNode(430...487)(
+ (430...435),
+ StatementsNode(438...441)([LocalVariableReadNode(438...441)(:bar, 0)]),
+ RescueNode(442...483)(
+ (442...448),
+ [ConstantReadNode(449...458)(),
+ SplatNode(460...464)(
+ (460...461),
+ LocalVariableReadNode(461...464)(:bar, 0)
+ )],
+ (465...467),
+ LocalVariableWriteNode(468...477)(
+ :exception,
+ 0,
+ nil,
+ (468...477),
+ nil
+ ),
+ StatementsNode(480...483)(
+ [CallNode(480...483)(
+ nil,
+ nil,
+ (480...483),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (484...487)
+ ),
+ SingletonClassNode(489...530)(
+ [],
+ (489...494),
+ (495...497),
+ SelfNode(498...502)(),
+ StatementsNode(505...526)(
+ [RescueModifierNode(505...526)(
+ UndefNode(505...515)(
+ [SymbolNode(511...515)((511...512), (512...515), nil, "bar")],
+ (505...510)
+ ),
+ (516...522),
+ NilNode(523...526)()
+ )]
+ ),
+ (527...530)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/lambda.txt b/test/yarp/snapshots/unparser/corpus/literal/lambda.txt
new file mode 100644
index 0000000000..66300fd726
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/lambda.txt
@@ -0,0 +1,112 @@
+ProgramNode(0...80)(
+ [],
+ StatementsNode(0...80)(
+ [CallNode(0...10)(
+ nil,
+ nil,
+ (0...6),
+ nil,
+ nil,
+ nil,
+ BlockNode(7...10)([], nil, nil, (7...8), (9...10)),
+ 0,
+ "lambda"
+ ),
+ CallNode(11...32)(
+ nil,
+ nil,
+ (11...17),
+ nil,
+ nil,
+ nil,
+ BlockNode(18...32)(
+ [:a, :b],
+ BlockParametersNode(20...26)(
+ ParametersNode(21...25)(
+ [RequiredParameterNode(21...22)(:a),
+ RequiredParameterNode(24...25)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (20...21),
+ (25...26)
+ ),
+ StatementsNode(29...30)([LocalVariableReadNode(29...30)(:a, 0)]),
+ (18...19),
+ (31...32)
+ ),
+ 0,
+ "lambda"
+ ),
+ LambdaNode(33...41)(
+ [],
+ (33...35),
+ BlockParametersNode(35...37)(nil, [], (35...36), (36...37)),
+ nil
+ ),
+ LambdaNode(42...51)(
+ [:a],
+ (42...44),
+ BlockParametersNode(44...47)(
+ ParametersNode(45...46)(
+ [RequiredParameterNode(45...46)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (44...45),
+ (46...47)
+ ),
+ nil
+ ),
+ LambdaNode(52...64)(
+ [:a, :b],
+ (52...54),
+ BlockParametersNode(54...60)(
+ ParametersNode(55...59)(
+ [RequiredParameterNode(55...56)(:a),
+ RequiredParameterNode(58...59)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (54...55),
+ (59...60)
+ ),
+ nil
+ ),
+ LambdaNode(65...80)(
+ [:a, :b, :c],
+ (65...67),
+ BlockParametersNode(67...76)(
+ ParametersNode(68...72)(
+ [RequiredParameterNode(68...69)(:a),
+ RequiredParameterNode(71...72)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(74...75)],
+ (67...68),
+ (75...76)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/literal.txt b/test/yarp/snapshots/unparser/corpus/literal/literal.txt
new file mode 100644
index 0000000000..01e9155ec2
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/literal.txt
@@ -0,0 +1,755 @@
+ProgramNode(0...916)(
+ [],
+ StatementsNode(0...916)(
+ [HashNode(0...38)(
+ (0...1),
+ [AssocNode(2...53)(
+ StringNode(2...7)((2...3), (3...6), (6...7), "foo"),
+ InterpolatedStringNode(11...53)(
+ (11...21),
+ [StringNode(39...41)(nil, (39...41), nil, " "),
+ EmbeddedStatementsNode(41...44)((41...43), nil, (43...44)),
+ StringNode(44...45)(nil, (44...45), nil, "\n")],
+ (45...53)
+ ),
+ (8...10)
+ ),
+ AssocNode(23...36)(
+ StringNode(23...28)((23...24), (24...27), (27...28), "bar"),
+ SymbolNode(32...36)((32...33), (33...36), nil, "baz"),
+ (29...31)
+ )],
+ (37...38)
+ ),
+ HashNode(53...84)(
+ (53...54),
+ [AssocNode(55...67)(
+ StringNode(55...60)((55...56), (56...59), (59...60), "foo"),
+ StringNode(64...67)((64...66), (66...66), (66...67), ""),
+ (61...63)
+ ),
+ AssocNode(69...82)(
+ StringNode(69...74)((69...70), (70...73), (73...74), "bar"),
+ SymbolNode(78...82)((78...79), (79...82), nil, "baz"),
+ (75...77)
+ )],
+ (83...84)
+ ),
+ ArrayNode(85...97)(
+ [StringNode(86...91)((86...87), (87...90), (90...91), "foo"),
+ StringNode(93...96)((93...95), (95...95), (95...96), "")],
+ (85...86),
+ (96...97)
+ ),
+ CallNode(98...113)(
+ CallNode(98...111)(
+ nil,
+ nil,
+ (98...99),
+ (99...100),
+ ArgumentsNode(100...128)(
+ [InterpolatedStringNode(100...128)(
+ (100...110),
+ [StringNode(114...116)(nil, (114...116), nil, " "),
+ EmbeddedStatementsNode(116...119)(
+ (116...118),
+ nil,
+ (118...119)
+ ),
+ StringNode(119...120)(nil, (119...120), nil, "\n")],
+ (120...128)
+ )]
+ ),
+ (110...111),
+ nil,
+ 0,
+ "a"
+ ),
+ (111...112),
+ (112...113),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(128...136)(
+ CallNode(128...134)(
+ nil,
+ nil,
+ (128...129),
+ (129...130),
+ ArgumentsNode(130...133)(
+ [StringNode(130...133)((130...132), (132...132), (132...133), "")]
+ ),
+ (133...134),
+ nil,
+ 0,
+ "a"
+ ),
+ (134...135),
+ (135...136),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ HashNode(137...167)(
+ (137...138),
+ [AssocNode(139...182)(
+ StringNode(139...144)((139...140), (140...143), (143...144), "foo"),
+ InterpolatedStringNode(148...182)(
+ (148...158),
+ [StringNode(168...170)(nil, (168...170), nil, " "),
+ EmbeddedStatementsNode(170...173)((170...172), nil, (172...173)),
+ StringNode(173...174)(nil, (173...174), nil, "\n")],
+ (174...182)
+ ),
+ (145...147)
+ ),
+ AssocSplatNode(160...165)(
+ CallNode(162...165)(
+ nil,
+ nil,
+ (162...165),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (160...162)
+ )],
+ (166...167)
+ ),
+ HashNode(182...205)(
+ (182...183),
+ [AssocNode(184...196)(
+ StringNode(184...189)((184...185), (185...188), (188...189), "foo"),
+ StringNode(193...196)((193...195), (195...195), (195...196), ""),
+ (190...192)
+ ),
+ AssocSplatNode(198...203)(
+ CallNode(200...203)(
+ nil,
+ nil,
+ (200...203),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (198...200)
+ )],
+ (204...205)
+ ),
+ InterpolatedStringNode(206...220)(
+ (206...207),
+ [EmbeddedVariableNode(207...210)(
+ (207...208),
+ InstanceVariableReadNode(208...210)()
+ ),
+ StringNode(210...211)(nil, (210...211), nil, " "),
+ EmbeddedVariableNode(211...215)(
+ (211...212),
+ ClassVariableReadNode(212...215)()
+ ),
+ StringNode(215...216)(nil, (215...216), nil, " "),
+ EmbeddedVariableNode(216...219)(
+ (216...217),
+ GlobalVariableReadNode(217...219)()
+ )],
+ (219...220)
+ ),
+ IntegerNode(221...222)(),
+ CallNode(223...226)(
+ IntegerNode(224...226)(),
+ nil,
+ (223...224),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+@"
+ ),
+ IntegerNode(227...228)(),
+ IntegerNode(229...230)(),
+ RationalNode(231...233)(IntegerNode(231...232)()),
+ RationalNode(234...238)(FloatNode(234...237)()),
+ RationalNode(239...243)(FloatNode(239...242)()),
+ ImaginaryNode(244...246)(IntegerNode(244...245)()),
+ CallNode(247...250)(
+ ImaginaryNode(248...250)(IntegerNode(248...249)()),
+ nil,
+ (247...248),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ ImaginaryNode(251...255)(FloatNode(251...254)()),
+ CallNode(256...261)(
+ ImaginaryNode(257...261)(FloatNode(257...260)()),
+ nil,
+ (256...257),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ ImaginaryNode(262...294)(IntegerNode(262...293)()),
+ ImaginaryNode(295...298)(
+ RationalNode(295...297)(IntegerNode(295...296)())
+ ),
+ StringConcatNode(299...310)(
+ StringNode(299...304)((299...300), (300...303), (303...304), "foo"),
+ StringNode(305...310)((305...306), (306...309), (309...310), "bar")
+ ),
+ InterpolatedStringNode(311...326)(
+ (311...312),
+ [StringNode(312...319)(nil, (312...319), nil, "foobar "),
+ EmbeddedStatementsNode(319...325)(
+ (319...321),
+ StatementsNode(321...324)(
+ [CallNode(321...324)(
+ nil,
+ nil,
+ (321...324),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (324...325)
+ )],
+ (325...326)
+ ),
+ InterpolatedStringNode(327...339)(
+ (327...328),
+ [StringNode(328...331)(nil, (328...331), nil, "foo"),
+ EmbeddedStatementsNode(331...335)(
+ (331...333),
+ StatementsNode(333...334)([IntegerNode(333...334)()]),
+ (334...335)
+ ),
+ StringNode(335...338)(nil, (335...338), nil, "bar")],
+ (338...339)
+ ),
+ InterpolatedStringNode(340...349)(
+ (340...341),
+ [StringNode(341...345)(nil, (341...345), nil, "\\\\"),
+ EmbeddedStatementsNode(345...348)((345...347), nil, (347...348))],
+ (348...349)
+ ),
+ InterpolatedStringNode(350...359)(
+ (350...351),
+ [EmbeddedStatementsNode(351...354)((351...353), nil, (353...354)),
+ StringNode(354...358)(nil, (354...358), nil, "\#{}")],
+ (358...359)
+ ),
+ InterpolatedStringNode(360...369)(
+ (360...361),
+ [StringNode(361...365)(nil, (361...365), nil, "\#{}"),
+ EmbeddedStatementsNode(365...368)((365...367), nil, (367...368))],
+ (368...369)
+ ),
+ StringNode(370...385)(
+ (370...371),
+ (371...384),
+ (384...385),
+ "foo\\\#{@bar}"
+ ),
+ StringNode(386...390)((386...387), (387...389), (389...390), "\""),
+ StringNode(391...400)((391...392), (392...399), (399...400), "foo bar"),
+ StringNode(401...411)(
+ (401...402),
+ (402...410),
+ (410...411),
+ "foo\n" + "bar"
+ ),
+ XStringNode(412...417)((412...413), (413...416), (416...417), "foo"),
+ InterpolatedXStringNode(418...430)(
+ (418...419),
+ [StringNode(419...422)(nil, (419...422), nil, "foo"),
+ EmbeddedStatementsNode(422...429)(
+ (422...424),
+ StatementsNode(424...428)([InstanceVariableReadNode(424...428)()]),
+ (428...429)
+ )],
+ (429...430)
+ ),
+ XStringNode(431...434)((431...432), (432...433), (433...434), ")"),
+ XStringNode(435...439)((435...436), (436...438), (438...439), "`"),
+ XStringNode(440...443)((440...441), (441...442), (442...443), "\""),
+ SymbolNode(444...448)((444...445), (445...448), nil, "foo"),
+ InterpolatedSymbolNode(449...455)(
+ (449...451),
+ [StringNode(451...454)(nil, (451...454), nil, "A B")],
+ (454...455)
+ ),
+ SymbolNode(456...460)((456...457), (457...460), nil, "foo"),
+ InterpolatedSymbolNode(461...467)(
+ (461...463),
+ [StringNode(463...466)(nil, (463...466), nil, "A B")],
+ (466...467)
+ ),
+ InterpolatedSymbolNode(468...475)(
+ (468...470),
+ [StringNode(470...474)(nil, (470...474), nil, "A\"B")],
+ (474...475)
+ ),
+ InterpolatedSymbolNode(476...479)((476...478), [], (478...479)),
+ RegularExpressionNode(480...485)(
+ (480...481),
+ (481...484),
+ (484...485),
+ "foo",
+ 0
+ ),
+ RegularExpressionNode(486...514)(
+ (486...487),
+ (487...513),
+ (513...514),
+ "[^-+',./:@[:alnum:][]]+",
+ 0
+ ),
+ InterpolatedRegularExpressionNode(515...527)(
+ (515...516),
+ [StringNode(516...519)(nil, (516...519), nil, "foo"),
+ EmbeddedStatementsNode(519...526)(
+ (519...521),
+ StatementsNode(521...525)([InstanceVariableReadNode(521...525)()]),
+ (525...526)
+ )],
+ (526...527),
+ 0
+ ),
+ InterpolatedRegularExpressionNode(528...543)(
+ (528...529),
+ [StringNode(529...532)(nil, (529...532), nil, "foo"),
+ EmbeddedStatementsNode(532...539)(
+ (532...534),
+ StatementsNode(534...538)([InstanceVariableReadNode(534...538)()]),
+ (538...539)
+ )],
+ (539...543),
+ 7
+ ),
+ InterpolatedRegularExpressionNode(544...557)(
+ (544...545),
+ [EmbeddedStatementsNode(545...556)(
+ (545...547),
+ StatementsNode(547...555)(
+ [StringNode(547...555)(
+ (547...548),
+ (548...554),
+ (554...555),
+ "\u0000"
+ )]
+ ),
+ (555...556)
+ )],
+ (556...557),
+ 0
+ ),
+ RegularExpressionNode(558...562)(
+ (558...559),
+ (559...561),
+ (561...562),
+ "\n",
+ 0
+ ),
+ RegularExpressionNode(563...567)(
+ (563...564),
+ (564...566),
+ (566...567),
+ "\n",
+ 0
+ ),
+ RegularExpressionNode(568...573)(
+ (568...569),
+ (569...571),
+ (571...573),
+ "\n",
+ 4
+ ),
+ RegularExpressionNode(574...581)(
+ (574...575),
+ (575...579),
+ (579...581),
+ "//",
+ 4
+ ),
+ InterpolatedSymbolNode(582...597)(
+ (582...584),
+ [StringNode(584...587)(nil, (584...587), nil, "foo"),
+ EmbeddedStatementsNode(587...593)(
+ (587...589),
+ StatementsNode(589...592)(
+ [CallNode(589...592)(
+ nil,
+ nil,
+ (589...592),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (592...593)
+ ),
+ StringNode(593...596)(nil, (593...596), nil, "baz")],
+ (596...597)
+ ),
+ InterpolatedSymbolNode(598...609)(
+ (598...600),
+ [EmbeddedStatementsNode(600...608)(
+ (600...602),
+ StatementsNode(602...607)(
+ [StringNode(602...607)(
+ (602...603),
+ (603...606),
+ (606...607),
+ "foo"
+ )]
+ ),
+ (607...608)
+ )],
+ (608...609)
+ ),
+ RangeNode(610...624)(
+ ParenthesesNode(610...621)(
+ StatementsNode(611...620)(
+ [CallNode(611...620)(
+ FloatNode(611...614)(),
+ nil,
+ (615...616),
+ nil,
+ ArgumentsNode(617...620)([FloatNode(617...620)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ )]
+ ),
+ (610...611),
+ (620...621)
+ ),
+ IntegerNode(623...624)(),
+ (621...623),
+ 0
+ ),
+ RangeNode(625...639)(
+ IntegerNode(625...626)(),
+ ParenthesesNode(628...639)(
+ StatementsNode(629...638)(
+ [CallNode(629...638)(
+ FloatNode(629...632)(),
+ nil,
+ (633...634),
+ nil,
+ ArgumentsNode(635...638)([FloatNode(635...638)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ )]
+ ),
+ (628...629),
+ (638...639)
+ ),
+ (626...628),
+ 0
+ ),
+ RangeNode(640...656)(
+ ParenthesesNode(640...651)(
+ StatementsNode(641...650)(
+ [CallNode(641...650)(
+ FloatNode(641...644)(),
+ nil,
+ (645...646),
+ nil,
+ ArgumentsNode(647...650)([FloatNode(647...650)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ )]
+ ),
+ (640...641),
+ (650...651)
+ ),
+ IntegerNode(653...656)(),
+ (651...653),
+ 0
+ ),
+ CallNode(657...661)(
+ FloatNode(658...661)(),
+ nil,
+ (657...658),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ FloatNode(662...665)(),
+ ArrayNode(666...672)(
+ [IntegerNode(667...668)(), IntegerNode(670...671)()],
+ (666...667),
+ (671...672)
+ ),
+ ArrayNode(673...684)(
+ [IntegerNode(674...675)(),
+ ParenthesesNode(677...679)(nil, (677...678), (678...679)),
+ CallNode(681...683)(
+ nil,
+ nil,
+ (681...683),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "n2"
+ )],
+ (673...674),
+ (683...684)
+ ),
+ ArrayNode(685...688)(
+ [IntegerNode(686...687)()],
+ (685...686),
+ (687...688)
+ ),
+ ArrayNode(689...691)([], (689...690), (690...691)),
+ ArrayNode(692...702)(
+ [IntegerNode(693...694)(),
+ SplatNode(696...701)(
+ (696...697),
+ InstanceVariableReadNode(697...701)()
+ )],
+ (692...693),
+ (701...702)
+ ),
+ ArrayNode(703...713)(
+ [SplatNode(704...709)(
+ (704...705),
+ InstanceVariableReadNode(705...709)()
+ ),
+ IntegerNode(711...712)()],
+ (703...704),
+ (712...713)
+ ),
+ ArrayNode(714...728)(
+ [SplatNode(715...720)(
+ (715...716),
+ InstanceVariableReadNode(716...720)()
+ ),
+ SplatNode(722...727)(
+ (722...723),
+ InstanceVariableReadNode(723...727)()
+ )],
+ (714...715),
+ (727...728)
+ ),
+ HashNode(729...731)((729...730), [], (730...731)),
+ HashNode(732...744)(
+ (732...733),
+ [AssocNode(734...742)(
+ ParenthesesNode(734...736)(nil, (734...735), (735...736)),
+ ParenthesesNode(740...742)(nil, (740...741), (741...742)),
+ (737...739)
+ )],
+ (743...744)
+ ),
+ HashNode(745...755)(
+ (745...746),
+ [AssocNode(747...753)(
+ IntegerNode(747...748)(),
+ IntegerNode(752...753)(),
+ (749...751)
+ )],
+ (754...755)
+ ),
+ HashNode(756...774)(
+ (756...757),
+ [AssocNode(758...764)(
+ IntegerNode(758...759)(),
+ IntegerNode(763...764)(),
+ (760...762)
+ ),
+ AssocNode(766...772)(
+ IntegerNode(766...767)(),
+ IntegerNode(771...772)(),
+ (768...770)
+ )],
+ (773...774)
+ ),
+ HashNode(775...802)(
+ (775...776),
+ [AssocNode(777...794)(
+ SymbolNode(777...779)(nil, (777...778), (778...779), "a"),
+ ParenthesesNode(780...794)(
+ StatementsNode(781...793)(
+ [RescueModifierNode(781...793)(
+ IntegerNode(781...782)(),
+ (783...789),
+ CallNode(790...793)(
+ nil,
+ nil,
+ (790...793),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )
+ )]
+ ),
+ (780...781),
+ (793...794)
+ ),
+ nil
+ ),
+ AssocNode(796...800)(
+ SymbolNode(796...798)(nil, (796...797), (797...798), "b"),
+ IntegerNode(799...800)(),
+ nil
+ )],
+ (801...802)
+ ),
+ HashNode(803...817)(
+ (803...804),
+ [AssocNode(805...809)(
+ SymbolNode(805...807)(nil, (805...806), (806...807), "a"),
+ IntegerNode(808...809)(),
+ nil
+ ),
+ AssocNode(811...815)(
+ SymbolNode(811...813)(nil, (811...812), (812...813), "b"),
+ IntegerNode(814...815)(),
+ nil
+ )],
+ (816...817)
+ ),
+ HashNode(818...827)(
+ (818...819),
+ [AssocNode(820...825)(
+ SymbolNode(820...822)(nil, (820...821), (821...822), "a"),
+ SymbolNode(823...825)((823...824), (824...825), nil, "a"),
+ nil
+ )],
+ (826...827)
+ ),
+ HashNode(828...843)(
+ (828...829),
+ [AssocNode(830...841)(
+ InterpolatedSymbolNode(830...836)(
+ (830...832),
+ [StringNode(832...835)(nil, (832...835), nil, "a b")],
+ (835...836)
+ ),
+ IntegerNode(840...841)(),
+ (837...839)
+ )],
+ (842...843)
+ ),
+ HashNode(844...856)(
+ (844...845),
+ [AssocNode(846...854)(
+ SymbolNode(846...849)((846...847), (847...849), nil, "-@"),
+ IntegerNode(853...854)(),
+ (850...852)
+ )],
+ (855...856)
+ ),
+ InterpolatedStringNode(857...869)(
+ (857...858),
+ [EmbeddedStatementsNode(858...861)((858...860), nil, (860...861)),
+ StringNode(861...862)(nil, (861...862), nil, "\n"),
+ EmbeddedStatementsNode(862...865)((862...864), nil, (864...865)),
+ StringNode(865...868)(nil, (865...868), nil, "\n" + "a")],
+ (868...869)
+ ),
+ CallNode(870...892)(
+ nil,
+ nil,
+ (870...873),
+ nil,
+ nil,
+ nil,
+ BlockNode(874...892)(
+ [],
+ nil,
+ StatementsNode(878...890)(
+ [InterpolatedStringNode(878...890)(
+ (878...879),
+ [EmbeddedStatementsNode(879...882)(
+ (879...881),
+ nil,
+ (881...882)
+ ),
+ StringNode(882...883)(nil, (882...883), nil, "\n"),
+ EmbeddedStatementsNode(883...886)(
+ (883...885),
+ nil,
+ (885...886)
+ ),
+ StringNode(886...889)(nil, (886...889), nil, "\n" + "a")],
+ (889...890)
+ )]
+ ),
+ (874...875),
+ (891...892)
+ ),
+ 0,
+ "foo"
+ ),
+ InterpolatedSymbolNode(893...901)(
+ (893...895),
+ [StringNode(895...900)(nil, (895...900), nil, "a\\\n" + "b")],
+ (900...901)
+ ),
+ InterpolatedXStringNode(902...916)(
+ (902...903),
+ [StringNode(903...907)(nil, (903...907), nil, " x\n"),
+ EmbeddedStatementsNode(907...913)(
+ (907...909),
+ StatementsNode(909...912)(
+ [CallNode(909...912)(
+ nil,
+ nil,
+ (909...912),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (912...913)
+ ),
+ StringNode(913...915)(nil, (913...915), nil, "\n" + "#")],
+ (915...916)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/module.txt b/test/yarp/snapshots/unparser/corpus/literal/module.txt
new file mode 100644
index 0000000000..c917fedd23
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/module.txt
@@ -0,0 +1,78 @@
+ProgramNode(0...106)(
+ [],
+ StatementsNode(0...106)(
+ [ModuleNode(0...12)([], (0...6), ConstantReadNode(7...8)(), nil, (9...12)),
+ ModuleNode(14...29)(
+ [],
+ (14...20),
+ ConstantPathNode(21...25)(
+ ConstantReadNode(21...22)(),
+ ConstantReadNode(24...25)(),
+ (22...24)
+ ),
+ nil,
+ (26...29)
+ ),
+ ModuleNode(31...49)(
+ [],
+ (31...37),
+ ConstantPathNode(38...45)(
+ ConstantPathNode(38...42)(
+ ConstantReadNode(38...39)(),
+ ConstantReadNode(41...42)(),
+ (39...41)
+ ),
+ ConstantReadNode(44...45)(),
+ (42...44)
+ ),
+ nil,
+ (46...49)
+ ),
+ ModuleNode(51...106)(
+ [],
+ (51...57),
+ ConstantReadNode(58...59)(),
+ StatementsNode(62...102)(
+ [CallNode(62...76)(
+ nil,
+ nil,
+ (62...69),
+ (69...70),
+ ArgumentsNode(70...75)(
+ [CallNode(70...75)(
+ ConstantReadNode(70...71)(),
+ (71...72),
+ (72...75),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "new"
+ )]
+ ),
+ (75...76),
+ nil,
+ 0,
+ "include"
+ ),
+ DefNode(80...102)(
+ (84...87),
+ nil,
+ nil,
+ StatementsNode(92...96)(
+ [SymbolNode(92...96)((92...93), (93...96), nil, "bar")]
+ ),
+ [],
+ (80...83),
+ nil,
+ nil,
+ nil,
+ nil,
+ (99...102)
+ )]
+ ),
+ (103...106)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/opasgn.txt b/test/yarp/snapshots/unparser/corpus/literal/opasgn.txt
new file mode 100644
index 0000000000..df1836e4c5
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/opasgn.txt
@@ -0,0 +1,429 @@
+ProgramNode(0...233)(
+ [:a, :h],
+ StatementsNode(0...233)(
+ [LocalVariableOperatorWriteNode(0...6)(
+ (0...1),
+ (2...4),
+ IntegerNode(5...6)(),
+ :a,
+ :+
+ ),
+ LocalVariableOperatorWriteNode(7...13)(
+ (7...8),
+ (9...11),
+ IntegerNode(12...13)(),
+ :a,
+ :-
+ ),
+ LocalVariableOperatorWriteNode(14...21)(
+ (14...15),
+ (16...19),
+ IntegerNode(20...21)(),
+ :a,
+ :**
+ ),
+ LocalVariableOperatorWriteNode(22...28)(
+ (22...23),
+ (24...26),
+ IntegerNode(27...28)(),
+ :a,
+ :*
+ ),
+ LocalVariableOperatorWriteNode(29...35)(
+ (29...30),
+ (31...33),
+ IntegerNode(34...35)(),
+ :a,
+ :/
+ ),
+ LocalVariableOperatorAndWriteNode(36...43)(
+ (36...37),
+ (38...41),
+ CallNode(42...43)(nil, nil, (42...43), nil, nil, nil, nil, 0, "b"),
+ :a
+ ),
+ LocalVariableOperatorOrWriteNode(44...51)(
+ (44...45),
+ (46...49),
+ IntegerNode(50...51)(),
+ :a
+ ),
+ CallNode(52...65)(
+ ParenthesesNode(52...61)(
+ StatementsNode(53...60)(
+ [LocalVariableOperatorOrWriteNode(53...60)(
+ (53...54),
+ (55...58),
+ IntegerNode(59...60)(),
+ :a
+ )]
+ ),
+ (52...53),
+ (60...61)
+ ),
+ (61...62),
+ (62...65),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(66...83)(
+ ParenthesesNode(66...76)(
+ StatementsNode(67...75)(
+ [LocalVariableOperatorOrWriteNode(67...75)(
+ (67...68),
+ (69...72),
+ HashNode(73...75)((73...74), [], (74...75)),
+ :h
+ )]
+ ),
+ (66...67),
+ (75...76)
+ ),
+ nil,
+ (76...79),
+ (76...77),
+ ArgumentsNode(77...83)(
+ [CallNode(77...78)(nil, nil, (77...78), nil, nil, nil, nil, 0, "k"),
+ CallNode(82...83)(nil, nil, (82...83), nil, nil, nil, nil, 0, "v")]
+ ),
+ (78...79),
+ nil,
+ 0,
+ "[]="
+ ),
+ CallOperatorWriteNode(84...92)(
+ CallNode(84...87)(
+ LocalVariableReadNode(84...85)(:a, 0),
+ (85...86),
+ (86...87),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (88...90),
+ IntegerNode(91...92)(),
+ :+
+ ),
+ CallOperatorWriteNode(93...101)(
+ CallNode(93...96)(
+ LocalVariableReadNode(93...94)(:a, 0),
+ (94...95),
+ (95...96),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (97...99),
+ IntegerNode(100...101)(),
+ :-
+ ),
+ CallOperatorWriteNode(102...111)(
+ CallNode(102...105)(
+ LocalVariableReadNode(102...103)(:a, 0),
+ (103...104),
+ (104...105),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (106...109),
+ IntegerNode(110...111)(),
+ :**
+ ),
+ CallOperatorWriteNode(112...120)(
+ CallNode(112...115)(
+ LocalVariableReadNode(112...113)(:a, 0),
+ (113...114),
+ (114...115),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (116...118),
+ IntegerNode(119...120)(),
+ :*
+ ),
+ CallOperatorWriteNode(121...129)(
+ CallNode(121...124)(
+ LocalVariableReadNode(121...122)(:a, 0),
+ (122...123),
+ (123...124),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (125...127),
+ IntegerNode(128...129)(),
+ :/
+ ),
+ CallOperatorAndWriteNode(130...139)(
+ CallNode(130...133)(
+ LocalVariableReadNode(130...131)(:a, 0),
+ (131...132),
+ (132...133),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ (134...137),
+ CallNode(138...139)(nil, nil, (138...139), nil, nil, nil, nil, 0, "b")
+ ),
+ CallOperatorOrWriteNode(140...149)(
+ CallNode(140...143)(
+ LocalVariableReadNode(140...141)(:a, 0),
+ (141...142),
+ (142...143),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b="
+ ),
+ IntegerNode(148...149)(),
+ (144...147)
+ ),
+ CallOperatorWriteNode(150...159)(
+ CallNode(150...154)(
+ LocalVariableReadNode(150...151)(:a, 0),
+ nil,
+ (151...154),
+ (151...152),
+ ArgumentsNode(152...153)(
+ [CallNode(152...153)(
+ nil,
+ nil,
+ (152...153),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (153...154),
+ nil,
+ 0,
+ "[]="
+ ),
+ (155...157),
+ IntegerNode(158...159)(),
+ :+
+ ),
+ CallOperatorWriteNode(160...169)(
+ CallNode(160...164)(
+ LocalVariableReadNode(160...161)(:a, 0),
+ nil,
+ (161...164),
+ (161...162),
+ ArgumentsNode(162...163)(
+ [CallNode(162...163)(
+ nil,
+ nil,
+ (162...163),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (163...164),
+ nil,
+ 0,
+ "[]="
+ ),
+ (165...167),
+ IntegerNode(168...169)(),
+ :-
+ ),
+ CallOperatorWriteNode(170...180)(
+ CallNode(170...174)(
+ LocalVariableReadNode(170...171)(:a, 0),
+ nil,
+ (171...174),
+ (171...172),
+ ArgumentsNode(172...173)(
+ [CallNode(172...173)(
+ nil,
+ nil,
+ (172...173),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (173...174),
+ nil,
+ 0,
+ "[]="
+ ),
+ (175...178),
+ IntegerNode(179...180)(),
+ :**
+ ),
+ CallOperatorWriteNode(181...190)(
+ CallNode(181...185)(
+ LocalVariableReadNode(181...182)(:a, 0),
+ nil,
+ (182...185),
+ (182...183),
+ ArgumentsNode(183...184)(
+ [CallNode(183...184)(
+ nil,
+ nil,
+ (183...184),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (184...185),
+ nil,
+ 0,
+ "[]="
+ ),
+ (186...188),
+ IntegerNode(189...190)(),
+ :*
+ ),
+ CallOperatorWriteNode(191...200)(
+ CallNode(191...195)(
+ LocalVariableReadNode(191...192)(:a, 0),
+ nil,
+ (192...195),
+ (192...193),
+ ArgumentsNode(193...194)(
+ [CallNode(193...194)(
+ nil,
+ nil,
+ (193...194),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (194...195),
+ nil,
+ 0,
+ "[]="
+ ),
+ (196...198),
+ IntegerNode(199...200)(),
+ :/
+ ),
+ CallOperatorAndWriteNode(201...211)(
+ CallNode(201...205)(
+ LocalVariableReadNode(201...202)(:a, 0),
+ nil,
+ (202...205),
+ (202...203),
+ ArgumentsNode(203...204)(
+ [CallNode(203...204)(
+ nil,
+ nil,
+ (203...204),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (204...205),
+ nil,
+ 0,
+ "[]="
+ ),
+ (206...209),
+ CallNode(210...211)(nil, nil, (210...211), nil, nil, nil, nil, 0, "b")
+ ),
+ CallOperatorOrWriteNode(212...222)(
+ CallNode(212...216)(
+ LocalVariableReadNode(212...213)(:a, 0),
+ nil,
+ (213...216),
+ (213...214),
+ ArgumentsNode(214...215)(
+ [CallNode(214...215)(
+ nil,
+ nil,
+ (214...215),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (215...216),
+ nil,
+ 0,
+ "[]="
+ ),
+ IntegerNode(221...222)(),
+ (217...220)
+ ),
+ CallOperatorWriteNode(223...233)(
+ CallNode(223...228)(
+ CallNode(223...226)(
+ nil,
+ nil,
+ (223...226),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (226...227),
+ (227...228),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "A="
+ ),
+ (229...231),
+ IntegerNode(232...233)(),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/pattern.txt b/test/yarp/snapshots/unparser/corpus/literal/pattern.txt
new file mode 100644
index 0000000000..cc8b9242d6
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/pattern.txt
@@ -0,0 +1,291 @@
+ProgramNode(0...408)(
+ [:a, :x, :y],
+ StatementsNode(0...408)(
+ [CaseNode(0...345)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [InNode(9...38)(
+ ArrayPatternNode(12...26)(
+ ConstantReadNode(12...13)(),
+ [IntegerNode(14...15)(), IntegerNode(17...18)()],
+ SplatNode(20...22)(
+ (20...21),
+ LocalVariableWriteNode(21...22)(:a, 0, nil, (21...22), nil)
+ ),
+ [IntegerNode(24...25)()],
+ (13...14),
+ (25...26)
+ ),
+ StatementsNode(34...38)([TrueNode(34...38)()]),
+ (9...11),
+ (27...31)
+ ),
+ InNode(39...59)(
+ ArrayPatternNode(42...50)(
+ nil,
+ [IntegerNode(43...44)(), IntegerNode(46...47)()],
+ nil,
+ [],
+ (42...43),
+ (49...50)
+ ),
+ StatementsNode(58...59)(
+ [CallNode(58...59)(
+ nil,
+ nil,
+ (58...59),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "y"
+ )]
+ ),
+ (39...41),
+ (51...55)
+ ),
+ InNode(60...80)(
+ HashPatternNode(63...68)(
+ ConstantReadNode(63...64)(),
+ [AssocNode(65...67)(
+ SymbolNode(65...67)(nil, (65...66), (66...67), "x"),
+ nil,
+ nil
+ )],
+ nil,
+ (64...65),
+ (67...68)
+ ),
+ StatementsNode(76...80)([TrueNode(76...80)()]),
+ (60...62),
+ (69...73)
+ ),
+ InNode(81...101)(
+ HashPatternNode(84...89)(
+ nil,
+ [AssocNode(85...88)(
+ AssocSplatNode(85...88)(
+ LocalVariableWriteNode(87...88)(:a, 0, nil, (87...88), nil),
+ (85...87)
+ ),
+ nil,
+ nil
+ )],
+ nil,
+ (84...85),
+ (88...89)
+ ),
+ StatementsNode(97...101)([TrueNode(97...101)()]),
+ (81...83),
+ (90...94)
+ ),
+ InNode(102...127)(
+ IfNode(105...115)(
+ (108...110),
+ TrueNode(111...115)(),
+ StatementsNode(105...107)(
+ [HashPatternNode(105...107)(
+ nil,
+ [],
+ nil,
+ (105...106),
+ (106...107)
+ )]
+ ),
+ nil,
+ nil
+ ),
+ StatementsNode(123...127)([TrueNode(123...127)()]),
+ (102...104),
+ (116...120)
+ ),
+ InNode(128...152)(
+ ArrayPatternNode(131...140)(
+ nil,
+ [LocalVariableWriteNode(132...133)(:x, 0, nil, (132...133), nil),
+ LocalVariableWriteNode(135...136)(:y, 0, nil, (135...136), nil)],
+ SplatNode(138...139)((138...139), nil),
+ [],
+ (131...132),
+ (139...140)
+ ),
+ StatementsNode(148...152)([TrueNode(148...152)()]),
+ (128...130),
+ (141...145)
+ ),
+ InNode(153...181)(
+ HashPatternNode(156...169)(
+ nil,
+ [AssocNode(157...161)(
+ SymbolNode(157...159)(nil, (157...158), (158...159), "a"),
+ IntegerNode(160...161)(),
+ nil
+ ),
+ AssocNode(163...168)(
+ SymbolNode(163...166)(nil, (163...165), (165...166), "aa"),
+ IntegerNode(167...168)(),
+ nil
+ )],
+ nil,
+ (156...157),
+ (168...169)
+ ),
+ StatementsNode(177...181)([TrueNode(177...181)()]),
+ (153...155),
+ (170...174)
+ ),
+ InNode(182...199)(
+ HashPatternNode(185...187)(nil, [], nil, (185...186), (186...187)),
+ StatementsNode(195...199)([TrueNode(195...199)()]),
+ (182...184),
+ (188...192)
+ ),
+ InNode(200...222)(
+ HashPatternNode(203...210)(
+ nil,
+ [AssocNode(204...209)(
+ NoKeywordsParameterNode(204...209)((204...206), (206...209)),
+ nil,
+ nil
+ )],
+ nil,
+ (203...204),
+ (209...210)
+ ),
+ StatementsNode(218...222)([TrueNode(218...222)()]),
+ (200...202),
+ (211...215)
+ ),
+ InNode(223...246)(
+ HashPatternNode(226...234)(
+ nil,
+ [AssocNode(227...233)(
+ SymbolNode(227...231)(
+ (227...228),
+ (228...229),
+ (229...231),
+ "a"
+ ),
+ IntegerNode(232...233)(),
+ nil
+ )],
+ nil,
+ (226...227),
+ (233...234)
+ ),
+ StatementsNode(242...246)([TrueNode(242...246)()]),
+ (223...225),
+ (235...239)
+ ),
+ InNode(247...267)(
+ AlternationPatternNode(250...255)(
+ IntegerNode(250...251)(),
+ IntegerNode(254...255)(),
+ (252...253)
+ ),
+ StatementsNode(263...267)([TrueNode(263...267)()]),
+ (247...249),
+ (256...260)
+ ),
+ InNode(268...289)(
+ CapturePatternNode(271...277)(
+ IntegerNode(271...272)(),
+ LocalVariableWriteNode(276...277)(:a, 0, nil, (276...277), nil),
+ (273...275)
+ ),
+ StatementsNode(285...289)([TrueNode(285...289)()]),
+ (268...270),
+ (278...282)
+ ),
+ InNode(290...307)(
+ PinnedVariableNode(293...295)(
+ LocalVariableReadNode(294...295)(:x, 0),
+ (293...294)
+ ),
+ StatementsNode(303...307)([TrueNode(303...307)()]),
+ (290...292),
+ (296...300)
+ ),
+ InNode(308...312)(IntegerNode(311...312)(), nil, (308...310), nil),
+ InNode(313...329)(
+ IntegerNode(316...317)(),
+ StatementsNode(325...329)([TrueNode(325...329)()]),
+ (313...315),
+ (318...322)
+ )],
+ ElseNode(330...345)(
+ (330...334),
+ StatementsNode(337...341)([TrueNode(337...341)()]),
+ (342...345)
+ ),
+ (0...4),
+ (342...345)
+ ),
+ CaseNode(346...376)(
+ CallNode(351...354)(
+ nil,
+ nil,
+ (351...354),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(355...372)(
+ ArrayPatternNode(358...372)(
+ ConstantReadNode(358...359)(),
+ [IntegerNode(360...361)(), IntegerNode(363...364)()],
+ SplatNode(366...368)(
+ (366...367),
+ LocalVariableWriteNode(367...368)(:a, 0, nil, (367...368), nil)
+ ),
+ [IntegerNode(370...371)()],
+ (359...360),
+ (371...372)
+ ),
+ nil,
+ (355...357),
+ nil
+ )],
+ nil,
+ (346...350),
+ (373...376)
+ ),
+ CaseNode(377...399)(
+ CallNode(382...385)(
+ nil,
+ nil,
+ (382...385),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [InNode(386...390)(
+ ConstantReadNode(389...390)(),
+ nil,
+ (386...388),
+ nil
+ )],
+ ElseNode(391...399)((391...395), nil, (396...399)),
+ (377...381),
+ (396...399)
+ ),
+ MatchPredicateNode(400...408)(
+ IntegerNode(400...401)(),
+ ArrayPatternNode(405...408)(
+ nil,
+ [LocalVariableWriteNode(406...407)(:a, 0, nil, (406...407), nil)],
+ nil,
+ [],
+ (405...406),
+ (407...408)
+ ),
+ (402...404)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/pragma.txt b/test/yarp/snapshots/unparser/corpus/literal/pragma.txt
new file mode 100644
index 0000000000..a50b8d7942
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/pragma.txt
@@ -0,0 +1,9 @@
+ProgramNode(0...38)(
+ [],
+ StatementsNode(0...38)(
+ [SourceEncodingNode(0...12)(),
+ SourceFileNode(13...21)("/fixtures/unparser/corpus/literal/pragma.txt"),
+ SourceLineNode(22...30)(),
+ CallNode(31...38)(nil, nil, (31...38), nil, nil, nil, nil, 0, "__dir__")]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/range.txt b/test/yarp/snapshots/unparser/corpus/literal/range.txt
new file mode 100644
index 0000000000..ea2b362a32
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/range.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [ParenthesesNode(0...5)(
+ StatementsNode(1...4)(
+ [RangeNode(1...4)(IntegerNode(1...2)(), nil, (2...4), 0)]
+ ),
+ (0...1),
+ (4...5)
+ ),
+ RangeNode(6...10)(
+ IntegerNode(6...7)(),
+ IntegerNode(9...10)(),
+ (7...9),
+ 0
+ ),
+ ParenthesesNode(11...17)(
+ StatementsNode(12...16)(
+ [RangeNode(12...16)(IntegerNode(12...13)(), nil, (13...16), 1)]
+ ),
+ (11...12),
+ (16...17)
+ ),
+ RangeNode(18...23)(
+ IntegerNode(18...19)(),
+ IntegerNode(22...23)(),
+ (19...22),
+ 1
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/rescue.txt b/test/yarp/snapshots/unparser/corpus/literal/rescue.txt
new file mode 100644
index 0000000000..f0018fbfad
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/rescue.txt
@@ -0,0 +1,72 @@
+ProgramNode(0...64)(
+ [:x],
+ StatementsNode(0...64)(
+ [RescueModifierNode(0...14)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (4...10),
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "bar")
+ ),
+ RescueModifierNode(15...36)(
+ CallNode(15...18)(nil, nil, (15...18), nil, nil, nil, nil, 0, "foo"),
+ (19...25),
+ ReturnNode(26...36)(
+ (26...32),
+ ArgumentsNode(33...36)(
+ [CallNode(33...36)(
+ nil,
+ nil,
+ (33...36),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )
+ ),
+ LocalVariableWriteNode(37...64)(
+ :x,
+ 0,
+ ParenthesesNode(41...64)(
+ StatementsNode(42...63)(
+ [RescueModifierNode(42...63)(
+ CallNode(42...45)(
+ nil,
+ nil,
+ (42...45),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (46...52),
+ ReturnNode(53...63)(
+ (53...59),
+ ArgumentsNode(60...63)(
+ [CallNode(60...63)(
+ nil,
+ nil,
+ (60...63),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )
+ )]
+ ),
+ (41...42),
+ (63...64)
+ ),
+ (37...38),
+ (39...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/send.txt b/test/yarp/snapshots/unparser/corpus/literal/send.txt
new file mode 100644
index 0000000000..a91a323914
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/send.txt
@@ -0,0 +1,2029 @@
+ProgramNode(0...991)(
+ [],
+ StatementsNode(0...991)(
+ [ModuleNode(0...35)(
+ [:foo, :a, :_],
+ (0...6),
+ ConstantReadNode(7...8)(),
+ StatementsNode(11...31)(
+ [LocalVariableOperatorOrWriteNode(11...31)(
+ (11...14),
+ (15...18),
+ ParenthesesNode(19...31)(
+ StatementsNode(21...30)(
+ [MultiWriteNode(21...30)(
+ [LocalVariableWriteNode(21...22)(
+ :a,
+ 0,
+ nil,
+ (21...22),
+ nil
+ ),
+ LocalVariableWriteNode(24...25)(
+ :_,
+ 0,
+ nil,
+ (24...25),
+ nil
+ )],
+ (27...28),
+ CallNode(29...30)(
+ nil,
+ nil,
+ (29...30),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ (20...21),
+ (25...26)
+ )]
+ ),
+ (19...20),
+ (30...31)
+ ),
+ :foo
+ )]
+ ),
+ (32...35)
+ ),
+ ModuleNode(37...73)(
+ [:local],
+ (37...43),
+ ConstantReadNode(44...45)(),
+ StatementsNode(48...69)(
+ [LocalVariableWriteNode(48...57)(
+ :local,
+ 0,
+ IntegerNode(56...57)(),
+ (48...53),
+ (54...55)
+ ),
+ CallNode(60...69)(
+ LocalVariableReadNode(60...65)(:local, 0),
+ (65...66),
+ (66...69),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (70...73)
+ ),
+ CallNode(74...89)(
+ ClassNode(74...85)(
+ [],
+ (74...79),
+ ConstantReadNode(80...81)(),
+ nil,
+ nil,
+ nil,
+ (82...85)
+ ),
+ (85...86),
+ (86...89),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(90...106)(
+ ModuleNode(90...102)(
+ [],
+ (90...96),
+ ConstantReadNode(97...98)(),
+ nil,
+ (99...102)
+ ),
+ (102...103),
+ (103...106),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(107...127)(
+ BeginNode(107...123)(
+ (107...112),
+ nil,
+ RescueNode(113...119)((113...119), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (120...123)
+ ),
+ (123...124),
+ (124...127),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(128...169)(
+ CaseNode(128...165)(
+ ParenthesesNode(133...152)(
+ StatementsNode(134...151)(
+ [DefNode(134...145)(
+ (138...141),
+ nil,
+ nil,
+ nil,
+ [],
+ (134...137),
+ nil,
+ nil,
+ nil,
+ nil,
+ (142...145)
+ ),
+ SymbolNode(147...151)((147...148), (148...151), nil, "bar")]
+ ),
+ (133...134),
+ (151...152)
+ ),
+ [WhenNode(153...161)(
+ (153...157),
+ [CallNode(158...161)(
+ nil,
+ nil,
+ (158...161),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ nil
+ )],
+ nil,
+ (128...132),
+ (162...165)
+ ),
+ (165...166),
+ (166...169),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(170...195)(
+ CaseNode(170...191)(
+ CallNode(175...178)(
+ nil,
+ nil,
+ (175...178),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ [WhenNode(179...187)(
+ (179...183),
+ [CallNode(184...187)(
+ nil,
+ nil,
+ (184...187),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ nil
+ )],
+ nil,
+ (170...174),
+ (188...191)
+ ),
+ (191...192),
+ (192...195),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(196...217)(
+ SingletonClassNode(196...213)(
+ [],
+ (196...201),
+ (202...204),
+ SelfNode(205...209)(),
+ nil,
+ (210...213)
+ ),
+ (213...214),
+ (214...217),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(218...238)(
+ DefNode(218...234)(
+ (227...230),
+ SelfNode(222...226)(),
+ nil,
+ nil,
+ [],
+ (218...221),
+ (226...227),
+ nil,
+ nil,
+ nil,
+ (231...234)
+ ),
+ (234...235),
+ (235...238),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(239...254)(
+ DefNode(239...250)(
+ (243...246),
+ nil,
+ nil,
+ nil,
+ [],
+ (239...242),
+ nil,
+ nil,
+ nil,
+ nil,
+ (247...250)
+ ),
+ (250...251),
+ (251...254),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(255...272)(
+ UntilNode(255...268)(
+ (255...260),
+ CallNode(261...264)(
+ nil,
+ nil,
+ (261...264),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil
+ ),
+ (268...269),
+ (269...272),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(273...290)(
+ WhileNode(273...286)(
+ (273...278),
+ CallNode(279...282)(
+ nil,
+ nil,
+ (279...282),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil
+ ),
+ (286...287),
+ (287...290),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(291...303)(
+ CallNode(291...299)(
+ nil,
+ nil,
+ (291...295),
+ nil,
+ nil,
+ nil,
+ BlockNode(296...299)([], nil, nil, (296...297), (298...299)),
+ 0,
+ "loop"
+ ),
+ (299...300),
+ (300...303),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(304...318)(
+ IfNode(304...314)(
+ (304...306),
+ CallNode(307...310)(
+ nil,
+ nil,
+ (307...310),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ nil,
+ (311...314)
+ ),
+ (314...315),
+ (315...318),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ CallNode(319...338)(
+ ParenthesesNode(319...334)(
+ StatementsNode(320...333)(
+ [CallNode(320...333)(
+ RegularExpressionNode(320...325)(
+ (320...321),
+ (321...324),
+ (324...325),
+ "bar",
+ 0
+ ),
+ nil,
+ (326...328),
+ nil,
+ ArgumentsNode(329...333)(
+ [SymbolNode(329...333)((329...330), (330...333), nil, "foo")]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ )]
+ ),
+ (319...320),
+ (333...334)
+ ),
+ (334...335),
+ (335...338),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(339...349)(
+ ParenthesesNode(339...345)(
+ StatementsNode(340...344)(
+ [RangeNode(340...344)(
+ IntegerNode(340...341)(),
+ IntegerNode(343...344)(),
+ (341...343),
+ 0
+ )]
+ ),
+ (339...340),
+ (344...345)
+ ),
+ (345...346),
+ (346...349),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "max"
+ ),
+ CallNode(350...368)(
+ ParenthesesNode(350...364)(
+ StatementsNode(351...363)(
+ [CallNode(351...363)(
+ CallNode(351...354)(
+ nil,
+ nil,
+ (351...354),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (355...357),
+ nil,
+ ArgumentsNode(358...363)(
+ [RegularExpressionNode(358...363)(
+ (358...359),
+ (359...362),
+ (362...363),
+ "bar",
+ 0
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ )]
+ ),
+ (350...351),
+ (363...364)
+ ),
+ (364...365),
+ (365...368),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(369...382)(
+ RegularExpressionNode(369...374)(
+ (369...370),
+ (370...373),
+ (373...374),
+ "bar",
+ 0
+ ),
+ nil,
+ (375...377),
+ nil,
+ ArgumentsNode(378...382)(
+ [SymbolNode(378...382)((378...379), (379...382), nil, "foo")]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ CallNode(383...395)(
+ RegularExpressionNode(383...388)(
+ (383...384),
+ (384...387),
+ (387...388),
+ "bar",
+ 0
+ ),
+ nil,
+ (389...391),
+ nil,
+ ArgumentsNode(392...395)(
+ [CallNode(392...395)(
+ nil,
+ nil,
+ (392...395),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ RangeNode(396...404)(
+ IntegerNode(396...397)(),
+ CallNode(399...404)(
+ IntegerNode(399...400)(),
+ (400...401),
+ (401...404),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "max"
+ ),
+ (397...399),
+ 0
+ ),
+ CallNode(405...410)(
+ ConstantReadNode(405...406)(),
+ (406...407),
+ (407...410),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(411...416)(
+ nil,
+ nil,
+ (411...414),
+ (414...415),
+ nil,
+ (415...416),
+ nil,
+ 0,
+ "FOO"
+ ),
+ CallNode(417...421)(
+ CallNode(417...418)(nil, nil, (417...418), nil, nil, nil, nil, 0, "a"),
+ (418...420),
+ (420...421),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ ),
+ CallNode(422...427)(
+ CallNode(422...423)(nil, nil, (422...423), nil, nil, nil, nil, 0, "a"),
+ (423...424),
+ (424...427),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(428...431)(nil, nil, (428...431), nil, nil, nil, nil, 0, "foo"),
+ CallNode(432...450)(
+ CallNode(432...435)(
+ nil,
+ nil,
+ (432...435),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (436...438),
+ nil,
+ ArgumentsNode(439...450)(
+ [ParenthesesNode(439...450)(
+ StatementsNode(440...449)(
+ [CallNode(440...449)(
+ CallNode(440...443)(
+ nil,
+ nil,
+ (440...443),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ (444...445),
+ nil,
+ ArgumentsNode(446...449)(
+ [CallNode(446...449)(
+ nil,
+ nil,
+ (446...449),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "*"
+ )]
+ ),
+ (439...440),
+ (449...450)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "<<"
+ ),
+ CallNode(451...463)(
+ CallNode(451...454)(
+ nil,
+ nil,
+ (451...454),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (455...457),
+ nil,
+ ArgumentsNode(458...463)(
+ [RegularExpressionNode(458...463)(
+ (458...459),
+ (459...462),
+ (462...463),
+ "bar",
+ 0
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ CallNode(464...482)(
+ nil,
+ nil,
+ (464...467),
+ (467...468),
+ ArgumentsNode(468...481)(
+ [BlockArgumentNode(468...481)(
+ ParenthesesNode(469...481)(
+ StatementsNode(470...480)(
+ [OrNode(470...480)(
+ CallNode(470...473)(
+ nil,
+ nil,
+ (470...473),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(477...480)(
+ nil,
+ nil,
+ (477...480),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (474...476)
+ )]
+ ),
+ (469...470),
+ (480...481)
+ ),
+ (468...469)
+ )]
+ ),
+ (481...482),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(483...494)(
+ nil,
+ nil,
+ (483...486),
+ (486...487),
+ ArgumentsNode(487...493)(
+ [BlockArgumentNode(487...493)(
+ CallNode(488...493)(
+ nil,
+ nil,
+ (488...493),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "block"
+ ),
+ (487...488)
+ )]
+ ),
+ (493...494),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(495...513)(
+ nil,
+ nil,
+ (495...498),
+ (498...499),
+ ArgumentsNode(499...512)(
+ [SplatNode(499...504)(
+ (499...500),
+ CallNode(500...504)(
+ nil,
+ nil,
+ (500...504),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ ),
+ BlockArgumentNode(506...512)(
+ CallNode(507...512)(
+ nil,
+ nil,
+ (507...512),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "block"
+ ),
+ (506...507)
+ )]
+ ),
+ (512...513),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(514...529)(
+ nil,
+ nil,
+ (514...517),
+ (517...518),
+ ArgumentsNode(518...528)(
+ [SplatNode(518...528)(
+ (518...519),
+ CallNode(519...528)(
+ nil,
+ nil,
+ (519...528),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "arguments"
+ )
+ )]
+ ),
+ (528...529),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(530...539)(
+ nil,
+ nil,
+ (530...533),
+ (533...534),
+ ArgumentsNode(534...538)(
+ [IntegerNode(534...535)(), IntegerNode(537...538)()]
+ ),
+ (538...539),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(540...548)(
+ nil,
+ nil,
+ (540...543),
+ (543...544),
+ ArgumentsNode(544...547)(
+ [CallNode(544...547)(
+ nil,
+ nil,
+ (544...547),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (547...548),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(549...564)(
+ nil,
+ nil,
+ (549...552),
+ (552...553),
+ ArgumentsNode(553...563)(
+ [CallNode(553...556)(
+ nil,
+ nil,
+ (553...556),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ SplatNode(558...563)(
+ (558...559),
+ CallNode(559...563)(
+ nil,
+ nil,
+ (559...563),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ )]
+ ),
+ (563...564),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(565...582)(
+ nil,
+ nil,
+ (565...568),
+ (568...569),
+ ArgumentsNode(569...581)(
+ [CallNode(569...581)(
+ CallNode(569...572)(
+ nil,
+ nil,
+ (569...572),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (573...575),
+ nil,
+ ArgumentsNode(576...581)(
+ [RegularExpressionNode(576...581)(
+ (576...577),
+ (577...580),
+ (580...581),
+ "bar",
+ 0
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ )]
+ ),
+ (581...582),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(583...596)(
+ CallNode(583...586)(
+ nil,
+ nil,
+ (583...586),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (586...587),
+ (587...590),
+ (590...591),
+ ArgumentsNode(591...595)(
+ [BlockArgumentNode(591...595)(
+ CallNode(592...595)(
+ nil,
+ nil,
+ (592...595),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (591...592)
+ )]
+ ),
+ (595...596),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(597...623)(
+ CallNode(597...600)(
+ nil,
+ nil,
+ (597...600),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (600...601),
+ (601...604),
+ (604...605),
+ ArgumentsNode(605...622)(
+ [SplatNode(605...610)(
+ (605...606),
+ CallNode(606...610)(
+ nil,
+ nil,
+ (606...610),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "arga"
+ )
+ ),
+ CallNode(612...615)(
+ nil,
+ nil,
+ (612...615),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SplatNode(617...622)(
+ (617...618),
+ CallNode(618...622)(
+ nil,
+ nil,
+ (618...622),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "argb"
+ )
+ )]
+ ),
+ (622...623),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(624...638)(
+ CallNode(624...627)(
+ nil,
+ nil,
+ (624...627),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (627...628),
+ (628...631),
+ (631...632),
+ ArgumentsNode(632...637)(
+ [SplatNode(632...637)(
+ (632...633),
+ CallNode(633...637)(
+ nil,
+ nil,
+ (633...637),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ )]
+ ),
+ (637...638),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(639...658)(
+ CallNode(639...642)(
+ nil,
+ nil,
+ (639...642),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (642...643),
+ (643...646),
+ (646...647),
+ ArgumentsNode(647...657)(
+ [SplatNode(647...652)(
+ (647...648),
+ CallNode(648...652)(
+ nil,
+ nil,
+ (648...652),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ ),
+ CallNode(654...657)(
+ nil,
+ nil,
+ (654...657),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (657...658),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(659...678)(
+ CallNode(659...662)(
+ nil,
+ nil,
+ (659...662),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (662...663),
+ (663...666),
+ (666...667),
+ ArgumentsNode(667...677)(
+ [SymbolNode(667...671)((667...668), (668...671), nil, "baz"),
+ BlockArgumentNode(673...677)(
+ CallNode(674...677)(
+ nil,
+ nil,
+ (674...677),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (673...674)
+ )]
+ ),
+ (677...678),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(679...696)(
+ CallNode(679...682)(
+ nil,
+ nil,
+ (679...682),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (682...683),
+ (683...686),
+ (686...687),
+ ArgumentsNode(687...695)(
+ [KeywordHashNode(687...695)(
+ [AssocNode(687...695)(
+ SymbolNode(687...691)(nil, (687...690), (690...691), "baz"),
+ CallNode(692...695)(
+ nil,
+ nil,
+ (692...695),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "boz"
+ ),
+ nil
+ )]
+ )]
+ ),
+ (695...696),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(697...723)(
+ CallNode(697...700)(
+ nil,
+ nil,
+ (697...700),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (700...701),
+ (701...704),
+ (704...705),
+ ArgumentsNode(705...722)(
+ [CallNode(705...708)(
+ nil,
+ nil,
+ (705...708),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ KeywordHashNode(710...722)(
+ [AssocNode(710...722)(
+ StringNode(710...715)(
+ (710...711),
+ (711...714),
+ (714...715),
+ "baz"
+ ),
+ CallNode(719...722)(
+ nil,
+ nil,
+ (719...722),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "boz"
+ ),
+ (716...718)
+ )]
+ )]
+ ),
+ (722...723),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(724...743)(
+ CallNode(724...727)(
+ nil,
+ nil,
+ (724...727),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (727...728),
+ (728...731),
+ (731...732),
+ ArgumentsNode(732...742)(
+ [CallNode(732...735)(
+ nil,
+ nil,
+ (732...735),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SplatNode(737...742)(
+ (737...738),
+ CallNode(738...742)(
+ nil,
+ nil,
+ (738...742),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ )]
+ ),
+ (742...743),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(744...771)(
+ CallNode(744...747)(
+ nil,
+ nil,
+ (744...747),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (747...748),
+ (748...751),
+ (751...752),
+ ArgumentsNode(752...770)(
+ [CallNode(752...755)(
+ nil,
+ nil,
+ (752...755),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ SplatNode(757...762)(
+ (757...758),
+ CallNode(758...762)(
+ nil,
+ nil,
+ (758...762),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "args"
+ )
+ ),
+ BlockArgumentNode(764...770)(
+ CallNode(765...770)(
+ nil,
+ nil,
+ (765...770),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "block"
+ ),
+ (764...765)
+ )]
+ ),
+ (770...771),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(772...788)(
+ CallNode(772...775)(
+ nil,
+ nil,
+ (772...775),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (775...776),
+ (776...779),
+ (779...780),
+ ArgumentsNode(780...787)(
+ [CallNode(780...783)(
+ nil,
+ nil,
+ (780...783),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ HashNode(785...787)((785...786), [], (786...787))]
+ ),
+ (787...788),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(789...815)(
+ CallNode(789...792)(
+ nil,
+ nil,
+ (789...792),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (792...793),
+ (793...796),
+ (796...797),
+ ArgumentsNode(797...814)(
+ [HashNode(797...809)(
+ (797...798),
+ [AssocNode(799...807)(
+ SymbolNode(799...803)(nil, (799...802), (802...803), "foo"),
+ CallNode(804...807)(
+ nil,
+ nil,
+ (804...807),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "boz"
+ ),
+ nil
+ )],
+ (808...809)
+ ),
+ CallNode(811...814)(
+ nil,
+ nil,
+ (811...814),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "boz"
+ )]
+ ),
+ (814...815),
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(816...828)(
+ CallNode(816...819)(
+ nil,
+ nil,
+ (816...819),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (819...820),
+ (820...823),
+ nil,
+ ArgumentsNode(824...828)(
+ [SymbolNode(824...828)((824...825), (825...828), nil, "baz")]
+ ),
+ nil,
+ nil,
+ 0,
+ "bar="
+ ),
+ CallNode(829...838)(
+ nil,
+ nil,
+ (829...832),
+ (832...833),
+ ArgumentsNode(833...837)(
+ [KeywordHashNode(833...837)(
+ [AssocNode(833...837)(
+ SymbolNode(833...835)(nil, (833...834), (834...835), "a"),
+ CallNode(836...837)(
+ nil,
+ nil,
+ (836...837),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ nil
+ )]
+ )]
+ ),
+ (837...838),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(839...850)(
+ CallNode(839...842)(
+ nil,
+ nil,
+ (839...842),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (842...843),
+ (843...844),
+ (844...845),
+ ArgumentsNode(845...849)(
+ [KeywordHashNode(845...849)(
+ [AssocNode(845...849)(
+ SymbolNode(845...847)(nil, (845...846), (846...847), "a"),
+ CallNode(848...849)(
+ nil,
+ nil,
+ (848...849),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ nil
+ )]
+ )]
+ ),
+ (849...850),
+ nil,
+ 0,
+ "&"
+ ),
+ CallNode(851...861)(
+ CallNode(851...854)(
+ nil,
+ nil,
+ (851...854),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (854...855),
+ (855...856),
+ (856...857),
+ ArgumentsNode(857...860)(
+ [KeywordHashNode(857...860)(
+ [AssocSplatNode(857...860)(
+ CallNode(859...860)(
+ nil,
+ nil,
+ (859...860),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ (857...859)
+ )]
+ )]
+ ),
+ (860...861),
+ nil,
+ 0,
+ "&"
+ ),
+ CallNode(862...871)(
+ CallNode(862...865)(
+ nil,
+ nil,
+ (862...865),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (865...871),
+ (865...866),
+ ArgumentsNode(866...870)(
+ [SplatNode(866...870)(
+ (866...867),
+ CallNode(867...870)(
+ nil,
+ nil,
+ (867...870),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )
+ )]
+ ),
+ (870...871),
+ nil,
+ 0,
+ "[]"
+ ),
+ CallNode(872...881)(
+ CallNode(872...875)(
+ nil,
+ nil,
+ (872...875),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (875...881),
+ (875...876),
+ ArgumentsNode(876...880)(
+ [IntegerNode(876...877)(), IntegerNode(879...880)()]
+ ),
+ (880...881),
+ nil,
+ 0,
+ "[]"
+ ),
+ CallNode(882...887)(
+ CallNode(882...885)(
+ nil,
+ nil,
+ (882...885),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (885...887),
+ (885...886),
+ nil,
+ (886...887),
+ nil,
+ 0,
+ "[]"
+ ),
+ CallNode(888...896)(
+ SelfNode(888...892)(),
+ (892...893),
+ (893...896),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(897...910)(
+ SelfNode(897...901)(),
+ (901...902),
+ (902...905),
+ nil,
+ ArgumentsNode(906...910)(
+ [SymbolNode(906...910)((906...907), (907...910), nil, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo="
+ ),
+ CallNode(911...928)(
+ ParenthesesNode(911...918)(
+ StatementsNode(912...917)(
+ [CallNode(912...917)(
+ CallNode(912...913)(
+ nil,
+ nil,
+ (912...913),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (914...915),
+ nil,
+ ArgumentsNode(916...917)(
+ [CallNode(916...917)(
+ nil,
+ nil,
+ (916...917),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (911...912),
+ (917...918)
+ ),
+ nil,
+ (919...920),
+ nil,
+ ArgumentsNode(921...928)(
+ [ParenthesesNode(921...928)(
+ StatementsNode(922...927)(
+ [CallNode(922...927)(
+ CallNode(922...923)(
+ nil,
+ nil,
+ (922...923),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ nil,
+ (924...925),
+ nil,
+ ArgumentsNode(926...927)(
+ [CallNode(926...927)(
+ nil,
+ nil,
+ (926...927),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "-"
+ )]
+ ),
+ (921...922),
+ (927...928)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(929...948)(
+ ParenthesesNode(929...936)(
+ StatementsNode(930...935)(
+ [CallNode(930...935)(
+ CallNode(930...931)(
+ nil,
+ nil,
+ (930...931),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (932...933),
+ nil,
+ ArgumentsNode(934...935)(
+ [CallNode(934...935)(
+ nil,
+ nil,
+ (934...935),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (929...930),
+ (935...936)
+ ),
+ nil,
+ (937...938),
+ nil,
+ ArgumentsNode(939...948)(
+ [CallNode(939...948)(
+ CallNode(939...940)(
+ nil,
+ nil,
+ (939...940),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (940...941),
+ (941...942),
+ (942...943),
+ ArgumentsNode(943...947)(
+ [CallNode(943...944)(
+ nil,
+ nil,
+ (943...944),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "e"
+ ),
+ CallNode(946...947)(
+ nil,
+ nil,
+ (946...947),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ ),
+ (947...948),
+ nil,
+ 0,
+ "-"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(949...966)(
+ ParenthesesNode(949...956)(
+ StatementsNode(950...955)(
+ [CallNode(950...955)(
+ CallNode(950...951)(
+ nil,
+ nil,
+ (950...951),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (952...953),
+ nil,
+ ArgumentsNode(954...955)(
+ [CallNode(954...955)(
+ nil,
+ nil,
+ (954...955),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (949...950),
+ (955...956)
+ ),
+ nil,
+ (957...958),
+ nil,
+ ArgumentsNode(959...966)(
+ [CallNode(959...966)(
+ CallNode(959...960)(
+ nil,
+ nil,
+ (959...960),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (960...961),
+ (961...962),
+ (962...963),
+ ArgumentsNode(963...965)(
+ [SplatNode(963...965)(
+ (963...964),
+ CallNode(964...965)(
+ nil,
+ nil,
+ (964...965),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "f"
+ )
+ )]
+ ),
+ (965...966),
+ nil,
+ 0,
+ "-"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(967...975)(
+ nil,
+ nil,
+ (967...968),
+ (968...969),
+ ArgumentsNode(969...974)(
+ [KeywordHashNode(969...974)(
+ [AssocSplatNode(969...974)(
+ CallNode(971...974)(
+ nil,
+ nil,
+ (971...974),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (969...971)
+ )]
+ )]
+ ),
+ (974...975),
+ nil,
+ 0,
+ "x"
+ ),
+ CallNode(976...982)(
+ CallNode(976...979)(
+ nil,
+ nil,
+ (976...979),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (979...981),
+ (981...982),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "!"
+ ),
+ CallNode(983...991)(
+ CallNode(983...986)(
+ nil,
+ nil,
+ (983...986),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ (986...987),
+ (987...988),
+ (988...989),
+ ArgumentsNode(989...990)(
+ [CallNode(989...990)(
+ nil,
+ nil,
+ (989...990),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (990...991),
+ nil,
+ 0,
+ "~"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/since/27.txt b/test/yarp/snapshots/unparser/corpus/literal/since/27.txt
new file mode 100644
index 0000000000..0f2e6cc90c
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/since/27.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [LambdaNode(0...16)(
+ [],
+ (0...2),
+ nil,
+ StatementsNode(7...14)(
+ [CallNode(7...14)(
+ CallNode(7...9)(nil, nil, (7...9), nil, nil, nil, nil, 0, "_1"),
+ nil,
+ (10...11),
+ nil,
+ ArgumentsNode(12...14)(
+ [CallNode(12...14)(
+ nil,
+ nil,
+ (12...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_2"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ )
+ ),
+ ParenthesesNode(17...22)(
+ StatementsNode(18...21)(
+ [RangeNode(18...21)(nil, IntegerNode(20...21)(), (18...20), 0)]
+ ),
+ (17...18),
+ (21...22)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/since/30.txt b/test/yarp/snapshots/unparser/corpus/literal/since/30.txt
new file mode 100644
index 0000000000..15d5136d83
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/since/30.txt
@@ -0,0 +1,56 @@
+ProgramNode(0...51)(
+ [:a, :foo],
+ StatementsNode(0...51)(
+ [MatchRequiredNode(0...8)(
+ IntegerNode(0...1)(),
+ ArrayPatternNode(5...8)(
+ nil,
+ [LocalVariableWriteNode(6...7)(:a, 0, nil, (6...7), nil)],
+ nil,
+ [],
+ (5...6),
+ (7...8)
+ ),
+ (2...4)
+ ),
+ MatchRequiredNode(9...17)(
+ IntegerNode(9...10)(),
+ ArrayPatternNode(14...17)(
+ nil,
+ [],
+ SplatNode(15...16)((15...16), nil),
+ [],
+ (14...15),
+ (16...17)
+ ),
+ (11...13)
+ ),
+ MatchPredicateNode(18...33)(
+ IntegerNode(18...19)(),
+ FindPatternNode(23...33)(
+ nil,
+ SplatNode(24...25)((24...25), nil),
+ [IntegerNode(27...29)()],
+ SplatNode(31...32)((31...32), nil),
+ (23...24),
+ (32...33)
+ ),
+ (20...22)
+ ),
+ MatchPredicateNode(34...51)(
+ IntegerNode(34...35)(),
+ FindPatternNode(39...51)(
+ nil,
+ SplatNode(40...41)((40...41), nil),
+ [LocalVariableWriteNode(43...44)(:a, 0, nil, (43...44), nil)],
+ SplatNode(46...50)(
+ (46...47),
+ LocalVariableWriteNode(47...50)(:foo, 0, nil, (47...50), nil)
+ ),
+ (39...40),
+ (50...51)
+ ),
+ (36...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/since/31.txt b/test/yarp/snapshots/unparser/corpus/literal/since/31.txt
new file mode 100644
index 0000000000..b646850e2b
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/since/31.txt
@@ -0,0 +1,75 @@
+ProgramNode(0...51)(
+ [],
+ StatementsNode(0...51)(
+ [DefNode(0...23)(
+ (4...7),
+ nil,
+ ParametersNode(8...9)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(8...9)(nil, (8...9))
+ ),
+ StatementsNode(13...19)(
+ [CallNode(13...19)(
+ nil,
+ nil,
+ (13...16),
+ (16...17),
+ ArgumentsNode(17...18)(
+ [BlockArgumentNode(17...18)(nil, (17...18))]
+ ),
+ (18...19),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:&],
+ (0...3),
+ nil,
+ (7...8),
+ (9...10),
+ nil,
+ (20...23)
+ ),
+ DefNode(25...51)(
+ (29...32),
+ nil,
+ ParametersNode(33...37)(
+ [RequiredParameterNode(33...34)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(36...37)(nil, (36...37))
+ ),
+ StatementsNode(41...47)(
+ [CallNode(41...47)(
+ nil,
+ nil,
+ (41...44),
+ (44...45),
+ ArgumentsNode(45...46)(
+ [BlockArgumentNode(45...46)(nil, (45...46))]
+ ),
+ (46...47),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:a, :&],
+ (25...28),
+ nil,
+ (32...33),
+ (37...38),
+ nil,
+ (48...51)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/since/32.txt b/test/yarp/snapshots/unparser/corpus/literal/since/32.txt
new file mode 100644
index 0000000000..31397bf468
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/since/32.txt
@@ -0,0 +1,79 @@
+ProgramNode(0...90)(
+ [],
+ StatementsNode(0...90)(
+ [DefNode(0...45)(
+ (4...7),
+ nil,
+ ParametersNode(8...20)(
+ [RequiredParameterNode(8...16)(:argument)],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(18...20)((18...20), nil),
+ nil
+ ),
+ StatementsNode(24...41)(
+ [CallNode(24...41)(
+ nil,
+ nil,
+ (24...27),
+ (27...28),
+ ArgumentsNode(28...40)(
+ [LocalVariableReadNode(28...36)(:argument, 0),
+ KeywordHashNode(38...40)(
+ [AssocSplatNode(38...40)(nil, (38...40))]
+ )]
+ ),
+ (40...41),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:argument, :**],
+ (0...3),
+ nil,
+ (7...8),
+ (20...21),
+ nil,
+ (42...45)
+ ),
+ DefNode(47...90)(
+ (51...54),
+ nil,
+ ParametersNode(55...66)(
+ [RequiredParameterNode(55...63)(:argument)],
+ [],
+ [],
+ RestParameterNode(65...66)((65...66), nil),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(70...86)(
+ [CallNode(70...86)(
+ nil,
+ nil,
+ (70...73),
+ (73...74),
+ ArgumentsNode(74...85)(
+ [LocalVariableReadNode(74...82)(:argument, 0),
+ SplatNode(84...85)((84...85), nil)]
+ ),
+ (85...86),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:argument, :*],
+ (47...50),
+ nil,
+ (54...55),
+ (66...67),
+ nil,
+ (87...90)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/singletons.txt b/test/yarp/snapshots/unparser/corpus/literal/singletons.txt
new file mode 100644
index 0000000000..53cc92e636
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/singletons.txt
@@ -0,0 +1,9 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [FalseNode(0...5)(),
+ NilNode(6...9)(),
+ SelfNode(10...14)(),
+ TrueNode(15...19)()]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/super.txt b/test/yarp/snapshots/unparser/corpus/literal/super.txt
new file mode 100644
index 0000000000..6a06faa9cf
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/super.txt
@@ -0,0 +1,239 @@
+ProgramNode(0...159)(
+ [],
+ StatementsNode(0...159)(
+ [ForwardingSuperNode(0...5)(nil),
+ SuperNode(6...13)((6...11), (11...12), nil, (12...13), nil),
+ SuperNode(14...22)(
+ (14...19),
+ (19...20),
+ ArgumentsNode(20...21)(
+ [CallNode(20...21)(nil, nil, (20...21), nil, nil, nil, nil, 0, "a")]
+ ),
+ (21...22),
+ nil
+ ),
+ SuperNode(23...34)(
+ (23...28),
+ (28...29),
+ ArgumentsNode(29...33)(
+ [CallNode(29...30)(nil, nil, (29...30), nil, nil, nil, nil, 0, "a"),
+ CallNode(32...33)(nil, nil, (32...33), nil, nil, nil, nil, 0, "b")]
+ ),
+ (33...34),
+ nil
+ ),
+ SuperNode(35...48)(
+ (35...40),
+ (40...41),
+ ArgumentsNode(41...47)(
+ [BlockArgumentNode(41...47)(
+ CallNode(42...47)(
+ nil,
+ nil,
+ (42...47),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "block"
+ ),
+ (41...42)
+ )]
+ ),
+ (47...48),
+ nil
+ ),
+ SuperNode(49...65)(
+ (49...54),
+ (54...55),
+ ArgumentsNode(55...64)(
+ [CallNode(55...56)(nil, nil, (55...56), nil, nil, nil, nil, 0, "a"),
+ BlockArgumentNode(58...64)(
+ CallNode(59...64)(
+ nil,
+ nil,
+ (59...64),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "block"
+ ),
+ (58...59)
+ )]
+ ),
+ (64...65),
+ nil
+ ),
+ SuperNode(66...84)(
+ (66...71),
+ (71...72),
+ ArgumentsNode(72...83)(
+ [CallNode(72...83)(
+ nil,
+ nil,
+ (72...73),
+ nil,
+ nil,
+ nil,
+ BlockNode(74...83)(
+ [],
+ nil,
+ StatementsNode(78...81)(
+ [CallNode(78...81)(
+ nil,
+ nil,
+ (78...81),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (74...75),
+ (82...83)
+ ),
+ 0,
+ "a"
+ )]
+ ),
+ (83...84),
+ nil
+ ),
+ ForwardingSuperNode(85...100)(
+ BlockNode(91...100)(
+ [],
+ nil,
+ StatementsNode(95...98)(
+ [CallNode(95...98)(
+ nil,
+ nil,
+ (95...98),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (91...92),
+ (99...100)
+ )
+ ),
+ SuperNode(101...119)(
+ (101...106),
+ (106...107),
+ ArgumentsNode(107...108)(
+ [CallNode(107...108)(
+ nil,
+ nil,
+ (107...108),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ (108...109),
+ BlockNode(110...119)(
+ [],
+ nil,
+ StatementsNode(114...117)(
+ [CallNode(114...117)(
+ nil,
+ nil,
+ (114...117),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (110...111),
+ (118...119)
+ )
+ ),
+ SuperNode(120...137)(
+ (120...125),
+ (125...126),
+ nil,
+ (126...127),
+ BlockNode(128...137)(
+ [],
+ nil,
+ StatementsNode(132...135)(
+ [CallNode(132...135)(
+ nil,
+ nil,
+ (132...135),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (128...129),
+ (136...137)
+ )
+ ),
+ SuperNode(138...159)(
+ (138...143),
+ (143...144),
+ ArgumentsNode(144...148)(
+ [CallNode(144...145)(
+ nil,
+ nil,
+ (144...145),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(147...148)(
+ nil,
+ nil,
+ (147...148),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (148...149),
+ BlockNode(150...159)(
+ [],
+ nil,
+ StatementsNode(154...157)(
+ [CallNode(154...157)(
+ nil,
+ nil,
+ (154...157),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (150...151),
+ (158...159)
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/unary.txt b/test/yarp/snapshots/unparser/corpus/literal/unary.txt
new file mode 100644
index 0000000000..ac41353770
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/unary.txt
@@ -0,0 +1,217 @@
+ProgramNode(0...54)(
+ [],
+ StatementsNode(0...54)(
+ [CallNode(0...2)(
+ IntegerNode(1...2)(),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(3...8)(
+ ParenthesesNode(4...8)(
+ StatementsNode(5...7)(
+ [CallNode(5...7)(
+ IntegerNode(6...7)(),
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ ),
+ (4...5),
+ (7...8)
+ ),
+ nil,
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(9...25)(
+ ParenthesesNode(10...25)(
+ StatementsNode(11...24)(
+ [CallNode(11...24)(
+ ParenthesesNode(12...24)(
+ StatementsNode(13...23)(
+ [OrNode(13...23)(
+ CallNode(13...16)(
+ nil,
+ nil,
+ (13...16),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(20...23)(
+ nil,
+ nil,
+ (20...23),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (17...19)
+ )]
+ ),
+ (12...13),
+ (23...24)
+ ),
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ ),
+ (10...11),
+ (24...25)
+ ),
+ nil,
+ (9...10),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(26...35)(
+ CallNode(27...35)(
+ ParenthesesNode(27...31)(
+ StatementsNode(28...30)(
+ [CallNode(28...30)(
+ IntegerNode(29...30)(),
+ nil,
+ (28...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ ),
+ (27...28),
+ (30...31)
+ ),
+ (31...32),
+ (32...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ nil,
+ (26...27),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(36...38)(
+ CallNode(37...38)(nil, nil, (37...38), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (36...37),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "~"
+ ),
+ CallNode(39...41)(
+ CallNode(40...41)(nil, nil, (40...41), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (39...40),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ CallNode(42...44)(
+ CallNode(43...44)(nil, nil, (43...44), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (42...43),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+@"
+ ),
+ CallNode(45...54)(
+ CallNode(46...54)(
+ ParenthesesNode(46...50)(
+ StatementsNode(47...49)(
+ [CallNode(47...49)(
+ CallNode(48...49)(
+ nil,
+ nil,
+ (48...49),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (47...48),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ ),
+ (46...47),
+ (49...50)
+ ),
+ (50...51),
+ (51...54),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (45...46),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/undef.txt b/test/yarp/snapshots/unparser/corpus/literal/undef.txt
new file mode 100644
index 0000000000..30e513d19e
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/undef.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [UndefNode(0...10)(
+ [SymbolNode(6...10)((6...7), (7...10), nil, "foo")],
+ (0...5)
+ ),
+ UndefNode(11...27)(
+ [SymbolNode(17...21)((17...18), (18...21), nil, "foo"),
+ SymbolNode(23...27)((23...24), (24...27), nil, "bar")],
+ (11...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/variables.txt b/test/yarp/snapshots/unparser/corpus/literal/variables.txt
new file mode 100644
index 0000000000..1cf71a2360
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/variables.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...66)(
+ [],
+ StatementsNode(0...66)(
+ [CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ InstanceVariableReadNode(2...4)(),
+ ClassVariableReadNode(5...8)(),
+ GlobalVariableReadNode(9...11)(),
+ NumberedReferenceReadNode(12...14)(),
+ BackReferenceReadNode(15...17)(),
+ ConstantReadNode(18...23)(),
+ ConstantPathNode(24...37)(
+ ConstantReadNode(24...30)(),
+ ConstantReadNode(32...37)(),
+ (30...32)
+ ),
+ ConstantPathNode(38...48)(nil, ConstantReadNode(40...48)(), (38...40)),
+ ConstantPathNode(49...66)(
+ ConstantPathNode(49...59)(nil, ConstantReadNode(51...59)(), (49...51)),
+ ConstantReadNode(61...66)(),
+ (59...61)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/while.txt b/test/yarp/snapshots/unparser/corpus/literal/while.txt
new file mode 100644
index 0000000000..a08e9696dd
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/while.txt
@@ -0,0 +1,599 @@
+ProgramNode(0...620)(
+ [:x],
+ StatementsNode(0...620)(
+ [ModuleNode(0...68)(
+ [],
+ (0...6),
+ ConstantReadNode(7...8)(),
+ StatementsNode(11...64)(
+ [CallNode(11...64)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ BlockNode(15...64)(
+ [:bar, :foo],
+ BlockParametersNode(17...22)(
+ ParametersNode(18...21)(
+ [RequiredParameterNode(18...21)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (17...18),
+ (21...22)
+ ),
+ StatementsNode(27...60)(
+ [WhileNode(27...60)(
+ (27...32),
+ CallNode(33...36)(
+ nil,
+ nil,
+ (33...36),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StatementsNode(43...52)(
+ [LocalVariableWriteNode(43...52)(
+ :foo,
+ 0,
+ LocalVariableReadNode(49...52)(:bar, 0),
+ (43...46),
+ (47...48)
+ )]
+ )
+ )]
+ ),
+ (15...16),
+ (63...64)
+ ),
+ 0,
+ "foo"
+ )]
+ ),
+ (65...68)
+ ),
+ DefNode(70...110)(
+ (74...77),
+ nil,
+ nil,
+ StatementsNode(80...106)(
+ [WhileNode(80...106)(
+ (90...95),
+ CallNode(96...106)(
+ LocalVariableReadNode(96...99)(:foo, 0),
+ nil,
+ (100...102),
+ nil,
+ ArgumentsNode(103...106)(
+ [CallNode(103...106)(
+ nil,
+ nil,
+ (103...106),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "!="
+ ),
+ StatementsNode(80...89)(
+ [LocalVariableWriteNode(80...89)(
+ :foo,
+ 0,
+ CallNode(86...89)(
+ nil,
+ nil,
+ (86...89),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (80...83),
+ (84...85)
+ )]
+ )
+ )]
+ ),
+ [:foo],
+ (70...73),
+ nil,
+ nil,
+ nil,
+ nil,
+ (107...110)
+ ),
+ ModuleNode(112...146)(
+ [:foo],
+ (112...118),
+ ConstantReadNode(119...120)(),
+ StatementsNode(123...142)(
+ [WhileNode(123...142)(
+ (133...138),
+ LocalVariableReadNode(139...142)(:foo, 0),
+ StatementsNode(123...132)(
+ [LocalVariableWriteNode(123...132)(
+ :foo,
+ 0,
+ CallNode(129...132)(
+ nil,
+ nil,
+ (129...132),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (123...126),
+ (127...128)
+ )]
+ )
+ )]
+ ),
+ (143...146)
+ ),
+ ModuleNode(148...182)(
+ [:foo],
+ (148...154),
+ ConstantReadNode(155...156)(),
+ StatementsNode(159...178)(
+ [UntilNode(159...178)(
+ (169...174),
+ LocalVariableReadNode(175...178)(:foo, 0),
+ StatementsNode(159...168)(
+ [LocalVariableWriteNode(159...168)(
+ :foo,
+ 0,
+ CallNode(165...168)(
+ nil,
+ nil,
+ (165...168),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (159...162),
+ (163...164)
+ )]
+ )
+ )]
+ ),
+ (179...182)
+ ),
+ ModuleNode(184...228)(
+ [:foo],
+ (184...190),
+ ConstantReadNode(191...192)(),
+ StatementsNode(195...224)(
+ [WhileNode(195...224)(
+ (195...200),
+ CallNode(201...204)(
+ nil,
+ nil,
+ (201...204),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StatementsNode(209...218)(
+ [LocalVariableWriteNode(209...218)(
+ :foo,
+ 0,
+ CallNode(215...218)(
+ nil,
+ nil,
+ (215...218),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (209...212),
+ (213...214)
+ )]
+ )
+ )]
+ ),
+ (225...228)
+ ),
+ ModuleNode(230...299)(
+ [],
+ (230...236),
+ ConstantReadNode(237...238)(),
+ StatementsNode(241...295)(
+ [CallNode(241...295)(
+ nil,
+ nil,
+ (241...245),
+ nil,
+ nil,
+ nil,
+ BlockNode(246...295)(
+ [:baz, :foo],
+ BlockParametersNode(248...253)(
+ ParametersNode(249...252)(
+ [RequiredParameterNode(249...252)(:baz)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (248...249),
+ (252...253)
+ ),
+ StatementsNode(258...291)(
+ [WhileNode(258...291)(
+ (258...263),
+ CallNode(264...267)(
+ nil,
+ nil,
+ (264...267),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ StatementsNode(274...283)(
+ [LocalVariableWriteNode(274...283)(
+ :foo,
+ 0,
+ CallNode(280...283)(
+ nil,
+ nil,
+ (280...283),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (274...277),
+ (278...279)
+ )]
+ )
+ )]
+ ),
+ (246...247),
+ (294...295)
+ ),
+ 0,
+ "each"
+ )]
+ ),
+ (296...299)
+ ),
+ ModuleNode(301...370)(
+ [],
+ (301...307),
+ ConstantReadNode(308...309)(),
+ StatementsNode(312...366)(
+ [CallNode(312...366)(
+ nil,
+ nil,
+ (312...316),
+ nil,
+ nil,
+ nil,
+ BlockNode(317...366)(
+ [:foo],
+ BlockParametersNode(319...324)(
+ ParametersNode(320...323)(
+ [RequiredParameterNode(320...323)(:foo)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (319...320),
+ (323...324)
+ ),
+ StatementsNode(329...362)(
+ [WhileNode(329...362)(
+ (329...334),
+ LocalVariableReadNode(335...338)(:foo, 0),
+ StatementsNode(345...354)(
+ [LocalVariableWriteNode(345...354)(
+ :foo,
+ 0,
+ CallNode(351...354)(
+ nil,
+ nil,
+ (351...354),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (345...348),
+ (349...350)
+ )]
+ )
+ )]
+ ),
+ (317...318),
+ (365...366)
+ ),
+ 0,
+ "each"
+ )]
+ ),
+ (367...370)
+ ),
+ LocalVariableWriteNode(371...402)(
+ :x,
+ 0,
+ ParenthesesNode(375...402)(
+ StatementsNode(376...401)(
+ [WhileNode(376...401)(
+ (392...397),
+ CallNode(398...401)(
+ nil,
+ nil,
+ (398...401),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ StatementsNode(376...391)(
+ [BeginNode(376...391)(
+ (376...381),
+ StatementsNode(384...387)(
+ [CallNode(384...387)(
+ nil,
+ nil,
+ (384...387),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (388...391)
+ )]
+ )
+ )]
+ ),
+ (375...376),
+ (401...402)
+ ),
+ (371...372),
+ (373...374)
+ ),
+ WhileNode(403...428)(
+ (419...424),
+ CallNode(425...428)(
+ nil,
+ nil,
+ (425...428),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ StatementsNode(403...418)(
+ [BeginNode(403...418)(
+ (403...408),
+ StatementsNode(411...414)(
+ [CallNode(411...414)(
+ nil,
+ nil,
+ (411...414),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (415...418)
+ )]
+ )
+ ),
+ UntilNode(429...460)(
+ (451...456),
+ CallNode(457...460)(
+ nil,
+ nil,
+ (457...460),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ StatementsNode(429...450)(
+ [BeginNode(429...450)(
+ (429...434),
+ StatementsNode(437...446)(
+ [CallNode(437...440)(
+ nil,
+ nil,
+ (437...440),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(443...446)(
+ nil,
+ nil,
+ (443...446),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (447...450)
+ )]
+ )
+ ),
+ WhileNode(461...492)(
+ (483...488),
+ CallNode(489...492)(
+ nil,
+ nil,
+ (489...492),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ StatementsNode(461...482)(
+ [BeginNode(461...482)(
+ (461...466),
+ StatementsNode(469...478)(
+ [CallNode(469...472)(
+ nil,
+ nil,
+ (469...472),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(475...478)(
+ nil,
+ nil,
+ (475...478),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (479...482)
+ )]
+ )
+ ),
+ WhileNode(493...508)((493...498), FalseNode(499...504)(), nil),
+ WhileNode(509...528)(
+ (509...514),
+ FalseNode(515...520)(),
+ StatementsNode(523...524)([IntegerNode(523...524)()])
+ ),
+ WhileNode(529...556)(
+ (529...534),
+ ParenthesesNode(535...544)(
+ StatementsNode(536...543)(
+ [CallNode(536...543)(
+ nil,
+ nil,
+ (536...539),
+ nil,
+ nil,
+ nil,
+ BlockNode(540...543)([], nil, nil, (540...541), (542...543)),
+ 0,
+ "foo"
+ )]
+ ),
+ (535...536),
+ (543...544)
+ ),
+ StatementsNode(547...552)(
+ [SymbolNode(547...552)((547...548), (548...552), nil, "body")]
+ )
+ ),
+ UntilNode(557...572)((557...562), FalseNode(563...568)(), nil),
+ UntilNode(573...592)(
+ (573...578),
+ FalseNode(579...584)(),
+ StatementsNode(587...588)([IntegerNode(587...588)()])
+ ),
+ UntilNode(593...620)(
+ (593...598),
+ ParenthesesNode(599...608)(
+ StatementsNode(600...607)(
+ [CallNode(600...607)(
+ nil,
+ nil,
+ (600...603),
+ nil,
+ nil,
+ nil,
+ BlockNode(604...607)([], nil, nil, (604...605), (606...607)),
+ 0,
+ "foo"
+ )]
+ ),
+ (599...600),
+ (607...608)
+ ),
+ StatementsNode(611...616)(
+ [SymbolNode(611...616)((611...612), (612...616), nil, "body")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/literal/yield.txt b/test/yarp/snapshots/unparser/corpus/literal/yield.txt
new file mode 100644
index 0000000000..224659ffb1
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/literal/yield.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [YieldNode(0...5)((0...5), nil, nil, nil),
+ YieldNode(6...14)(
+ (6...11),
+ (11...12),
+ ArgumentsNode(12...13)(
+ [CallNode(12...13)(nil, nil, (12...13), nil, nil, nil, nil, 0, "a")]
+ ),
+ (13...14)
+ ),
+ YieldNode(15...26)(
+ (15...20),
+ (20...21),
+ ArgumentsNode(21...25)(
+ [CallNode(21...22)(nil, nil, (21...22), nil, nil, nil, nil, 0, "a"),
+ CallNode(24...25)(nil, nil, (24...25), nil, nil, nil, nil, 0, "b")]
+ ),
+ (25...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/and.txt b/test/yarp/snapshots/unparser/corpus/semantic/and.txt
new file mode 100644
index 0000000000..470615af51
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/and.txt
@@ -0,0 +1,77 @@
+ProgramNode(0...77)(
+ [],
+ StatementsNode(0...77)(
+ [OrNode(0...14)(
+ RangeNode(0...5)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "b"),
+ (1...4),
+ 1
+ ),
+ RangeNode(9...14)(
+ CallNode(9...10)(nil, nil, (9...10), nil, nil, nil, nil, 0, "c"),
+ CallNode(13...14)(nil, nil, (13...14), nil, nil, nil, nil, 0, "d"),
+ (10...13),
+ 1
+ ),
+ (6...8)
+ ),
+ AndNode(15...30)(
+ RangeNode(15...20)(
+ CallNode(15...16)(nil, nil, (15...16), nil, nil, nil, nil, 0, "a"),
+ CallNode(19...20)(nil, nil, (19...20), nil, nil, nil, nil, 0, "b"),
+ (16...19),
+ 1
+ ),
+ RangeNode(25...30)(
+ CallNode(25...26)(nil, nil, (25...26), nil, nil, nil, nil, 0, "c"),
+ CallNode(29...30)(nil, nil, (29...30), nil, nil, nil, nil, 0, "d"),
+ (26...29),
+ 1
+ ),
+ (21...24)
+ ),
+ IfNode(32...53)(
+ (32...34),
+ OrNode(35...49)(
+ RangeNode(35...40)(
+ CallNode(35...36)(nil, nil, (35...36), nil, nil, nil, nil, 0, "a"),
+ CallNode(39...40)(nil, nil, (39...40), nil, nil, nil, nil, 0, "b"),
+ (36...39),
+ 1
+ ),
+ RangeNode(44...49)(
+ CallNode(44...45)(nil, nil, (44...45), nil, nil, nil, nil, 0, "c"),
+ CallNode(48...49)(nil, nil, (48...49), nil, nil, nil, nil, 0, "d"),
+ (45...48),
+ 1
+ ),
+ (41...43)
+ ),
+ nil,
+ nil,
+ (50...53)
+ ),
+ IfNode(55...77)(
+ (55...57),
+ AndNode(58...73)(
+ RangeNode(58...63)(
+ CallNode(58...59)(nil, nil, (58...59), nil, nil, nil, nil, 0, "a"),
+ CallNode(62...63)(nil, nil, (62...63), nil, nil, nil, nil, 0, "b"),
+ (59...62),
+ 1
+ ),
+ RangeNode(68...73)(
+ CallNode(68...69)(nil, nil, (68...69), nil, nil, nil, nil, 0, "c"),
+ CallNode(72...73)(nil, nil, (72...73), nil, nil, nil, nil, 0, "d"),
+ (69...72),
+ 1
+ ),
+ (64...67)
+ ),
+ nil,
+ nil,
+ (74...77)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/block.txt b/test/yarp/snapshots/unparser/corpus/semantic/block.txt
new file mode 100644
index 0000000000..c4b2d1ab4c
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/block.txt
@@ -0,0 +1,165 @@
+ProgramNode(0...148)(
+ [],
+ StatementsNode(0...148)(
+ [CallNode(0...10)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...10)([], nil, nil, (4...6), (7...10)),
+ 0,
+ "foo"
+ ),
+ CallNode(12...29)(
+ nil,
+ nil,
+ (12...15),
+ nil,
+ nil,
+ nil,
+ BlockNode(16...29)(
+ [],
+ nil,
+ BeginNode(19...29)(
+ nil,
+ nil,
+ RescueNode(19...25)((19...25), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (26...29)
+ ),
+ (16...18),
+ (26...29)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(31...64)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ nil,
+ nil,
+ BlockNode(35...64)(
+ [],
+ nil,
+ StatementsNode(40...60)(
+ [RescueModifierNode(40...54)(
+ NilNode(40...43)(),
+ (44...50),
+ NilNode(51...54)()
+ ),
+ NilNode(57...60)()]
+ ),
+ (35...37),
+ (61...64)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(66...80)(
+ nil,
+ nil,
+ (66...69),
+ nil,
+ nil,
+ nil,
+ BlockNode(70...80)(
+ [:a],
+ BlockParametersNode(73...76)(
+ ParametersNode(74...75)(
+ [RequiredParameterNode(74...75)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (73...74),
+ (75...76)
+ ),
+ nil,
+ (70...72),
+ (77...80)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(82...116)(
+ nil,
+ nil,
+ (82...85),
+ (85...86),
+ ArgumentsNode(86...109)(
+ [InterpolatedStringNode(86...109)(
+ (86...92),
+ [StringNode(101...105)(nil, (101...105), nil, " b\n")],
+ (105...109)
+ )]
+ ),
+ (92...93),
+ BlockNode(94...116)(
+ [:a],
+ BlockParametersNode(97...100)(
+ ParametersNode(98...99)(
+ [RequiredParameterNode(98...99)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (97...98),
+ (99...100)
+ ),
+ StatementsNode(111...112)([LocalVariableReadNode(111...112)(:a, 0)]),
+ (94...96),
+ (113...116)
+ ),
+ 0,
+ "foo"
+ ),
+ CallNode(118...148)(
+ nil,
+ nil,
+ (118...121),
+ (121...122),
+ ArgumentsNode(122...141)(
+ [InterpolatedStringNode(122...141)(
+ (122...128),
+ [StringNode(133...137)(nil, (133...137), nil, " b\n")],
+ (137...141)
+ )]
+ ),
+ (128...129),
+ BlockNode(130...148)(
+ [],
+ nil,
+ StatementsNode(143...144)(
+ [CallNode(143...144)(
+ nil,
+ nil,
+ (143...144),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ (130...132),
+ (145...148)
+ ),
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/def.txt b/test/yarp/snapshots/unparser/corpus/semantic/def.txt
new file mode 100644
index 0000000000..922dbc5a45
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/def.txt
@@ -0,0 +1,77 @@
+ProgramNode(0...55)(
+ [],
+ StatementsNode(0...55)(
+ [DefNode(0...21)(
+ (4...7),
+ nil,
+ nil,
+ StatementsNode(10...17)(
+ [ParenthesesNode(10...17)(
+ StatementsNode(11...16)(
+ [CallNode(11...16)(
+ CallNode(11...12)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (13...14),
+ nil,
+ ArgumentsNode(15...16)(
+ [CallNode(15...16)(
+ nil,
+ nil,
+ (15...16),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "-"
+ )]
+ ),
+ (10...11),
+ (16...17)
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (18...21)
+ ),
+ DefNode(23...55)(
+ (27...30),
+ nil,
+ nil,
+ StatementsNode(33...51)(
+ [RescueModifierNode(33...51)(
+ CallNode(33...34)(nil, nil, (33...34), nil, nil, nil, nil, 0, "a"),
+ (35...41),
+ ConstantReadNode(42...51)()
+ )]
+ ),
+ [],
+ (23...26),
+ nil,
+ nil,
+ nil,
+ nil,
+ (52...55)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/dstr.txt b/test/yarp/snapshots/unparser/corpus/semantic/dstr.txt
new file mode 100644
index 0000000000..b3ea49149c
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/dstr.txt
@@ -0,0 +1,257 @@
+ProgramNode(0...608)(
+ [],
+ StatementsNode(0...608)(
+ [InterpolatedStringNode(0...10)((0...5), [], (6...10)),
+ InterpolatedStringNode(11...23)((11...18), [], (19...23)),
+ InterpolatedStringNode(24...35)((24...30), [], (31...35)),
+ InterpolatedStringNode(36...49)((36...44), [], (45...49)),
+ InterpolatedStringNode(50...64)(
+ (50...55),
+ [StringNode(56...60)(nil, (56...60), nil, " a\n")],
+ (60...64)
+ ),
+ InterpolatedStringNode(65...81)(
+ (65...72),
+ [StringNode(73...77)(nil, (73...77), nil, " a\n")],
+ (77...81)
+ ),
+ InterpolatedStringNode(82...102)(
+ (82...87),
+ [StringNode(88...94)(nil, (88...94), nil, " a\n" + " "),
+ EmbeddedStatementsNode(94...97)((94...96), nil, (96...97)),
+ StringNode(97...98)(nil, (97...98), nil, "\n")],
+ (98...102)
+ ),
+ InterpolatedStringNode(103...124)(
+ (103...109),
+ [StringNode(110...116)(nil, (110...116), nil, "a\n"),
+ EmbeddedStatementsNode(116...119)((116...118), nil, (118...119)),
+ StringNode(119...120)(nil, (119...120), nil, "\n")],
+ (120...124)
+ ),
+ InterpolatedStringNode(125...150)(
+ (125...131),
+ [StringNode(132...138)(nil, (132...138), nil, "a\n"),
+ EmbeddedStatementsNode(138...141)((138...140), nil, (140...141)),
+ StringNode(141...146)(nil, (141...146), nil, "\n" + "b\n")],
+ (146...150)
+ ),
+ InterpolatedStringNode(151...172)(
+ (151...157),
+ [StringNode(158...168)(nil, (158...168), nil, "a\n" + " b\n")],
+ (168...172)
+ ),
+ InterpolatedStringNode(173...190)(
+ (173...180),
+ [StringNode(181...186)(nil, (181...186), nil, "a\n" + "\n" + "b\n")],
+ (186...190)
+ ),
+ InterpolatedStringNode(191...210)(
+ (191...198),
+ [StringNode(199...206)(nil, (199...206), nil, " a\n" + "\n" + " b\n")],
+ (206...210)
+ ),
+ InterpolatedStringNode(211...229)(
+ (211...218),
+ [StringNode(219...225)(nil, (219...225), nil, " a\\nb\n")],
+ (225...229)
+ ),
+ InterpolatedStringNode(230...251)(
+ (230...235),
+ [EmbeddedStatementsNode(236...239)((236...238), nil, (238...239)),
+ StringNode(239...242)(nil, (239...242), nil, "a\n" + " "),
+ EmbeddedStatementsNode(242...245)((242...244), nil, (244...245)),
+ StringNode(245...247)(nil, (245...247), nil, "a\n")],
+ (247...251)
+ ),
+ InterpolatedStringNode(252...275)(
+ (252...257),
+ [StringNode(258...260)(nil, (258...260), nil, " "),
+ EmbeddedStatementsNode(260...263)((260...262), nil, (262...263)),
+ StringNode(263...271)(nil, (263...271), nil, "\n" + " \#{}\n")],
+ (271...275)
+ ),
+ InterpolatedStringNode(276...296)(
+ (276...281),
+ [StringNode(282...284)(nil, (282...284), nil, " a"),
+ EmbeddedStatementsNode(284...287)((284...286), nil, (286...287)),
+ StringNode(287...292)(nil, (287...292), nil, "b\n" + " c\n")],
+ (292...296)
+ ),
+ InterpolatedStringNode(297...314)(
+ (297...303),
+ [StringNode(304...306)(nil, (304...306), nil, ""),
+ EmbeddedStatementsNode(306...309)((306...308), nil, (308...309)),
+ StringNode(309...310)(nil, (309...310), nil, "\n")],
+ (310...314)
+ ),
+ IfNode(315...349)(
+ (315...317),
+ TrueNode(318...322)(),
+ StatementsNode(325...346)(
+ [InterpolatedStringNode(325...346)(
+ (325...331),
+ [StringNode(332...336)(nil, (332...336), nil, ""),
+ EmbeddedStatementsNode(336...339)((336...338), nil, (338...339)),
+ StringNode(339...340)(nil, (339...340), nil, "\n")],
+ (340...346)
+ )]
+ ),
+ nil,
+ (346...349)
+ ),
+ IfNode(351...386)(
+ (351...353),
+ TrueNode(354...358)(),
+ StatementsNode(361...383)(
+ [InterpolatedStringNode(361...383)(
+ (361...367),
+ [StringNode(368...373)(nil, (368...373), nil, "b"),
+ EmbeddedStatementsNode(373...376)((373...375), nil, (375...376)),
+ StringNode(376...377)(nil, (376...377), nil, "\n")],
+ (377...383)
+ )]
+ ),
+ nil,
+ (383...386)
+ ),
+ IfNode(388...423)(
+ (388...390),
+ TrueNode(391...395)(),
+ StatementsNode(398...420)(
+ [InterpolatedStringNode(398...420)(
+ (398...404),
+ [StringNode(405...409)(nil, (405...409), nil, ""),
+ EmbeddedStatementsNode(409...412)((409...411), nil, (411...412)),
+ StringNode(412...414)(nil, (412...414), nil, "a\n")],
+ (414...420)
+ )]
+ ),
+ nil,
+ (420...423)
+ ),
+ IfNode(425...464)(
+ (425...427),
+ TrueNode(428...432)(),
+ StatementsNode(435...461)(
+ [InterpolatedStringNode(435...461)(
+ (435...443),
+ [StringNode(444...455)(
+ nil,
+ (444...455),
+ nil,
+ " a\n" + "\n" + " b\n"
+ )],
+ (455...461)
+ )]
+ ),
+ nil,
+ (461...464)
+ ),
+ InterpolatedStringNode(466...472)(
+ (466...467),
+ [EmbeddedStatementsNode(467...470)((467...469), nil, (469...470)),
+ StringNode(470...471)(nil, (470...471), nil, "a")],
+ (471...472)
+ ),
+ InterpolatedStringNode(474...486)(
+ (474...476),
+ [StringNode(476...479)(nil, (476...479), nil, "\n" + "\""),
+ EmbeddedStatementsNode(479...482)((479...481), nil, (481...482)),
+ StringNode(482...485)(nil, (482...485), nil, "\"\n")],
+ (485...486)
+ ),
+ InterpolatedStringNode(488...502)(
+ (488...491),
+ [StringNode(491...495)(nil, (491...495), nil, "-\n" + "\""),
+ EmbeddedStatementsNode(495...498)((495...497), nil, (497...498)),
+ StringNode(498...501)(nil, (498...501), nil, "\"\n")],
+ (501...502)
+ ),
+ InterpolatedStringNode(504...513)(
+ (504...505),
+ [StringNode(505...507)(nil, (505...507), nil, "a\n"),
+ EmbeddedStatementsNode(507...510)((507...509), nil, (509...510)),
+ StringNode(510...512)(nil, (510...512), nil, "\n" + "b")],
+ (512...513)
+ ),
+ InterpolatedStringNode(515...525)(
+ (515...516),
+ [StringNode(516...519)(nil, (516...519), nil, "a\n"),
+ EmbeddedStatementsNode(519...522)((519...521), nil, (521...522)),
+ StringNode(522...524)(nil, (522...524), nil, "\n" + "b")],
+ (524...525)
+ ),
+ InterpolatedStringNode(527...537)(
+ (527...528),
+ [StringNode(528...530)(nil, (528...530), nil, "a\n"),
+ EmbeddedStatementsNode(530...533)((530...532), nil, (532...533)),
+ StringNode(533...536)(nil, (533...536), nil, "\n" + "b")],
+ (536...537)
+ ),
+ StringConcatNode(539...550)(
+ StringNode(539...542)((539...540), (540...541), (541...542), "a"),
+ InterpolatedStringNode(545...550)(
+ (545...546),
+ [EmbeddedStatementsNode(546...549)((546...548), nil, (548...549))],
+ (549...550)
+ )
+ ),
+ StringConcatNode(552...560)(
+ StringNode(552...554)((552...553), (553...553), (553...554), ""),
+ StringConcatNode(555...560)(
+ StringNode(555...557)((555...556), (556...556), (556...557), ""),
+ StringNode(558...560)((558...559), (559...559), (559...560), "")
+ )
+ ),
+ StringConcatNode(562...574)(
+ InterpolatedStringNode(562...570)(
+ (562...563),
+ [StringNode(563...564)(nil, (563...564), nil, "a"),
+ EmbeddedStatementsNode(564...569)(
+ (564...566),
+ StatementsNode(566...568)([InstanceVariableReadNode(566...568)()]),
+ (568...569)
+ )],
+ (569...570)
+ ),
+ StringNode(571...574)((571...572), (572...573), (573...574), "b")
+ ),
+ StringConcatNode(575...585)(
+ InterpolatedStringNode(575...581)(
+ (575...576),
+ [StringNode(576...577)(nil, (576...577), nil, "a"),
+ EmbeddedVariableNode(577...580)(
+ (577...578),
+ InstanceVariableReadNode(578...580)()
+ )],
+ (580...581)
+ ),
+ StringNode(582...585)((582...583), (583...584), (584...585), "b")
+ ),
+ StringConcatNode(586...596)(
+ InterpolatedStringNode(586...592)(
+ (586...587),
+ [StringNode(587...588)(nil, (587...588), nil, "a"),
+ EmbeddedVariableNode(588...591)(
+ (588...589),
+ GlobalVariableReadNode(589...591)()
+ )],
+ (591...592)
+ ),
+ StringNode(593...596)((593...594), (594...595), (595...596), "b")
+ ),
+ StringConcatNode(597...608)(
+ InterpolatedStringNode(597...604)(
+ (597...598),
+ [StringNode(598...599)(nil, (598...599), nil, "a"),
+ EmbeddedVariableNode(599...603)(
+ (599...600),
+ ClassVariableReadNode(600...603)()
+ )],
+ (603...604)
+ ),
+ StringNode(605...608)((605...606), (606...607), (607...608), "b")
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/kwbegin.txt b/test/yarp/snapshots/unparser/corpus/semantic/kwbegin.txt
new file mode 100644
index 0000000000..b0ea59e21d
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/kwbegin.txt
@@ -0,0 +1,184 @@
+ProgramNode(0...215)(
+ [],
+ StatementsNode(0...215)(
+ [BeginNode(0...16)(
+ (0...5),
+ nil,
+ RescueNode(6...12)((6...12), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (13...16)
+ ),
+ BeginNode(18...39)(
+ (18...23),
+ nil,
+ RescueNode(24...30)((24...30), [], nil, nil, nil, nil),
+ ElseNode(31...39)((31...35), nil, (36...39)),
+ nil,
+ (36...39)
+ ),
+ BeginNode(41...54)(
+ (41...46),
+ StatementsNode(49...50)(
+ [CallNode(49...50)(nil, nil, (49...50), nil, nil, nil, nil, 0, "a")]
+ ),
+ nil,
+ nil,
+ nil,
+ (51...54)
+ ),
+ BeginNode(56...80)(
+ (56...61),
+ StatementsNode(64...65)(
+ [CallNode(64...65)(nil, nil, (64...65), nil, nil, nil, nil, 0, "a")]
+ ),
+ RescueNode(66...76)(
+ (66...72),
+ [],
+ nil,
+ nil,
+ StatementsNode(75...76)(
+ [CallNode(75...76)(nil, nil, (75...76), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (77...80)
+ ),
+ BeginNode(82...110)(
+ (82...87),
+ StatementsNode(90...95)(
+ [CallNode(90...91)(nil, nil, (90...91), nil, nil, nil, nil, 0, "a"),
+ CallNode(94...95)(nil, nil, (94...95), nil, nil, nil, nil, 0, "b")]
+ ),
+ RescueNode(96...106)(
+ (96...102),
+ [],
+ nil,
+ nil,
+ StatementsNode(105...106)(
+ [CallNode(105...106)(
+ nil,
+ nil,
+ (105...106),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (107...110)
+ ),
+ BeginNode(112...135)(
+ (112...117),
+ nil,
+ RescueNode(118...126)(
+ (118...124),
+ [ConstantReadNode(125...126)()],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ ElseNode(127...135)((127...131), nil, (132...135)),
+ nil,
+ (132...135)
+ ),
+ BeginNode(137...163)(
+ (137...142),
+ nil,
+ RescueNode(144...152)(
+ (144...150),
+ [ConstantReadNode(151...152)()],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ ElseNode(154...163)((154...158), nil, (160...163)),
+ nil,
+ (160...163)
+ ),
+ BeginNode(165...215)(
+ (165...170),
+ StatementsNode(173...174)(
+ [CallNode(173...174)(
+ nil,
+ nil,
+ (173...174),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ RescueNode(175...200)(
+ (175...181),
+ [ConstantReadNode(182...183)()],
+ nil,
+ nil,
+ StatementsNode(186...187)(
+ [CallNode(186...187)(
+ nil,
+ nil,
+ (186...187),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ RescueNode(188...200)(
+ (188...194),
+ [ConstantReadNode(195...196)()],
+ nil,
+ nil,
+ StatementsNode(199...200)(
+ [CallNode(199...200)(
+ nil,
+ nil,
+ (199...200),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ nil
+ )
+ ),
+ nil,
+ EnsureNode(201...215)(
+ (201...207),
+ StatementsNode(210...211)(
+ [CallNode(210...211)(
+ nil,
+ nil,
+ (210...211),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (212...215)
+ ),
+ (212...215)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/literal.txt b/test/yarp/snapshots/unparser/corpus/semantic/literal.txt
new file mode 100644
index 0000000000..30225ed2ca
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/literal.txt
@@ -0,0 +1,93 @@
+ProgramNode(0...131)(
+ [],
+ StatementsNode(0...131)(
+ [RationalNode(0...4)(FloatNode(0...3)()),
+ CallNode(5...8)(
+ RationalNode(6...8)(IntegerNode(6...7)()),
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ IntegerNode(9...12)(),
+ IntegerNode(13...18)(),
+ FloatNode(19...23)(),
+ FloatNode(24...38)(),
+ CallNode(39...54)(
+ FloatNode(40...54)(),
+ nil,
+ (39...40),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ StringNode(55...57)((55...56), (56...57), nil, "c"),
+ RegularExpressionNode(58...63)((58...61), (61...62), (62...63), "/", 0),
+ RegularExpressionNode(64...70)((64...67), (67...69), (69...70), ")", 0),
+ InterpolatedRegularExpressionNode(71...85)(
+ (71...74),
+ [EmbeddedStatementsNode(74...81)(
+ (74...76),
+ StatementsNode(76...80)([InstanceVariableReadNode(76...80)()]),
+ (80...81)
+ ),
+ StringNode(81...84)(nil, (81...84), nil, "baz")],
+ (84...85),
+ 0
+ ),
+ FloatNode(86...102)(),
+ CallNode(103...120)(
+ FloatNode(104...120)(),
+ nil,
+ (103...104),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ CallNode(121...131)(
+ nil,
+ nil,
+ (121...122),
+ (122...123),
+ ArgumentsNode(123...130)(
+ [CallNode(123...130)(
+ nil,
+ nil,
+ (123...126),
+ nil,
+ ArgumentsNode(127...130)(
+ [CallNode(127...130)(
+ nil,
+ nil,
+ (127...130),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (130...131),
+ nil,
+ 0,
+ "w"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/send.txt b/test/yarp/snapshots/unparser/corpus/semantic/send.txt
new file mode 100644
index 0000000000..4f2c294e9e
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/send.txt
@@ -0,0 +1,117 @@
+ProgramNode(0...44)(
+ [],
+ StatementsNode(0...44)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ CallNode(4...10)(
+ nil,
+ nil,
+ (4...7),
+ (7...8),
+ ArgumentsNode(8...9)([IntegerNode(8...9)()]),
+ (9...10),
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(12...27)(
+ CallNode(12...22)(
+ CallNode(12...20)(
+ CallNode(12...13)(nil, nil, (12...13), nil, nil, nil, nil, 0, "a"),
+ (13...14),
+ (14...17),
+ (17...18),
+ ArgumentsNode(18...19)(
+ [CallNode(18...19)(
+ nil,
+ nil,
+ (18...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ (19...20),
+ nil,
+ 0,
+ "==="
+ ),
+ (20...21),
+ (21...22),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ nil,
+ (23...25),
+ nil,
+ ArgumentsNode(26...27)(
+ [CallNode(26...27)(nil, nil, (26...27), nil, nil, nil, nil, 0, "d")]
+ ),
+ nil,
+ nil,
+ 0,
+ "=="
+ ),
+ CallNode(29...44)(
+ CallNode(29...30)(nil, nil, (29...30), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (31...33),
+ nil,
+ ArgumentsNode(34...44)(
+ [CallNode(34...44)(
+ CallNode(34...37)(
+ CallNode(34...35)(
+ nil,
+ nil,
+ (34...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ ),
+ (35...36),
+ (36...37),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ ),
+ (37...38),
+ (38...41),
+ (41...42),
+ ArgumentsNode(42...43)(
+ [CallNode(42...43)(
+ nil,
+ nil,
+ (42...43),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (43...44),
+ nil,
+ 0,
+ "==="
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "=="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/undef.txt b/test/yarp/snapshots/unparser/corpus/semantic/undef.txt
new file mode 100644
index 0000000000..429e904481
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/undef.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [UndefNode(0...9)([SymbolNode(6...9)(nil, (6...9), nil, "foo")], (0...5)),
+ UndefNode(10...24)(
+ [SymbolNode(16...19)(nil, (16...19), nil, "foo"),
+ SymbolNode(21...24)(nil, (21...24), nil, "bar")],
+ (10...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/unparser/corpus/semantic/while.txt b/test/yarp/snapshots/unparser/corpus/semantic/while.txt
new file mode 100644
index 0000000000..f608e21cfb
--- /dev/null
+++ b/test/yarp/snapshots/unparser/corpus/semantic/while.txt
@@ -0,0 +1,177 @@
+ProgramNode(0...188)(
+ [:foo, :a],
+ StatementsNode(0...188)(
+ [UntilNode(0...13)(
+ (2...7),
+ CallNode(8...13)(
+ nil,
+ nil,
+ (8...10),
+ nil,
+ nil,
+ nil,
+ BlockNode(11...13)([], nil, nil, (11...12), (12...13)),
+ 0,
+ "b?"
+ ),
+ StatementsNode(0...1)(
+ [CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a")]
+ )
+ ),
+ UntilNode(15...34)(
+ (15...20),
+ CallNode(21...26)(
+ nil,
+ nil,
+ (21...23),
+ nil,
+ nil,
+ nil,
+ BlockNode(24...26)([], nil, nil, (24...25), (25...26)),
+ 0,
+ "b?"
+ ),
+ StatementsNode(29...30)(
+ [CallNode(29...30)(nil, nil, (29...30), nil, nil, nil, nil, 0, "a")]
+ )
+ ),
+ WhileNode(36...55)(
+ (46...51),
+ LocalVariableReadNode(52...55)(:foo, 0),
+ StatementsNode(36...45)(
+ [LocalVariableWriteNode(36...45)(
+ :foo,
+ 0,
+ CallNode(42...45)(
+ nil,
+ nil,
+ (42...45),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (36...39),
+ (40...41)
+ )]
+ )
+ ),
+ UntilNode(57...75)(
+ (59...64),
+ AndNode(65...75)(
+ CallNode(65...66)(nil, nil, (65...66), nil, nil, nil, nil, 0, "b"),
+ CallNode(70...75)(
+ nil,
+ nil,
+ (70...71),
+ nil,
+ nil,
+ nil,
+ BlockNode(72...75)([], nil, nil, (72...73), (74...75)),
+ 0,
+ "a"
+ ),
+ (67...69)
+ ),
+ StatementsNode(57...58)(
+ [CallNode(57...58)(nil, nil, (57...58), nil, nil, nil, nil, 0, "a")]
+ )
+ ),
+ WhileNode(77...96)(
+ (77...82),
+ LocalVariableWriteNode(83...88)(
+ :a,
+ 0,
+ CallNode(87...88)(nil, nil, (87...88), nil, nil, nil, nil, 0, "b"),
+ (83...84),
+ (85...86)
+ ),
+ StatementsNode(91...92)([LocalVariableReadNode(91...92)(:a, 0)])
+ ),
+ UntilNode(98...130)(
+ (100...105),
+ CallNode(106...130)(
+ nil,
+ nil,
+ (106...107),
+ (107...108),
+ ArgumentsNode(108...123)(
+ [InterpolatedStringNode(108...123)((108...114), [], (119...123))]
+ ),
+ (114...115),
+ BlockNode(116...130)(
+ [],
+ nil,
+ StatementsNode(125...126)(
+ [CallNode(125...126)(
+ nil,
+ nil,
+ (125...126),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (116...118),
+ (127...130)
+ ),
+ 0,
+ "b"
+ ),
+ StatementsNode(98...99)([LocalVariableReadNode(98...99)(:a, 0)])
+ ),
+ ModuleNode(132...188)(
+ [:foo],
+ (132...138),
+ ConstantReadNode(139...140)(),
+ StatementsNode(143...184)(
+ [LocalVariableWriteNode(143...152)(
+ :foo,
+ 0,
+ CallNode(149...152)(
+ nil,
+ nil,
+ (149...152),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "exp"
+ ),
+ (143...146),
+ (147...148)
+ ),
+ WhileNode(155...184)(
+ (155...160),
+ LocalVariableReadNode(161...164)(:foo, 0),
+ StatementsNode(169...178)(
+ [LocalVariableWriteNode(169...178)(
+ :foo,
+ 0,
+ CallNode(175...178)(
+ nil,
+ nil,
+ (175...178),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (169...172),
+ (173...174)
+ )]
+ )
+ )]
+ ),
+ (185...188)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/until.txt b/test/yarp/snapshots/until.txt
new file mode 100644
index 0000000000..c9ae1f6fbd
--- /dev/null
+++ b/test/yarp/snapshots/until.txt
@@ -0,0 +1,60 @@
+ProgramNode(0...109)(
+ [],
+ StatementsNode(0...109)(
+ [UntilNode(0...18)(
+ (0...5),
+ TrueNode(6...10)(),
+ StatementsNode(12...13)([IntegerNode(12...13)()])
+ ),
+ UntilNode(20...32)(
+ (22...27),
+ TrueNode(28...32)(),
+ StatementsNode(20...21)([IntegerNode(20...21)()])
+ ),
+ UntilNode(34...50)(
+ (40...45),
+ TrueNode(46...50)(),
+ StatementsNode(34...39)([BreakNode(34...39)(nil, (34...39))])
+ ),
+ UntilNode(52...67)(
+ (57...62),
+ TrueNode(63...67)(),
+ StatementsNode(52...56)([NextNode(52...56)(nil, (52...56))])
+ ),
+ UntilNode(69...86)(
+ (76...81),
+ TrueNode(82...86)(),
+ StatementsNode(69...75)([ReturnNode(69...75)((69...75), nil)])
+ ),
+ UntilNode(88...109)(
+ (99...104),
+ CallNode(105...109)(
+ nil,
+ nil,
+ (105...109),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar?"
+ ),
+ StatementsNode(88...98)(
+ [CallNode(88...98)(
+ nil,
+ nil,
+ (88...91),
+ nil,
+ ArgumentsNode(92...98)(
+ [SymbolNode(92...94)((92...93), (93...94), nil, "a"),
+ SymbolNode(96...98)((96...97), (97...98), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/variables.txt b/test/yarp/snapshots/variables.txt
new file mode 100644
index 0000000000..8976f74a38
--- /dev/null
+++ b/test/yarp/snapshots/variables.txt
@@ -0,0 +1,232 @@
+ProgramNode(0...293)(
+ [:abc, :foo, :bar, :baz],
+ StatementsNode(0...293)(
+ [ClassVariableReadNode(0...5)(),
+ ClassVariableWriteNode(7...16)(
+ (7...12),
+ IntegerNode(15...16)(),
+ (13...14)
+ ),
+ MultiWriteNode(18...34)(
+ [ClassVariableWriteNode(18...23)((18...23), nil, nil),
+ ClassVariableWriteNode(25...30)((25...30), nil, nil)],
+ (31...32),
+ IntegerNode(33...34)(),
+ nil,
+ nil
+ ),
+ ClassVariableWriteNode(36...48)(
+ (36...41),
+ ArrayNode(44...48)(
+ [IntegerNode(44...45)(), IntegerNode(47...48)()],
+ nil,
+ nil
+ ),
+ (42...43)
+ ),
+ GlobalVariableWriteNode(50...58)(
+ (50...54),
+ (55...56),
+ IntegerNode(57...58)()
+ ),
+ GlobalVariableReadNode(60...64)(),
+ InstanceVariableReadNode(66...70)(),
+ InstanceVariableWriteNode(72...80)(
+ (72...76),
+ IntegerNode(79...80)(),
+ (77...78)
+ ),
+ CallNode(82...83)(nil, nil, (82...83), nil, nil, nil, nil, 0, "a"),
+ LocalVariableWriteNode(85...92)(
+ :abc,
+ 0,
+ IntegerNode(91...92)(),
+ (85...88),
+ (89...90)
+ ),
+ MultiWriteNode(94...108)(
+ [GlobalVariableWriteNode(94...98)((94...98), nil, nil),
+ GlobalVariableWriteNode(100...104)((100...104), nil, nil)],
+ (105...106),
+ IntegerNode(107...108)(),
+ nil,
+ nil
+ ),
+ GlobalVariableWriteNode(110...121)(
+ (110...114),
+ (115...116),
+ ArrayNode(117...121)(
+ [IntegerNode(117...118)(), IntegerNode(120...121)()],
+ nil,
+ nil
+ )
+ ),
+ MultiWriteNode(123...137)(
+ [InstanceVariableWriteNode(123...127)((123...127), nil, nil),
+ InstanceVariableWriteNode(129...133)((129...133), nil, nil)],
+ (134...135),
+ IntegerNode(136...137)(),
+ nil,
+ nil
+ ),
+ InstanceVariableWriteNode(139...150)(
+ (139...143),
+ ArrayNode(146...150)(
+ [IntegerNode(146...147)(), IntegerNode(149...150)()],
+ nil,
+ nil
+ ),
+ (144...145)
+ ),
+ LocalVariableWriteNode(152...159)(
+ :foo,
+ 0,
+ IntegerNode(158...159)(),
+ (152...155),
+ (156...157)
+ ),
+ LocalVariableWriteNode(161...171)(
+ :foo,
+ 0,
+ ArrayNode(167...171)(
+ [IntegerNode(167...168)(), IntegerNode(170...171)()],
+ nil,
+ nil
+ ),
+ (161...164),
+ (165...166)
+ ),
+ LocalVariableWriteNode(173...183)(
+ :foo,
+ 0,
+ ArrayNode(179...183)(
+ [IntegerNode(179...180)(), IntegerNode(182...183)()],
+ nil,
+ nil
+ ),
+ (173...176),
+ (177...178)
+ ),
+ MultiWriteNode(185...198)(
+ [LocalVariableWriteNode(185...188)(:foo, 0, nil, (185...188), nil),
+ SplatNode(190...191)((190...191), nil)],
+ (192...193),
+ ArrayNode(194...198)(
+ [IntegerNode(194...195)(), IntegerNode(197...198)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(200...211)(
+ [LocalVariableWriteNode(200...203)(:foo, 0, nil, (200...203), nil),
+ SplatNode(203...204)((203...204), nil)],
+ (205...206),
+ ArrayNode(207...211)(
+ [IntegerNode(207...208)(), IntegerNode(210...211)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(213...229)(
+ [LocalVariableWriteNode(213...216)(:foo, 0, nil, (213...216), nil),
+ SplatNode(218...222)(
+ (218...219),
+ LocalVariableWriteNode(219...222)(:bar, 0, nil, (219...222), nil)
+ )],
+ (223...224),
+ ArrayNode(225...229)(
+ [IntegerNode(225...226)(), IntegerNode(228...229)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(231...258)(
+ [LocalVariableWriteNode(231...234)(:foo, 0, nil, (231...234), nil),
+ MultiWriteNode(237...246)(
+ [LocalVariableWriteNode(237...240)(:bar, 0, nil, (237...240), nil),
+ LocalVariableWriteNode(242...245)(:baz, 0, nil, (242...245), nil)],
+ nil,
+ nil,
+ (236...237),
+ (245...246)
+ )],
+ (247...248),
+ ArrayNode(249...258)(
+ [IntegerNode(249...250)(),
+ ArrayNode(252...258)(
+ [IntegerNode(253...254)(), IntegerNode(256...257)()],
+ (252...253),
+ (257...258)
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(260...270)(
+ :foo,
+ 0,
+ SplatNode(266...270)(
+ (266...267),
+ LocalVariableReadNode(267...270)(:bar, 0)
+ ),
+ (260...263),
+ (264...265)
+ ),
+ ConstantPathWriteNode(272...282)(
+ ConstantReadNode(272...275)(),
+ (276...277),
+ ArrayNode(278...282)(
+ [IntegerNode(278...279)(), IntegerNode(281...282)()],
+ nil,
+ nil
+ )
+ ),
+ ParenthesesNode(284...293)(
+ StatementsNode(285...292)(
+ [CallNode(285...286)(
+ nil,
+ nil,
+ (285...286),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ CallNode(288...289)(
+ nil,
+ nil,
+ (288...289),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "b"
+ ),
+ CallNode(291...292)(
+ nil,
+ nil,
+ (291...292),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (284...285),
+ (292...293)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/while.txt b/test/yarp/snapshots/while.txt
new file mode 100644
index 0000000000..4f87258cf9
--- /dev/null
+++ b/test/yarp/snapshots/while.txt
@@ -0,0 +1,185 @@
+ProgramNode(0...314)(
+ [],
+ StatementsNode(0...314)(
+ [WhileNode(0...18)(
+ (0...5),
+ TrueNode(6...10)(),
+ StatementsNode(12...13)([IntegerNode(12...13)()])
+ ),
+ WhileNode(20...32)(
+ (22...27),
+ TrueNode(28...32)(),
+ StatementsNode(20...21)([IntegerNode(20...21)()])
+ ),
+ WhileNode(34...50)(
+ (40...45),
+ TrueNode(46...50)(),
+ StatementsNode(34...39)([BreakNode(34...39)(nil, (34...39))])
+ ),
+ WhileNode(52...67)(
+ (57...62),
+ TrueNode(63...67)(),
+ StatementsNode(52...56)([NextNode(52...56)(nil, (52...56))])
+ ),
+ WhileNode(69...86)(
+ (76...81),
+ TrueNode(82...86)(),
+ StatementsNode(69...75)([ReturnNode(69...75)((69...75), nil)])
+ ),
+ WhileNode(88...109)(
+ (99...104),
+ CallNode(105...109)(
+ nil,
+ nil,
+ (105...109),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar?"
+ ),
+ StatementsNode(88...98)(
+ [CallNode(88...98)(
+ nil,
+ nil,
+ (88...91),
+ nil,
+ ArgumentsNode(92...98)(
+ [SymbolNode(92...94)((92...93), (93...94), nil, "a"),
+ SymbolNode(96...98)((96...97), (97...98), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+ ),
+ WhileNode(111...161)(
+ (111...116),
+ DefNode(117...149)(
+ (126...129),
+ SelfNode(121...125)(),
+ ParametersNode(130...144)(
+ [],
+ [OptionalParameterNode(130...144)(
+ :a,
+ (130...131),
+ (132...133),
+ CallNode(134...144)(
+ nil,
+ nil,
+ (134...137),
+ nil,
+ nil,
+ nil,
+ BlockNode(138...144)([], nil, nil, (138...140), (141...144)),
+ 0,
+ "tap"
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (117...120),
+ (125...126),
+ nil,
+ nil,
+ nil,
+ (146...149)
+ ),
+ StatementsNode(151...156)([BreakNode(151...156)(nil, (151...156))])
+ ),
+ WhileNode(163...210)(
+ (163...168),
+ ClassNode(169...198)(
+ [:a],
+ (169...174),
+ ConstantReadNode(175...178)(),
+ nil,
+ nil,
+ StatementsNode(179...193)(
+ [LocalVariableWriteNode(179...193)(
+ :a,
+ 0,
+ CallNode(183...193)(
+ nil,
+ nil,
+ (183...186),
+ nil,
+ nil,
+ nil,
+ BlockNode(187...193)([], nil, nil, (187...189), (190...193)),
+ 0,
+ "tap"
+ ),
+ (179...180),
+ (181...182)
+ )]
+ ),
+ (195...198)
+ ),
+ StatementsNode(200...205)([BreakNode(200...205)(nil, (200...205))])
+ ),
+ WhileNode(212...260)(
+ (212...217),
+ SingletonClassNode(218...248)(
+ [],
+ (218...223),
+ (224...226),
+ SelfNode(227...231)(),
+ StatementsNode(233...243)(
+ [CallNode(233...243)(
+ nil,
+ nil,
+ (233...236),
+ nil,
+ nil,
+ nil,
+ BlockNode(237...243)([], nil, nil, (237...239), (240...243)),
+ 0,
+ "tap"
+ )]
+ ),
+ (245...248)
+ ),
+ StatementsNode(250...255)([BreakNode(250...255)(nil, (250...255))])
+ ),
+ WhileNode(262...314)(
+ (262...267),
+ SingletonClassNode(268...302)(
+ [:a],
+ (268...273),
+ (274...276),
+ SelfNode(277...281)(),
+ StatementsNode(283...297)(
+ [LocalVariableWriteNode(283...297)(
+ :a,
+ 0,
+ CallNode(287...297)(
+ nil,
+ nil,
+ (287...290),
+ nil,
+ nil,
+ nil,
+ BlockNode(291...297)([], nil, nil, (291...293), (294...297)),
+ 0,
+ "tap"
+ ),
+ (283...284),
+ (285...286)
+ )]
+ ),
+ (299...302)
+ ),
+ StatementsNode(304...309)([BreakNode(304...309)(nil, (304...309))])
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/__ENCODING__.txt b/test/yarp/snapshots/whitequark/__ENCODING__.txt
new file mode 100644
index 0000000000..2f5aaa5dfc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/__ENCODING__.txt
@@ -0,0 +1 @@
+ProgramNode(0...12)([], StatementsNode(0...12)([SourceEncodingNode(0...12)()]))
diff --git a/test/yarp/snapshots/whitequark/__ENCODING___legacy_.txt b/test/yarp/snapshots/whitequark/__ENCODING___legacy_.txt
new file mode 100644
index 0000000000..2f5aaa5dfc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/__ENCODING___legacy_.txt
@@ -0,0 +1 @@
+ProgramNode(0...12)([], StatementsNode(0...12)([SourceEncodingNode(0...12)()]))
diff --git a/test/yarp/snapshots/whitequark/alias.txt b/test/yarp/snapshots/whitequark/alias.txt
new file mode 100644
index 0000000000..3960bea48a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/alias.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [AliasNode(0...14)(
+ SymbolNode(6...10)((6...7), (7...10), nil, "foo"),
+ SymbolNode(11...14)(nil, (11...14), nil, "bar"),
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/alias_gvar.txt b/test/yarp/snapshots/whitequark/alias_gvar.txt
new file mode 100644
index 0000000000..c615e52655
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/alias_gvar.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [AliasNode(0...11)(
+ GlobalVariableReadNode(6...8)(),
+ BackReferenceReadNode(9...11)(),
+ (0...5)
+ ),
+ AliasNode(13...24)(
+ GlobalVariableReadNode(19...21)(),
+ GlobalVariableReadNode(22...24)(),
+ (13...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ambiuous_quoted_label_in_ternary_operator.txt b/test/yarp/snapshots/whitequark/ambiuous_quoted_label_in_ternary_operator.txt
new file mode 100644
index 0000000000..481a9c5f92
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ambiuous_quoted_label_in_ternary_operator.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [IfNode(0...15)(
+ nil,
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(4...10)(
+ [CallNode(4...10)(
+ CallNode(4...5)(nil, nil, (4...5), nil, nil, nil, nil, 0, "b"),
+ nil,
+ (6...7),
+ nil,
+ ArgumentsNode(8...10)(
+ [StringNode(8...10)((8...9), (9...9), (9...10), "")]
+ ),
+ nil,
+ nil,
+ 0,
+ "&"
+ )]
+ ),
+ ElseNode(10...15)(
+ (10...11),
+ StatementsNode(12...15)([NilNode(12...15)()]),
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/and.txt b/test/yarp/snapshots/whitequark/and.txt
new file mode 100644
index 0000000000..6a488935e0
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/and.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [AndNode(0...10)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "bar"),
+ (4...6)
+ ),
+ AndNode(12...23)(
+ CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "foo"),
+ CallNode(20...23)(nil, nil, (20...23), nil, nil, nil, nil, 0, "bar"),
+ (16...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/and_asgn.txt b/test/yarp/snapshots/whitequark/and_asgn.txt
new file mode 100644
index 0000000000..abbaf77617
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/and_asgn.txt
@@ -0,0 +1,37 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallOperatorAndWriteNode(0...11)(
+ CallNode(0...5)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ (6...9),
+ IntegerNode(10...11)()
+ ),
+ CallOperatorAndWriteNode(13...28)(
+ CallNode(13...22)(
+ CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (16...22),
+ (16...17),
+ ArgumentsNode(17...21)(
+ [IntegerNode(17...18)(), IntegerNode(20...21)()]
+ ),
+ (21...22),
+ nil,
+ 0,
+ "[]="
+ ),
+ (23...26),
+ IntegerNode(27...28)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/and_or_masgn.txt b/test/yarp/snapshots/whitequark/and_or_masgn.txt
new file mode 100644
index 0000000000..7fc2e35e04
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/and_or_masgn.txt
@@ -0,0 +1,61 @@
+ProgramNode(0...40)(
+ [:a, :b],
+ StatementsNode(0...40)(
+ [AndNode(0...19)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ ParenthesesNode(7...19)(
+ StatementsNode(8...18)(
+ [MultiWriteNode(8...18)(
+ [LocalVariableWriteNode(8...9)(:a, 0, nil, (8...9), nil),
+ LocalVariableWriteNode(11...12)(:b, 0, nil, (11...12), nil)],
+ (13...14),
+ CallNode(15...18)(
+ nil,
+ nil,
+ (15...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (7...8),
+ (18...19)
+ ),
+ (4...6)
+ ),
+ OrNode(21...40)(
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "foo"),
+ ParenthesesNode(28...40)(
+ StatementsNode(29...39)(
+ [MultiWriteNode(29...39)(
+ [LocalVariableWriteNode(29...30)(:a, 0, nil, (29...30), nil),
+ LocalVariableWriteNode(32...33)(:b, 0, nil, (32...33), nil)],
+ (34...35),
+ CallNode(36...39)(
+ nil,
+ nil,
+ (36...39),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (28...29),
+ (39...40)
+ ),
+ (25...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/anonymous_blockarg.txt b/test/yarp/snapshots/whitequark/anonymous_blockarg.txt
new file mode 100644
index 0000000000..d3679ca424
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/anonymous_blockarg.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [DefNode(0...23)(
+ (4...7),
+ nil,
+ ParametersNode(8...9)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(8...9)(nil, (8...9))
+ ),
+ StatementsNode(12...18)(
+ [CallNode(12...18)(
+ nil,
+ nil,
+ (12...15),
+ (15...16),
+ ArgumentsNode(16...17)(
+ [BlockArgumentNode(16...17)(nil, (16...17))]
+ ),
+ (17...18),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:&],
+ (0...3),
+ nil,
+ (7...8),
+ (9...10),
+ nil,
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/arg.txt b/test/yarp/snapshots/whitequark/arg.txt
new file mode 100644
index 0000000000..403c382cb7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/arg.txt
@@ -0,0 +1,48 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [DefNode(0...15)(
+ (4...5),
+ nil,
+ ParametersNode(6...9)(
+ [RequiredParameterNode(6...9)(:foo)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (0...3),
+ nil,
+ (5...6),
+ (9...10),
+ nil,
+ (12...15)
+ ),
+ DefNode(17...37)(
+ (21...22),
+ nil,
+ ParametersNode(23...31)(
+ [RequiredParameterNode(23...26)(:foo),
+ RequiredParameterNode(28...31)(:bar)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo, :bar],
+ (17...20),
+ nil,
+ (22...23),
+ (31...32),
+ nil,
+ (34...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/arg_duplicate_ignored.txt b/test/yarp/snapshots/whitequark/arg_duplicate_ignored.txt
new file mode 100644
index 0000000000..5c88c71d50
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/arg_duplicate_ignored.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [DefNode(0...18)(
+ (4...7),
+ nil,
+ ParametersNode(8...12)(
+ [RequiredParameterNode(8...9)(:_),
+ RequiredParameterNode(11...12)(:_)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:_],
+ (0...3),
+ nil,
+ (7...8),
+ (12...13),
+ nil,
+ (15...18)
+ ),
+ DefNode(20...40)(
+ (24...27),
+ nil,
+ ParametersNode(28...34)(
+ [RequiredParameterNode(28...30)(:_a),
+ RequiredParameterNode(32...34)(:_a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:_a],
+ (20...23),
+ nil,
+ (27...28),
+ (34...35),
+ nil,
+ (37...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/arg_label.txt b/test/yarp/snapshots/whitequark/arg_label.txt
new file mode 100644
index 0000000000..cfa55d0124
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/arg_label.txt
@@ -0,0 +1,90 @@
+ProgramNode(0...49)(
+ [],
+ StatementsNode(0...49)(
+ [DefNode(0...16)(
+ (4...7),
+ nil,
+ nil,
+ StatementsNode(9...12)(
+ [CallNode(9...12)(
+ nil,
+ nil,
+ (9...10),
+ nil,
+ ArgumentsNode(10...12)(
+ [SymbolNode(10...12)((10...11), (11...12), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (13...16)
+ ),
+ DefNode(18...35)(
+ (22...25),
+ nil,
+ nil,
+ StatementsNode(28...31)(
+ [CallNode(28...31)(
+ nil,
+ nil,
+ (28...29),
+ nil,
+ ArgumentsNode(29...31)(
+ [SymbolNode(29...31)((29...30), (30...31), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ [],
+ (18...21),
+ nil,
+ (25...26),
+ (26...27),
+ nil,
+ (32...35)
+ ),
+ CallNode(37...49)(
+ nil,
+ nil,
+ (37...38),
+ nil,
+ nil,
+ nil,
+ BlockNode(39...49)(
+ [],
+ BlockParametersNode(41...43)(nil, [], (41...42), (42...43)),
+ StatementsNode(44...47)(
+ [CallNode(44...47)(
+ nil,
+ nil,
+ (44...45),
+ nil,
+ ArgumentsNode(45...47)(
+ [SymbolNode(45...47)((45...46), (46...47), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ (39...40),
+ (48...49)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/arg_scope.txt b/test/yarp/snapshots/whitequark/arg_scope.txt
new file mode 100644
index 0000000000..fd5ae0f61d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/arg_scope.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ nil,
+ nil,
+ (0...6),
+ nil,
+ nil,
+ nil,
+ BlockNode(6...13)(
+ [:a],
+ BlockParametersNode(7...11)(nil, [(9...10)], (7...8), (10...11)),
+ StatementsNode(11...12)([LocalVariableReadNode(11...12)(:a, 0)]),
+ (6...7),
+ (12...13)
+ ),
+ 0,
+ "lambda"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args.txt b/test/yarp/snapshots/whitequark/args.txt
new file mode 100644
index 0000000000..fe899700d2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args.txt
@@ -0,0 +1,776 @@
+ProgramNode(0...690)(
+ [],
+ StatementsNode(0...690)(
+ [DefNode(0...13)(
+ (4...5),
+ nil,
+ ParametersNode(6...8)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(6...8)((7...8), (6...7))
+ ),
+ nil,
+ [:b],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (10...13)
+ ),
+ DefNode(15...33)(
+ (19...20),
+ nil,
+ ParametersNode(22...27)(
+ [RequiredDestructuredParameterNode(22...27)(
+ [RequiredDestructuredParameterNode(23...26)(
+ [RequiredParameterNode(24...25)(:a)],
+ (23...24),
+ (25...26)
+ )],
+ (22...23),
+ (26...27)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (15...18),
+ nil,
+ (21...22),
+ (27...28),
+ nil,
+ (30...33)
+ ),
+ DefNode(35...51)(
+ (39...40),
+ nil,
+ ParametersNode(42...45)(
+ [RequiredDestructuredParameterNode(42...45)(
+ [SplatNode(43...44)((43...44), nil)],
+ (42...43),
+ (44...45)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [],
+ (35...38),
+ nil,
+ (41...42),
+ (45...46),
+ nil,
+ (48...51)
+ ),
+ DefNode(53...72)(
+ (57...58),
+ nil,
+ ParametersNode(60...66)(
+ [RequiredDestructuredParameterNode(60...66)(
+ [SplatNode(61...62)((61...62), nil),
+ RequiredParameterNode(64...65)(:p)],
+ (60...61),
+ (65...66)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:p],
+ (53...56),
+ nil,
+ (59...60),
+ (66...67),
+ nil,
+ (69...72)
+ ),
+ DefNode(74...91)(
+ (78...79),
+ nil,
+ ParametersNode(81...85)(
+ [RequiredDestructuredParameterNode(81...85)(
+ [SplatNode(82...84)(
+ (82...83),
+ RequiredParameterNode(83...84)(:r)
+ )],
+ (81...82),
+ (84...85)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:r],
+ (74...77),
+ nil,
+ (80...81),
+ (85...86),
+ nil,
+ (88...91)
+ ),
+ DefNode(93...113)(
+ (97...98),
+ nil,
+ ParametersNode(100...107)(
+ [RequiredDestructuredParameterNode(100...107)(
+ [SplatNode(101...103)(
+ (101...102),
+ RequiredParameterNode(102...103)(:r)
+ ),
+ RequiredParameterNode(105...106)(:p)],
+ (100...101),
+ (106...107)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:r, :p],
+ (93...96),
+ nil,
+ (99...100),
+ (107...108),
+ nil,
+ (110...113)
+ ),
+ DefNode(115...134)(
+ (119...120),
+ nil,
+ ParametersNode(122...128)(
+ [RequiredDestructuredParameterNode(122...128)(
+ [RequiredParameterNode(123...124)(:a),
+ SplatNode(126...127)((126...127), nil)],
+ (122...123),
+ (127...128)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (115...118),
+ nil,
+ (121...122),
+ (128...129),
+ nil,
+ (131...134)
+ ),
+ DefNode(136...158)(
+ (140...141),
+ nil,
+ ParametersNode(143...152)(
+ [RequiredDestructuredParameterNode(143...152)(
+ [RequiredParameterNode(144...145)(:a),
+ SplatNode(147...148)((147...148), nil),
+ RequiredParameterNode(150...151)(:p)],
+ (143...144),
+ (151...152)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :p],
+ (136...139),
+ nil,
+ (142...143),
+ (152...153),
+ nil,
+ (155...158)
+ ),
+ DefNode(160...180)(
+ (164...165),
+ nil,
+ ParametersNode(167...174)(
+ [RequiredDestructuredParameterNode(167...174)(
+ [RequiredParameterNode(168...169)(:a),
+ SplatNode(171...173)(
+ (171...172),
+ RequiredParameterNode(172...173)(:r)
+ )],
+ (167...168),
+ (173...174)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :r],
+ (160...163),
+ nil,
+ (166...167),
+ (174...175),
+ nil,
+ (177...180)
+ ),
+ DefNode(182...205)(
+ (186...187),
+ nil,
+ ParametersNode(189...199)(
+ [RequiredDestructuredParameterNode(189...199)(
+ [RequiredParameterNode(190...191)(:a),
+ SplatNode(193...195)(
+ (193...194),
+ RequiredParameterNode(194...195)(:r)
+ ),
+ RequiredParameterNode(197...198)(:p)],
+ (189...190),
+ (198...199)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :r, :p],
+ (182...185),
+ nil,
+ (188...189),
+ (199...200),
+ nil,
+ (202...205)
+ ),
+ DefNode(207...227)(
+ (211...212),
+ nil,
+ ParametersNode(214...221)(
+ [RequiredDestructuredParameterNode(214...221)(
+ [RequiredParameterNode(215...216)(:a),
+ RequiredParameterNode(218...220)(:a1)],
+ (214...215),
+ (220...221)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a, :a1],
+ (207...210),
+ nil,
+ (213...214),
+ (221...222),
+ nil,
+ (224...227)
+ ),
+ DefNode(229...252)(
+ (233...234),
+ nil,
+ ParametersNode(236...246)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(236...242)(
+ (236...240),
+ IntegerNode(241...242)()
+ )],
+ nil,
+ BlockParameterNode(244...246)((245...246), (244...245))
+ ),
+ nil,
+ [:foo, :b],
+ (229...232),
+ nil,
+ (235...236),
+ (246...247),
+ nil,
+ (249...252)
+ ),
+ DefNode(254...292)(
+ (258...259),
+ nil,
+ ParametersNode(261...286)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(261...267)(
+ (261...265),
+ IntegerNode(266...267)()
+ ),
+ KeywordParameterNode(269...275)(
+ (269...273),
+ IntegerNode(274...275)()
+ )],
+ KeywordRestParameterNode(277...282)((277...279), (279...282)),
+ BlockParameterNode(284...286)((285...286), (284...285))
+ ),
+ nil,
+ [:foo, :bar, :baz, :b],
+ (254...257),
+ nil,
+ (260...261),
+ (286...287),
+ nil,
+ (289...292)
+ ),
+ DefNode(294...314)(
+ (298...299),
+ nil,
+ ParametersNode(300...309)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(300...305)((300...302), (302...305)),
+ BlockParameterNode(307...309)((308...309), (307...308))
+ ),
+ nil,
+ [:baz, :b],
+ (294...297),
+ nil,
+ nil,
+ nil,
+ nil,
+ (311...314)
+ ),
+ DefNode(316...332)(
+ (320...321),
+ nil,
+ ParametersNode(322...327)(
+ [],
+ [],
+ [],
+ RestParameterNode(322...323)((322...323), nil),
+ [],
+ KeywordRestParameterNode(325...327)((325...327), nil),
+ nil
+ ),
+ nil,
+ [:*, :**],
+ (316...319),
+ nil,
+ nil,
+ nil,
+ nil,
+ (329...332)
+ ),
+ DefNode(334...351)(
+ (338...339),
+ nil,
+ ParametersNode(340...346)(
+ [],
+ [],
+ [],
+ RestParameterNode(340...342)((340...341), (341...342)),
+ [],
+ nil,
+ BlockParameterNode(344...346)((345...346), (344...345))
+ ),
+ nil,
+ [:r, :b],
+ (334...337),
+ nil,
+ nil,
+ nil,
+ nil,
+ (348...351)
+ ),
+ DefNode(353...373)(
+ (357...358),
+ nil,
+ ParametersNode(359...368)(
+ [],
+ [],
+ [RequiredParameterNode(363...364)(:p)],
+ RestParameterNode(359...361)((359...360), (360...361)),
+ [],
+ nil,
+ BlockParameterNode(366...368)((367...368), (366...367))
+ ),
+ nil,
+ [:r, :p, :b],
+ (353...356),
+ nil,
+ nil,
+ nil,
+ nil,
+ (370...373)
+ ),
+ DefNode(375...386)(
+ (379...380),
+ nil,
+ nil,
+ nil,
+ [],
+ (375...378),
+ nil,
+ nil,
+ nil,
+ nil,
+ (383...386)
+ ),
+ DefNode(388...404)(
+ (392...393),
+ nil,
+ ParametersNode(394...399)(
+ [RequiredParameterNode(394...395)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(397...399)((398...399), (397...398))
+ ),
+ nil,
+ [:a, :b],
+ (388...391),
+ nil,
+ nil,
+ nil,
+ nil,
+ (401...404)
+ ),
+ DefNode(406...426)(
+ (410...411),
+ nil,
+ ParametersNode(412...421)(
+ [RequiredParameterNode(412...413)(:a)],
+ [],
+ [],
+ RestParameterNode(415...417)((415...416), (416...417)),
+ [],
+ nil,
+ BlockParameterNode(419...421)((420...421), (419...420))
+ ),
+ nil,
+ [:a, :r, :b],
+ (406...409),
+ nil,
+ nil,
+ nil,
+ nil,
+ (423...426)
+ ),
+ DefNode(428...451)(
+ (432...433),
+ nil,
+ ParametersNode(434...446)(
+ [RequiredParameterNode(434...435)(:a)],
+ [],
+ [RequiredParameterNode(441...442)(:p)],
+ RestParameterNode(437...439)((437...438), (438...439)),
+ [],
+ nil,
+ BlockParameterNode(444...446)((445...446), (444...445))
+ ),
+ nil,
+ [:a, :r, :p, :b],
+ (428...431),
+ nil,
+ nil,
+ nil,
+ nil,
+ (448...451)
+ ),
+ DefNode(453...474)(
+ (457...458),
+ nil,
+ ParametersNode(459...469)(
+ [RequiredParameterNode(459...460)(:a)],
+ [OptionalParameterNode(462...465)(
+ :o,
+ (462...463),
+ (463...464),
+ IntegerNode(464...465)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(467...469)((468...469), (467...468))
+ ),
+ nil,
+ [:a, :o, :b],
+ (453...456),
+ nil,
+ nil,
+ nil,
+ nil,
+ (471...474)
+ ),
+ DefNode(476...501)(
+ (480...481),
+ nil,
+ ParametersNode(482...496)(
+ [RequiredParameterNode(482...483)(:a)],
+ [OptionalParameterNode(485...488)(
+ :o,
+ (485...486),
+ (486...487),
+ IntegerNode(487...488)()
+ )],
+ [],
+ RestParameterNode(490...492)((490...491), (491...492)),
+ [],
+ nil,
+ BlockParameterNode(494...496)((495...496), (494...495))
+ ),
+ nil,
+ [:a, :o, :r, :b],
+ (476...479),
+ nil,
+ nil,
+ nil,
+ nil,
+ (498...501)
+ ),
+ DefNode(503...531)(
+ (507...508),
+ nil,
+ ParametersNode(509...526)(
+ [RequiredParameterNode(509...510)(:a)],
+ [OptionalParameterNode(512...515)(
+ :o,
+ (512...513),
+ (513...514),
+ IntegerNode(514...515)()
+ )],
+ [RequiredParameterNode(521...522)(:p)],
+ RestParameterNode(517...519)((517...518), (518...519)),
+ [],
+ nil,
+ BlockParameterNode(524...526)((525...526), (524...525))
+ ),
+ nil,
+ [:a, :o, :r, :p, :b],
+ (503...506),
+ nil,
+ nil,
+ nil,
+ nil,
+ (528...531)
+ ),
+ DefNode(533...557)(
+ (537...538),
+ nil,
+ ParametersNode(539...552)(
+ [RequiredParameterNode(539...540)(:a)],
+ [OptionalParameterNode(542...545)(
+ :o,
+ (542...543),
+ (543...544),
+ IntegerNode(544...545)()
+ )],
+ [RequiredParameterNode(547...548)(:p)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(550...552)((551...552), (550...551))
+ ),
+ nil,
+ [:a, :o, :p, :b],
+ (533...536),
+ nil,
+ nil,
+ nil,
+ nil,
+ (554...557)
+ ),
+ DefNode(559...575)(
+ (563...564),
+ nil,
+ ParametersNode(565...569)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(565...569)((565...569), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (559...562),
+ nil,
+ nil,
+ nil,
+ nil,
+ (572...575)
+ ),
+ DefNode(577...596)(
+ (581...582),
+ nil,
+ ParametersNode(583...590)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(583...590)(
+ (583...587),
+ CallNode(588...590)(
+ IntegerNode(589...590)(),
+ nil,
+ (588...589),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (577...580),
+ nil,
+ nil,
+ nil,
+ nil,
+ (593...596)
+ ),
+ DefNode(598...616)(
+ (602...603),
+ nil,
+ ParametersNode(604...611)(
+ [],
+ [OptionalParameterNode(604...607)(
+ :o,
+ (604...605),
+ (605...606),
+ IntegerNode(606...607)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(609...611)((610...611), (609...610))
+ ),
+ nil,
+ [:o, :b],
+ (598...601),
+ nil,
+ nil,
+ nil,
+ nil,
+ (613...616)
+ ),
+ DefNode(618...640)(
+ (622...623),
+ nil,
+ ParametersNode(624...635)(
+ [],
+ [OptionalParameterNode(624...627)(
+ :o,
+ (624...625),
+ (625...626),
+ IntegerNode(626...627)()
+ )],
+ [],
+ RestParameterNode(629...631)((629...630), (630...631)),
+ [],
+ nil,
+ BlockParameterNode(633...635)((634...635), (633...634))
+ ),
+ nil,
+ [:o, :r, :b],
+ (618...621),
+ nil,
+ nil,
+ nil,
+ nil,
+ (637...640)
+ ),
+ DefNode(642...667)(
+ (646...647),
+ nil,
+ ParametersNode(648...662)(
+ [],
+ [OptionalParameterNode(648...651)(
+ :o,
+ (648...649),
+ (649...650),
+ IntegerNode(650...651)()
+ )],
+ [RequiredParameterNode(657...658)(:p)],
+ RestParameterNode(653...655)((653...654), (654...655)),
+ [],
+ nil,
+ BlockParameterNode(660...662)((661...662), (660...661))
+ ),
+ nil,
+ [:o, :r, :p, :b],
+ (642...645),
+ nil,
+ nil,
+ nil,
+ nil,
+ (664...667)
+ ),
+ DefNode(669...690)(
+ (673...674),
+ nil,
+ ParametersNode(675...685)(
+ [],
+ [OptionalParameterNode(675...678)(
+ :o,
+ (675...676),
+ (676...677),
+ IntegerNode(677...678)()
+ )],
+ [RequiredParameterNode(680...681)(:p)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(683...685)((684...685), (683...684))
+ ),
+ nil,
+ [:o, :p, :b],
+ (669...672),
+ nil,
+ nil,
+ nil,
+ nil,
+ (687...690)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_args_assocs.txt b/test/yarp/snapshots/whitequark/args_args_assocs.txt
new file mode 100644
index 0000000000..ee787d08a2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_args_assocs.txt
@@ -0,0 +1,59 @@
+ProgramNode(0...46)(
+ [],
+ StatementsNode(0...46)(
+ [CallNode(0...19)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...18)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "foo"),
+ KeywordHashNode(9...18)(
+ [AssocNode(9...18)(
+ SymbolNode(9...13)((9...10), (10...13), nil, "foo"),
+ IntegerNode(17...18)(),
+ (14...16)
+ )]
+ )]
+ ),
+ (18...19),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(21...46)(
+ nil,
+ nil,
+ (21...24),
+ (24...25),
+ ArgumentsNode(25...45)(
+ [CallNode(25...28)(nil, nil, (25...28), nil, nil, nil, nil, 0, "foo"),
+ KeywordHashNode(30...39)(
+ [AssocNode(30...39)(
+ SymbolNode(30...34)((30...31), (31...34), nil, "foo"),
+ IntegerNode(38...39)(),
+ (35...37)
+ )]
+ ),
+ BlockArgumentNode(41...45)(
+ CallNode(42...45)(
+ nil,
+ nil,
+ (42...45),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (41...42)
+ )]
+ ),
+ (45...46),
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_args_assocs_comma.txt b/test/yarp/snapshots/whitequark/args_args_assocs_comma.txt
new file mode 100644
index 0000000000..fead72a533
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_args_assocs_comma.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [CallNode(0...20)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...20),
+ (3...4),
+ ArgumentsNode(4...18)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "bar"),
+ KeywordHashNode(9...18)(
+ [AssocNode(9...18)(
+ SymbolNode(9...13)((9...10), (10...13), nil, "baz"),
+ IntegerNode(17...18)(),
+ (14...16)
+ )]
+ )]
+ ),
+ (19...20),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_args_comma.txt b/test/yarp/snapshots/whitequark/args_args_comma.txt
new file mode 100644
index 0000000000..ff53a58eca
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_args_comma.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...7)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_args_star.txt b/test/yarp/snapshots/whitequark/args_args_star.txt
new file mode 100644
index 0000000000..52b2c41202
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_args_star.txt
@@ -0,0 +1,73 @@
+ProgramNode(0...36)(
+ [],
+ StatementsNode(0...36)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...13)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "foo"),
+ SplatNode(9...13)(
+ (9...10),
+ CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )]
+ ),
+ (13...14),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(16...36)(
+ nil,
+ nil,
+ (16...19),
+ (19...20),
+ ArgumentsNode(20...35)(
+ [CallNode(20...23)(nil, nil, (20...23), nil, nil, nil, nil, 0, "foo"),
+ SplatNode(25...29)(
+ (25...26),
+ CallNode(26...29)(
+ nil,
+ nil,
+ (26...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ ),
+ BlockArgumentNode(31...35)(
+ CallNode(32...35)(
+ nil,
+ nil,
+ (32...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (31...32)
+ )]
+ ),
+ (35...36),
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_assocs.txt b/test/yarp/snapshots/whitequark/args_assocs.txt
new file mode 100644
index 0000000000..8905c41d17
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_assocs.txt
@@ -0,0 +1,125 @@
+ProgramNode(0...114)(
+ [],
+ StatementsNode(0...114)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...13)(
+ [KeywordHashNode(4...13)(
+ [AssocNode(4...13)(
+ SymbolNode(4...8)((4...5), (5...8), nil, "foo"),
+ IntegerNode(12...13)(),
+ (9...11)
+ )]
+ )]
+ ),
+ (13...14),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(16...36)(
+ nil,
+ nil,
+ (16...19),
+ (19...20),
+ ArgumentsNode(20...35)(
+ [KeywordHashNode(20...29)(
+ [AssocNode(20...29)(
+ SymbolNode(20...24)((20...21), (21...24), nil, "foo"),
+ IntegerNode(28...29)(),
+ (25...27)
+ )]
+ ),
+ BlockArgumentNode(31...35)(
+ CallNode(32...35)(
+ nil,
+ nil,
+ (32...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (31...32)
+ )]
+ ),
+ (35...36),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(38...59)(
+ SelfNode(38...42)(),
+ (42...43),
+ (43...46),
+ nil,
+ ArgumentsNode(47...59)(
+ [CallNode(47...50)(nil, nil, (47...50), nil, nil, nil, nil, 0, "foo"),
+ KeywordHashNode(52...59)(
+ [AssocNode(52...59)(
+ SymbolNode(52...54)((52...53), (53...54), nil, "a"),
+ IntegerNode(58...59)(),
+ (55...57)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(61...76)(
+ SelfNode(61...65)(),
+ nil,
+ (65...76),
+ (65...66),
+ ArgumentsNode(66...75)(
+ [KeywordHashNode(66...75)(
+ [AssocNode(66...75)(
+ SymbolNode(66...70)((66...67), (67...70), nil, "bar"),
+ IntegerNode(74...75)(),
+ (71...73)
+ )]
+ )]
+ ),
+ (75...76),
+ nil,
+ 0,
+ "[]"
+ ),
+ SuperNode(78...95)(
+ (78...83),
+ (83...84),
+ ArgumentsNode(84...94)(
+ [KeywordHashNode(84...94)(
+ [AssocNode(84...94)(
+ SymbolNode(84...88)((84...85), (85...88), nil, "foo"),
+ IntegerNode(92...94)(),
+ (89...91)
+ )]
+ )]
+ ),
+ (94...95),
+ nil
+ ),
+ YieldNode(97...114)(
+ (97...102),
+ (102...103),
+ ArgumentsNode(103...113)(
+ [KeywordHashNode(103...113)(
+ [AssocNode(103...113)(
+ SymbolNode(103...107)((103...104), (104...107), nil, "foo"),
+ IntegerNode(111...113)(),
+ (108...110)
+ )]
+ )]
+ ),
+ (113...114)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_assocs_comma.txt b/test/yarp/snapshots/whitequark/args_assocs_comma.txt
new file mode 100644
index 0000000000..0989a82c63
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_assocs_comma.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...15),
+ (3...4),
+ ArgumentsNode(4...13)(
+ [KeywordHashNode(4...13)(
+ [AssocNode(4...13)(
+ SymbolNode(4...8)((4...5), (5...8), nil, "baz"),
+ IntegerNode(12...13)(),
+ (9...11)
+ )]
+ )]
+ ),
+ (14...15),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_assocs_legacy.txt b/test/yarp/snapshots/whitequark/args_assocs_legacy.txt
new file mode 100644
index 0000000000..8905c41d17
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_assocs_legacy.txt
@@ -0,0 +1,125 @@
+ProgramNode(0...114)(
+ [],
+ StatementsNode(0...114)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...13)(
+ [KeywordHashNode(4...13)(
+ [AssocNode(4...13)(
+ SymbolNode(4...8)((4...5), (5...8), nil, "foo"),
+ IntegerNode(12...13)(),
+ (9...11)
+ )]
+ )]
+ ),
+ (13...14),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(16...36)(
+ nil,
+ nil,
+ (16...19),
+ (19...20),
+ ArgumentsNode(20...35)(
+ [KeywordHashNode(20...29)(
+ [AssocNode(20...29)(
+ SymbolNode(20...24)((20...21), (21...24), nil, "foo"),
+ IntegerNode(28...29)(),
+ (25...27)
+ )]
+ ),
+ BlockArgumentNode(31...35)(
+ CallNode(32...35)(
+ nil,
+ nil,
+ (32...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (31...32)
+ )]
+ ),
+ (35...36),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(38...59)(
+ SelfNode(38...42)(),
+ (42...43),
+ (43...46),
+ nil,
+ ArgumentsNode(47...59)(
+ [CallNode(47...50)(nil, nil, (47...50), nil, nil, nil, nil, 0, "foo"),
+ KeywordHashNode(52...59)(
+ [AssocNode(52...59)(
+ SymbolNode(52...54)((52...53), (53...54), nil, "a"),
+ IntegerNode(58...59)(),
+ (55...57)
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "[]="
+ ),
+ CallNode(61...76)(
+ SelfNode(61...65)(),
+ nil,
+ (65...76),
+ (65...66),
+ ArgumentsNode(66...75)(
+ [KeywordHashNode(66...75)(
+ [AssocNode(66...75)(
+ SymbolNode(66...70)((66...67), (67...70), nil, "bar"),
+ IntegerNode(74...75)(),
+ (71...73)
+ )]
+ )]
+ ),
+ (75...76),
+ nil,
+ 0,
+ "[]"
+ ),
+ SuperNode(78...95)(
+ (78...83),
+ (83...84),
+ ArgumentsNode(84...94)(
+ [KeywordHashNode(84...94)(
+ [AssocNode(84...94)(
+ SymbolNode(84...88)((84...85), (85...88), nil, "foo"),
+ IntegerNode(92...94)(),
+ (89...91)
+ )]
+ )]
+ ),
+ (94...95),
+ nil
+ ),
+ YieldNode(97...114)(
+ (97...102),
+ (102...103),
+ ArgumentsNode(103...113)(
+ [KeywordHashNode(103...113)(
+ [AssocNode(103...113)(
+ SymbolNode(103...107)((103...104), (104...107), nil, "foo"),
+ IntegerNode(111...113)(),
+ (108...110)
+ )]
+ )]
+ ),
+ (113...114)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_block_pass.txt b/test/yarp/snapshots/whitequark/args_block_pass.txt
new file mode 100644
index 0000000000..548019ab2f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_block_pass.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...8)(
+ [BlockArgumentNode(4...8)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "bar"),
+ (4...5)
+ )]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_cmd.txt b/test/yarp/snapshots/whitequark/args_cmd.txt
new file mode 100644
index 0000000000..cbb8ec0769
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_cmd.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...10)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...9)(
+ [CallNode(4...9)(
+ nil,
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...9)(
+ [CallNode(6...9)(
+ nil,
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ ),
+ (9...10),
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/args_star.txt b/test/yarp/snapshots/whitequark/args_star.txt
new file mode 100644
index 0000000000..160865108b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/args_star.txt
@@ -0,0 +1,61 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...8)(
+ [SplatNode(4...8)(
+ (4...5),
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "bar")
+ )]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(11...26)(
+ nil,
+ nil,
+ (11...14),
+ (14...15),
+ ArgumentsNode(15...25)(
+ [SplatNode(15...19)(
+ (15...16),
+ CallNode(16...19)(
+ nil,
+ nil,
+ (16...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ ),
+ BlockArgumentNode(21...25)(
+ CallNode(22...25)(
+ nil,
+ nil,
+ (22...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ ),
+ (21...22)
+ )]
+ ),
+ (25...26),
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_assocs.txt b/test/yarp/snapshots/whitequark/array_assocs.txt
new file mode 100644
index 0000000000..6dc20662ca
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_assocs.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [ArrayNode(0...10)(
+ [KeywordHashNode(2...8)(
+ [AssocNode(2...8)(
+ IntegerNode(2...3)(),
+ IntegerNode(7...8)(),
+ (4...6)
+ )]
+ )],
+ (0...1),
+ (9...10)
+ ),
+ ArrayNode(12...25)(
+ [IntegerNode(14...15)(),
+ KeywordHashNode(17...23)(
+ [AssocNode(17...23)(
+ IntegerNode(17...18)(),
+ IntegerNode(22...23)(),
+ (19...21)
+ )]
+ )],
+ (12...13),
+ (24...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_plain.txt b/test/yarp/snapshots/whitequark/array_plain.txt
new file mode 100644
index 0000000000..d8c89ba8b9
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_plain.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [ArrayNode(0...6)(
+ [IntegerNode(1...2)(), IntegerNode(4...5)()],
+ (0...1),
+ (5...6)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_splat.txt b/test/yarp/snapshots/whitequark/array_splat.txt
new file mode 100644
index 0000000000..a691e67405
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_splat.txt
@@ -0,0 +1,32 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [ArrayNode(0...6)(
+ [SplatNode(1...5)(
+ (1...2),
+ CallNode(2...5)(nil, nil, (2...5), nil, nil, nil, nil, 0, "foo")
+ )],
+ (0...1),
+ (5...6)
+ ),
+ ArrayNode(8...20)(
+ [IntegerNode(9...10)(),
+ SplatNode(12...16)(
+ (12...13),
+ CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo")
+ ),
+ IntegerNode(18...19)()],
+ (8...9),
+ (19...20)
+ ),
+ ArrayNode(22...31)(
+ [IntegerNode(23...24)(),
+ SplatNode(26...30)(
+ (26...27),
+ CallNode(27...30)(nil, nil, (27...30), nil, nil, nil, nil, 0, "foo")
+ )],
+ (22...23),
+ (30...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_symbols.txt b/test/yarp/snapshots/whitequark/array_symbols.txt
new file mode 100644
index 0000000000..9d036af7cf
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_symbols.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...11)(
+ [SymbolNode(3...6)(nil, (3...6), nil, "foo"),
+ SymbolNode(7...10)(nil, (7...10), nil, "bar")],
+ (0...3),
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_symbols_empty.txt b/test/yarp/snapshots/whitequark/array_symbols_empty.txt
new file mode 100644
index 0000000000..ce2b82c914
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_symbols_empty.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [ArrayNode(0...4)([], (0...3), (3...4)),
+ ArrayNode(6...10)([], (6...9), (9...10))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_symbols_interp.txt b/test/yarp/snapshots/whitequark/array_symbols_interp.txt
new file mode 100644
index 0000000000..204ee1372d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_symbols_interp.txt
@@ -0,0 +1,57 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [ArrayNode(0...14)(
+ [SymbolNode(3...6)(nil, (3...6), nil, "foo"),
+ InterpolatedSymbolNode(7...13)(
+ nil,
+ [EmbeddedStatementsNode(7...13)(
+ (7...9),
+ StatementsNode(9...12)(
+ [CallNode(9...12)(
+ nil,
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (12...13)
+ )],
+ nil
+ )],
+ (0...3),
+ (13...14)
+ ),
+ ArrayNode(16...29)(
+ [InterpolatedSymbolNode(19...28)(
+ nil,
+ [StringNode(19...22)(nil, (19...22), nil, "foo"),
+ EmbeddedStatementsNode(22...28)(
+ (22...24),
+ StatementsNode(24...27)(
+ [CallNode(24...27)(
+ nil,
+ nil,
+ (24...27),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (27...28)
+ )],
+ nil
+ )],
+ (16...19),
+ (28...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_words.txt b/test/yarp/snapshots/whitequark/array_words.txt
new file mode 100644
index 0000000000..3308b6b7f2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_words.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [ArrayNode(0...11)(
+ [StringNode(3...6)(nil, (3...6), nil, "foo"),
+ StringNode(7...10)(nil, (7...10), nil, "bar")],
+ (0...3),
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_words_empty.txt b/test/yarp/snapshots/whitequark/array_words_empty.txt
new file mode 100644
index 0000000000..ce2b82c914
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_words_empty.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [ArrayNode(0...4)([], (0...3), (3...4)),
+ ArrayNode(6...10)([], (6...9), (9...10))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/array_words_interp.txt b/test/yarp/snapshots/whitequark/array_words_interp.txt
new file mode 100644
index 0000000000..e90e20d5e2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/array_words_interp.txt
@@ -0,0 +1,62 @@
+ProgramNode(0...38)(
+ [],
+ StatementsNode(0...38)(
+ [ArrayNode(0...14)(
+ [StringNode(3...6)(nil, (3...6), nil, "foo"),
+ InterpolatedStringNode(0...13)(
+ nil,
+ [EmbeddedStatementsNode(7...13)(
+ (7...9),
+ StatementsNode(9...12)(
+ [CallNode(9...12)(
+ nil,
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (12...13)
+ )],
+ nil
+ )],
+ (0...3),
+ (13...14)
+ ),
+ ArrayNode(16...38)(
+ [StringNode(19...22)(nil, (19...22), nil, "foo"),
+ InterpolatedStringNode(0...37)(
+ nil,
+ [EmbeddedStatementsNode(23...29)(
+ (23...25),
+ StatementsNode(25...28)(
+ [CallNode(25...28)(
+ nil,
+ nil,
+ (25...28),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (28...29)
+ ),
+ StringNode(29...32)(nil, (29...32), nil, "foo"),
+ EmbeddedVariableNode(32...37)(
+ (32...33),
+ InstanceVariableReadNode(33...37)()
+ )],
+ nil
+ )],
+ (16...19),
+ (37...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/asgn_cmd.txt b/test/yarp/snapshots/whitequark/asgn_cmd.txt
new file mode 100644
index 0000000000..218c28dc0f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/asgn_cmd.txt
@@ -0,0 +1,45 @@
+ProgramNode(0...30)(
+ [:foo, :bar],
+ StatementsNode(0...30)(
+ [LocalVariableWriteNode(0...17)(
+ :foo,
+ 0,
+ LocalVariableWriteNode(6...17)(
+ :bar,
+ 0,
+ CallNode(12...17)(
+ nil,
+ nil,
+ (12...13),
+ nil,
+ ArgumentsNode(14...17)([LocalVariableReadNode(14...17)(:foo, 0)]),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ (6...9),
+ (10...11)
+ ),
+ (0...3),
+ (4...5)
+ ),
+ LocalVariableWriteNode(19...30)(
+ :foo,
+ 0,
+ CallNode(25...30)(
+ nil,
+ nil,
+ (25...26),
+ nil,
+ ArgumentsNode(27...30)([LocalVariableReadNode(27...30)(:foo, 0)]),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ (19...22),
+ (23...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/asgn_mrhs.txt b/test/yarp/snapshots/whitequark/asgn_mrhs.txt
new file mode 100644
index 0000000000..947c8e4450
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/asgn_mrhs.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...41)(
+ [:foo],
+ StatementsNode(0...41)(
+ [LocalVariableWriteNode(0...10)(
+ :foo,
+ 0,
+ SplatNode(6...10)(
+ (6...7),
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "bar")
+ ),
+ (0...3),
+ (4...5)
+ ),
+ LocalVariableWriteNode(12...24)(
+ :foo,
+ 0,
+ ArrayNode(18...24)(
+ [CallNode(18...21)(nil, nil, (18...21), nil, nil, nil, nil, 0, "bar"),
+ IntegerNode(23...24)()],
+ nil,
+ nil
+ ),
+ (12...15),
+ (16...17)
+ ),
+ LocalVariableWriteNode(26...41)(
+ :foo,
+ 0,
+ ArrayNode(32...41)(
+ [CallNode(32...35)(nil, nil, (32...35), nil, nil, nil, nil, 0, "baz"),
+ SplatNode(37...41)(
+ (37...38),
+ CallNode(38...41)(
+ nil,
+ nil,
+ (38...41),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )
+ )],
+ nil,
+ nil
+ ),
+ (26...29),
+ (30...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/back_ref.txt b/test/yarp/snapshots/whitequark/back_ref.txt
new file mode 100644
index 0000000000..d072409376
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/back_ref.txt
@@ -0,0 +1 @@
+ProgramNode(0...2)([], StatementsNode(0...2)([BackReferenceReadNode(0...2)()]))
diff --git a/test/yarp/snapshots/whitequark/bang.txt b/test/yarp/snapshots/whitequark/bang.txt
new file mode 100644
index 0000000000..25f3da6f04
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bang.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ CallNode(1...4)(nil, nil, (1...4), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bang_cmd.txt b/test/yarp/snapshots/whitequark/bang_cmd.txt
new file mode 100644
index 0000000000..3e5080cebd
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bang_cmd.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...6)(
+ [],
+ StatementsNode(0...6)(
+ [CallNode(0...6)(
+ CallNode(1...6)(
+ nil,
+ nil,
+ (1...2),
+ nil,
+ ArgumentsNode(3...6)(
+ [CallNode(3...6)(nil, nil, (3...6), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/begin_cmdarg.txt b/test/yarp/snapshots/whitequark/begin_cmdarg.txt
new file mode 100644
index 0000000000..2d1d4e53e5
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/begin_cmdarg.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallNode(0...28)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...28)(
+ [BeginNode(2...28)(
+ (2...7),
+ StatementsNode(8...24)(
+ [CallNode(8...24)(
+ IntegerNode(8...9)(),
+ (9...10),
+ (10...15),
+ nil,
+ nil,
+ nil,
+ BlockNode(16...24)(
+ [],
+ nil,
+ StatementsNode(19...20)([IntegerNode(19...20)()]),
+ (16...18),
+ (21...24)
+ ),
+ 0,
+ "times"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (25...28)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/beginless_erange_after_newline.txt b/test/yarp/snapshots/whitequark/beginless_erange_after_newline.txt
new file mode 100644
index 0000000000..50383976f2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/beginless_erange_after_newline.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ RangeNode(4...10)(nil, IntegerNode(7...10)(), (4...7), 1)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/beginless_irange_after_newline.txt b/test/yarp/snapshots/whitequark/beginless_irange_after_newline.txt
new file mode 100644
index 0000000000..a49985c762
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/beginless_irange_after_newline.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ RangeNode(4...9)(nil, IntegerNode(6...9)(), (4...6), 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/beginless_range.txt b/test/yarp/snapshots/whitequark/beginless_range.txt
new file mode 100644
index 0000000000..3750508629
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/beginless_range.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [RangeNode(0...6)(nil, IntegerNode(3...6)(), (0...3), 1),
+ RangeNode(8...13)(nil, IntegerNode(10...13)(), (8...10), 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/blockarg.txt b/test/yarp/snapshots/whitequark/blockarg.txt
new file mode 100644
index 0000000000..544b14f8bb
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/blockarg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [DefNode(0...18)(
+ (4...5),
+ nil,
+ ParametersNode(6...12)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(6...12)((7...12), (6...7))
+ ),
+ nil,
+ [:block],
+ (0...3),
+ nil,
+ (5...6),
+ (12...13),
+ nil,
+ (15...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/blockargs.txt b/test/yarp/snapshots/whitequark/blockargs.txt
new file mode 100644
index 0000000000..3115c58df1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/blockargs.txt
@@ -0,0 +1,1052 @@
+ProgramNode(0...550)(
+ [],
+ StatementsNode(0...550)(
+ [CallNode(0...5)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(1...5)([], nil, nil, (1...2), (4...5)),
+ 0,
+ "f"
+ ),
+ CallNode(7...15)(
+ nil,
+ nil,
+ (7...8),
+ nil,
+ nil,
+ nil,
+ BlockNode(8...15)(
+ [],
+ BlockParametersNode(10...13)(nil, [], (10...11), (12...13)),
+ nil,
+ (8...9),
+ (14...15)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(17...26)(
+ nil,
+ nil,
+ (17...18),
+ nil,
+ nil,
+ nil,
+ BlockNode(18...26)(
+ [:b],
+ BlockParametersNode(20...24)(
+ ParametersNode(21...23)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(21...23)((22...23), (21...22))
+ ),
+ [],
+ (20...21),
+ (23...24)
+ ),
+ nil,
+ (18...19),
+ (25...26)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(28...44)(
+ nil,
+ nil,
+ (28...29),
+ nil,
+ nil,
+ nil,
+ BlockNode(29...44)(
+ [:baz, :b],
+ BlockParametersNode(31...42)(
+ ParametersNode(32...41)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(32...37)((32...34), (34...37)),
+ BlockParameterNode(39...41)((40...41), (39...40))
+ ),
+ [],
+ (31...32),
+ (41...42)
+ ),
+ nil,
+ (29...30),
+ (43...44)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(46...58)(
+ nil,
+ nil,
+ (46...47),
+ nil,
+ nil,
+ nil,
+ BlockNode(47...58)(
+ [:*, :b],
+ BlockParametersNode(49...56)(
+ ParametersNode(50...55)(
+ [],
+ [],
+ [],
+ RestParameterNode(50...51)((50...51), nil),
+ [],
+ nil,
+ BlockParameterNode(53...55)((54...55), (53...54))
+ ),
+ [],
+ (49...50),
+ (55...56)
+ ),
+ nil,
+ (47...48),
+ (57...58)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(60...76)(
+ nil,
+ nil,
+ (60...61),
+ nil,
+ nil,
+ nil,
+ BlockNode(61...76)(
+ [:r, :p, :b],
+ BlockParametersNode(63...74)(
+ ParametersNode(64...73)(
+ [],
+ [],
+ [RequiredParameterNode(68...69)(:p)],
+ RestParameterNode(64...66)((64...65), (65...66)),
+ [],
+ nil,
+ BlockParameterNode(71...73)((72...73), (71...72))
+ ),
+ [],
+ (63...64),
+ (73...74)
+ ),
+ nil,
+ (61...62),
+ (75...76)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(78...91)(
+ nil,
+ nil,
+ (78...79),
+ nil,
+ nil,
+ nil,
+ BlockNode(79...91)(
+ [:s, :b],
+ BlockParametersNode(81...89)(
+ ParametersNode(82...88)(
+ [],
+ [],
+ [],
+ RestParameterNode(82...84)((82...83), (83...84)),
+ [],
+ nil,
+ BlockParameterNode(86...88)((87...88), (86...87))
+ ),
+ [],
+ (81...82),
+ (88...89)
+ ),
+ nil,
+ (79...80),
+ (90...91)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(93...102)(
+ nil,
+ nil,
+ (93...94),
+ nil,
+ nil,
+ nil,
+ BlockNode(94...102)(
+ [:s],
+ BlockParametersNode(96...100)(
+ ParametersNode(97...99)(
+ [],
+ [],
+ [],
+ RestParameterNode(97...99)((97...98), (98...99)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (96...97),
+ (99...100)
+ ),
+ nil,
+ (94...95),
+ (101...102)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(104...112)(
+ nil,
+ nil,
+ (104...105),
+ nil,
+ nil,
+ nil,
+ BlockNode(105...112)(
+ [:*],
+ BlockParametersNode(107...110)(
+ ParametersNode(108...109)(
+ [],
+ [],
+ [],
+ RestParameterNode(108...109)((108...109), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (107...108),
+ (109...110)
+ ),
+ nil,
+ (105...106),
+ (111...112)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(114...125)(
+ nil,
+ nil,
+ (114...115),
+ nil,
+ nil,
+ nil,
+ BlockNode(115...125)(
+ [:a],
+ BlockParametersNode(117...123)(
+ nil,
+ [(120...121)],
+ (117...118),
+ (122...123)
+ ),
+ nil,
+ (115...116),
+ (124...125)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(127...136)(
+ nil,
+ nil,
+ (127...128),
+ nil,
+ nil,
+ nil,
+ BlockNode(128...136)(
+ [:a],
+ BlockParametersNode(130...134)(
+ nil,
+ [(132...133)],
+ (130...131),
+ (133...134)
+ ),
+ nil,
+ (128...129),
+ (135...136)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(138...150)(
+ nil,
+ nil,
+ (138...139),
+ nil,
+ nil,
+ nil,
+ BlockNode(139...150)(
+ [:a, :b],
+ BlockParametersNode(141...148)(
+ ParametersNode(142...147)(
+ [RequiredParameterNode(142...143)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(145...147)((146...147), (145...146))
+ ),
+ [],
+ (141...142),
+ (147...148)
+ ),
+ nil,
+ (139...140),
+ (149...150)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(152...167)(
+ nil,
+ nil,
+ (152...153),
+ nil,
+ nil,
+ nil,
+ BlockNode(153...167)(
+ [:a, :*, :b],
+ BlockParametersNode(155...165)(
+ ParametersNode(156...164)(
+ [RequiredParameterNode(156...157)(:a)],
+ [],
+ [],
+ RestParameterNode(159...160)((159...160), nil),
+ [],
+ nil,
+ BlockParameterNode(162...164)((163...164), (162...163))
+ ),
+ [],
+ (155...156),
+ (164...165)
+ ),
+ nil,
+ (153...154),
+ (166...167)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(169...188)(
+ nil,
+ nil,
+ (169...170),
+ nil,
+ nil,
+ nil,
+ BlockNode(170...188)(
+ [:a, :r, :p, :b],
+ BlockParametersNode(172...186)(
+ ParametersNode(173...185)(
+ [RequiredParameterNode(173...174)(:a)],
+ [],
+ [RequiredParameterNode(180...181)(:p)],
+ RestParameterNode(176...178)((176...177), (177...178)),
+ [],
+ nil,
+ BlockParameterNode(183...185)((184...185), (183...184))
+ ),
+ [],
+ (172...173),
+ (185...186)
+ ),
+ nil,
+ (170...171),
+ (187...188)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(190...206)(
+ nil,
+ nil,
+ (190...191),
+ nil,
+ nil,
+ nil,
+ BlockNode(191...206)(
+ [:a, :s, :b],
+ BlockParametersNode(193...204)(
+ ParametersNode(194...203)(
+ [RequiredParameterNode(194...195)(:a)],
+ [],
+ [],
+ RestParameterNode(197...199)((197...198), (198...199)),
+ [],
+ nil,
+ BlockParameterNode(201...203)((202...203), (201...202))
+ ),
+ [],
+ (193...194),
+ (203...204)
+ ),
+ nil,
+ (191...192),
+ (205...206)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(208...220)(
+ nil,
+ nil,
+ (208...209),
+ nil,
+ nil,
+ nil,
+ BlockNode(209...220)(
+ [:a, :s],
+ BlockParametersNode(211...218)(
+ ParametersNode(212...217)(
+ [RequiredParameterNode(212...213)(:a)],
+ [],
+ [],
+ RestParameterNode(215...217)((215...216), (216...217)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (211...212),
+ (217...218)
+ ),
+ nil,
+ (209...210),
+ (219...220)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(222...233)(
+ nil,
+ nil,
+ (222...223),
+ nil,
+ nil,
+ nil,
+ BlockNode(223...233)(
+ [:a, :*],
+ BlockParametersNode(225...231)(
+ ParametersNode(226...230)(
+ [RequiredParameterNode(226...227)(:a)],
+ [],
+ [],
+ RestParameterNode(229...230)((229...230), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (225...226),
+ (230...231)
+ ),
+ nil,
+ (223...224),
+ (232...233)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(235...247)(
+ nil,
+ nil,
+ (235...236),
+ nil,
+ nil,
+ nil,
+ BlockNode(236...247)(
+ [:a, :b],
+ BlockParametersNode(238...245)(
+ ParametersNode(239...244)(
+ [RequiredParameterNode(239...240)(:a),
+ RequiredParameterNode(242...243)(:b)],
+ [],
+ [],
+ RestParameterNode(243...244)((243...244), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (238...239),
+ (244...245)
+ ),
+ nil,
+ (236...237),
+ (246...247)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(249...260)(
+ nil,
+ nil,
+ (249...250),
+ nil,
+ nil,
+ nil,
+ BlockNode(250...260)(
+ [:a, :c],
+ BlockParametersNode(252...258)(
+ ParametersNode(253...257)(
+ [RequiredParameterNode(253...254)(:a),
+ RequiredParameterNode(256...257)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (252...253),
+ (257...258)
+ ),
+ nil,
+ (250...251),
+ (259...260)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(262...279)(
+ nil,
+ nil,
+ (262...263),
+ nil,
+ nil,
+ nil,
+ BlockNode(263...279)(
+ [:a, :o, :b],
+ BlockParametersNode(265...277)(
+ ParametersNode(266...276)(
+ [RequiredParameterNode(266...267)(:a)],
+ [OptionalParameterNode(269...272)(
+ :o,
+ (269...270),
+ (270...271),
+ IntegerNode(271...272)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(274...276)((275...276), (274...275))
+ ),
+ [],
+ (265...266),
+ (276...277)
+ ),
+ nil,
+ (263...264),
+ (278...279)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(281...305)(
+ nil,
+ nil,
+ (281...282),
+ nil,
+ nil,
+ nil,
+ BlockNode(282...305)(
+ [:a, :o, :r, :p, :b],
+ BlockParametersNode(284...303)(
+ ParametersNode(285...302)(
+ [RequiredParameterNode(285...286)(:a)],
+ [OptionalParameterNode(288...291)(
+ :o,
+ (288...289),
+ (289...290),
+ IntegerNode(290...291)()
+ )],
+ [RequiredParameterNode(297...298)(:p)],
+ RestParameterNode(293...295)((293...294), (294...295)),
+ [],
+ nil,
+ BlockParameterNode(300...302)((301...302), (300...301))
+ ),
+ [],
+ (284...285),
+ (302...303)
+ ),
+ nil,
+ (282...283),
+ (304...305)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(307...334)(
+ nil,
+ nil,
+ (307...308),
+ nil,
+ nil,
+ nil,
+ BlockNode(308...334)(
+ [:a, :o, :o1, :r, :b],
+ BlockParametersNode(310...332)(
+ ParametersNode(311...331)(
+ [RequiredParameterNode(311...312)(:a)],
+ [OptionalParameterNode(314...317)(
+ :o,
+ (314...315),
+ (315...316),
+ IntegerNode(316...317)()
+ ),
+ OptionalParameterNode(319...323)(
+ :o1,
+ (319...321),
+ (321...322),
+ IntegerNode(322...323)()
+ )],
+ [],
+ RestParameterNode(325...327)((325...326), (326...327)),
+ [],
+ nil,
+ BlockParameterNode(329...331)((330...331), (329...330))
+ ),
+ [],
+ (310...311),
+ (331...332)
+ ),
+ nil,
+ (308...309),
+ (333...334)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(336...356)(
+ nil,
+ nil,
+ (336...337),
+ nil,
+ nil,
+ nil,
+ BlockNode(337...356)(
+ [:a, :o, :p, :b],
+ BlockParametersNode(339...354)(
+ ParametersNode(340...353)(
+ [RequiredParameterNode(340...341)(:a)],
+ [OptionalParameterNode(343...346)(
+ :o,
+ (343...344),
+ (344...345),
+ IntegerNode(345...346)()
+ )],
+ [RequiredParameterNode(348...349)(:p)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(351...353)((352...353), (351...352))
+ ),
+ [],
+ (339...340),
+ (353...354)
+ ),
+ nil,
+ (337...338),
+ (355...356)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(358...367)(
+ nil,
+ nil,
+ (358...359),
+ nil,
+ nil,
+ nil,
+ BlockNode(359...367)(
+ [:a],
+ BlockParametersNode(361...365)(
+ ParametersNode(362...364)(
+ [RequiredParameterNode(362...363)(:a)],
+ [],
+ [],
+ RestParameterNode(363...364)((363...364), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (361...362),
+ (364...365)
+ ),
+ nil,
+ (359...360),
+ (366...367)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(369...377)(
+ nil,
+ nil,
+ (369...370),
+ nil,
+ nil,
+ nil,
+ BlockNode(370...377)(
+ [:a],
+ BlockParametersNode(372...375)(
+ ParametersNode(373...374)(
+ [RequiredParameterNode(373...374)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (372...373),
+ (374...375)
+ ),
+ nil,
+ (370...371),
+ (376...377)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(379...387)(
+ nil,
+ nil,
+ (379...380),
+ nil,
+ nil,
+ nil,
+ BlockNode(380...387)(
+ [:a],
+ BlockParametersNode(382...385)(
+ ParametersNode(383...384)(
+ [RequiredParameterNode(383...384)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (382...383),
+ (384...385)
+ ),
+ nil,
+ (380...381),
+ (386...387)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(389...397)(
+ nil,
+ nil,
+ (389...390),
+ nil,
+ nil,
+ nil,
+ BlockNode(390...397)(
+ [:a],
+ BlockParametersNode(392...395)(
+ ParametersNode(393...394)(
+ [RequiredParameterNode(393...394)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (392...393),
+ (394...395)
+ ),
+ nil,
+ (390...391),
+ (396...397)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(399...416)(
+ nil,
+ nil,
+ (399...400),
+ nil,
+ nil,
+ nil,
+ BlockNode(400...416)(
+ [:foo, :b],
+ BlockParametersNode(402...414)(
+ ParametersNode(403...413)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(403...409)(
+ (403...407),
+ IntegerNode(408...409)()
+ )],
+ nil,
+ BlockParameterNode(411...413)((412...413), (411...412))
+ ),
+ [],
+ (402...403),
+ (413...414)
+ ),
+ nil,
+ (400...401),
+ (415...416)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(418...450)(
+ nil,
+ nil,
+ (418...419),
+ nil,
+ nil,
+ nil,
+ BlockNode(419...450)(
+ [:foo, :bar, :baz, :b],
+ BlockParametersNode(421...448)(
+ ParametersNode(422...447)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(422...428)(
+ (422...426),
+ IntegerNode(427...428)()
+ ),
+ KeywordParameterNode(430...436)(
+ (430...434),
+ IntegerNode(435...436)()
+ )],
+ KeywordRestParameterNode(438...443)((438...440), (440...443)),
+ BlockParameterNode(445...447)((446...447), (445...446))
+ ),
+ [],
+ (421...422),
+ (447...448)
+ ),
+ nil,
+ (419...420),
+ (449...450)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(452...463)(
+ nil,
+ nil,
+ (452...453),
+ nil,
+ nil,
+ nil,
+ BlockNode(453...463)(
+ [:foo],
+ BlockParametersNode(455...461)(
+ ParametersNode(456...460)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(456...460)((456...460), nil)],
+ nil,
+ nil
+ ),
+ [],
+ (455...456),
+ (460...461)
+ ),
+ nil,
+ (453...454),
+ (462...463)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(465...479)(
+ nil,
+ nil,
+ (465...466),
+ nil,
+ nil,
+ nil,
+ BlockNode(466...479)(
+ [:o, :b],
+ BlockParametersNode(468...477)(
+ ParametersNode(469...476)(
+ [],
+ [OptionalParameterNode(469...472)(
+ :o,
+ (469...470),
+ (470...471),
+ IntegerNode(471...472)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(474...476)((475...476), (474...475))
+ ),
+ [],
+ (468...469),
+ (476...477)
+ ),
+ nil,
+ (466...467),
+ (478...479)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(481...499)(
+ nil,
+ nil,
+ (481...482),
+ nil,
+ nil,
+ nil,
+ BlockNode(482...499)(
+ [:o, :r, :b],
+ BlockParametersNode(484...497)(
+ ParametersNode(485...496)(
+ [],
+ [OptionalParameterNode(485...488)(
+ :o,
+ (485...486),
+ (486...487),
+ IntegerNode(487...488)()
+ )],
+ [],
+ RestParameterNode(490...492)((490...491), (491...492)),
+ [],
+ nil,
+ BlockParameterNode(494...496)((495...496), (494...495))
+ ),
+ [],
+ (484...485),
+ (496...497)
+ ),
+ nil,
+ (482...483),
+ (498...499)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(501...522)(
+ nil,
+ nil,
+ (501...502),
+ nil,
+ nil,
+ nil,
+ BlockNode(502...522)(
+ [:o, :r, :p, :b],
+ BlockParametersNode(504...520)(
+ ParametersNode(505...519)(
+ [],
+ [OptionalParameterNode(505...508)(
+ :o,
+ (505...506),
+ (506...507),
+ IntegerNode(507...508)()
+ )],
+ [RequiredParameterNode(514...515)(:p)],
+ RestParameterNode(510...512)((510...511), (511...512)),
+ [],
+ nil,
+ BlockParameterNode(517...519)((518...519), (517...518))
+ ),
+ [],
+ (504...505),
+ (519...520)
+ ),
+ nil,
+ (502...503),
+ (521...522)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(524...541)(
+ nil,
+ nil,
+ (524...525),
+ nil,
+ nil,
+ nil,
+ BlockNode(525...541)(
+ [:o, :p, :b],
+ BlockParametersNode(527...539)(
+ ParametersNode(528...538)(
+ [],
+ [OptionalParameterNode(528...531)(
+ :o,
+ (528...529),
+ (529...530),
+ IntegerNode(530...531)()
+ )],
+ [RequiredParameterNode(533...534)(:p)],
+ nil,
+ [],
+ nil,
+ BlockParameterNode(536...538)((537...538), (536...537))
+ ),
+ [],
+ (527...528),
+ (538...539)
+ ),
+ nil,
+ (525...526),
+ (540...541)
+ ),
+ 0,
+ "f"
+ ),
+ CallNode(543...550)(
+ nil,
+ nil,
+ (543...544),
+ nil,
+ nil,
+ nil,
+ BlockNode(544...550)(
+ [],
+ BlockParametersNode(546...548)(nil, [], (546...547), (547...548)),
+ nil,
+ (544...545),
+ (549...550)
+ ),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/break.txt b/test/yarp/snapshots/whitequark/break.txt
new file mode 100644
index 0000000000..df24567c4d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/break.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [BreakNode(0...5)(nil, (0...5)),
+ BreakNode(7...16)(
+ ArgumentsNode(13...16)(
+ [CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (7...12)
+ ),
+ BreakNode(18...25)(
+ ArgumentsNode(23...25)(
+ [ParenthesesNode(23...25)(nil, (23...24), (24...25))]
+ ),
+ (18...23)
+ ),
+ BreakNode(27...37)(
+ ArgumentsNode(32...37)(
+ [ParenthesesNode(32...37)(
+ StatementsNode(33...36)(
+ [CallNode(33...36)(
+ nil,
+ nil,
+ (33...36),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (32...33),
+ (36...37)
+ )]
+ ),
+ (27...32)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/break_block.txt b/test/yarp/snapshots/whitequark/break_block.txt
new file mode 100644
index 0000000000..41e083f25f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/break_block.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [BreakNode(0...20)(
+ ArgumentsNode(6...20)(
+ [CallNode(6...20)(
+ nil,
+ nil,
+ (6...9),
+ nil,
+ ArgumentsNode(10...13)(
+ [CallNode(10...13)(
+ nil,
+ nil,
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ BlockNode(14...20)([], nil, nil, (14...16), (17...20)),
+ 0,
+ "fun"
+ )]
+ ),
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_435.txt b/test/yarp/snapshots/whitequark/bug_435.txt
new file mode 100644
index 0000000000..ed5a985e3a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_435.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedStringNode(0...14)(
+ (0...1),
+ [EmbeddedStatementsNode(1...13)(
+ (1...3),
+ StatementsNode(3...12)(
+ [LambdaNode(3...12)(
+ [:foo],
+ (3...5),
+ BlockParametersNode(6...9)(
+ ParametersNode(6...9)(
+ [RequiredParameterNode(6...9)(:foo)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ nil
+ )]
+ ),
+ (12...13)
+ )],
+ (13...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_447.txt b/test/yarp/snapshots/whitequark/bug_447.txt
new file mode 100644
index 0000000000..3903748cec
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_447.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...4)([ArrayNode(2...4)([], (2...3), (3...4))]),
+ nil,
+ BlockNode(5...11)([], nil, nil, (5...7), (8...11)),
+ 0,
+ "m"
+ ),
+ CallNode(13...27)(
+ nil,
+ nil,
+ (13...14),
+ nil,
+ ArgumentsNode(15...20)(
+ [ArrayNode(15...17)([], (15...16), (16...17)), IntegerNode(19...20)()]
+ ),
+ nil,
+ BlockNode(21...27)([], nil, nil, (21...23), (24...27)),
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_452.txt b/test/yarp/snapshots/whitequark/bug_452.txt
new file mode 100644
index 0000000000..78fc5f28a2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_452.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...2),
+ nil,
+ ArgumentsNode(3...21)(
+ [CallNode(3...21)(
+ ParenthesesNode(3...10)(
+ StatementsNode(4...9)([IntegerNode(4...9)()]),
+ (3...4),
+ (9...10)
+ ),
+ (10...11),
+ (11...19),
+ (19...20),
+ nil,
+ (20...21),
+ nil,
+ 0,
+ "toString"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "td"
+ ),
+ CallNode(23...37)(
+ CallNode(23...25)(nil, nil, (23...25), nil, nil, nil, nil, 0, "td"),
+ (25...26),
+ (26...29),
+ nil,
+ nil,
+ nil,
+ BlockNode(30...37)([], nil, nil, (30...32), (34...37)),
+ 0,
+ "num"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_466.txt b/test/yarp/snapshots/whitequark/bug_466.txt
new file mode 100644
index 0000000000..3b153e4995
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_466.txt
@@ -0,0 +1,54 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [CallNode(0...27)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...19)(
+ [InterpolatedStringNode(4...19)(
+ (4...5),
+ [EmbeddedStatementsNode(5...18)(
+ (5...7),
+ StatementsNode(7...17)(
+ [CallNode(7...17)(
+ ParenthesesNode(7...12)(
+ StatementsNode(8...11)(
+ [CallNode(8...11)(
+ IntegerNode(8...9)(),
+ nil,
+ (9...10),
+ nil,
+ ArgumentsNode(10...11)([IntegerNode(10...11)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (7...8),
+ (11...12)
+ ),
+ (12...13),
+ (13...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "to_i"
+ )]
+ ),
+ (17...18)
+ )],
+ (18...19)
+ )]
+ ),
+ nil,
+ BlockNode(20...27)([], nil, nil, (20...22), (24...27)),
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_473.txt b/test/yarp/snapshots/whitequark/bug_473.txt
new file mode 100644
index 0000000000..a9978db50d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_473.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...9)(
+ [InterpolatedStringNode(2...9)(
+ (2...3),
+ [EmbeddedStatementsNode(3...8)(
+ (3...5),
+ StatementsNode(5...7)([ArrayNode(5...7)([], (5...6), (6...7))]),
+ (7...8)
+ )],
+ (8...9)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_480.txt b/test/yarp/snapshots/whitequark/bug_480.txt
new file mode 100644
index 0000000000..8457cefa86
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_480.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...12)(
+ [InterpolatedStringNode(2...12)(
+ (2...3),
+ [EmbeddedStatementsNode(3...6)((3...5), nil, (5...6)),
+ EmbeddedStatementsNode(6...11)(
+ (6...8),
+ StatementsNode(8...10)(
+ [ParenthesesNode(8...10)(nil, (8...9), (9...10))]
+ ),
+ (10...11)
+ )],
+ (11...12)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_481.txt b/test/yarp/snapshots/whitequark/bug_481.txt
new file mode 100644
index 0000000000..1bd74e1235
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_481.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...14)(
+ [DefNode(2...14)(
+ (6...7),
+ nil,
+ nil,
+ nil,
+ [],
+ (2...5),
+ nil,
+ (7...8),
+ (8...9),
+ nil,
+ (11...14)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ CallNode(16...28)(
+ IntegerNode(16...17)(),
+ (17...18),
+ (18...21),
+ nil,
+ nil,
+ nil,
+ BlockNode(22...28)([], nil, nil, (22...24), (25...28)),
+ 0,
+ "tap"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_ascii_8bit_in_literal.txt b/test/yarp/snapshots/whitequark/bug_ascii_8bit_in_literal.txt
new file mode 100644
index 0000000000..40251879fc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_ascii_8bit_in_literal.txt
@@ -0,0 +1,6 @@
+ProgramNode(24...90)(
+ [],
+ StatementsNode(24...90)(
+ [StringNode(24...90)((24...25), (25...89), (89...90), "проверка")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_cmd_string_lookahead.txt b/test/yarp/snapshots/whitequark/bug_cmd_string_lookahead.txt
new file mode 100644
index 0000000000..0004e1a758
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_cmd_string_lookahead.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ ArgumentsNode(5...10)(
+ [StringNode(5...10)((5...6), (6...9), (9...10), "foo")]
+ ),
+ nil,
+ BlockNode(11...17)([], nil, nil, (11...13), (14...17)),
+ 0,
+ "desc"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_cmdarg.txt b/test/yarp/snapshots/whitequark/bug_cmdarg.txt
new file mode 100644
index 0000000000..bfce248782
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_cmdarg.txt
@@ -0,0 +1,83 @@
+ProgramNode(0...56)(
+ [],
+ StatementsNode(0...56)(
+ [CallNode(0...15)(
+ nil,
+ nil,
+ (0...6),
+ nil,
+ ArgumentsNode(7...15)(
+ [KeywordHashNode(7...15)(
+ [AssocNode(7...15)(
+ SymbolNode(7...10)(nil, (7...9), (9...10), "do"),
+ TrueNode(11...15)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "assert"
+ ),
+ CallNode(17...28)(
+ nil,
+ nil,
+ (17...23),
+ nil,
+ ArgumentsNode(24...28)(
+ [CallNode(24...28)(
+ nil,
+ nil,
+ (24...28),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "dogs"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "assert"
+ ),
+ CallNode(30...56)(
+ nil,
+ nil,
+ (30...31),
+ nil,
+ ArgumentsNode(32...56)(
+ [KeywordHashNode(32...56)(
+ [AssocNode(32...56)(
+ SymbolNode(32...34)(nil, (32...33), (33...34), "x"),
+ LambdaNode(35...56)(
+ [],
+ (35...37),
+ nil,
+ StatementsNode(41...52)(
+ [CallNode(41...52)(
+ nil,
+ nil,
+ (41...45),
+ nil,
+ nil,
+ nil,
+ BlockNode(46...52)([], nil, nil, (46...48), (49...52)),
+ 0,
+ "meth"
+ )]
+ )
+ ),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_def_no_paren_eql_begin.txt b/test/yarp/snapshots/whitequark/bug_def_no_paren_eql_begin.txt
new file mode 100644
index 0000000000..12efa14109
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_def_no_paren_eql_begin.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [DefNode(0...23)(
+ (4...7),
+ nil,
+ nil,
+ nil,
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_do_block_in_call_args.txt b/test/yarp/snapshots/whitequark/bug_do_block_in_call_args.txt
new file mode 100644
index 0000000000..555819dfbd
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_do_block_in_call_args.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [CallNode(0...33)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...33)(
+ [DefNode(4...33)(
+ (8...11),
+ nil,
+ nil,
+ StatementsNode(13...29)(
+ [CallNode(13...29)(
+ SelfNode(13...17)(),
+ (17...18),
+ (18...22),
+ nil,
+ nil,
+ nil,
+ BlockNode(23...29)([], nil, nil, (23...25), (26...29)),
+ 0,
+ "each"
+ )]
+ ),
+ [],
+ (4...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ (30...33)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_do_block_in_cmdarg.txt b/test/yarp/snapshots/whitequark/bug_do_block_in_cmdarg.txt
new file mode 100644
index 0000000000..81fa1d3609
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_do_block_in_cmdarg.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...17)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...17)(
+ [ParenthesesNode(4...17)(
+ StatementsNode(5...16)(
+ [CallNode(5...16)(
+ nil,
+ nil,
+ (5...9),
+ nil,
+ nil,
+ nil,
+ BlockNode(10...16)([], nil, nil, (10...12), (13...16)),
+ 0,
+ "proc"
+ )]
+ ),
+ (4...5),
+ (16...17)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "tap"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_do_block_in_hash_brace.txt b/test/yarp/snapshots/whitequark/bug_do_block_in_hash_brace.txt
new file mode 100644
index 0000000000..bce92ea25b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_do_block_in_hash_brace.txt
@@ -0,0 +1,249 @@
+ProgramNode(0...225)(
+ [],
+ StatementsNode(0...225)(
+ [CallNode(0...42)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...42)(
+ [SymbolNode(2...6)((2...3), (3...6), nil, "foo"),
+ HashNode(8...42)(
+ (8...9),
+ [AssocNode(9...25)(
+ SymbolNode(9...13)((9...10), (10...11), (11...13), "a"),
+ CallNode(14...25)(
+ nil,
+ nil,
+ (14...18),
+ nil,
+ nil,
+ nil,
+ BlockNode(19...25)([], nil, nil, (19...21), (22...25)),
+ 0,
+ "proc"
+ ),
+ nil
+ ),
+ AssocNode(27...41)(
+ SymbolNode(27...29)(nil, (27...28), (28...29), "b"),
+ CallNode(30...41)(
+ nil,
+ nil,
+ (30...34),
+ nil,
+ nil,
+ nil,
+ BlockNode(35...41)([], nil, nil, (35...37), (38...41)),
+ 0,
+ "proc"
+ ),
+ nil
+ )],
+ (41...42)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(44...84)(
+ nil,
+ nil,
+ (44...45),
+ nil,
+ ArgumentsNode(46...84)(
+ [SymbolNode(46...50)((46...47), (47...50), nil, "foo"),
+ HashNode(52...84)(
+ (52...53),
+ [AssocSplatNode(53...67)(
+ CallNode(56...67)(
+ nil,
+ nil,
+ (56...60),
+ nil,
+ nil,
+ nil,
+ BlockNode(61...67)([], nil, nil, (61...63), (64...67)),
+ 0,
+ "proc"
+ ),
+ (53...55)
+ ),
+ AssocNode(69...83)(
+ SymbolNode(69...71)(nil, (69...70), (70...71), "b"),
+ CallNode(72...83)(
+ nil,
+ nil,
+ (72...76),
+ nil,
+ nil,
+ nil,
+ BlockNode(77...83)([], nil, nil, (77...79), (80...83)),
+ 0,
+ "proc"
+ ),
+ nil
+ )],
+ (83...84)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(86...129)(
+ nil,
+ nil,
+ (86...87),
+ nil,
+ ArgumentsNode(88...129)(
+ [SymbolNode(88...92)((88...89), (89...92), nil, "foo"),
+ HashNode(94...129)(
+ (94...95),
+ [AssocNode(95...112)(
+ SymbolNode(95...97)((95...96), (96...97), nil, "a"),
+ CallNode(101...112)(
+ nil,
+ nil,
+ (101...105),
+ nil,
+ nil,
+ nil,
+ BlockNode(106...112)([], nil, nil, (106...108), (109...112)),
+ 0,
+ "proc"
+ ),
+ (98...100)
+ ),
+ AssocNode(114...128)(
+ SymbolNode(114...116)(nil, (114...115), (115...116), "b"),
+ CallNode(117...128)(
+ nil,
+ nil,
+ (117...121),
+ nil,
+ nil,
+ nil,
+ BlockNode(122...128)([], nil, nil, (122...124), (125...128)),
+ 0,
+ "proc"
+ ),
+ nil
+ )],
+ (128...129)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(131...171)(
+ nil,
+ nil,
+ (131...132),
+ nil,
+ ArgumentsNode(133...171)(
+ [SymbolNode(133...137)((133...134), (134...137), nil, "foo"),
+ HashNode(139...171)(
+ (139...140),
+ [AssocNode(140...154)(
+ SymbolNode(140...142)(nil, (140...141), (141...142), "a"),
+ CallNode(143...154)(
+ nil,
+ nil,
+ (143...147),
+ nil,
+ nil,
+ nil,
+ BlockNode(148...154)([], nil, nil, (148...150), (151...154)),
+ 0,
+ "proc"
+ ),
+ nil
+ ),
+ AssocNode(156...170)(
+ SymbolNode(156...158)(nil, (156...157), (157...158), "b"),
+ CallNode(159...170)(
+ nil,
+ nil,
+ (159...163),
+ nil,
+ nil,
+ nil,
+ BlockNode(164...170)([], nil, nil, (164...166), (167...170)),
+ 0,
+ "proc"
+ ),
+ nil
+ )],
+ (170...171)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(173...225)(
+ nil,
+ nil,
+ (173...174),
+ nil,
+ ArgumentsNode(175...225)(
+ [SymbolNode(175...179)((175...176), (176...179), nil, "foo"),
+ HashNode(181...225)(
+ (181...182),
+ [AssocNode(182...208)(
+ CallNode(182...193)(
+ nil,
+ nil,
+ (182...186),
+ nil,
+ nil,
+ nil,
+ BlockNode(187...193)([], nil, nil, (187...189), (190...193)),
+ 0,
+ "proc"
+ ),
+ CallNode(197...208)(
+ nil,
+ nil,
+ (197...201),
+ nil,
+ nil,
+ nil,
+ BlockNode(202...208)([], nil, nil, (202...204), (205...208)),
+ 0,
+ "proc"
+ ),
+ (194...196)
+ ),
+ AssocNode(210...224)(
+ SymbolNode(210...212)(nil, (210...211), (211...212), "b"),
+ CallNode(213...224)(
+ nil,
+ nil,
+ (213...217),
+ nil,
+ nil,
+ nil,
+ BlockNode(218...224)([], nil, nil, (218...220), (221...224)),
+ 0,
+ "proc"
+ ),
+ nil
+ )],
+ (224...225)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_heredoc_do.txt b/test/yarp/snapshots/whitequark/bug_heredoc_do.txt
new file mode 100644
index 0000000000..b3ca8ffab1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_heredoc_do.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [CallNode(0...23)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...20)(
+ [InterpolatedStringNode(2...20)((2...10), [], (14...20))]
+ ),
+ nil,
+ BlockNode(11...23)([], nil, nil, (11...13), (20...23)),
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_interp_single.txt b/test/yarp/snapshots/whitequark/bug_interp_single.txt
new file mode 100644
index 0000000000..abfa2dfe89
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_interp_single.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [InterpolatedStringNode(0...6)(
+ (0...1),
+ [EmbeddedStatementsNode(1...5)(
+ (1...3),
+ StatementsNode(3...4)([IntegerNode(3...4)()]),
+ (4...5)
+ )],
+ (5...6)
+ ),
+ ArrayNode(8...16)(
+ [InterpolatedStringNode(0...15)(
+ nil,
+ [EmbeddedStatementsNode(11...15)(
+ (11...13),
+ StatementsNode(13...14)([IntegerNode(13...14)()]),
+ (14...15)
+ )],
+ nil
+ )],
+ (8...11),
+ (15...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_lambda_leakage.txt b/test/yarp/snapshots/whitequark/bug_lambda_leakage.txt
new file mode 100644
index 0000000000..4fac00cf34
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_lambda_leakage.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [LambdaNode(0...12)(
+ [:scope],
+ (0...2),
+ BlockParametersNode(2...9)(
+ ParametersNode(3...8)(
+ [RequiredParameterNode(3...8)(:scope)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (2...3),
+ (8...9)
+ ),
+ nil
+ ),
+ CallNode(14...19)(nil, nil, (14...19), nil, nil, nil, nil, 0, "scope")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_regex_verification.txt b/test/yarp/snapshots/whitequark/bug_regex_verification.txt
new file mode 100644
index 0000000000..e1fc0ec0e6
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_regex_verification.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [RegularExpressionNode(0...5)((0...1), (1...3), (3...5), "#)", 4)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_rescue_empty_else.txt b/test/yarp/snapshots/whitequark/bug_rescue_empty_else.txt
new file mode 100644
index 0000000000..83ea8818ee
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_rescue_empty_else.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...34)(
+ [],
+ StatementsNode(0...34)(
+ [BeginNode(0...34)(
+ (0...5),
+ nil,
+ RescueNode(7...23)(
+ (7...13),
+ [ConstantReadNode(14...23)()],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ ElseNode(25...34)((25...29), nil, (31...34)),
+ nil,
+ (31...34)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/bug_while_not_parens_do.txt b/test/yarp/snapshots/whitequark/bug_while_not_parens_do.txt
new file mode 100644
index 0000000000..26c198608c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/bug_while_not_parens_do.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [WhileNode(0...23)(
+ (0...5),
+ CallNode(6...16)(
+ ParenthesesNode(10...16)(
+ StatementsNode(11...15)([TrueNode(11...15)()]),
+ (10...11),
+ (15...16)
+ ),
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/case_cond.txt b/test/yarp/snapshots/whitequark/case_cond.txt
new file mode 100644
index 0000000000..4fbc69e3ba
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/case_cond.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CaseNode(0...26)(
+ nil,
+ [WhenNode(6...21)(
+ (6...10),
+ [CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )],
+ StatementsNode(16...21)(
+ [StringNode(16...21)((16...17), (17...20), (20...21), "foo")]
+ )
+ )],
+ nil,
+ (0...4),
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/case_cond_else.txt b/test/yarp/snapshots/whitequark/case_cond_else.txt
new file mode 100644
index 0000000000..c4a035f178
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/case_cond_else.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...38)(
+ [],
+ StatementsNode(0...38)(
+ [CaseNode(0...38)(
+ nil,
+ [WhenNode(6...21)(
+ (6...10),
+ [CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )],
+ StatementsNode(16...21)(
+ [StringNode(16...21)((16...17), (17...20), (20...21), "foo")]
+ )
+ )],
+ ElseNode(23...38)(
+ (23...27),
+ StatementsNode(28...33)(
+ [StringNode(28...33)((28...29), (29...32), (32...33), "bar")]
+ ),
+ (35...38)
+ ),
+ (0...4),
+ (35...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/case_expr.txt b/test/yarp/snapshots/whitequark/case_expr.txt
new file mode 100644
index 0000000000..22763ee9fe
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/case_expr.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [CaseNode(0...30)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(10...25)(
+ (10...14),
+ [StringNode(15...20)((15...16), (16...19), (19...20), "bar")],
+ StatementsNode(22...25)(
+ [CallNode(22...25)(
+ nil,
+ nil,
+ (22...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ nil,
+ (0...4),
+ (27...30)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/case_expr_else.txt b/test/yarp/snapshots/whitequark/case_expr_else.txt
new file mode 100644
index 0000000000..9782ba04cb
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/case_expr_else.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [CaseNode(0...40)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(10...25)(
+ (10...14),
+ [StringNode(15...20)((15...16), (16...19), (19...20), "bar")],
+ StatementsNode(22...25)(
+ [CallNode(22...25)(
+ nil,
+ nil,
+ (22...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ ElseNode(27...40)(
+ (27...31),
+ StatementsNode(32...35)(
+ [CallNode(32...35)(
+ nil,
+ nil,
+ (32...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (37...40)
+ ),
+ (0...4),
+ (37...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/casgn_scoped.txt b/test/yarp/snapshots/whitequark/casgn_scoped.txt
new file mode 100644
index 0000000000..4f3dbf682e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/casgn_scoped.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [ConstantPathWriteNode(0...13)(
+ ConstantPathNode(0...8)(
+ ConstantReadNode(0...3)(),
+ ConstantReadNode(5...8)(),
+ (3...5)
+ ),
+ (9...10),
+ IntegerNode(11...13)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/casgn_toplevel.txt b/test/yarp/snapshots/whitequark/casgn_toplevel.txt
new file mode 100644
index 0000000000..50d683b366
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/casgn_toplevel.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [ConstantPathWriteNode(0...10)(
+ ConstantPathNode(0...5)(nil, ConstantReadNode(2...5)(), (0...2)),
+ (6...7),
+ IntegerNode(8...10)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/casgn_unscoped.txt b/test/yarp/snapshots/whitequark/casgn_unscoped.txt
new file mode 100644
index 0000000000..3687e38891
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/casgn_unscoped.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [ConstantPathWriteNode(0...8)(
+ ConstantReadNode(0...3)(),
+ (4...5),
+ IntegerNode(6...8)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/character.txt b/test/yarp/snapshots/whitequark/character.txt
new file mode 100644
index 0000000000..7865df42fa
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/character.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...2)(
+ [],
+ StatementsNode(0...2)([StringNode(0...2)((0...1), (1...2), nil, "a")])
+)
diff --git a/test/yarp/snapshots/whitequark/class.txt b/test/yarp/snapshots/whitequark/class.txt
new file mode 100644
index 0000000000..0061b34a8a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/class.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [ClassNode(0...13)(
+ [],
+ (0...5),
+ ConstantReadNode(6...9)(),
+ nil,
+ nil,
+ nil,
+ (10...13)
+ ),
+ ClassNode(15...29)(
+ [],
+ (15...20),
+ ConstantReadNode(21...24)(),
+ nil,
+ nil,
+ nil,
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt b/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt
new file mode 100644
index 0000000000..95b3caf5c7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/class_definition_in_while_cond.txt
@@ -0,0 +1,115 @@
+ProgramNode(0...197)(
+ [],
+ StatementsNode(0...197)(
+ [WhileNode(0...52)(
+ (0...5),
+ SingletonClassNode(6...40)(
+ [:a],
+ (6...11),
+ (12...14),
+ SelfNode(15...19)(),
+ StatementsNode(21...35)(
+ [LocalVariableWriteNode(21...35)(
+ :a,
+ 0,
+ CallNode(25...35)(
+ nil,
+ nil,
+ (25...28),
+ nil,
+ nil,
+ nil,
+ BlockNode(29...35)([], nil, nil, (29...31), (32...35)),
+ 0,
+ "tap"
+ ),
+ (21...22),
+ (23...24)
+ )]
+ ),
+ (37...40)
+ ),
+ StatementsNode(42...47)([BreakNode(42...47)(nil, (42...47))])
+ ),
+ WhileNode(54...102)(
+ (54...59),
+ SingletonClassNode(60...90)(
+ [],
+ (60...65),
+ (66...68),
+ SelfNode(69...73)(),
+ StatementsNode(75...85)(
+ [CallNode(75...85)(
+ nil,
+ nil,
+ (75...78),
+ nil,
+ nil,
+ nil,
+ BlockNode(79...85)([], nil, nil, (79...81), (82...85)),
+ 0,
+ "tap"
+ )]
+ ),
+ (87...90)
+ ),
+ StatementsNode(92...97)([BreakNode(92...97)(nil, (92...97))])
+ ),
+ WhileNode(104...151)(
+ (104...109),
+ ClassNode(110...139)(
+ [:a],
+ (110...115),
+ ConstantReadNode(116...119)(),
+ nil,
+ nil,
+ StatementsNode(120...134)(
+ [LocalVariableWriteNode(120...134)(
+ :a,
+ 0,
+ CallNode(124...134)(
+ nil,
+ nil,
+ (124...127),
+ nil,
+ nil,
+ nil,
+ BlockNode(128...134)([], nil, nil, (128...130), (131...134)),
+ 0,
+ "tap"
+ ),
+ (120...121),
+ (122...123)
+ )]
+ ),
+ (136...139)
+ ),
+ StatementsNode(141...146)([BreakNode(141...146)(nil, (141...146))])
+ ),
+ WhileNode(153...197)(
+ (153...158),
+ ClassNode(159...185)(
+ [],
+ (159...164),
+ ConstantReadNode(165...168)(),
+ nil,
+ nil,
+ StatementsNode(170...180)(
+ [CallNode(170...180)(
+ nil,
+ nil,
+ (170...173),
+ nil,
+ nil,
+ nil,
+ BlockNode(174...180)([], nil, nil, (174...176), (177...180)),
+ 0,
+ "tap"
+ )]
+ ),
+ (182...185)
+ ),
+ StatementsNode(187...192)([BreakNode(187...192)(nil, (187...192))])
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/class_super.txt b/test/yarp/snapshots/whitequark/class_super.txt
new file mode 100644
index 0000000000..aa2845a13e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/class_super.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [ClassNode(0...20)(
+ [],
+ (0...5),
+ ConstantReadNode(6...9)(),
+ (10...11),
+ ConstantReadNode(12...15)(),
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/class_super_label.txt b/test/yarp/snapshots/whitequark/class_super_label.txt
new file mode 100644
index 0000000000..ae6759c1e4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/class_super_label.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [ClassNode(0...20)(
+ [],
+ (0...5),
+ ConstantReadNode(6...9)(),
+ (10...11),
+ CallNode(12...15)(
+ nil,
+ nil,
+ (12...13),
+ nil,
+ ArgumentsNode(13...15)(
+ [SymbolNode(13...15)((13...14), (14...15), nil, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/comments_before_leading_dot__27.txt b/test/yarp/snapshots/whitequark/comments_before_leading_dot__27.txt
new file mode 100644
index 0000000000..08dc7c2f5c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/comments_before_leading_dot__27.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...55)(
+ [],
+ StatementsNode(0...55)(
+ [CallNode(0...13)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (8...10),
+ (10...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "foo"
+ ),
+ CallNode(16...28)(
+ CallNode(16...17)(nil, nil, (16...17), nil, nil, nil, nil, 0, "a"),
+ (24...25),
+ (25...28),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(31...42)(
+ CallNode(31...32)(nil, nil, (31...32), nil, nil, nil, nil, 0, "a"),
+ (37...39),
+ (39...42),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "foo"
+ ),
+ CallNode(45...55)(
+ CallNode(45...46)(nil, nil, (45...46), nil, nil, nil, nil, 0, "a"),
+ (51...52),
+ (52...55),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/complex.txt b/test/yarp/snapshots/whitequark/complex.txt
new file mode 100644
index 0000000000..f8273f3806
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/complex.txt
@@ -0,0 +1,9 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [ImaginaryNode(0...5)(FloatNode(0...4)()),
+ ImaginaryNode(7...13)(RationalNode(7...12)(FloatNode(7...11)())),
+ ImaginaryNode(15...18)(IntegerNode(15...17)()),
+ ImaginaryNode(20...24)(RationalNode(20...23)(IntegerNode(20...22)()))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/cond_begin.txt b/test/yarp/snapshots/whitequark/cond_begin.txt
new file mode 100644
index 0000000000..0d378e24c9
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cond_begin.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [IfNode(0...18)(
+ (0...2),
+ ParenthesesNode(3...8)(
+ StatementsNode(4...7)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (3...4),
+ (7...8)
+ ),
+ StatementsNode(10...13)(
+ [CallNode(10...13)(nil, nil, (10...13), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ (15...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/cond_begin_masgn.txt b/test/yarp/snapshots/whitequark/cond_begin_masgn.txt
new file mode 100644
index 0000000000..17a0cd4141
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cond_begin_masgn.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...25)(
+ [:a, :b],
+ StatementsNode(0...25)(
+ [IfNode(0...25)(
+ (0...2),
+ ParenthesesNode(3...20)(
+ StatementsNode(4...19)(
+ [CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "bar"),
+ MultiWriteNode(9...19)(
+ [LocalVariableWriteNode(9...10)(:a, 0, nil, (9...10), nil),
+ LocalVariableWriteNode(12...13)(:b, 0, nil, (12...13), nil)],
+ (14...15),
+ CallNode(16...19)(
+ nil,
+ nil,
+ (16...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (3...4),
+ (19...20)
+ ),
+ nil,
+ nil,
+ (22...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/cond_eflipflop.txt b/test/yarp/snapshots/whitequark/cond_eflipflop.txt
new file mode 100644
index 0000000000..6e1e6718d5
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cond_eflipflop.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CallNode(0...12)(
+ ParenthesesNode(1...12)(
+ StatementsNode(2...11)(
+ [RangeNode(2...11)(
+ CallNode(2...5)(nil, nil, (2...5), nil, nil, nil, nil, 0, "foo"),
+ CallNode(8...11)(
+ nil,
+ nil,
+ (8...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (5...8),
+ 1
+ )]
+ ),
+ (1...2),
+ (11...12)
+ ),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ IfNode(14...31)(
+ (14...16),
+ RangeNode(17...26)(
+ CallNode(17...20)(nil, nil, (17...20), nil, nil, nil, nil, 0, "foo"),
+ CallNode(23...26)(nil, nil, (23...26), nil, nil, nil, nil, 0, "bar"),
+ (20...23),
+ 1
+ ),
+ nil,
+ nil,
+ (28...31)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/cond_iflipflop.txt b/test/yarp/snapshots/whitequark/cond_iflipflop.txt
new file mode 100644
index 0000000000..e45eec8922
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cond_iflipflop.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [CallNode(0...11)(
+ ParenthesesNode(1...11)(
+ StatementsNode(2...10)(
+ [RangeNode(2...10)(
+ CallNode(2...5)(nil, nil, (2...5), nil, nil, nil, nil, 0, "foo"),
+ CallNode(7...10)(
+ nil,
+ nil,
+ (7...10),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (5...7),
+ 0
+ )]
+ ),
+ (1...2),
+ (10...11)
+ ),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ IfNode(13...29)(
+ (13...15),
+ RangeNode(16...24)(
+ CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "foo"),
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "bar"),
+ (19...21),
+ 0
+ ),
+ nil,
+ nil,
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/cond_match_current_line.txt b/test/yarp/snapshots/whitequark/cond_match_current_line.txt
new file mode 100644
index 0000000000..02bceef3d7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cond_match_current_line.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...6)(
+ RegularExpressionNode(1...6)((1...2), (2...5), (5...6), "wat", 0),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ IfNode(8...21)(
+ (8...10),
+ RegularExpressionNode(11...16)(
+ (11...12),
+ (12...15),
+ (15...16),
+ "wat",
+ 0
+ ),
+ nil,
+ nil,
+ (18...21)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/const_op_asgn.txt b/test/yarp/snapshots/whitequark/const_op_asgn.txt
new file mode 100644
index 0000000000..ef5e755c8e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/const_op_asgn.txt
@@ -0,0 +1,73 @@
+ProgramNode(0...77)(
+ [],
+ StatementsNode(0...77)(
+ [ConstantPathOperatorWriteNode(0...8)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ (4...6),
+ IntegerNode(7...8)(),
+ :+
+ ),
+ ConstantOperatorWriteNode(10...16)(
+ (10...11),
+ (12...14),
+ IntegerNode(15...16)(),
+ :+
+ ),
+ ConstantPathOperatorWriteNode(18...27)(
+ ConstantPathNode(18...22)(
+ ConstantReadNode(18...19)(),
+ ConstantReadNode(21...22)(),
+ (19...21)
+ ),
+ (23...25),
+ IntegerNode(26...27)(),
+ :+
+ ),
+ DefNode(29...50)(
+ (33...34),
+ nil,
+ nil,
+ StatementsNode(36...45)(
+ [ConstantPathOperatorOrWriteNode(36...45)(
+ ConstantPathNode(36...39)(
+ nil,
+ ConstantReadNode(38...39)(),
+ (36...38)
+ ),
+ (40...43),
+ IntegerNode(44...45)()
+ )]
+ ),
+ [],
+ (29...32),
+ nil,
+ nil,
+ nil,
+ nil,
+ (47...50)
+ ),
+ DefNode(52...77)(
+ (56...57),
+ nil,
+ nil,
+ StatementsNode(59...72)(
+ [ConstantPathOperatorOrWriteNode(59...72)(
+ ConstantPathNode(59...66)(
+ SelfNode(59...63)(),
+ ConstantReadNode(65...66)(),
+ (63...65)
+ ),
+ (67...70),
+ IntegerNode(71...72)()
+ )]
+ ),
+ [],
+ (52...55),
+ nil,
+ nil,
+ nil,
+ nil,
+ (74...77)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/const_scoped.txt b/test/yarp/snapshots/whitequark/const_scoped.txt
new file mode 100644
index 0000000000..8aa53922cd
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/const_scoped.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [ConstantPathNode(0...8)(
+ ConstantReadNode(0...3)(),
+ ConstantReadNode(5...8)(),
+ (3...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/const_toplevel.txt b/test/yarp/snapshots/whitequark/const_toplevel.txt
new file mode 100644
index 0000000000..248b407e67
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/const_toplevel.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [ConstantPathNode(0...5)(nil, ConstantReadNode(2...5)(), (0...2))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/const_unscoped.txt b/test/yarp/snapshots/whitequark/const_unscoped.txt
new file mode 100644
index 0000000000..8b8198ef49
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/const_unscoped.txt
@@ -0,0 +1 @@
+ProgramNode(0...3)([], StatementsNode(0...3)([ConstantReadNode(0...3)()]))
diff --git a/test/yarp/snapshots/whitequark/cpath.txt b/test/yarp/snapshots/whitequark/cpath.txt
new file mode 100644
index 0000000000..94714a1ac6
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cpath.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...39)(
+ [],
+ StatementsNode(0...39)(
+ [ModuleNode(0...17)(
+ [],
+ (0...6),
+ ConstantPathNode(7...12)(nil, ConstantReadNode(9...12)(), (7...9)),
+ nil,
+ (14...17)
+ ),
+ ModuleNode(19...39)(
+ [],
+ (19...25),
+ ConstantPathNode(26...34)(
+ ConstantReadNode(26...29)(),
+ ConstantReadNode(31...34)(),
+ (29...31)
+ ),
+ nil,
+ (36...39)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/cvar.txt b/test/yarp/snapshots/whitequark/cvar.txt
new file mode 100644
index 0000000000..069ff24b17
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cvar.txt
@@ -0,0 +1 @@
+ProgramNode(0...5)([], StatementsNode(0...5)([ClassVariableReadNode(0...5)()]))
diff --git a/test/yarp/snapshots/whitequark/cvasgn.txt b/test/yarp/snapshots/whitequark/cvasgn.txt
new file mode 100644
index 0000000000..b972caaab7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/cvasgn.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [ClassVariableWriteNode(0...10)((0...5), IntegerNode(8...10)(), (6...7))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/dedenting_heredoc.txt b/test/yarp/snapshots/whitequark/dedenting_heredoc.txt
new file mode 100644
index 0000000000..8db35f7228
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/dedenting_heredoc.txt
@@ -0,0 +1,323 @@
+ProgramNode(0...327)(
+ [],
+ StatementsNode(0...327)(
+ [CallNode(0...28)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...28)(
+ [InterpolatedStringNode(2...28)(
+ (2...8),
+ [StringNode(9...17)(nil, (9...17), nil, " x\n"),
+ EmbeddedStatementsNode(17...25)(
+ (17...19),
+ StatementsNode(19...24)(
+ [StringNode(19...24)((19...20), (20...23), (23...24), " y")]
+ ),
+ (24...25)
+ ),
+ StringNode(25...26)(nil, (25...26), nil, "\n")],
+ (26...28)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(29...55)(
+ nil,
+ nil,
+ (29...30),
+ nil,
+ ArgumentsNode(31...55)(
+ [InterpolatedStringNode(31...55)(
+ (31...37),
+ [StringNode(38...46)(nil, (38...46), nil, " x\n"),
+ EmbeddedStatementsNode(46...52)(
+ (46...48),
+ StatementsNode(48...51)(
+ [CallNode(48...51)(
+ nil,
+ nil,
+ (48...51),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (51...52)
+ ),
+ StringNode(52...53)(nil, (52...53), nil, "\n")],
+ (53...55)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(56...78)(
+ nil,
+ nil,
+ (56...57),
+ nil,
+ ArgumentsNode(58...78)(
+ [InterpolatedStringNode(58...78)(
+ (58...62),
+ [StringNode(63...76)(nil, (63...76), nil, "x\n" + "y\n")],
+ (76...78)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(79...97)(
+ nil,
+ nil,
+ (79...80),
+ nil,
+ ArgumentsNode(81...97)(
+ [InterpolatedStringNode(81...97)(
+ (81...85),
+ [StringNode(86...95)(nil, (86...95), nil, "\tx\n" + "y\n")],
+ (95...97)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(98...124)(
+ nil,
+ nil,
+ (98...99),
+ nil,
+ ArgumentsNode(100...124)(
+ [InterpolatedStringNode(100...124)(
+ (100...104),
+ [StringNode(105...122)(nil, (105...122), nil, "x\n" + "y\n")],
+ (122...124)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(125...148)(
+ nil,
+ nil,
+ (125...126),
+ nil,
+ ArgumentsNode(127...148)(
+ [InterpolatedStringNode(127...148)(
+ (127...131),
+ [StringNode(132...146)(nil, (132...146), nil, "\tx\n" + "y\n")],
+ (146...148)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(149...170)(
+ nil,
+ nil,
+ (149...150),
+ nil,
+ ArgumentsNode(151...170)(
+ [InterpolatedStringNode(151...170)(
+ (151...155),
+ [StringNode(156...168)(nil, (156...168), nil, " x\n" + "\ty\n")],
+ (168...170)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(171...193)(
+ nil,
+ nil,
+ (171...172),
+ nil,
+ ArgumentsNode(173...193)(
+ [InterpolatedStringNode(173...193)(
+ (173...177),
+ [StringNode(178...191)(nil, (178...191), nil, " x\n" + " y\n")],
+ (191...193)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(194...205)(
+ nil,
+ nil,
+ (194...195),
+ nil,
+ ArgumentsNode(196...205)(
+ [InterpolatedStringNode(196...205)((196...200), [], (201...205))]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(206...222)(
+ nil,
+ nil,
+ (206...207),
+ nil,
+ ArgumentsNode(208...222)(
+ [InterpolatedStringNode(208...222)(
+ (208...212),
+ [StringNode(213...220)(
+ nil,
+ (213...220),
+ nil,
+ " x\n" + "\n" + "y\n"
+ )],
+ (220...222)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(223...241)(
+ nil,
+ nil,
+ (223...224),
+ nil,
+ ArgumentsNode(225...241)(
+ [InterpolatedStringNode(225...241)(
+ (225...229),
+ [StringNode(230...239)(
+ nil,
+ (230...239),
+ nil,
+ "x\n" + "\n" + "y\n"
+ )],
+ (239...241)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(242...261)(
+ nil,
+ nil,
+ (242...243),
+ nil,
+ ArgumentsNode(244...261)(
+ [InterpolatedStringNode(244...261)(
+ (244...248),
+ [StringNode(249...259)(nil, (249...259), nil, "x\n" + " y\n")],
+ (259...261)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(262...275)(
+ nil,
+ nil,
+ (262...263),
+ nil,
+ ArgumentsNode(264...275)(
+ [InterpolatedStringNode(264...275)(
+ (264...268),
+ [StringNode(269...273)(nil, (269...273), nil, "x\n")],
+ (273...275)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(276...290)(
+ nil,
+ nil,
+ (276...277),
+ nil,
+ ArgumentsNode(278...290)(
+ [InterpolatedStringNode(278...290)(
+ (278...282),
+ [StringNode(283...288)(nil, (283...288), nil, "ð\n")],
+ (288...290)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(291...300)(
+ nil,
+ nil,
+ (291...292),
+ nil,
+ ArgumentsNode(293...300)(
+ [InterpolatedStringNode(293...300)((293...297), [], (298...300))]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(301...327)(
+ nil,
+ nil,
+ (301...302),
+ nil,
+ ArgumentsNode(303...327)(
+ [InterpolatedXStringNode(303...327)(
+ (303...309),
+ [StringNode(310...318)(nil, (310...318), nil, " x\n"),
+ EmbeddedStatementsNode(318...324)(
+ (318...320),
+ StatementsNode(320...323)(
+ [CallNode(320...323)(
+ nil,
+ nil,
+ (320...323),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (323...324)
+ ),
+ StringNode(324...325)(nil, (324...325), nil, "\n")],
+ (325...327)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt b/test/yarp/snapshots/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt
new file mode 100644
index 0000000000..57cd4345c4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/dedenting_interpolating_heredoc_fake_line_continuation.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [InterpolatedStringNode(0...27)(
+ (0...8),
+ [StringNode(9...23)(nil, (9...23), nil, "baz\\\n" + "qux\n")],
+ (23...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt b/test/yarp/snapshots/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt
new file mode 100644
index 0000000000..eea236db48
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/dedenting_non_interpolating_heredoc_line_continuation.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [InterpolatedStringNode(0...26)(
+ (0...8),
+ [StringNode(9...22)(nil, (9...22), nil, "baz\\\n" + "qux\n")],
+ (22...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/def.txt b/test/yarp/snapshots/whitequark/def.txt
new file mode 100644
index 0000000000..f745476533
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/def.txt
@@ -0,0 +1,83 @@
+ProgramNode(0...93)(
+ [],
+ StatementsNode(0...93)(
+ [DefNode(0...14)(
+ (4...9),
+ nil,
+ nil,
+ nil,
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (11...14)
+ ),
+ DefNode(16...28)(
+ (20...23),
+ nil,
+ nil,
+ nil,
+ [],
+ (16...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ (25...28)
+ ),
+ DefNode(30...45)(
+ (34...40),
+ nil,
+ nil,
+ nil,
+ [],
+ (30...33),
+ nil,
+ nil,
+ nil,
+ nil,
+ (42...45)
+ ),
+ DefNode(47...63)(
+ (51...58),
+ nil,
+ nil,
+ nil,
+ [],
+ (47...50),
+ nil,
+ nil,
+ nil,
+ nil,
+ (60...63)
+ ),
+ DefNode(65...77)(
+ (69...72),
+ nil,
+ nil,
+ nil,
+ [],
+ (65...68),
+ nil,
+ nil,
+ nil,
+ nil,
+ (74...77)
+ ),
+ DefNode(79...93)(
+ (83...88),
+ nil,
+ nil,
+ nil,
+ [],
+ (79...82),
+ nil,
+ nil,
+ nil,
+ nil,
+ (90...93)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/defined.txt b/test/yarp/snapshots/whitequark/defined.txt
new file mode 100644
index 0000000000..8dc2e5493e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/defined.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [DefinedNode(0...13)(
+ nil,
+ InstanceVariableReadNode(9...13)(),
+ nil,
+ (0...8)
+ ),
+ DefinedNode(15...27)(
+ nil,
+ CallNode(24...27)(nil, nil, (24...27), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (15...23)
+ ),
+ DefinedNode(29...42)(
+ (37...38),
+ CallNode(38...41)(nil, nil, (38...41), nil, nil, nil, nil, 0, "foo"),
+ (41...42),
+ (29...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/defs.txt b/test/yarp/snapshots/whitequark/defs.txt
new file mode 100644
index 0000000000..d27de42bf2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/defs.txt
@@ -0,0 +1,74 @@
+ProgramNode(0...100)(
+ [],
+ StatementsNode(0...100)(
+ [DefNode(0...18)(
+ (10...13),
+ ParenthesesNode(4...9)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ (4...5),
+ (8...9)
+ ),
+ nil,
+ nil,
+ [],
+ (0...3),
+ (9...10),
+ nil,
+ nil,
+ nil,
+ (15...18)
+ ),
+ DefNode(20...39)(
+ (31...34),
+ ConstantReadNode(24...30)(),
+ nil,
+ nil,
+ [],
+ (20...23),
+ (30...31),
+ nil,
+ nil,
+ nil,
+ (36...39)
+ ),
+ DefNode(41...61)(
+ (53...56),
+ ConstantReadNode(45...51)(),
+ nil,
+ nil,
+ [],
+ (41...44),
+ (51...53),
+ nil,
+ nil,
+ nil,
+ (58...61)
+ ),
+ DefNode(63...80)(
+ (72...75),
+ SelfNode(67...71)(),
+ nil,
+ nil,
+ [],
+ (63...66),
+ (71...72),
+ nil,
+ nil,
+ nil,
+ (77...80)
+ ),
+ DefNode(82...100)(
+ (92...95),
+ SelfNode(86...90)(),
+ nil,
+ nil,
+ [],
+ (82...85),
+ (90...92),
+ nil,
+ nil,
+ nil,
+ (97...100)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/empty_stmt.txt b/test/yarp/snapshots/whitequark/empty_stmt.txt
new file mode 100644
index 0000000000..bd3eaf5ff4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/empty_stmt.txt
@@ -0,0 +1 @@
+ProgramNode(0...0)([], StatementsNode(0...0)([]))
diff --git a/test/yarp/snapshots/whitequark/endless_comparison_method.txt b/test/yarp/snapshots/whitequark/endless_comparison_method.txt
new file mode 100644
index 0000000000..47f43e8235
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/endless_comparison_method.txt
@@ -0,0 +1,203 @@
+ProgramNode(0...179)(
+ [],
+ StatementsNode(0...179)(
+ [DefNode(0...28)(
+ (4...6),
+ nil,
+ ParametersNode(7...12)(
+ [RequiredParameterNode(7...12)(:other)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(16...28)(
+ [CallNode(16...28)(
+ nil,
+ nil,
+ (16...28),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do_something"
+ )]
+ ),
+ [:other],
+ (0...3),
+ nil,
+ (6...7),
+ (12...13),
+ (14...15),
+ nil
+ ),
+ DefNode(30...58)(
+ (34...36),
+ nil,
+ ParametersNode(37...42)(
+ [RequiredParameterNode(37...42)(:other)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(46...58)(
+ [CallNode(46...58)(
+ nil,
+ nil,
+ (46...58),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do_something"
+ )]
+ ),
+ [:other],
+ (30...33),
+ nil,
+ (36...37),
+ (42...43),
+ (44...45),
+ nil
+ ),
+ DefNode(60...88)(
+ (64...66),
+ nil,
+ ParametersNode(67...72)(
+ [RequiredParameterNode(67...72)(:other)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(76...88)(
+ [CallNode(76...88)(
+ nil,
+ nil,
+ (76...88),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do_something"
+ )]
+ ),
+ [:other],
+ (60...63),
+ nil,
+ (66...67),
+ (72...73),
+ (74...75),
+ nil
+ ),
+ DefNode(90...118)(
+ (94...96),
+ nil,
+ ParametersNode(97...102)(
+ [RequiredParameterNode(97...102)(:other)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(106...118)(
+ [CallNode(106...118)(
+ nil,
+ nil,
+ (106...118),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do_something"
+ )]
+ ),
+ [:other],
+ (90...93),
+ nil,
+ (96...97),
+ (102...103),
+ (104...105),
+ nil
+ ),
+ DefNode(120...149)(
+ (124...127),
+ nil,
+ ParametersNode(128...133)(
+ [RequiredParameterNode(128...133)(:other)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(137...149)(
+ [CallNode(137...149)(
+ nil,
+ nil,
+ (137...149),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do_something"
+ )]
+ ),
+ [:other],
+ (120...123),
+ nil,
+ (127...128),
+ (133...134),
+ (135...136),
+ nil
+ ),
+ DefNode(151...179)(
+ (155...157),
+ nil,
+ ParametersNode(158...163)(
+ [RequiredParameterNode(158...163)(:other)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(167...179)(
+ [CallNode(167...179)(
+ nil,
+ nil,
+ (167...179),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "do_something"
+ )]
+ ),
+ [:other],
+ (151...154),
+ nil,
+ (157...158),
+ (163...164),
+ (165...166),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/endless_method.txt b/test/yarp/snapshots/whitequark/endless_method.txt
new file mode 100644
index 0000000000..24bd704d3c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/endless_method.txt
@@ -0,0 +1,97 @@
+ProgramNode(0...78)(
+ [],
+ StatementsNode(0...78)(
+ [DefNode(0...14)(
+ (4...7),
+ nil,
+ nil,
+ StatementsNode(12...14)([IntegerNode(12...14)()]),
+ [],
+ (0...3),
+ nil,
+ (7...8),
+ (8...9),
+ (10...11),
+ nil
+ ),
+ DefNode(16...34)(
+ (20...23),
+ nil,
+ ParametersNode(24...25)(
+ [RequiredParameterNode(24...25)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(29...34)(
+ [CallNode(29...34)(
+ LocalVariableReadNode(29...30)(:x, 0),
+ nil,
+ (31...32),
+ nil,
+ ArgumentsNode(33...34)([IntegerNode(33...34)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ [:x],
+ (16...19),
+ nil,
+ (23...24),
+ (25...26),
+ (27...28),
+ nil
+ ),
+ DefNode(36...54)(
+ (44...47),
+ CallNode(40...43)(nil, nil, (40...43), nil, nil, nil, nil, 0, "obj"),
+ nil,
+ StatementsNode(52...54)([IntegerNode(52...54)()]),
+ [],
+ (36...39),
+ (43...44),
+ (47...48),
+ (48...49),
+ (50...51),
+ nil
+ ),
+ DefNode(56...78)(
+ (64...67),
+ CallNode(60...63)(nil, nil, (60...63), nil, nil, nil, nil, 0, "obj"),
+ ParametersNode(68...69)(
+ [RequiredParameterNode(68...69)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(73...78)(
+ [CallNode(73...78)(
+ LocalVariableReadNode(73...74)(:x, 0),
+ nil,
+ (75...76),
+ nil,
+ ArgumentsNode(77...78)([IntegerNode(77...78)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ [:x],
+ (56...59),
+ (63...64),
+ (67...68),
+ (69...70),
+ (71...72),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/endless_method_command_syntax.txt b/test/yarp/snapshots/whitequark/endless_method_command_syntax.txt
new file mode 100644
index 0000000000..476b6f34f6
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/endless_method_command_syntax.txt
@@ -0,0 +1,316 @@
+ProgramNode(0...278)(
+ [],
+ StatementsNode(0...278)(
+ [DefNode(0...22)(
+ (4...7),
+ nil,
+ nil,
+ StatementsNode(10...22)(
+ [CallNode(10...22)(
+ nil,
+ nil,
+ (10...14),
+ nil,
+ ArgumentsNode(15...22)(
+ [StringNode(15...22)((15...16), (16...21), (21...22), "Hello")]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ (8...9),
+ nil
+ ),
+ DefNode(24...48)(
+ (28...31),
+ nil,
+ nil,
+ StatementsNode(36...48)(
+ [CallNode(36...48)(
+ nil,
+ nil,
+ (36...40),
+ nil,
+ ArgumentsNode(41...48)(
+ [StringNode(41...48)((41...42), (42...47), (47...48), "Hello")]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ [],
+ (24...27),
+ nil,
+ (31...32),
+ (32...33),
+ (34...35),
+ nil
+ ),
+ DefNode(50...69)(
+ (54...57),
+ nil,
+ ParametersNode(58...59)(
+ [RequiredParameterNode(58...59)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(63...69)(
+ [CallNode(63...69)(
+ nil,
+ nil,
+ (63...67),
+ nil,
+ ArgumentsNode(68...69)([LocalVariableReadNode(68...69)(:x, 0)]),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ [:x],
+ (50...53),
+ nil,
+ (57...58),
+ (59...60),
+ (61...62),
+ nil
+ ),
+ DefNode(71...97)(
+ (79...82),
+ CallNode(75...78)(nil, nil, (75...78), nil, nil, nil, nil, 0, "obj"),
+ nil,
+ StatementsNode(85...97)(
+ [CallNode(85...97)(
+ nil,
+ nil,
+ (85...89),
+ nil,
+ ArgumentsNode(90...97)(
+ [StringNode(90...97)((90...91), (91...96), (96...97), "Hello")]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ [],
+ (71...74),
+ (78...79),
+ nil,
+ nil,
+ (83...84),
+ nil
+ ),
+ DefNode(99...127)(
+ (107...110),
+ CallNode(103...106)(
+ nil,
+ nil,
+ (103...106),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "obj"
+ ),
+ nil,
+ StatementsNode(115...127)(
+ [CallNode(115...127)(
+ nil,
+ nil,
+ (115...119),
+ nil,
+ ArgumentsNode(120...127)(
+ [StringNode(120...127)(
+ (120...121),
+ (121...126),
+ (126...127),
+ "Hello"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ [],
+ (99...102),
+ (106...107),
+ (110...111),
+ (111...112),
+ (113...114),
+ nil
+ ),
+ DefNode(129...152)(
+ (137...140),
+ CallNode(133...136)(
+ nil,
+ nil,
+ (133...136),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "obj"
+ ),
+ ParametersNode(141...142)(
+ [RequiredParameterNode(141...142)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(146...152)(
+ [CallNode(146...152)(
+ nil,
+ nil,
+ (146...150),
+ nil,
+ ArgumentsNode(151...152)(
+ [LocalVariableReadNode(151...152)(:x, 0)]
+ ),
+ nil,
+ nil,
+ 0,
+ "puts"
+ )]
+ ),
+ [:x],
+ (129...132),
+ (136...137),
+ (140...141),
+ (142...143),
+ (144...145),
+ nil
+ ),
+ DefNode(154...214)(
+ (158...165),
+ nil,
+ ParametersNode(166...167)(
+ [RequiredParameterNode(166...167)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(171...214)(
+ [CallNode(171...214)(
+ nil,
+ nil,
+ (171...176),
+ nil,
+ ArgumentsNode(177...214)(
+ [RescueModifierNode(177...214)(
+ StringNode(177...191)(
+ (177...178),
+ (178...190),
+ (190...191),
+ "to be caught"
+ ),
+ (192...198),
+ InterpolatedStringNode(199...214)(
+ (199...200),
+ [StringNode(200...209)(nil, (200...209), nil, "instance "),
+ EmbeddedStatementsNode(209...213)(
+ (209...211),
+ StatementsNode(211...212)(
+ [LocalVariableReadNode(211...212)(:x, 0)]
+ ),
+ (212...213)
+ )],
+ (213...214)
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ )]
+ ),
+ [:x],
+ (154...157),
+ nil,
+ (165...166),
+ (167...168),
+ (169...170),
+ nil
+ ),
+ DefNode(216...278)(
+ (225...232),
+ SelfNode(220...224)(),
+ ParametersNode(233...234)(
+ [RequiredParameterNode(233...234)(:x)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(238...278)(
+ [CallNode(238...278)(
+ nil,
+ nil,
+ (238...243),
+ nil,
+ ArgumentsNode(244...278)(
+ [RescueModifierNode(244...278)(
+ StringNode(244...258)(
+ (244...245),
+ (245...257),
+ (257...258),
+ "to be caught"
+ ),
+ (259...265),
+ InterpolatedStringNode(266...278)(
+ (266...267),
+ [StringNode(267...273)(nil, (267...273), nil, "class "),
+ EmbeddedStatementsNode(273...277)(
+ (273...275),
+ StatementsNode(275...276)(
+ [LocalVariableReadNode(275...276)(:x, 0)]
+ ),
+ (276...277)
+ )],
+ (277...278)
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ )]
+ ),
+ [:x],
+ (216...219),
+ (224...225),
+ (232...233),
+ (234...235),
+ (236...237),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/endless_method_forwarded_args_legacy.txt b/test/yarp/snapshots/whitequark/endless_method_forwarded_args_legacy.txt
new file mode 100644
index 0000000000..87c50ca846
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/endless_method_forwarded_args_legacy.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [DefNode(0...23)(
+ (4...7),
+ nil,
+ ParametersNode(8...11)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(8...11)(),
+ nil
+ ),
+ StatementsNode(15...23)(
+ [CallNode(15...23)(
+ nil,
+ nil,
+ (15...18),
+ (18...19),
+ ArgumentsNode(19...22)([ForwardingArgumentsNode(19...22)()]),
+ (22...23),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:"..."],
+ (0...3),
+ nil,
+ (7...8),
+ (11...12),
+ (13...14),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/endless_method_with_rescue_mod.txt b/test/yarp/snapshots/whitequark/endless_method_with_rescue_mod.txt
new file mode 100644
index 0000000000..ac757efdbb
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/endless_method_with_rescue_mod.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...47)(
+ [],
+ StatementsNode(0...47)(
+ [DefNode(0...20)(
+ (4...5),
+ nil,
+ nil,
+ StatementsNode(10...20)(
+ [RescueModifierNode(10...20)(
+ IntegerNode(10...11)(),
+ (12...18),
+ IntegerNode(19...20)()
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ (5...6),
+ (6...7),
+ (8...9),
+ nil
+ ),
+ DefNode(22...47)(
+ (31...32),
+ SelfNode(26...30)(),
+ nil,
+ StatementsNode(37...47)(
+ [RescueModifierNode(37...47)(
+ IntegerNode(37...38)(),
+ (39...45),
+ IntegerNode(46...47)()
+ )]
+ ),
+ [],
+ (22...25),
+ (30...31),
+ (32...33),
+ (33...34),
+ (35...36),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/endless_method_without_args.txt b/test/yarp/snapshots/whitequark/endless_method_without_args.txt
new file mode 100644
index 0000000000..778c2b595b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/endless_method_without_args.txt
@@ -0,0 +1,69 @@
+ProgramNode(0...86)(
+ [],
+ StatementsNode(0...86)(
+ [DefNode(0...12)(
+ (4...7),
+ nil,
+ nil,
+ StatementsNode(10...12)([IntegerNode(10...12)()]),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ (8...9),
+ nil
+ ),
+ DefNode(14...37)(
+ (18...21),
+ nil,
+ nil,
+ StatementsNode(24...37)(
+ [RescueModifierNode(24...37)(
+ IntegerNode(24...26)(),
+ (27...33),
+ NilNode(34...37)()
+ )]
+ ),
+ [],
+ (14...17),
+ nil,
+ nil,
+ nil,
+ (22...23),
+ nil
+ ),
+ DefNode(39...56)(
+ (48...51),
+ SelfNode(43...47)(),
+ nil,
+ StatementsNode(54...56)([IntegerNode(54...56)()]),
+ [],
+ (39...42),
+ (47...48),
+ nil,
+ nil,
+ (52...53),
+ nil
+ ),
+ DefNode(58...86)(
+ (67...70),
+ SelfNode(62...66)(),
+ nil,
+ StatementsNode(73...86)(
+ [RescueModifierNode(73...86)(
+ IntegerNode(73...75)(),
+ (76...82),
+ NilNode(83...86)()
+ )]
+ ),
+ [],
+ (58...61),
+ (66...67),
+ nil,
+ nil,
+ (71...72),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ensure.txt b/test/yarp/snapshots/whitequark/ensure.txt
new file mode 100644
index 0000000000..2306cc754d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ensure.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [BeginNode(0...29)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ nil,
+ nil,
+ EnsureNode(13...29)(
+ (13...19),
+ StatementsNode(21...24)(
+ [CallNode(21...24)(
+ nil,
+ nil,
+ (21...24),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (26...29)
+ ),
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ensure_empty.txt b/test/yarp/snapshots/whitequark/ensure_empty.txt
new file mode 100644
index 0000000000..39ac8bfea1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ensure_empty.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [BeginNode(0...16)(
+ (0...5),
+ nil,
+ nil,
+ nil,
+ EnsureNode(6...16)((6...12), nil, (13...16)),
+ (13...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/false.txt b/test/yarp/snapshots/whitequark/false.txt
new file mode 100644
index 0000000000..b435f45a62
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/false.txt
@@ -0,0 +1 @@
+ProgramNode(0...5)([], StatementsNode(0...5)([FalseNode(0...5)()]))
diff --git a/test/yarp/snapshots/whitequark/float.txt b/test/yarp/snapshots/whitequark/float.txt
new file mode 100644
index 0000000000..6ad50dfc58
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/float.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...5)(
+ FloatNode(1...5)(),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ FloatNode(7...11)()]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/for.txt b/test/yarp/snapshots/whitequark/for.txt
new file mode 100644
index 0000000000..cb99b7854e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/for.txt
@@ -0,0 +1,59 @@
+ProgramNode(0...48)(
+ [:a],
+ StatementsNode(0...48)(
+ [ForNode(0...24)(
+ MultiWriteNode(4...5)(
+ [LocalVariableWriteNode(4...5)(:a, 0, nil, (4...5), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ CallNode(9...12)(nil, nil, (9...12), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(16...19)(
+ [CallNode(16...19)(
+ nil,
+ nil,
+ (16...17),
+ nil,
+ ArgumentsNode(18...19)([LocalVariableReadNode(18...19)(:a, 0)]),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (0...3),
+ (6...8),
+ (13...15),
+ (21...24)
+ ),
+ ForNode(26...48)(
+ MultiWriteNode(30...31)(
+ [LocalVariableWriteNode(30...31)(:a, 0, nil, (30...31), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ CallNode(35...38)(nil, nil, (35...38), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(40...43)(
+ [CallNode(40...43)(
+ nil,
+ nil,
+ (40...41),
+ nil,
+ ArgumentsNode(42...43)([LocalVariableReadNode(42...43)(:a, 0)]),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (26...29),
+ (32...34),
+ nil,
+ (45...48)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/for_mlhs.txt b/test/yarp/snapshots/whitequark/for_mlhs.txt
new file mode 100644
index 0000000000..53e5f67750
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/for_mlhs.txt
@@ -0,0 +1,36 @@
+ProgramNode(0...28)(
+ [:a, :b],
+ StatementsNode(0...28)(
+ [ForNode(0...28)(
+ MultiWriteNode(4...8)(
+ [LocalVariableWriteNode(4...5)(:a, 0, nil, (4...5), nil),
+ LocalVariableWriteNode(7...8)(:b, 0, nil, (7...8), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(17...23)(
+ [CallNode(17...23)(
+ nil,
+ nil,
+ (17...18),
+ nil,
+ ArgumentsNode(19...23)(
+ [LocalVariableReadNode(19...20)(:a, 0),
+ LocalVariableReadNode(22...23)(:b, 0)]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (0...3),
+ (9...11),
+ nil,
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forward_arg.txt b/test/yarp/snapshots/whitequark/forward_arg.txt
new file mode 100644
index 0000000000..449db10831
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forward_arg.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [DefNode(0...27)(
+ (4...7),
+ nil,
+ ParametersNode(8...11)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(8...11)(),
+ nil
+ ),
+ StatementsNode(14...22)(
+ [CallNode(14...22)(
+ nil,
+ nil,
+ (14...17),
+ (17...18),
+ ArgumentsNode(18...21)([ForwardingArgumentsNode(18...21)()]),
+ (21...22),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:"..."],
+ (0...3),
+ nil,
+ (7...8),
+ (11...12),
+ nil,
+ (24...27)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forward_arg_with_open_args.txt b/test/yarp/snapshots/whitequark/forward_arg_with_open_args.txt
new file mode 100644
index 0000000000..55352e9d70
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forward_arg_with_open_args.txt
@@ -0,0 +1,338 @@
+ProgramNode(0...292)(
+ [],
+ StatementsNode(0...292)(
+ [ParenthesesNode(0...28)(
+ StatementsNode(1...27)(
+ [DefNode(1...27)(
+ (5...8),
+ nil,
+ ParametersNode(9...12)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(9...12)(),
+ nil
+ ),
+ StatementsNode(15...23)(
+ [CallNode(15...23)(
+ nil,
+ nil,
+ (15...18),
+ (18...19),
+ ArgumentsNode(19...22)([ForwardingArgumentsNode(19...22)()]),
+ (22...23),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:"..."],
+ (1...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ (24...27)
+ )]
+ ),
+ (0...1),
+ (27...28)
+ ),
+ ParenthesesNode(30...58)(
+ StatementsNode(31...57)(
+ [DefNode(31...57)(
+ (35...38),
+ nil,
+ ParametersNode(39...42)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(39...42)(),
+ nil
+ ),
+ StatementsNode(44...52)(
+ [CallNode(44...52)(
+ nil,
+ nil,
+ (44...47),
+ (47...48),
+ ArgumentsNode(48...51)([ForwardingArgumentsNode(48...51)()]),
+ (51...52),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:"..."],
+ (31...34),
+ nil,
+ nil,
+ nil,
+ nil,
+ (54...57)
+ )]
+ ),
+ (30...31),
+ (57...58)
+ ),
+ DefNode(60...75)(
+ (64...67),
+ nil,
+ ParametersNode(68...71)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(68...71)(),
+ nil
+ ),
+ nil,
+ [:"..."],
+ (60...63),
+ nil,
+ nil,
+ nil,
+ nil,
+ (72...75)
+ ),
+ DefNode(77...103)(
+ (81...84),
+ nil,
+ ParametersNode(85...88)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(85...88)(),
+ nil
+ ),
+ StatementsNode(90...98)(
+ [CallNode(90...98)(
+ nil,
+ nil,
+ (90...93),
+ (93...94),
+ ArgumentsNode(94...97)([ForwardingArgumentsNode(94...97)()]),
+ (97...98),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:"..."],
+ (77...80),
+ nil,
+ nil,
+ nil,
+ nil,
+ (100...103)
+ ),
+ DefNode(105...134)(
+ (109...112),
+ nil,
+ ParametersNode(113...119)(
+ [RequiredParameterNode(113...114)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(116...119)(),
+ nil
+ ),
+ StatementsNode(122...130)(
+ [CallNode(122...130)(
+ nil,
+ nil,
+ (122...125),
+ (125...126),
+ ArgumentsNode(126...129)([ForwardingArgumentsNode(126...129)()]),
+ (129...130),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:a, :"..."],
+ (105...108),
+ nil,
+ nil,
+ nil,
+ nil,
+ (131...134)
+ ),
+ DefNode(136...165)(
+ (140...143),
+ nil,
+ ParametersNode(144...150)(
+ [RequiredParameterNode(144...145)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(147...150)(),
+ nil
+ ),
+ StatementsNode(152...160)(
+ [CallNode(152...160)(
+ nil,
+ nil,
+ (152...155),
+ (155...156),
+ ArgumentsNode(156...159)([ForwardingArgumentsNode(156...159)()]),
+ (159...160),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:a, :"..."],
+ (136...139),
+ nil,
+ nil,
+ nil,
+ nil,
+ (162...165)
+ ),
+ DefNode(167...192)(
+ (171...174),
+ nil,
+ ParametersNode(175...188)(
+ [RequiredParameterNode(175...176)(:a)],
+ [OptionalParameterNode(178...183)(
+ :b,
+ (178...179),
+ (180...181),
+ IntegerNode(182...183)()
+ )],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(185...188)(),
+ nil
+ ),
+ nil,
+ [:a, :b, :"..."],
+ (167...170),
+ nil,
+ nil,
+ nil,
+ nil,
+ (189...192)
+ ),
+ DefNode(194...227)(
+ (198...201),
+ nil,
+ ParametersNode(202...212)(
+ [],
+ [OptionalParameterNode(202...207)(
+ :b,
+ (202...203),
+ (204...205),
+ IntegerNode(206...207)()
+ )],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(209...212)(),
+ nil
+ ),
+ StatementsNode(215...223)(
+ [CallNode(215...223)(
+ nil,
+ nil,
+ (215...218),
+ (218...219),
+ ArgumentsNode(219...222)([ForwardingArgumentsNode(219...222)()]),
+ (222...223),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:b, :"..."],
+ (194...197),
+ nil,
+ nil,
+ nil,
+ nil,
+ (224...227)
+ ),
+ DefNode(229...262)(
+ (233...236),
+ nil,
+ ParametersNode(237...247)(
+ [],
+ [OptionalParameterNode(237...242)(
+ :b,
+ (237...238),
+ (239...240),
+ IntegerNode(241...242)()
+ )],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(244...247)(),
+ nil
+ ),
+ StatementsNode(249...257)(
+ [CallNode(249...257)(
+ nil,
+ nil,
+ (249...252),
+ (252...253),
+ ArgumentsNode(253...256)([ForwardingArgumentsNode(253...256)()]),
+ (256...257),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:b, :"..."],
+ (229...232),
+ nil,
+ nil,
+ nil,
+ nil,
+ (259...262)
+ ),
+ DefNode(264...292)(
+ (268...271),
+ nil,
+ ParametersNode(272...278)(
+ [RequiredParameterNode(272...273)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(275...278)(),
+ nil
+ ),
+ StatementsNode(280...288)(
+ [CallNode(280...288)(
+ nil,
+ nil,
+ (280...283),
+ (283...284),
+ ArgumentsNode(284...287)([ForwardingArgumentsNode(284...287)()]),
+ (287...288),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:a, :"..."],
+ (264...267),
+ nil,
+ (271...272),
+ (278...279),
+ nil,
+ (289...292)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forward_args_legacy.txt b/test/yarp/snapshots/whitequark/forward_args_legacy.txt
new file mode 100644
index 0000000000..eeaf4f1d53
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forward_args_legacy.txt
@@ -0,0 +1,88 @@
+ProgramNode(0...77)(
+ [],
+ StatementsNode(0...77)(
+ [DefNode(0...27)(
+ (4...7),
+ nil,
+ ParametersNode(8...11)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(8...11)(),
+ nil
+ ),
+ StatementsNode(14...22)(
+ [CallNode(14...22)(
+ nil,
+ nil,
+ (14...17),
+ (17...18),
+ ArgumentsNode(18...21)([ForwardingArgumentsNode(18...21)()]),
+ (21...22),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:"..."],
+ (0...3),
+ nil,
+ (7...8),
+ (11...12),
+ nil,
+ (24...27)
+ ),
+ DefNode(29...46)(
+ (33...36),
+ nil,
+ ParametersNode(37...40)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(37...40)(),
+ nil
+ ),
+ nil,
+ [:"..."],
+ (29...32),
+ nil,
+ (36...37),
+ (40...41),
+ nil,
+ (43...46)
+ ),
+ DefNode(48...77)(
+ (52...55),
+ nil,
+ ParametersNode(56...59)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(56...59)(),
+ nil
+ ),
+ StatementsNode(62...72)(
+ [SuperNode(62...72)(
+ (62...67),
+ (67...68),
+ ArgumentsNode(68...71)([ForwardingArgumentsNode(68...71)()]),
+ (71...72),
+ nil
+ )]
+ ),
+ [:"..."],
+ (48...51),
+ nil,
+ (55...56),
+ (59...60),
+ nil,
+ (74...77)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forwarded_argument_with_kwrestarg.txt b/test/yarp/snapshots/whitequark/forwarded_argument_with_kwrestarg.txt
new file mode 100644
index 0000000000..a751f923c1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forwarded_argument_with_kwrestarg.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...45)(
+ [],
+ StatementsNode(0...45)(
+ [DefNode(0...45)(
+ (4...7),
+ nil,
+ ParametersNode(8...20)(
+ [RequiredParameterNode(8...16)(:argument)],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(18...20)((18...20), nil),
+ nil
+ ),
+ StatementsNode(23...40)(
+ [CallNode(23...40)(
+ nil,
+ nil,
+ (23...26),
+ (26...27),
+ ArgumentsNode(27...39)(
+ [LocalVariableReadNode(27...35)(:argument, 0),
+ KeywordHashNode(37...39)(
+ [AssocSplatNode(37...39)(nil, (37...39))]
+ )]
+ ),
+ (39...40),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:argument, :**],
+ (0...3),
+ nil,
+ (7...8),
+ (20...21),
+ nil,
+ (42...45)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forwarded_argument_with_restarg.txt b/test/yarp/snapshots/whitequark/forwarded_argument_with_restarg.txt
new file mode 100644
index 0000000000..ff0602c398
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forwarded_argument_with_restarg.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [DefNode(0...43)(
+ (4...7),
+ nil,
+ ParametersNode(8...19)(
+ [RequiredParameterNode(8...16)(:argument)],
+ [],
+ [],
+ RestParameterNode(18...19)((18...19), nil),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(22...38)(
+ [CallNode(22...38)(
+ nil,
+ nil,
+ (22...25),
+ (25...26),
+ ArgumentsNode(26...37)(
+ [LocalVariableReadNode(26...34)(:argument, 0),
+ SplatNode(36...37)((36...37), nil)]
+ ),
+ (37...38),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:argument, :*],
+ (0...3),
+ nil,
+ (7...8),
+ (19...20),
+ nil,
+ (40...43)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forwarded_kwrestarg.txt b/test/yarp/snapshots/whitequark/forwarded_kwrestarg.txt
new file mode 100644
index 0000000000..0fcac6a298
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forwarded_kwrestarg.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [DefNode(0...25)(
+ (4...7),
+ nil,
+ ParametersNode(8...10)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(8...10)((8...10), nil),
+ nil
+ ),
+ StatementsNode(13...20)(
+ [CallNode(13...20)(
+ nil,
+ nil,
+ (13...16),
+ (16...17),
+ ArgumentsNode(17...19)(
+ [KeywordHashNode(17...19)(
+ [AssocSplatNode(17...19)(nil, (17...19))]
+ )]
+ ),
+ (19...20),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:**],
+ (0...3),
+ nil,
+ (7...8),
+ (10...11),
+ nil,
+ (22...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt b/test/yarp/snapshots/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt
new file mode 100644
index 0000000000..65f75e723a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forwarded_kwrestarg_with_additional_kwarg.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...41)(
+ [],
+ StatementsNode(0...41)(
+ [DefNode(0...41)(
+ (4...7),
+ nil,
+ ParametersNode(8...10)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(8...10)((8...10), nil),
+ nil
+ ),
+ StatementsNode(13...36)(
+ [CallNode(13...36)(
+ nil,
+ nil,
+ (13...16),
+ (16...17),
+ ArgumentsNode(17...35)(
+ [KeywordHashNode(17...35)(
+ [AssocSplatNode(17...19)(nil, (17...19)),
+ AssocNode(21...35)(
+ SymbolNode(21...30)(nil, (21...29), (29...30), "from_foo"),
+ TrueNode(31...35)(),
+ nil
+ )]
+ )]
+ ),
+ (35...36),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:**],
+ (0...3),
+ nil,
+ (7...8),
+ (10...11),
+ nil,
+ (38...41)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/forwarded_restarg.txt b/test/yarp/snapshots/whitequark/forwarded_restarg.txt
new file mode 100644
index 0000000000..d45b60fc0a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/forwarded_restarg.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [DefNode(0...23)(
+ (4...7),
+ nil,
+ ParametersNode(8...9)(
+ [],
+ [],
+ [],
+ RestParameterNode(8...9)((8...9), nil),
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(12...18)(
+ [CallNode(12...18)(
+ nil,
+ nil,
+ (12...15),
+ (15...16),
+ ArgumentsNode(16...17)([SplatNode(16...17)((16...17), nil)]),
+ (17...18),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:*],
+ (0...3),
+ nil,
+ (7...8),
+ (9...10),
+ nil,
+ (20...23)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/gvar.txt b/test/yarp/snapshots/whitequark/gvar.txt
new file mode 100644
index 0000000000..2ac61ed4f4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/gvar.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)([GlobalVariableReadNode(0...4)()])
+)
diff --git a/test/yarp/snapshots/whitequark/gvasgn.txt b/test/yarp/snapshots/whitequark/gvasgn.txt
new file mode 100644
index 0000000000..d6a5327590
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/gvasgn.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [GlobalVariableWriteNode(0...9)((0...4), (5...6), IntegerNode(7...9)())]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/hash_empty.txt b/test/yarp/snapshots/whitequark/hash_empty.txt
new file mode 100644
index 0000000000..b06b9d299b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/hash_empty.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)([HashNode(0...3)((0...1), [], (2...3))])
+)
diff --git a/test/yarp/snapshots/whitequark/hash_hashrocket.txt b/test/yarp/snapshots/whitequark/hash_hashrocket.txt
new file mode 100644
index 0000000000..9b96268c01
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/hash_hashrocket.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [HashNode(0...10)(
+ (0...1),
+ [AssocNode(2...8)(IntegerNode(2...3)(), IntegerNode(7...8)(), (4...6))],
+ (9...10)
+ ),
+ HashNode(12...37)(
+ (12...13),
+ [AssocNode(14...20)(
+ IntegerNode(14...15)(),
+ IntegerNode(19...20)(),
+ (16...18)
+ ),
+ AssocNode(22...35)(
+ SymbolNode(22...26)((22...23), (23...26), nil, "foo"),
+ StringNode(30...35)((30...31), (31...34), (34...35), "bar"),
+ (27...29)
+ )],
+ (36...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/hash_kwsplat.txt b/test/yarp/snapshots/whitequark/hash_kwsplat.txt
new file mode 100644
index 0000000000..ee33876082
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/hash_kwsplat.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [HashNode(0...17)(
+ (0...1),
+ [AssocNode(2...8)(
+ SymbolNode(2...6)(nil, (2...5), (5...6), "foo"),
+ IntegerNode(7...8)(),
+ nil
+ ),
+ AssocSplatNode(10...15)(
+ CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "bar"),
+ (10...12)
+ )],
+ (16...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/hash_label.txt b/test/yarp/snapshots/whitequark/hash_label.txt
new file mode 100644
index 0000000000..cfebb4b70c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/hash_label.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [HashNode(0...10)(
+ (0...1),
+ [AssocNode(2...8)(
+ SymbolNode(2...6)(nil, (2...5), (5...6), "foo"),
+ IntegerNode(7...8)(),
+ nil
+ )],
+ (9...10)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/hash_label_end.txt b/test/yarp/snapshots/whitequark/hash_label_end.txt
new file mode 100644
index 0000000000..7e208d4d84
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/hash_label_end.txt
@@ -0,0 +1,53 @@
+ProgramNode(0...50)(
+ [],
+ StatementsNode(0...50)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...1),
+ (1...2),
+ ArgumentsNode(2...11)(
+ [IfNode(2...11)(
+ nil,
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "a"),
+ StatementsNode(6...9)(
+ [StringNode(6...9)((6...7), (7...8), (8...9), "a")]
+ ),
+ ElseNode(9...11)(
+ (9...10),
+ StatementsNode(10...11)([IntegerNode(10...11)()]),
+ nil
+ ),
+ nil
+ )]
+ ),
+ (11...12),
+ nil,
+ 0,
+ "f"
+ ),
+ HashNode(14...26)(
+ (14...15),
+ [AssocNode(16...24)(
+ SymbolNode(16...22)((16...17), (17...20), (20...22), "foo"),
+ IntegerNode(23...24)(),
+ nil
+ )],
+ (25...26)
+ ),
+ HashNode(28...50)(
+ (28...29),
+ [AssocNode(30...38)(
+ SymbolNode(30...36)((30...31), (31...34), (34...36), "foo"),
+ IntegerNode(37...38)(),
+ nil
+ ),
+ AssocNode(40...49)(
+ SymbolNode(40...46)((40...41), (41...44), (44...46), "bar"),
+ HashNode(47...49)((47...48), [], (48...49)),
+ nil
+ )],
+ (49...50)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/hash_pair_value_omission.txt b/test/yarp/snapshots/whitequark/hash_pair_value_omission.txt
new file mode 100644
index 0000000000..825fe1beaa
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/hash_pair_value_omission.txt
@@ -0,0 +1,37 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [HashNode(0...6)(
+ (0...1),
+ [AssocNode(1...5)(
+ SymbolNode(1...5)(nil, (1...4), (4...5), "BAR"),
+ nil,
+ nil
+ )],
+ (5...6)
+ ),
+ HashNode(8...16)(
+ (8...9),
+ [AssocNode(9...11)(
+ SymbolNode(9...11)(nil, (9...10), (10...11), "a"),
+ nil,
+ nil
+ ),
+ AssocNode(13...15)(
+ SymbolNode(13...15)(nil, (13...14), (14...15), "b"),
+ nil,
+ nil
+ )],
+ (15...16)
+ ),
+ HashNode(18...25)(
+ (18...19),
+ [AssocNode(19...24)(
+ SymbolNode(19...24)(nil, (19...23), (23...24), "puts"),
+ nil,
+ nil
+ )],
+ (24...25)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/heredoc.txt b/test/yarp/snapshots/whitequark/heredoc.txt
new file mode 100644
index 0000000000..ca45278d3c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/heredoc.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...66)(
+ [],
+ StatementsNode(0...66)(
+ [InterpolatedStringNode(0...22)(
+ (0...8),
+ [StringNode(9...17)(nil, (9...17), nil, "foo\n" + "bar\n")],
+ (17...22)
+ ),
+ InterpolatedStringNode(23...43)(
+ (23...29),
+ [StringNode(30...38)(nil, (30...38), nil, "foo\n" + "bar\n")],
+ (38...43)
+ ),
+ InterpolatedXStringNode(44...66)(
+ (44...52),
+ [StringNode(53...61)(nil, (53...61), nil, "foo\n" + "bar\n")],
+ (61...66)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if.txt b/test/yarp/snapshots/whitequark/if.txt
new file mode 100644
index 0000000000..4d830abafe
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...38)(
+ [],
+ StatementsNode(0...38)(
+ [IfNode(0...20)(
+ (0...2),
+ CallNode(3...6)(nil, nil, (3...6), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(12...15)(
+ [CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ (17...20)
+ ),
+ IfNode(22...38)(
+ (22...24),
+ CallNode(25...28)(nil, nil, (25...28), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(30...33)(
+ [CallNode(30...33)(nil, nil, (30...33), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ (35...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if_else.txt b/test/yarp/snapshots/whitequark/if_else.txt
new file mode 100644
index 0000000000..936195e8da
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if_else.txt
@@ -0,0 +1,55 @@
+ProgramNode(0...58)(
+ [],
+ StatementsNode(0...58)(
+ [IfNode(0...30)(
+ (0...2),
+ CallNode(3...6)(nil, nil, (3...6), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(12...15)(
+ [CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "bar")]
+ ),
+ ElseNode(17...30)(
+ (17...21),
+ StatementsNode(22...25)(
+ [CallNode(22...25)(
+ nil,
+ nil,
+ (22...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (27...30)
+ ),
+ (27...30)
+ ),
+ IfNode(32...58)(
+ (32...34),
+ CallNode(35...38)(nil, nil, (35...38), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(40...43)(
+ [CallNode(40...43)(nil, nil, (40...43), nil, nil, nil, nil, 0, "bar")]
+ ),
+ ElseNode(45...58)(
+ (45...49),
+ StatementsNode(50...53)(
+ [CallNode(50...53)(
+ nil,
+ nil,
+ (50...53),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (55...58)
+ ),
+ (55...58)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if_elsif.txt b/test/yarp/snapshots/whitequark/if_elsif.txt
new file mode 100644
index 0000000000..35add80565
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if_elsif.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...38)(
+ [],
+ StatementsNode(0...38)(
+ [IfNode(0...38)(
+ (0...2),
+ CallNode(3...6)(nil, nil, (3...6), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(8...11)(
+ [CallNode(8...11)(nil, nil, (8...11), nil, nil, nil, nil, 0, "bar")]
+ ),
+ IfNode(13...38)(
+ (13...18),
+ CallNode(19...22)(nil, nil, (19...22), nil, nil, nil, nil, 0, "baz"),
+ StatementsNode(24...25)([IntegerNode(24...25)()]),
+ ElseNode(27...38)(
+ (27...31),
+ StatementsNode(32...33)([IntegerNode(32...33)()]),
+ (35...38)
+ ),
+ (35...38)
+ ),
+ (35...38)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if_masgn__24.txt b/test/yarp/snapshots/whitequark/if_masgn__24.txt
new file mode 100644
index 0000000000..59b556f604
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if_masgn__24.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...20)(
+ [:a, :b],
+ StatementsNode(0...20)(
+ [IfNode(0...20)(
+ (0...2),
+ ParenthesesNode(3...15)(
+ StatementsNode(4...14)(
+ [MultiWriteNode(4...14)(
+ [LocalVariableWriteNode(4...5)(:a, 0, nil, (4...5), nil),
+ LocalVariableWriteNode(7...8)(:b, 0, nil, (7...8), nil)],
+ (9...10),
+ CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (3...4),
+ (14...15)
+ ),
+ nil,
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if_mod.txt b/test/yarp/snapshots/whitequark/if_mod.txt
new file mode 100644
index 0000000000..5325b8660a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if_mod.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [IfNode(0...10)(
+ (4...6),
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(0...3)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if_nl_then.txt b/test/yarp/snapshots/whitequark/if_nl_then.txt
new file mode 100644
index 0000000000..0dae26ffdf
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if_nl_then.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [IfNode(0...19)(
+ (0...2),
+ CallNode(3...6)(nil, nil, (3...6), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(12...15)(
+ [CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ (16...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt b/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt
new file mode 100644
index 0000000000..afa047c4f8
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/if_while_after_class__since_32.txt
@@ -0,0 +1,83 @@
+ProgramNode(0...178)(
+ [],
+ StatementsNode(0...178)(
+ [ClassNode(0...38)(
+ [],
+ (0...5),
+ ConstantPathNode(6...33)(
+ IfNode(6...25)(
+ (6...8),
+ TrueNode(9...13)(),
+ StatementsNode(15...21)([ConstantReadNode(15...21)()]),
+ nil,
+ (22...25)
+ ),
+ ConstantReadNode(27...33)(),
+ (25...27)
+ ),
+ nil,
+ nil,
+ nil,
+ (35...38)
+ ),
+ ClassNode(40...87)(
+ [],
+ (40...45),
+ ConstantPathNode(46...82)(
+ WhileNode(46...74)(
+ (46...51),
+ TrueNode(52...56)(),
+ StatementsNode(58...70)(
+ [BreakNode(58...70)(
+ ArgumentsNode(64...70)([ConstantReadNode(64...70)()]),
+ (58...63)
+ )]
+ )
+ ),
+ ConstantReadNode(76...82)(),
+ (74...76)
+ ),
+ nil,
+ nil,
+ nil,
+ (84...87)
+ ),
+ ModuleNode(89...128)(
+ [],
+ (89...95),
+ ConstantPathNode(96...123)(
+ IfNode(96...115)(
+ (96...98),
+ TrueNode(99...103)(),
+ StatementsNode(105...111)([ConstantReadNode(105...111)()]),
+ nil,
+ (112...115)
+ ),
+ ConstantReadNode(117...123)(),
+ (115...117)
+ ),
+ nil,
+ (125...128)
+ ),
+ ModuleNode(130...178)(
+ [],
+ (130...136),
+ ConstantPathNode(137...173)(
+ WhileNode(137...165)(
+ (137...142),
+ TrueNode(143...147)(),
+ StatementsNode(149...161)(
+ [BreakNode(149...161)(
+ ArgumentsNode(155...161)([ConstantReadNode(155...161)()]),
+ (149...154)
+ )]
+ )
+ ),
+ ConstantReadNode(167...173)(),
+ (165...167)
+ ),
+ nil,
+ (175...178)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/int.txt b/test/yarp/snapshots/whitequark/int.txt
new file mode 100644
index 0000000000..c388070c41
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/int.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [IntegerNode(0...3)(),
+ CallNode(5...8)(
+ IntegerNode(6...8)(),
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ IntegerNode(10...12)()]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/int___LINE__.txt b/test/yarp/snapshots/whitequark/int___LINE__.txt
new file mode 100644
index 0000000000..0f6e7aa884
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/int___LINE__.txt
@@ -0,0 +1 @@
+ProgramNode(0...8)([], StatementsNode(0...8)([SourceLineNode(0...8)()]))
diff --git a/test/yarp/snapshots/whitequark/interp_digit_var.txt b/test/yarp/snapshots/whitequark/interp_digit_var.txt
new file mode 100644
index 0000000000..0cf76b470b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/interp_digit_var.txt
@@ -0,0 +1,131 @@
+ProgramNode(1...444)(
+ [],
+ StatementsNode(1...444)(
+ [StringNode(1...6)((1...2), (2...5), (5...6), "\#@1"),
+ StringNode(9...15)((9...10), (10...14), (14...15), "\#@@1"),
+ ArrayNode(18...25)(
+ [SymbolNode(21...24)(nil, (21...24), nil, "\#@1")],
+ (18...21),
+ (24...25)
+ ),
+ ArrayNode(28...36)(
+ [SymbolNode(31...35)(nil, (31...35), nil, "\#@@1")],
+ (28...31),
+ (35...36)
+ ),
+ StringNode(39...46)((39...42), (42...45), (45...46), "\#@1"),
+ StringNode(49...57)((49...52), (52...56), (56...57), "\#@@1"),
+ ArrayNode(60...67)(
+ [StringNode(63...66)(nil, (63...66), nil, "\#@1")],
+ (60...63),
+ (66...67)
+ ),
+ ArrayNode(70...78)(
+ [StringNode(73...77)(nil, (73...77), nil, "\#@@1")],
+ (70...73),
+ (77...78)
+ ),
+ ArrayNode(81...90)(
+ [SymbolNode(85...88)(nil, (85...88), nil, "\#@1")],
+ (81...84),
+ (89...90)
+ ),
+ ArrayNode(93...103)(
+ [SymbolNode(97...101)(nil, (97...101), nil, "\#@@1")],
+ (93...96),
+ (102...103)
+ ),
+ StringNode(106...113)((106...109), (109...112), (112...113), "\#@1"),
+ StringNode(116...124)((116...119), (119...123), (123...124), "\#@@1"),
+ RegularExpressionNode(127...134)(
+ (127...130),
+ (130...133),
+ (133...134),
+ "\#@1",
+ 0
+ ),
+ RegularExpressionNode(137...145)(
+ (137...140),
+ (140...144),
+ (144...145),
+ "\#@@1",
+ 0
+ ),
+ SymbolNode(148...155)((148...151), (151...154), (154...155), "\#@1"),
+ SymbolNode(158...166)((158...161), (161...165), (165...166), "\#@@1"),
+ ArrayNode(169...178)(
+ [StringNode(173...176)(nil, (173...176), nil, "\#@1")],
+ (169...172),
+ (177...178)
+ ),
+ ArrayNode(181...191)(
+ [StringNode(185...189)(nil, (185...189), nil, "\#@@1")],
+ (181...184),
+ (190...191)
+ ),
+ XStringNode(194...201)((194...197), (197...200), (200...201), "\#@1"),
+ XStringNode(204...212)((204...207), (207...211), (211...212), "\#@@1"),
+ StringNode(215...221)((215...217), (217...220), (220...221), "\#@1"),
+ StringNode(224...231)((224...226), (226...230), (230...231), "\#@@1"),
+ StringNode(234...239)((234...235), (235...238), (238...239), "\#@1"),
+ StringNode(242...248)((242...243), (243...247), (247...248), "\#@@1"),
+ RegularExpressionNode(251...256)(
+ (251...252),
+ (252...255),
+ (255...256),
+ "\#@1",
+ 0
+ ),
+ RegularExpressionNode(259...265)(
+ (259...260),
+ (260...264),
+ (264...265),
+ "\#@@1",
+ 0
+ ),
+ InterpolatedSymbolNode(268...274)(
+ (268...270),
+ [StringNode(270...273)(nil, (270...273), nil, "\#@1")],
+ (273...274)
+ ),
+ InterpolatedSymbolNode(277...284)(
+ (277...279),
+ [StringNode(279...283)(nil, (279...283), nil, "\#@@1")],
+ (283...284)
+ ),
+ SymbolNode(287...293)((287...289), (289...292), (292...293), "\#@1"),
+ SymbolNode(296...303)((296...298), (298...302), (302...303), "\#@@1"),
+ XStringNode(306...311)((306...307), (307...310), (310...311), "\#@1"),
+ XStringNode(314...320)((314...315), (315...319), (319...320), "\#@@1"),
+ InterpolatedStringNode(322...341)(
+ (322...331),
+ [StringNode(332...336)(nil, (332...336), nil, "\#@1\n")],
+ (336...341)
+ ),
+ InterpolatedStringNode(342...362)(
+ (342...351),
+ [StringNode(352...357)(nil, (352...357), nil, "\#@@1\n")],
+ (357...362)
+ ),
+ InterpolatedStringNode(363...382)(
+ (363...372),
+ [StringNode(373...377)(nil, (373...377), nil, "\#@1\n")],
+ (377...382)
+ ),
+ InterpolatedStringNode(383...403)(
+ (383...392),
+ [StringNode(393...398)(nil, (393...398), nil, "\#@@1\n")],
+ (398...403)
+ ),
+ InterpolatedXStringNode(404...423)(
+ (404...413),
+ [StringNode(414...418)(nil, (414...418), nil, "\#@1\n")],
+ (418...423)
+ ),
+ InterpolatedXStringNode(424...444)(
+ (424...433),
+ [StringNode(434...439)(nil, (434...439), nil, "\#@@1\n")],
+ (439...444)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ivar.txt b/test/yarp/snapshots/whitequark/ivar.txt
new file mode 100644
index 0000000000..88bb2ace35
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ivar.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)([InstanceVariableReadNode(0...4)()])
+)
diff --git a/test/yarp/snapshots/whitequark/ivasgn.txt b/test/yarp/snapshots/whitequark/ivasgn.txt
new file mode 100644
index 0000000000..4f6f90bbd7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ivasgn.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [InstanceVariableWriteNode(0...9)((0...4), IntegerNode(7...9)(), (5...6))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/keyword_argument_omission.txt b/test/yarp/snapshots/whitequark/keyword_argument_omission.txt
new file mode 100644
index 0000000000..c1b3b8800d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/keyword_argument_omission.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...3),
+ (3...4),
+ ArgumentsNode(4...10)(
+ [KeywordHashNode(4...10)(
+ [AssocNode(4...6)(
+ SymbolNode(4...6)(nil, (4...5), (5...6), "a"),
+ nil,
+ nil
+ ),
+ AssocNode(8...10)(
+ SymbolNode(8...10)(nil, (8...9), (9...10), "b"),
+ nil,
+ nil
+ )]
+ )]
+ ),
+ (10...11),
+ nil,
+ 0,
+ "foo"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwarg.txt b/test/yarp/snapshots/whitequark/kwarg.txt
new file mode 100644
index 0000000000..d096caece0
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwarg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [DefNode(0...16)(
+ (4...5),
+ nil,
+ ParametersNode(6...10)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...10)((6...10), nil)],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (0...3),
+ nil,
+ (5...6),
+ (10...11),
+ nil,
+ (13...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwbegin_compstmt.txt b/test/yarp/snapshots/whitequark/kwbegin_compstmt.txt
new file mode 100644
index 0000000000..0d05407aad
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwbegin_compstmt.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [BeginNode(0...20)(
+ (0...5),
+ StatementsNode(6...16)(
+ [CallNode(6...10)(nil, nil, (6...10), nil, nil, nil, nil, 0, "foo!"),
+ CallNode(12...16)(
+ nil,
+ nil,
+ (12...16),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar!"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (17...20)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwnilarg.txt b/test/yarp/snapshots/whitequark/kwnilarg.txt
new file mode 100644
index 0000000000..d7ca269299
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwnilarg.txt
@@ -0,0 +1,75 @@
+ProgramNode(0...46)(
+ [],
+ StatementsNode(0...46)(
+ [LambdaNode(0...12)(
+ [],
+ (0...2),
+ BlockParametersNode(2...9)(
+ ParametersNode(3...8)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ NoKeywordsParameterNode(3...8)((3...5), (5...8)),
+ nil
+ ),
+ [],
+ (2...3),
+ (8...9)
+ ),
+ nil
+ ),
+ DefNode(14...31)(
+ (18...19),
+ nil,
+ ParametersNode(20...25)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ NoKeywordsParameterNode(20...25)((20...22), (22...25)),
+ nil
+ ),
+ nil,
+ [],
+ (14...17),
+ nil,
+ (19...20),
+ (25...26),
+ nil,
+ (28...31)
+ ),
+ CallNode(33...46)(
+ nil,
+ nil,
+ (33...34),
+ nil,
+ nil,
+ nil,
+ BlockNode(35...46)(
+ [],
+ BlockParametersNode(37...44)(
+ ParametersNode(38...43)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ NoKeywordsParameterNode(38...43)((38...40), (40...43)),
+ nil
+ ),
+ [],
+ (37...38),
+ (43...44)
+ ),
+ nil,
+ (35...36),
+ (45...46)
+ ),
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwoptarg.txt b/test/yarp/snapshots/whitequark/kwoptarg.txt
new file mode 100644
index 0000000000..9514567387
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwoptarg.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [DefNode(0...18)(
+ (4...5),
+ nil,
+ ParametersNode(6...12)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...12)((6...10), IntegerNode(11...12)())],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (0...3),
+ nil,
+ (5...6),
+ (12...13),
+ nil,
+ (15...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt b/test/yarp/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
new file mode 100644
index 0000000000..14fd8da395
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwoptarg_with_kwrestarg_and_forwarded_args.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [DefNode(0...28)(
+ (4...5),
+ nil,
+ ParametersNode(6...16)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...12)((6...8), NilNode(9...12)())],
+ KeywordRestParameterNode(14...16)((14...16), nil),
+ nil
+ ),
+ StatementsNode(19...24)(
+ [CallNode(19...24)(
+ nil,
+ nil,
+ (19...20),
+ (20...21),
+ ArgumentsNode(21...23)(
+ [KeywordHashNode(21...23)(
+ [AssocSplatNode(21...23)(nil, (21...23))]
+ )]
+ ),
+ (23...24),
+ nil,
+ 0,
+ "b"
+ )]
+ ),
+ [:a, :**],
+ (0...3),
+ nil,
+ (5...6),
+ (16...17),
+ nil,
+ (25...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwrestarg_named.txt b/test/yarp/snapshots/whitequark/kwrestarg_named.txt
new file mode 100644
index 0000000000..591c59dfba
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwrestarg_named.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [DefNode(0...17)(
+ (4...5),
+ nil,
+ ParametersNode(6...11)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(6...11)((6...8), (8...11)),
+ nil
+ ),
+ nil,
+ [:foo],
+ (0...3),
+ nil,
+ (5...6),
+ (11...12),
+ nil,
+ (14...17)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/kwrestarg_unnamed.txt b/test/yarp/snapshots/whitequark/kwrestarg_unnamed.txt
new file mode 100644
index 0000000000..57bf8cc8b4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/kwrestarg_unnamed.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [DefNode(0...14)(
+ (4...5),
+ nil,
+ ParametersNode(6...8)(
+ [],
+ [],
+ [],
+ nil,
+ [],
+ KeywordRestParameterNode(6...8)((6...8), nil),
+ nil
+ ),
+ nil,
+ [:**],
+ (0...3),
+ nil,
+ (5...6),
+ (8...9),
+ nil,
+ (11...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/lbrace_arg_after_command_args.txt b/test/yarp/snapshots/whitequark/lbrace_arg_after_command_args.txt
new file mode 100644
index 0000000000..0b2c12417d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/lbrace_arg_after_command_args.txt
@@ -0,0 +1,42 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [CallNode(0...22)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...8)(
+ [ParenthesesNode(4...8)(
+ StatementsNode(5...7)(
+ [SymbolNode(5...7)((5...6), (6...7), nil, "a")]
+ ),
+ (4...5),
+ (7...8)
+ )]
+ ),
+ nil,
+ BlockNode(9...22)(
+ [],
+ nil,
+ StatementsNode(11...20)(
+ [CallNode(11...20)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ BlockNode(13...20)([], nil, nil, (13...15), (17...20)),
+ 0,
+ "m"
+ )]
+ ),
+ (9...10),
+ (21...22)
+ ),
+ 0,
+ "let"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/lparenarg_after_lvar__since_25.txt b/test/yarp/snapshots/whitequark/lparenarg_after_lvar__since_25.txt
new file mode 100644
index 0000000000..c55c1d3c8a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/lparenarg_after_lvar__since_25.txt
@@ -0,0 +1,83 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...14)(
+ [CallNode(4...14)(
+ ParenthesesNode(4...10)(
+ StatementsNode(5...9)(
+ [CallNode(5...9)(
+ FloatNode(6...9)(),
+ nil,
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ ),
+ (4...5),
+ (9...10)
+ ),
+ (10...11),
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "abs"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ CallNode(16...31)(
+ nil,
+ nil,
+ (16...20),
+ nil,
+ ArgumentsNode(21...31)(
+ [CallNode(21...31)(
+ ParenthesesNode(21...27)(
+ StatementsNode(22...26)(
+ [CallNode(22...26)(
+ FloatNode(23...26)(),
+ nil,
+ (22...23),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ ),
+ (21...22),
+ (26...27)
+ ),
+ (27...28),
+ (28...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "abs"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/lvar.txt b/test/yarp/snapshots/whitequark/lvar.txt
new file mode 100644
index 0000000000..fc27a87f84
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/lvar.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/lvar_injecting_match.txt b/test/yarp/snapshots/whitequark/lvar_injecting_match.txt
new file mode 100644
index 0000000000..924b997bc7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/lvar_injecting_match.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...31)(
+ [:match],
+ StatementsNode(0...31)(
+ [CallNode(0...24)(
+ RegularExpressionNode(0...15)(
+ (0...1),
+ (1...14),
+ (14...15),
+ "(?<match>bar)",
+ 0
+ ),
+ nil,
+ (16...18),
+ nil,
+ ArgumentsNode(19...24)(
+ [StringNode(19...24)((19...20), (20...23), (23...24), "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ LocalVariableReadNode(26...31)(:match, 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/lvasgn.txt b/test/yarp/snapshots/whitequark/lvasgn.txt
new file mode 100644
index 0000000000..403c7f8042
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/lvasgn.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...13)(
+ [:var],
+ StatementsNode(0...13)(
+ [LocalVariableWriteNode(0...8)(
+ :var,
+ 0,
+ IntegerNode(6...8)(),
+ (0...3),
+ (4...5)
+ ),
+ LocalVariableReadNode(10...13)(:var, 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/masgn.txt b/test/yarp/snapshots/whitequark/masgn.txt
new file mode 100644
index 0000000000..9945a348c1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/masgn.txt
@@ -0,0 +1,42 @@
+ProgramNode(1...56)(
+ [:foo, :bar, :baz],
+ StatementsNode(1...56)(
+ [MultiWriteNode(1...17)(
+ [LocalVariableWriteNode(1...4)(:foo, 0, nil, (1...4), nil),
+ LocalVariableWriteNode(6...9)(:bar, 0, nil, (6...9), nil)],
+ (11...12),
+ ArrayNode(13...17)(
+ [IntegerNode(13...14)(), IntegerNode(16...17)()],
+ nil,
+ nil
+ ),
+ (0...1),
+ (9...10)
+ ),
+ MultiWriteNode(19...34)(
+ [LocalVariableWriteNode(19...22)(:foo, 0, nil, (19...22), nil),
+ LocalVariableWriteNode(24...27)(:bar, 0, nil, (24...27), nil)],
+ (28...29),
+ ArrayNode(30...34)(
+ [IntegerNode(30...31)(), IntegerNode(33...34)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(36...56)(
+ [LocalVariableWriteNode(36...39)(:foo, 0, nil, (36...39), nil),
+ LocalVariableWriteNode(41...44)(:bar, 0, nil, (41...44), nil),
+ LocalVariableWriteNode(46...49)(:baz, 0, nil, (46...49), nil)],
+ (50...51),
+ ArrayNode(52...56)(
+ [IntegerNode(52...53)(), IntegerNode(55...56)()],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/masgn_attr.txt b/test/yarp/snapshots/whitequark/masgn_attr.txt
new file mode 100644
index 0000000000..c5ab22eb0e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/masgn_attr.txt
@@ -0,0 +1,71 @@
+ProgramNode(0...63)(
+ [:foo],
+ StatementsNode(0...63)(
+ [MultiWriteNode(0...17)(
+ [CallNode(0...6)(
+ SelfNode(0...4)(),
+ (4...5),
+ (5...6),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "A="
+ ),
+ LocalVariableWriteNode(8...11)(:foo, 0, nil, (8...11), nil)],
+ (12...13),
+ LocalVariableReadNode(14...17)(:foo, 0),
+ nil,
+ nil
+ ),
+ MultiWriteNode(19...43)(
+ [CallNode(19...25)(
+ SelfNode(19...23)(),
+ (23...24),
+ (24...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ CallNode(27...37)(
+ SelfNode(27...31)(),
+ nil,
+ (31...37),
+ (31...32),
+ ArgumentsNode(32...36)(
+ [IntegerNode(32...33)(), IntegerNode(35...36)()]
+ ),
+ (36...37),
+ nil,
+ 0,
+ "[]="
+ )],
+ (38...39),
+ LocalVariableReadNode(40...43)(:foo, 0),
+ nil,
+ nil
+ ),
+ MultiWriteNode(45...63)(
+ [CallNode(45...52)(
+ SelfNode(45...49)(),
+ (49...51),
+ (51...52),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ LocalVariableWriteNode(54...57)(:foo, 0, nil, (54...57), nil)],
+ (58...59),
+ LocalVariableReadNode(60...63)(:foo, 0),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/masgn_cmd.txt b/test/yarp/snapshots/whitequark/masgn_cmd.txt
new file mode 100644
index 0000000000..1ca3b64a0a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/masgn_cmd.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...16)(
+ [:foo, :bar],
+ StatementsNode(0...16)(
+ [MultiWriteNode(0...16)(
+ [LocalVariableWriteNode(0...3)(:foo, 0, nil, (0...3), nil),
+ LocalVariableWriteNode(5...8)(:bar, 0, nil, (5...8), nil)],
+ (9...10),
+ CallNode(11...16)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ ArgumentsNode(13...16)([LocalVariableReadNode(13...16)(:foo, 0)]),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/masgn_const.txt b/test/yarp/snapshots/whitequark/masgn_const.txt
new file mode 100644
index 0000000000..4db22ceb7a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/masgn_const.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...34)(
+ [:foo],
+ StatementsNode(0...34)(
+ [MultiWriteNode(0...14)(
+ [ConstantPathWriteNode(0...3)(
+ ConstantPathNode(0...3)(nil, ConstantReadNode(2...3)(), (0...2)),
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(5...8)(:foo, 0, nil, (5...8), nil)],
+ (9...10),
+ LocalVariableReadNode(11...14)(:foo, 0),
+ nil,
+ nil
+ ),
+ MultiWriteNode(16...34)(
+ [ConstantPathWriteNode(16...23)(
+ ConstantPathNode(16...23)(
+ SelfNode(16...20)(),
+ ConstantReadNode(22...23)(),
+ (20...22)
+ ),
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(25...28)(:foo, 0, nil, (25...28), nil)],
+ (29...30),
+ LocalVariableReadNode(31...34)(:foo, 0),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/masgn_nested.txt b/test/yarp/snapshots/whitequark/masgn_nested.txt
new file mode 100644
index 0000000000..6321eaa74a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/masgn_nested.txt
@@ -0,0 +1,34 @@
+ProgramNode(2...30)(
+ [:b, :a, :c],
+ StatementsNode(2...30)(
+ [MultiWriteNode(2...13)(
+ [MultiWriteNode(2...4)(
+ [LocalVariableWriteNode(2...3)(:b, 0, nil, (2...3), nil),
+ SplatNode(3...4)((3...4), nil)],
+ nil,
+ nil,
+ (1...2),
+ (5...6)
+ )],
+ (8...9),
+ CallNode(10...13)(nil, nil, (10...13), nil, nil, nil, nil, 0, "foo"),
+ (0...1),
+ (6...7)
+ ),
+ MultiWriteNode(15...30)(
+ [LocalVariableWriteNode(15...16)(:a, 0, nil, (15...16), nil),
+ MultiWriteNode(19...24)(
+ [LocalVariableWriteNode(19...20)(:b, 0, nil, (19...20), nil),
+ LocalVariableWriteNode(22...23)(:c, 0, nil, (22...23), nil)],
+ nil,
+ nil,
+ (18...19),
+ (23...24)
+ )],
+ (25...26),
+ CallNode(27...30)(nil, nil, (27...30), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/masgn_splat.txt b/test/yarp/snapshots/whitequark/masgn_splat.txt
new file mode 100644
index 0000000000..a20c9a1919
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/masgn_splat.txt
@@ -0,0 +1,161 @@
+ProgramNode(0...139)(
+ [:c, :d, :b, :a],
+ StatementsNode(0...139)(
+ [MultiWriteNode(0...7)(
+ [SplatNode(0...1)((0...1), nil)],
+ (2...3),
+ CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ nil
+ ),
+ MultiWriteNode(9...22)(
+ [MultiWriteNode(9...10)(
+ [SplatNode(9...10)((9...10), nil)],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(12...13)(:c, 0, nil, (12...13), nil),
+ LocalVariableWriteNode(15...16)(:d, 0, nil, (15...16), nil)],
+ (17...18),
+ CallNode(19...22)(nil, nil, (19...22), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ nil
+ ),
+ MultiWriteNode(24...32)(
+ [SplatNode(24...26)(
+ (24...25),
+ LocalVariableWriteNode(25...26)(:b, 0, nil, (25...26), nil)
+ )],
+ (27...28),
+ CallNode(29...32)(nil, nil, (29...32), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ nil
+ ),
+ MultiWriteNode(34...45)(
+ [MultiWriteNode(34...36)(
+ [SplatNode(34...36)(
+ (34...35),
+ LocalVariableWriteNode(35...36)(:b, 0, nil, (35...36), nil)
+ )],
+ nil,
+ nil,
+ nil,
+ nil
+ ),
+ LocalVariableWriteNode(38...39)(:c, 0, nil, (38...39), nil)],
+ (40...41),
+ CallNode(42...45)(nil, nil, (42...45), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ nil
+ ),
+ MultiWriteNode(47...65)(
+ [InstanceVariableWriteNode(47...51)((47...51), nil, nil),
+ ClassVariableWriteNode(53...58)((53...58), nil, nil)],
+ (59...60),
+ SplatNode(61...65)(
+ (61...62),
+ CallNode(62...65)(nil, nil, (62...65), nil, nil, nil, nil, 0, "foo")
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(67...77)(
+ [LocalVariableWriteNode(67...68)(:a, 0, nil, (67...68), nil),
+ SplatNode(70...71)((70...71), nil)],
+ (72...73),
+ CallNode(74...77)(nil, nil, (74...77), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ nil
+ ),
+ MultiWriteNode(79...92)(
+ [LocalVariableWriteNode(79...80)(:a, 0, nil, (79...80), nil),
+ SplatNode(82...83)((82...83), nil),
+ LocalVariableWriteNode(85...86)(:c, 0, nil, (85...86), nil)],
+ (87...88),
+ CallNode(89...92)(nil, nil, (89...92), nil, nil, nil, nil, 0, "bar"),
+ nil,
+ nil
+ ),
+ MultiWriteNode(94...105)(
+ [LocalVariableWriteNode(94...95)(:a, 0, nil, (94...95), nil),
+ SplatNode(97...99)(
+ (97...98),
+ LocalVariableWriteNode(98...99)(:b, 0, nil, (98...99), nil)
+ )],
+ (100...101),
+ CallNode(102...105)(
+ nil,
+ nil,
+ (102...105),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(107...121)(
+ [LocalVariableWriteNode(107...108)(:a, 0, nil, (107...108), nil),
+ SplatNode(110...112)(
+ (110...111),
+ LocalVariableWriteNode(111...112)(:b, 0, nil, (111...112), nil)
+ ),
+ LocalVariableWriteNode(114...115)(:c, 0, nil, (114...115), nil)],
+ (116...117),
+ CallNode(118...121)(
+ nil,
+ nil,
+ (118...121),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ nil,
+ nil
+ ),
+ MultiWriteNode(123...139)(
+ [LocalVariableWriteNode(123...124)(:a, 0, nil, (123...124), nil),
+ LocalVariableWriteNode(126...127)(:b, 0, nil, (126...127), nil)],
+ (128...129),
+ ArrayNode(130...139)(
+ [SplatNode(130...134)(
+ (130...131),
+ CallNode(131...134)(
+ nil,
+ nil,
+ (131...134),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )
+ ),
+ CallNode(136...139)(
+ nil,
+ nil,
+ (136...139),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )],
+ nil,
+ nil
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/method_definition_in_while_cond.txt b/test/yarp/snapshots/whitequark/method_definition_in_while_cond.txt
new file mode 100644
index 0000000000..bf615a18e8
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/method_definition_in_while_cond.txt
@@ -0,0 +1,143 @@
+ProgramNode(0...190)(
+ [],
+ StatementsNode(0...190)(
+ [WhileNode(0...45)(
+ (0...5),
+ DefNode(6...33)(
+ (10...13),
+ nil,
+ ParametersNode(14...28)(
+ [],
+ [OptionalParameterNode(14...28)(
+ :a,
+ (14...15),
+ (16...17),
+ CallNode(18...28)(
+ nil,
+ nil,
+ (18...21),
+ nil,
+ nil,
+ nil,
+ BlockNode(22...28)([], nil, nil, (22...24), (25...28)),
+ 0,
+ "tap"
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ (30...33)
+ ),
+ StatementsNode(35...40)([BreakNode(35...40)(nil, (35...40))])
+ ),
+ WhileNode(47...89)(
+ (47...52),
+ DefNode(53...77)(
+ (57...60),
+ nil,
+ nil,
+ StatementsNode(62...72)(
+ [CallNode(62...72)(
+ nil,
+ nil,
+ (62...65),
+ nil,
+ nil,
+ nil,
+ BlockNode(66...72)([], nil, nil, (66...68), (69...72)),
+ 0,
+ "tap"
+ )]
+ ),
+ [],
+ (53...56),
+ nil,
+ nil,
+ nil,
+ nil,
+ (74...77)
+ ),
+ StatementsNode(79...84)([BreakNode(79...84)(nil, (79...84))])
+ ),
+ WhileNode(91...141)(
+ (91...96),
+ DefNode(97...129)(
+ (106...109),
+ SelfNode(101...105)(),
+ ParametersNode(110...124)(
+ [],
+ [OptionalParameterNode(110...124)(
+ :a,
+ (110...111),
+ (112...113),
+ CallNode(114...124)(
+ nil,
+ nil,
+ (114...117),
+ nil,
+ nil,
+ nil,
+ BlockNode(118...124)([], nil, nil, (118...120), (121...124)),
+ 0,
+ "tap"
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:a],
+ (97...100),
+ (105...106),
+ nil,
+ nil,
+ nil,
+ (126...129)
+ ),
+ StatementsNode(131...136)([BreakNode(131...136)(nil, (131...136))])
+ ),
+ WhileNode(143...190)(
+ (143...148),
+ DefNode(149...178)(
+ (158...161),
+ SelfNode(153...157)(),
+ nil,
+ StatementsNode(163...173)(
+ [CallNode(163...173)(
+ nil,
+ nil,
+ (163...166),
+ nil,
+ nil,
+ nil,
+ BlockNode(167...173)([], nil, nil, (167...169), (170...173)),
+ 0,
+ "tap"
+ )]
+ ),
+ [],
+ (149...152),
+ (157...158),
+ nil,
+ nil,
+ nil,
+ (175...178)
+ ),
+ StatementsNode(180...185)([BreakNode(180...185)(nil, (180...185))])
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/module.txt b/test/yarp/snapshots/whitequark/module.txt
new file mode 100644
index 0000000000..54fccb1fa3
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/module.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [ModuleNode(0...15)(
+ [],
+ (0...6),
+ ConstantReadNode(7...10)(),
+ nil,
+ (12...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/multiple_pattern_matches.txt b/test/yarp/snapshots/whitequark/multiple_pattern_matches.txt
new file mode 100644
index 0000000000..7f655240cd
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/multiple_pattern_matches.txt
@@ -0,0 +1,97 @@
+ProgramNode(0...52)(
+ [:a],
+ StatementsNode(0...52)(
+ [MatchRequiredNode(0...12)(
+ HashNode(0...6)(
+ (0...1),
+ [AssocNode(1...5)(
+ SymbolNode(1...3)(nil, (1...2), (2...3), "a"),
+ IntegerNode(4...5)(),
+ nil
+ )],
+ (5...6)
+ ),
+ HashPatternNode(10...12)(
+ nil,
+ [AssocNode(10...12)(
+ SymbolNode(10...12)(nil, (10...11), (11...12), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (7...9)
+ ),
+ MatchRequiredNode(13...25)(
+ HashNode(13...19)(
+ (13...14),
+ [AssocNode(14...18)(
+ SymbolNode(14...16)(nil, (14...15), (15...16), "a"),
+ IntegerNode(17...18)(),
+ nil
+ )],
+ (18...19)
+ ),
+ HashPatternNode(23...25)(
+ nil,
+ [AssocNode(23...25)(
+ SymbolNode(23...25)(nil, (23...24), (24...25), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (20...22)
+ ),
+ MatchPredicateNode(27...39)(
+ HashNode(27...33)(
+ (27...28),
+ [AssocNode(28...32)(
+ SymbolNode(28...30)(nil, (28...29), (29...30), "a"),
+ IntegerNode(31...32)(),
+ nil
+ )],
+ (32...33)
+ ),
+ HashPatternNode(37...39)(
+ nil,
+ [AssocNode(37...39)(
+ SymbolNode(37...39)(nil, (37...38), (38...39), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (34...36)
+ ),
+ MatchPredicateNode(40...52)(
+ HashNode(40...46)(
+ (40...41),
+ [AssocNode(41...45)(
+ SymbolNode(41...43)(nil, (41...42), (42...43), "a"),
+ IntegerNode(44...45)(),
+ nil
+ )],
+ (45...46)
+ ),
+ HashPatternNode(50...52)(
+ nil,
+ [AssocNode(50...52)(
+ SymbolNode(50...52)(nil, (50...51), (51...52), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (47...49)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/newline_in_hash_argument.txt b/test/yarp/snapshots/whitequark/newline_in_hash_argument.txt
new file mode 100644
index 0000000000..e2b0456381
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/newline_in_hash_argument.txt
@@ -0,0 +1,85 @@
+ProgramNode(0...74)(
+ [:a, :b],
+ StatementsNode(0...74)(
+ [CaseNode(0...40)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [InNode(9...21)(
+ HashPatternNode(12...14)(
+ nil,
+ [AssocNode(12...14)(
+ SymbolNode(12...14)(nil, (12...13), (13...14), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ StatementsNode(15...21)(
+ [IntegerNode(15...16)(), TrueNode(17...21)()]
+ ),
+ (9...11),
+ nil
+ ),
+ InNode(22...36)(
+ HashPatternNode(25...29)(
+ nil,
+ [AssocNode(25...29)(
+ SymbolNode(25...29)((25...26), (26...27), (27...29), "b"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ StatementsNode(30...36)(
+ [IntegerNode(30...31)(), TrueNode(32...36)()]
+ ),
+ (22...24),
+ nil
+ )],
+ nil,
+ (0...4),
+ (37...40)
+ ),
+ CallNode(42...58)(
+ CallNode(42...45)(nil, nil, (42...45), nil, nil, nil, nil, 0, "obj"),
+ (45...46),
+ (46...49),
+ nil,
+ ArgumentsNode(50...58)(
+ [KeywordHashNode(50...58)(
+ [AssocNode(50...58)(
+ SymbolNode(50...56)((50...51), (51...54), (54...56), "foo"),
+ IntegerNode(57...58)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "set"
+ ),
+ CallNode(60...74)(
+ CallNode(60...63)(nil, nil, (60...63), nil, nil, nil, nil, 0, "obj"),
+ (63...64),
+ (64...67),
+ nil,
+ ArgumentsNode(68...74)(
+ [KeywordHashNode(68...74)(
+ [AssocNode(68...74)(
+ SymbolNode(68...72)(nil, (68...71), (71...72), "foo"),
+ IntegerNode(73...74)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "set"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/next.txt b/test/yarp/snapshots/whitequark/next.txt
new file mode 100644
index 0000000000..06997e7d1a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/next.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...33)(
+ [],
+ StatementsNode(0...33)(
+ [NextNode(0...4)(nil, (0...4)),
+ NextNode(6...14)(
+ ArgumentsNode(11...14)(
+ [CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (6...10)
+ ),
+ NextNode(16...22)(
+ ArgumentsNode(20...22)(
+ [ParenthesesNode(20...22)(nil, (20...21), (21...22))]
+ ),
+ (16...20)
+ ),
+ NextNode(24...33)(
+ ArgumentsNode(28...33)(
+ [ParenthesesNode(28...33)(
+ StatementsNode(29...32)(
+ [CallNode(29...32)(
+ nil,
+ nil,
+ (29...32),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (28...29),
+ (32...33)
+ )]
+ ),
+ (24...28)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/next_block.txt b/test/yarp/snapshots/whitequark/next_block.txt
new file mode 100644
index 0000000000..70f102b417
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/next_block.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [NextNode(0...19)(
+ ArgumentsNode(5...19)(
+ [CallNode(5...19)(
+ nil,
+ nil,
+ (5...8),
+ nil,
+ ArgumentsNode(9...12)(
+ [CallNode(9...12)(
+ nil,
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ BlockNode(13...19)([], nil, nil, (13...15), (16...19)),
+ 0,
+ "fun"
+ )]
+ ),
+ (0...4)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/nil.txt b/test/yarp/snapshots/whitequark/nil.txt
new file mode 100644
index 0000000000..4af940de66
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/nil.txt
@@ -0,0 +1 @@
+ProgramNode(0...3)([], StatementsNode(0...3)([NilNode(0...3)()]))
diff --git a/test/yarp/snapshots/whitequark/nil_expression.txt b/test/yarp/snapshots/whitequark/nil_expression.txt
new file mode 100644
index 0000000000..b9e8d19adb
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/nil_expression.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [ParenthesesNode(0...2)(nil, (0...1), (1...2)),
+ BeginNode(4...13)((4...9), nil, nil, nil, nil, (10...13))]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/non_lvar_injecting_match.txt b/test/yarp/snapshots/whitequark/non_lvar_injecting_match.txt
new file mode 100644
index 0000000000..e44f5db294
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/non_lvar_injecting_match.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallNode(0...28)(
+ InterpolatedRegularExpressionNode(0...19)(
+ (0...1),
+ [EmbeddedStatementsNode(1...5)(
+ (1...3),
+ StatementsNode(3...4)([IntegerNode(3...4)()]),
+ (4...5)
+ ),
+ StringNode(5...18)(nil, (5...18), nil, "(?<match>bar)")],
+ (18...19),
+ 0
+ ),
+ nil,
+ (20...22),
+ nil,
+ ArgumentsNode(23...28)(
+ [StringNode(23...28)((23...24), (24...27), (27...28), "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "=~"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/not.txt b/test/yarp/snapshots/whitequark/not.txt
new file mode 100644
index 0000000000..e80943ad15
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/not.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [CallNode(0...7)(
+ CallNode(4...7)(nil, nil, (4...7), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(9...14)(
+ nil,
+ nil,
+ (9...12),
+ (12...13),
+ nil,
+ (13...14),
+ nil,
+ 0,
+ "!"
+ ),
+ CallNode(16...24)(
+ CallNode(20...23)(nil, nil, (20...23), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (16...19),
+ (19...20),
+ nil,
+ (23...24),
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/not_cmd.txt b/test/yarp/snapshots/whitequark/not_cmd.txt
new file mode 100644
index 0000000000..b361e5b61c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/not_cmd.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ CallNode(4...9)(
+ nil,
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...9)(
+ [CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/not_masgn__24.txt b/test/yarp/snapshots/whitequark/not_masgn__24.txt
new file mode 100644
index 0000000000..6880ed7561
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/not_masgn__24.txt
@@ -0,0 +1,39 @@
+ProgramNode(0...13)(
+ [:a, :b],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ ParenthesesNode(1...13)(
+ StatementsNode(2...12)(
+ [MultiWriteNode(2...12)(
+ [LocalVariableWriteNode(2...3)(:a, 0, nil, (2...3), nil),
+ LocalVariableWriteNode(5...6)(:b, 0, nil, (5...6), nil)],
+ (7...8),
+ CallNode(9...12)(
+ nil,
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ nil
+ )]
+ ),
+ (1...2),
+ (12...13)
+ ),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "!"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/nth_ref.txt b/test/yarp/snapshots/whitequark/nth_ref.txt
new file mode 100644
index 0000000000..3bfe4c9a5c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/nth_ref.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...3)(
+ [],
+ StatementsNode(0...3)([NumberedReferenceReadNode(0...3)()])
+)
diff --git a/test/yarp/snapshots/whitequark/numbered_args_after_27.txt b/test/yarp/snapshots/whitequark/numbered_args_after_27.txt
new file mode 100644
index 0000000000..c2cf4217e3
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/numbered_args_after_27.txt
@@ -0,0 +1,177 @@
+ProgramNode(0...65)(
+ [],
+ StatementsNode(0...65)(
+ [LambdaNode(0...17)(
+ [],
+ (0...2),
+ nil,
+ StatementsNode(6...13)(
+ [CallNode(6...13)(
+ CallNode(6...8)(nil, nil, (6...8), nil, nil, nil, nil, 0, "_1"),
+ nil,
+ (9...10),
+ nil,
+ ArgumentsNode(11...13)(
+ [CallNode(11...13)(
+ nil,
+ nil,
+ (11...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_9"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ )
+ ),
+ LambdaNode(19...32)(
+ [],
+ (19...21),
+ nil,
+ StatementsNode(24...31)(
+ [CallNode(24...31)(
+ CallNode(24...26)(
+ nil,
+ nil,
+ (24...26),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_1"
+ ),
+ nil,
+ (27...28),
+ nil,
+ ArgumentsNode(29...31)(
+ [CallNode(29...31)(
+ nil,
+ nil,
+ (29...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_9"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ )
+ ),
+ CallNode(34...50)(
+ nil,
+ nil,
+ (34...35),
+ nil,
+ nil,
+ nil,
+ BlockNode(36...50)(
+ [],
+ nil,
+ StatementsNode(39...46)(
+ [CallNode(39...46)(
+ CallNode(39...41)(
+ nil,
+ nil,
+ (39...41),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_1"
+ ),
+ nil,
+ (42...43),
+ nil,
+ ArgumentsNode(44...46)(
+ [CallNode(44...46)(
+ nil,
+ nil,
+ (44...46),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_9"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (36...38),
+ (47...50)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(52...65)(
+ nil,
+ nil,
+ (52...53),
+ nil,
+ nil,
+ nil,
+ BlockNode(54...65)(
+ [],
+ nil,
+ StatementsNode(56...63)(
+ [CallNode(56...63)(
+ CallNode(56...58)(
+ nil,
+ nil,
+ (56...58),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_1"
+ ),
+ nil,
+ (59...60),
+ nil,
+ ArgumentsNode(61...63)(
+ [CallNode(61...63)(
+ nil,
+ nil,
+ (61...63),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_9"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ (54...55),
+ (64...65)
+ ),
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/numparam_outside_block.txt b/test/yarp/snapshots/whitequark/numparam_outside_block.txt
new file mode 100644
index 0000000000..f99094a3a6
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/numparam_outside_block.txt
@@ -0,0 +1,51 @@
+ProgramNode(0...83)(
+ [],
+ StatementsNode(0...83)(
+ [CallNode(0...2)(nil, nil, (0...2), nil, nil, nil, nil, 0, "_1"),
+ SingletonClassNode(4...25)(
+ [],
+ (4...9),
+ (10...12),
+ CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(18...20)(
+ [CallNode(18...20)(nil, nil, (18...20), nil, nil, nil, nil, 0, "_1")]
+ ),
+ (22...25)
+ ),
+ ClassNode(27...43)(
+ [],
+ (27...32),
+ ConstantReadNode(33...34)(),
+ nil,
+ nil,
+ StatementsNode(36...38)(
+ [CallNode(36...38)(nil, nil, (36...38), nil, nil, nil, nil, 0, "_1")]
+ ),
+ (40...43)
+ ),
+ DefNode(45...64)(
+ (54...55),
+ SelfNode(49...53)(),
+ nil,
+ StatementsNode(57...59)(
+ [CallNode(57...59)(nil, nil, (57...59), nil, nil, nil, nil, 0, "_1")]
+ ),
+ [],
+ (45...48),
+ (53...54),
+ nil,
+ nil,
+ nil,
+ (61...64)
+ ),
+ ModuleNode(66...83)(
+ [],
+ (66...72),
+ ConstantReadNode(73...74)(),
+ StatementsNode(76...78)(
+ [CallNode(76...78)(nil, nil, (76...78), nil, nil, nil, nil, 0, "_1")]
+ ),
+ (80...83)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/op_asgn.txt b/test/yarp/snapshots/whitequark/op_asgn.txt
new file mode 100644
index 0000000000..cb4b4a662f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/op_asgn.txt
@@ -0,0 +1,53 @@
+ProgramNode(0...35)(
+ [],
+ StatementsNode(0...35)(
+ [CallOperatorWriteNode(0...10)(
+ CallNode(0...5)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "A="
+ ),
+ (6...8),
+ IntegerNode(9...10)(),
+ :+
+ ),
+ CallOperatorWriteNode(12...22)(
+ CallNode(12...17)(
+ CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "foo"),
+ (15...16),
+ (16...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ (18...20),
+ IntegerNode(21...22)(),
+ :+
+ ),
+ CallOperatorWriteNode(24...35)(
+ CallNode(24...30)(
+ CallNode(24...27)(nil, nil, (24...27), nil, nil, nil, nil, 0, "foo"),
+ (27...29),
+ (29...30),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ (31...33),
+ IntegerNode(34...35)(),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/op_asgn_cmd.txt b/test/yarp/snapshots/whitequark/op_asgn_cmd.txt
new file mode 100644
index 0000000000..e18088fc60
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/op_asgn_cmd.txt
@@ -0,0 +1,151 @@
+ProgramNode(0...64)(
+ [],
+ StatementsNode(0...64)(
+ [CallOperatorWriteNode(0...14)(
+ CallNode(0...5)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "A="
+ ),
+ (6...8),
+ CallNode(9...14)(
+ nil,
+ nil,
+ (9...10),
+ nil,
+ ArgumentsNode(11...14)(
+ [CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(16...30)(
+ CallNode(16...21)(
+ CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "foo"),
+ (19...20),
+ (20...21),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ (22...24),
+ CallNode(25...30)(
+ nil,
+ nil,
+ (25...26),
+ nil,
+ ArgumentsNode(27...30)(
+ [CallNode(27...30)(
+ nil,
+ nil,
+ (27...30),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ :+
+ ),
+ ConstantPathOperatorWriteNode(32...47)(
+ ConstantPathNode(32...38)(
+ CallNode(32...35)(nil, nil, (32...35), nil, nil, nil, nil, 0, "foo"),
+ ConstantReadNode(37...38)(),
+ (35...37)
+ ),
+ (39...41),
+ CallNode(42...47)(
+ nil,
+ nil,
+ (42...43),
+ nil,
+ ArgumentsNode(44...47)(
+ [CallNode(44...47)(
+ nil,
+ nil,
+ (44...47),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(49...64)(
+ CallNode(49...55)(
+ CallNode(49...52)(nil, nil, (49...52), nil, nil, nil, nil, 0, "foo"),
+ (52...54),
+ (54...55),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ (56...58),
+ CallNode(59...64)(
+ nil,
+ nil,
+ (59...60),
+ nil,
+ ArgumentsNode(61...64)(
+ [CallNode(61...64)(
+ nil,
+ nil,
+ (61...64),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/op_asgn_index.txt b/test/yarp/snapshots/whitequark/op_asgn_index.txt
new file mode 100644
index 0000000000..8e0bc5f7dc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/op_asgn_index.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallOperatorWriteNode(0...14)(
+ CallNode(0...9)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...8)([IntegerNode(4...5)(), IntegerNode(7...8)()]),
+ (8...9),
+ nil,
+ 0,
+ "[]="
+ ),
+ (10...12),
+ IntegerNode(13...14)(),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/op_asgn_index_cmd.txt b/test/yarp/snapshots/whitequark/op_asgn_index_cmd.txt
new file mode 100644
index 0000000000..c2e27b4353
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/op_asgn_index_cmd.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...18)(
+ [],
+ StatementsNode(0...18)(
+ [CallOperatorWriteNode(0...18)(
+ CallNode(0...9)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...8)([IntegerNode(4...5)(), IntegerNode(7...8)()]),
+ (8...9),
+ nil,
+ 0,
+ "[]="
+ ),
+ (10...12),
+ CallNode(13...18)(
+ nil,
+ nil,
+ (13...14),
+ nil,
+ ArgumentsNode(15...18)(
+ [CallNode(15...18)(
+ nil,
+ nil,
+ (15...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/optarg.txt b/test/yarp/snapshots/whitequark/optarg.txt
new file mode 100644
index 0000000000..2cbb681c61
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/optarg.txt
@@ -0,0 +1,63 @@
+ProgramNode(0...44)(
+ [],
+ StatementsNode(0...44)(
+ [DefNode(0...18)(
+ (4...5),
+ nil,
+ ParametersNode(6...13)(
+ [],
+ [OptionalParameterNode(6...13)(
+ :foo,
+ (6...9),
+ (10...11),
+ IntegerNode(12...13)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (15...18)
+ ),
+ DefNode(20...44)(
+ (24...25),
+ nil,
+ ParametersNode(26...38)(
+ [],
+ [OptionalParameterNode(26...31)(
+ :foo,
+ (26...29),
+ (29...30),
+ IntegerNode(30...31)()
+ ),
+ OptionalParameterNode(33...38)(
+ :bar,
+ (33...36),
+ (36...37),
+ IntegerNode(37...38)()
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo, :bar],
+ (20...23),
+ nil,
+ (25...26),
+ (38...39),
+ nil,
+ (41...44)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/or.txt b/test/yarp/snapshots/whitequark/or.txt
new file mode 100644
index 0000000000..023490e6d3
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/or.txt
@@ -0,0 +1,15 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [OrNode(0...10)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "bar"),
+ (4...6)
+ ),
+ OrNode(12...22)(
+ CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "foo"),
+ CallNode(19...22)(nil, nil, (19...22), nil, nil, nil, nil, 0, "bar"),
+ (16...18)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/or_asgn.txt b/test/yarp/snapshots/whitequark/or_asgn.txt
new file mode 100644
index 0000000000..21cede138f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/or_asgn.txt
@@ -0,0 +1,37 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallOperatorOrWriteNode(0...11)(
+ CallNode(0...5)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...5),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ IntegerNode(10...11)(),
+ (6...9)
+ ),
+ CallOperatorOrWriteNode(13...28)(
+ CallNode(13...22)(
+ CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (16...22),
+ (16...17),
+ ArgumentsNode(17...21)(
+ [IntegerNode(17...18)(), IntegerNode(20...21)()]
+ ),
+ (21...22),
+ nil,
+ 0,
+ "[]="
+ ),
+ IntegerNode(27...28)(),
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_272.txt b/test/yarp/snapshots/whitequark/parser_bug_272.txt
new file mode 100644
index 0000000000..eeb981d694
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_272.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [CallNode(0...15)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...4)([InstanceVariableReadNode(2...4)()]),
+ nil,
+ BlockNode(5...15)(
+ [:c],
+ BlockParametersNode(8...11)(
+ ParametersNode(9...10)(
+ [RequiredParameterNode(9...10)(:c)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (8...9),
+ (10...11)
+ ),
+ nil,
+ (5...7),
+ (12...15)
+ ),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_490.txt b/test/yarp/snapshots/whitequark/parser_bug_490.txt
new file mode 100644
index 0000000000..cd38544ea7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_490.txt
@@ -0,0 +1,95 @@
+ProgramNode(0...132)(
+ [],
+ StatementsNode(0...132)(
+ [DefNode(0...39)(
+ (4...5),
+ nil,
+ nil,
+ StatementsNode(7...34)(
+ [SingletonClassNode(7...34)(
+ [],
+ (7...12),
+ (13...15),
+ SelfNode(16...20)(),
+ StatementsNode(22...29)(
+ [ConstantPathWriteNode(22...29)(
+ ConstantReadNode(22...23)(),
+ (24...25),
+ NilNode(26...29)()
+ )]
+ ),
+ (31...34)
+ )]
+ ),
+ [],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (36...39)
+ ),
+ DefNode(41...85)(
+ (45...46),
+ nil,
+ nil,
+ StatementsNode(48...80)(
+ [SingletonClassNode(48...80)(
+ [],
+ (48...53),
+ (54...56),
+ SelfNode(57...61)(),
+ StatementsNode(63...75)(
+ [ClassNode(63...75)(
+ [],
+ (63...68),
+ ConstantReadNode(69...70)(),
+ nil,
+ nil,
+ nil,
+ (72...75)
+ )]
+ ),
+ (77...80)
+ )]
+ ),
+ [],
+ (41...44),
+ nil,
+ nil,
+ nil,
+ nil,
+ (82...85)
+ ),
+ DefNode(87...132)(
+ (91...92),
+ nil,
+ nil,
+ StatementsNode(94...127)(
+ [SingletonClassNode(94...127)(
+ [],
+ (94...99),
+ (100...102),
+ SelfNode(103...107)(),
+ StatementsNode(109...122)(
+ [ModuleNode(109...122)(
+ [],
+ (109...115),
+ ConstantReadNode(116...117)(),
+ nil,
+ (119...122)
+ )]
+ ),
+ (124...127)
+ )]
+ ),
+ [],
+ (87...90),
+ nil,
+ nil,
+ nil,
+ nil,
+ (129...132)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_507.txt b/test/yarp/snapshots/whitequark/parser_bug_507.txt
new file mode 100644
index 0000000000..e0b69e4c8b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_507.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...19)(
+ [:m],
+ StatementsNode(0...19)(
+ [LocalVariableWriteNode(0...19)(
+ :m,
+ 0,
+ LambdaNode(4...19)(
+ [:args],
+ (4...6),
+ BlockParametersNode(7...12)(
+ ParametersNode(7...12)(
+ [],
+ [],
+ [],
+ RestParameterNode(7...12)((7...8), (8...12)),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ nil
+ ),
+ (0...1),
+ (2...3)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_518.txt b/test/yarp/snapshots/whitequark/parser_bug_518.txt
new file mode 100644
index 0000000000..4de48dad9f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_518.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [ClassNode(0...15)(
+ [],
+ (0...5),
+ ConstantReadNode(6...7)(),
+ (8...9),
+ ConstantReadNode(10...11)(),
+ nil,
+ (12...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_525.txt b/test/yarp/snapshots/whitequark/parser_bug_525.txt
new file mode 100644
index 0000000000..e6fc74d2f6
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_525.txt
@@ -0,0 +1,52 @@
+ProgramNode(0...32)(
+ [],
+ StatementsNode(0...32)(
+ [CallNode(0...32)(
+ nil,
+ nil,
+ (0...2),
+ nil,
+ ArgumentsNode(3...11)(
+ [KeywordHashNode(3...11)(
+ [AssocNode(3...11)(
+ SymbolNode(3...5)((3...4), (4...5), nil, "k"),
+ CallNode(9...11)(
+ nil,
+ nil,
+ (9...11),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "m2"
+ ),
+ (6...8)
+ )]
+ )]
+ ),
+ nil,
+ BlockNode(12...32)(
+ [],
+ nil,
+ StatementsNode(16...27)(
+ [CallNode(16...27)(
+ nil,
+ nil,
+ (16...18),
+ (18...19),
+ nil,
+ (19...20),
+ BlockNode(21...27)([], nil, nil, (21...23), (24...27)),
+ 0,
+ "m3"
+ )]
+ ),
+ (12...14),
+ (29...32)
+ ),
+ 0,
+ "m1"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_604.txt b/test/yarp/snapshots/whitequark/parser_bug_604.txt
new file mode 100644
index 0000000000..99f5a7a71a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_604.txt
@@ -0,0 +1,30 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [CallNode(0...14)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...7)(
+ [CallNode(2...7)(
+ CallNode(2...3)(nil, nil, (2...3), nil, nil, nil, nil, 0, "a"),
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...7)(
+ [CallNode(6...7)(nil, nil, (6...7), nil, nil, nil, nil, 0, "b")]
+ ),
+ nil,
+ nil,
+ 0,
+ "+"
+ )]
+ ),
+ nil,
+ BlockNode(8...14)([], nil, nil, (8...10), (11...14)),
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_640.txt b/test/yarp/snapshots/whitequark/parser_bug_640.txt
new file mode 100644
index 0000000000..7af6f48f95
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_640.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [InterpolatedStringNode(0...24)(
+ (0...6),
+ [StringNode(7...20)(nil, (7...20), nil, "baz\n" + "qux\n")],
+ (20...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_645.txt b/test/yarp/snapshots/whitequark/parser_bug_645.txt
new file mode 100644
index 0000000000..22ae40a011
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_645.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [LambdaNode(0...14)(
+ [:arg],
+ (0...2),
+ BlockParametersNode(3...11)(
+ ParametersNode(4...10)(
+ [],
+ [OptionalParameterNode(4...10)(
+ :arg,
+ (4...7),
+ (7...8),
+ HashNode(8...10)((8...9), [], (9...10))
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (3...4),
+ (10...11)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_bug_830.txt b/test/yarp/snapshots/whitequark/parser_bug_830.txt
new file mode 100644
index 0000000000..c8f0c34e7d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_bug_830.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [RegularExpressionNode(0...4)((0...1), (1...3), (3...4), "(", 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt b/test/yarp/snapshots/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt
new file mode 100644
index 0000000000..b9b0a9ca4d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_drops_truncated_parts_of_squiggly_heredoc.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [InterpolatedStringNode(0...19)(
+ (0...7),
+ [StringNode(8...10)(nil, (8...10), nil, ""),
+ EmbeddedStatementsNode(10...13)((10...12), nil, (12...13)),
+ StringNode(13...14)(nil, (13...14), nil, "\n")],
+ (14...19)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/parser_slash_slash_n_escaping_in_literals.txt b/test/yarp/snapshots/whitequark/parser_slash_slash_n_escaping_in_literals.txt
new file mode 100644
index 0000000000..7228359d39
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/parser_slash_slash_n_escaping_in_literals.txt
@@ -0,0 +1,78 @@
+ProgramNode(0...210)(
+ [],
+ StatementsNode(0...210)(
+ [StringNode(0...6)((0...1), (1...5), (5...6), "a\n" + "b"),
+ ArrayNode(8...16)(
+ [SymbolNode(11...15)(nil, (11...15), nil, "a\n" + "b")],
+ (8...11),
+ (15...16)
+ ),
+ StringNode(18...26)((18...21), (21...25), (25...26), "a\n" + "b"),
+ ArrayNode(28...36)(
+ [StringNode(31...35)(nil, (31...35), nil, "a\n" + "b")],
+ (28...31),
+ (35...36)
+ ),
+ ArrayNode(38...46)(
+ [SymbolNode(41...45)(nil, (41...45), nil, "a\\\n" + "b")],
+ (38...41),
+ (45...46)
+ ),
+ StringNode(48...56)((48...51), (51...55), (55...56), "a\\\n" + "b"),
+ RegularExpressionNode(58...66)(
+ (58...61),
+ (61...65),
+ (65...66),
+ "a\n" + "b",
+ 0
+ ),
+ SymbolNode(68...76)((68...71), (71...75), (75...76), "a\n" + "b"),
+ ArrayNode(78...86)(
+ [StringNode(81...85)(nil, (81...85), nil, "a\\\n" + "b")],
+ (78...81),
+ (85...86)
+ ),
+ XStringNode(88...96)((88...91), (91...95), (95...96), "a\n" + "b"),
+ StringNode(98...105)((98...100), (100...104), (104...105), "a\n" + "b"),
+ StringNode(107...113)(
+ (107...108),
+ (108...112),
+ (112...113),
+ "a\\\n" + "b"
+ ),
+ RegularExpressionNode(115...121)(
+ (115...116),
+ (116...120),
+ (120...121),
+ "a\n" + "b",
+ 0
+ ),
+ InterpolatedSymbolNode(123...130)(
+ (123...125),
+ [StringNode(125...129)(nil, (125...129), nil, "a\n" + "b")],
+ (129...130)
+ ),
+ SymbolNode(132...139)((132...134), (134...138), (138...139), "a\n" + "b"),
+ InterpolatedStringNode(141...161)(
+ (141...150),
+ [StringNode(151...156)(nil, (151...156), nil, "a\n" + "b\n")],
+ (156...161)
+ ),
+ InterpolatedStringNode(162...182)(
+ (162...171),
+ [StringNode(172...177)(nil, (172...177), nil, "a\\\n" + "b\n")],
+ (177...182)
+ ),
+ InterpolatedXStringNode(183...203)(
+ (183...192),
+ [StringNode(193...198)(nil, (193...198), nil, "a\n" + "b\n")],
+ (198...203)
+ ),
+ XStringNode(204...210)(
+ (204...205),
+ (205...209),
+ (209...210),
+ "a\n" + "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/pattern_matching__FILE__LINE_literals.txt b/test/yarp/snapshots/whitequark/pattern_matching__FILE__LINE_literals.txt
new file mode 100644
index 0000000000..12c279f896
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/pattern_matching__FILE__LINE_literals.txt
@@ -0,0 +1,42 @@
+ProgramNode(8...111)(
+ [],
+ StatementsNode(8...111)(
+ [CaseNode(8...111)(
+ ArrayNode(13...51)(
+ [SourceFileNode(14...22)("/fixtures/whitequark/pattern_matching__FILE__LINE_literals.txt"),
+ CallNode(24...36)(
+ SourceLineNode(24...32)(),
+ nil,
+ (33...34),
+ nil,
+ ArgumentsNode(35...36)([IntegerNode(35...36)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ SourceEncodingNode(38...50)()],
+ (13...14),
+ (50...51)
+ ),
+ [InNode(62...99)(
+ ArrayPatternNode(65...99)(
+ nil,
+ [SourceFileNode(66...74)("/fixtures/whitequark/pattern_matching__FILE__LINE_literals.txt"),
+ SourceLineNode(76...84)(),
+ SourceEncodingNode(86...98)()],
+ nil,
+ [],
+ (65...66),
+ (98...99)
+ ),
+ nil,
+ (62...64),
+ nil
+ )],
+ nil,
+ (8...12),
+ (108...111)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/pattern_matching_blank_else.txt b/test/yarp/snapshots/whitequark/pattern_matching_blank_else.txt
new file mode 100644
index 0000000000..df949e90b0
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/pattern_matching_blank_else.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [CaseNode(0...26)(
+ IntegerNode(5...6)(),
+ [InNode(8...15)(
+ IntegerNode(11...12)(),
+ StatementsNode(14...15)([IntegerNode(14...15)()]),
+ (8...10),
+ nil
+ )],
+ ElseNode(17...26)((17...21), nil, (23...26)),
+ (0...4),
+ (23...26)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/pattern_matching_else.txt b/test/yarp/snapshots/whitequark/pattern_matching_else.txt
new file mode 100644
index 0000000000..d776a0ba1e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/pattern_matching_else.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [CaseNode(0...29)(
+ IntegerNode(5...6)(),
+ [InNode(8...15)(
+ IntegerNode(11...12)(),
+ StatementsNode(14...15)([IntegerNode(14...15)()]),
+ (8...10),
+ nil
+ )],
+ ElseNode(17...29)(
+ (17...21),
+ StatementsNode(23...24)([IntegerNode(23...24)()]),
+ (26...29)
+ ),
+ (0...4),
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/pattern_matching_single_line.txt b/test/yarp/snapshots/whitequark/pattern_matching_single_line.txt
new file mode 100644
index 0000000000..7a0546c569
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/pattern_matching_single_line.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...24)(
+ [:a],
+ StatementsNode(0...24)(
+ [MatchRequiredNode(0...8)(
+ IntegerNode(0...1)(),
+ ArrayPatternNode(5...8)(
+ nil,
+ [LocalVariableWriteNode(6...7)(:a, 0, nil, (6...7), nil)],
+ nil,
+ [],
+ (5...6),
+ (7...8)
+ ),
+ (2...4)
+ ),
+ LocalVariableReadNode(10...11)(:a, 0),
+ MatchPredicateNode(13...21)(
+ IntegerNode(13...14)(),
+ ArrayPatternNode(18...21)(
+ nil,
+ [LocalVariableWriteNode(19...20)(:a, 0, nil, (19...20), nil)],
+ nil,
+ [],
+ (18...19),
+ (20...21)
+ ),
+ (15...17)
+ ),
+ LocalVariableReadNode(23...24)(:a, 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt b/test/yarp/snapshots/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt
new file mode 100644
index 0000000000..c6d53befee
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/pattern_matching_single_line_allowed_omission_of_parentheses.txt
@@ -0,0 +1,143 @@
+ProgramNode(0...142)(
+ [:a, :b, :value],
+ StatementsNode(0...142)(
+ [MatchRequiredNode(0...14)(
+ ArrayNode(0...6)(
+ [IntegerNode(1...2)(), IntegerNode(4...5)()],
+ (0...1),
+ (5...6)
+ ),
+ ArrayPatternNode(10...14)(
+ nil,
+ [LocalVariableWriteNode(10...11)(:a, 0, nil, (10...11), nil),
+ LocalVariableWriteNode(13...14)(:b, 0, nil, (13...14), nil)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ (7...9)
+ ),
+ LocalVariableReadNode(16...17)(:a, 0),
+ MatchPredicateNode(19...33)(
+ ArrayNode(19...25)(
+ [IntegerNode(20...21)(), IntegerNode(23...24)()],
+ (19...20),
+ (24...25)
+ ),
+ ArrayPatternNode(29...33)(
+ nil,
+ [LocalVariableWriteNode(29...30)(:a, 0, nil, (29...30), nil),
+ LocalVariableWriteNode(32...33)(:b, 0, nil, (32...33), nil)],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ (26...28)
+ ),
+ LocalVariableReadNode(35...36)(:a, 0),
+ MatchRequiredNode(38...50)(
+ HashNode(38...44)(
+ (38...39),
+ [AssocNode(39...43)(
+ SymbolNode(39...41)(nil, (39...40), (40...41), "a"),
+ IntegerNode(42...43)(),
+ nil
+ )],
+ (43...44)
+ ),
+ HashPatternNode(48...50)(
+ nil,
+ [AssocNode(48...50)(
+ SymbolNode(48...50)(nil, (48...49), (49...50), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (45...47)
+ ),
+ LocalVariableReadNode(52...53)(:a, 0),
+ MatchPredicateNode(55...67)(
+ HashNode(55...61)(
+ (55...56),
+ [AssocNode(56...60)(
+ SymbolNode(56...58)(nil, (56...57), (57...58), "a"),
+ IntegerNode(59...60)(),
+ nil
+ )],
+ (60...61)
+ ),
+ HashPatternNode(65...67)(
+ nil,
+ [AssocNode(65...67)(
+ SymbolNode(65...67)(nil, (65...66), (66...67), "a"),
+ nil,
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (62...64)
+ ),
+ LocalVariableReadNode(69...70)(:a, 0),
+ MatchRequiredNode(72...99)(
+ HashNode(72...85)(
+ (72...73),
+ [AssocNode(73...84)(
+ SymbolNode(73...77)(nil, (73...76), (76...77), "key"),
+ SymbolNode(78...84)((78...79), (79...84), nil, "value"),
+ nil
+ )],
+ (84...85)
+ ),
+ HashPatternNode(89...99)(
+ nil,
+ [AssocNode(89...99)(
+ SymbolNode(89...93)(nil, (89...92), (92...93), "key"),
+ LocalVariableWriteNode(94...99)(:value, 0, nil, (94...99), nil),
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (86...88)
+ ),
+ LocalVariableReadNode(101...106)(:value, 0),
+ MatchPredicateNode(108...135)(
+ HashNode(108...121)(
+ (108...109),
+ [AssocNode(109...120)(
+ SymbolNode(109...113)(nil, (109...112), (112...113), "key"),
+ SymbolNode(114...120)((114...115), (115...120), nil, "value"),
+ nil
+ )],
+ (120...121)
+ ),
+ HashPatternNode(125...135)(
+ nil,
+ [AssocNode(125...135)(
+ SymbolNode(125...129)(nil, (125...128), (128...129), "key"),
+ LocalVariableWriteNode(130...135)(
+ :value,
+ 0,
+ nil,
+ (130...135),
+ nil
+ ),
+ nil
+ )],
+ nil,
+ nil,
+ nil
+ ),
+ (122...124)
+ ),
+ LocalVariableReadNode(137...142)(:value, 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/postexe.txt b/test/yarp/snapshots/whitequark/postexe.txt
new file mode 100644
index 0000000000..d6af82bf15
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/postexe.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [PostExecutionNode(0...9)(
+ StatementsNode(6...7)([IntegerNode(6...7)()]),
+ (0...3),
+ (4...5),
+ (8...9)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/preexe.txt b/test/yarp/snapshots/whitequark/preexe.txt
new file mode 100644
index 0000000000..bfa071f72c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/preexe.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [PreExecutionNode(0...11)(
+ StatementsNode(8...9)([IntegerNode(8...9)()]),
+ (0...5),
+ (6...7),
+ (10...11)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/procarg0.txt b/test/yarp/snapshots/whitequark/procarg0.txt
new file mode 100644
index 0000000000..8153bfdd9d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/procarg0.txt
@@ -0,0 +1,70 @@
+ProgramNode(0...31)(
+ [],
+ StatementsNode(0...31)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ BlockNode(2...18)(
+ [:foo, :bar],
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [RequiredDestructuredParameterNode(5...15)(
+ [RequiredParameterNode(6...9)(:foo),
+ RequiredParameterNode(11...14)(:bar)],
+ (5...6),
+ (14...15)
+ )],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ nil,
+ (2...3),
+ (17...18)
+ ),
+ 0,
+ "m"
+ ),
+ CallNode(20...31)(
+ nil,
+ nil,
+ (20...21),
+ nil,
+ nil,
+ nil,
+ BlockNode(22...31)(
+ [:foo],
+ BlockParametersNode(24...29)(
+ ParametersNode(25...28)(
+ [RequiredParameterNode(25...28)(:foo)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (24...25),
+ (28...29)
+ ),
+ nil,
+ (22...23),
+ (30...31)
+ ),
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/range_exclusive.txt b/test/yarp/snapshots/whitequark/range_exclusive.txt
new file mode 100644
index 0000000000..4571ea317a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/range_exclusive.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)(
+ [RangeNode(0...5)(IntegerNode(0...1)(), IntegerNode(4...5)(), (1...4), 1)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/range_inclusive.txt b/test/yarp/snapshots/whitequark/range_inclusive.txt
new file mode 100644
index 0000000000..021f010a66
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/range_inclusive.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [RangeNode(0...4)(IntegerNode(0...1)(), IntegerNode(3...4)(), (1...3), 0)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rational.txt b/test/yarp/snapshots/whitequark/rational.txt
new file mode 100644
index 0000000000..dfa7d0c29f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rational.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [RationalNode(0...5)(FloatNode(0...4)()),
+ RationalNode(7...10)(IntegerNode(7...9)())]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/redo.txt b/test/yarp/snapshots/whitequark/redo.txt
new file mode 100644
index 0000000000..99ab66873b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/redo.txt
@@ -0,0 +1 @@
+ProgramNode(0...4)([], StatementsNode(0...4)([RedoNode(0...4)()]))
diff --git a/test/yarp/snapshots/whitequark/regex_interp.txt b/test/yarp/snapshots/whitequark/regex_interp.txt
new file mode 100644
index 0000000000..2819567035
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/regex_interp.txt
@@ -0,0 +1,19 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedRegularExpressionNode(0...14)(
+ (0...1),
+ [StringNode(1...4)(nil, (1...4), nil, "foo"),
+ EmbeddedStatementsNode(4...10)(
+ (4...6),
+ StatementsNode(6...9)(
+ [CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (9...10)
+ ),
+ StringNode(10...13)(nil, (10...13), nil, "baz")],
+ (13...14),
+ 0
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/regex_plain.txt b/test/yarp/snapshots/whitequark/regex_plain.txt
new file mode 100644
index 0000000000..cf2728065e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/regex_plain.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [RegularExpressionNode(0...10)((0...1), (1...7), (7...10), "source", 3)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/resbody_list.txt b/test/yarp/snapshots/whitequark/resbody_list.txt
new file mode 100644
index 0000000000..772a0a55f7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/resbody_list.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...39)(
+ [],
+ StatementsNode(0...39)(
+ [BeginNode(0...39)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...34)(
+ (13...19),
+ [ConstantReadNode(20...29)()],
+ nil,
+ nil,
+ StatementsNode(31...34)(
+ [CallNode(31...34)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (36...39)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/resbody_list_mrhs.txt b/test/yarp/snapshots/whitequark/resbody_list_mrhs.txt
new file mode 100644
index 0000000000..29e4ae792b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/resbody_list_mrhs.txt
@@ -0,0 +1,45 @@
+ProgramNode(0...44)(
+ [],
+ StatementsNode(0...44)(
+ [BeginNode(0...44)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...39)(
+ (13...19),
+ [ConstantReadNode(20...29)(),
+ CallNode(31...34)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )],
+ nil,
+ nil,
+ StatementsNode(36...39)(
+ [CallNode(36...39)(
+ nil,
+ nil,
+ (36...39),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (41...44)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/resbody_list_var.txt b/test/yarp/snapshots/whitequark/resbody_list_var.txt
new file mode 100644
index 0000000000..aca812cd01
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/resbody_list_var.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...39)(
+ [:ex],
+ StatementsNode(0...39)(
+ [BeginNode(0...39)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...34)(
+ (13...19),
+ [CallNode(20...23)(
+ nil,
+ nil,
+ (20...23),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )],
+ (24...26),
+ LocalVariableWriteNode(27...29)(:ex, 0, nil, (27...29), nil),
+ StatementsNode(31...34)(
+ [CallNode(31...34)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (36...39)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/resbody_var.txt b/test/yarp/snapshots/whitequark/resbody_var.txt
new file mode 100644
index 0000000000..0acad7e908
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/resbody_var.txt
@@ -0,0 +1,73 @@
+ProgramNode(0...73)(
+ [:ex],
+ StatementsNode(0...73)(
+ [BeginNode(0...36)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...31)(
+ (13...19),
+ [],
+ (20...22),
+ InstanceVariableWriteNode(23...26)((23...26), nil, nil),
+ StatementsNode(28...31)(
+ [CallNode(28...31)(
+ nil,
+ nil,
+ (28...31),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (33...36)
+ ),
+ BeginNode(38...73)(
+ (38...43),
+ StatementsNode(45...49)(
+ [CallNode(45...49)(
+ nil,
+ nil,
+ (45...49),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ ),
+ RescueNode(51...68)(
+ (51...57),
+ [],
+ (58...60),
+ LocalVariableWriteNode(61...63)(:ex, 0, nil, (61...63), nil),
+ StatementsNode(65...68)(
+ [CallNode(65...68)(
+ nil,
+ nil,
+ (65...68),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (70...73)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue.txt b/test/yarp/snapshots/whitequark/rescue.txt
new file mode 100644
index 0000000000..ae9063361a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue.txt
@@ -0,0 +1,34 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [BeginNode(0...29)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...24)(
+ (13...19),
+ [],
+ nil,
+ nil,
+ StatementsNode(21...24)(
+ [CallNode(21...24)(
+ nil,
+ nil,
+ (21...24),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (26...29)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_else.txt b/test/yarp/snapshots/whitequark/rescue_else.txt
new file mode 100644
index 0000000000..4c4e9ab987
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_else.txt
@@ -0,0 +1,50 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [BeginNode(0...40)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...24)(
+ (13...19),
+ [],
+ nil,
+ nil,
+ StatementsNode(21...24)(
+ [CallNode(21...24)(
+ nil,
+ nil,
+ (21...24),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil
+ ),
+ ElseNode(26...40)(
+ (26...30),
+ StatementsNode(32...35)(
+ [CallNode(32...35)(
+ nil,
+ nil,
+ (32...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (37...40)
+ ),
+ nil,
+ (37...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_else_ensure.txt b/test/yarp/snapshots/whitequark/rescue_else_ensure.txt
new file mode 100644
index 0000000000..0d44b99b70
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_else_ensure.txt
@@ -0,0 +1,66 @@
+ProgramNode(0...51)(
+ [],
+ StatementsNode(0...51)(
+ [BeginNode(0...51)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...24)(
+ (13...19),
+ [],
+ nil,
+ nil,
+ StatementsNode(21...24)(
+ [CallNode(21...24)(
+ nil,
+ nil,
+ (21...24),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ ElseNode(26...42)(
+ (26...30),
+ StatementsNode(31...34)(
+ [CallNode(31...34)(
+ nil,
+ nil,
+ (31...34),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (36...42)
+ ),
+ EnsureNode(36...51)(
+ (36...42),
+ StatementsNode(44...47)(
+ [CallNode(44...47)(
+ nil,
+ nil,
+ (44...47),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (48...51)
+ ),
+ (48...51)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_ensure.txt b/test/yarp/snapshots/whitequark/rescue_ensure.txt
new file mode 100644
index 0000000000..6f9b287c1c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_ensure.txt
@@ -0,0 +1,50 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [BeginNode(0...42)(
+ (0...5),
+ StatementsNode(7...11)(
+ [CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth")]
+ ),
+ RescueNode(13...24)(
+ (13...19),
+ [],
+ nil,
+ nil,
+ StatementsNode(21...24)(
+ [CallNode(21...24)(
+ nil,
+ nil,
+ (21...24),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ EnsureNode(26...42)(
+ (26...32),
+ StatementsNode(34...37)(
+ [CallNode(34...37)(
+ nil,
+ nil,
+ (34...37),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (39...42)
+ ),
+ (39...42)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_in_lambda_block.txt b/test/yarp/snapshots/whitequark/rescue_in_lambda_block.txt
new file mode 100644
index 0000000000..475b72dbe8
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_in_lambda_block.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [LambdaNode(0...17)(
+ [],
+ (0...2),
+ nil,
+ BeginNode(6...17)(
+ nil,
+ nil,
+ RescueNode(6...12)((6...12), [], nil, nil, nil, nil),
+ nil,
+ nil,
+ (14...17)
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_mod.txt b/test/yarp/snapshots/whitequark/rescue_mod.txt
new file mode 100644
index 0000000000..baae026bb8
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_mod.txt
@@ -0,0 +1,10 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [RescueModifierNode(0...15)(
+ CallNode(0...4)(nil, nil, (0...4), nil, nil, nil, nil, 0, "meth"),
+ (5...11),
+ CallNode(12...15)(nil, nil, (12...15), nil, nil, nil, nil, 0, "bar")
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_mod_asgn.txt b/test/yarp/snapshots/whitequark/rescue_mod_asgn.txt
new file mode 100644
index 0000000000..39ddc02f3b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_mod_asgn.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...21)(
+ [:foo],
+ StatementsNode(0...21)(
+ [LocalVariableWriteNode(0...21)(
+ :foo,
+ 0,
+ RescueModifierNode(6...21)(
+ CallNode(6...10)(nil, nil, (6...10), nil, nil, nil, nil, 0, "meth"),
+ (11...17),
+ CallNode(18...21)(nil, nil, (18...21), nil, nil, nil, nil, 0, "bar")
+ ),
+ (0...3),
+ (4...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_mod_masgn.txt b/test/yarp/snapshots/whitequark/rescue_mod_masgn.txt
new file mode 100644
index 0000000000..f027de1f73
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_mod_masgn.txt
@@ -0,0 +1,21 @@
+ProgramNode(0...29)(
+ [:foo, :bar],
+ StatementsNode(0...29)(
+ [MultiWriteNode(0...29)(
+ [LocalVariableWriteNode(0...3)(:foo, 0, nil, (0...3), nil),
+ LocalVariableWriteNode(5...8)(:bar, 0, nil, (5...8), nil)],
+ (9...10),
+ RescueModifierNode(11...29)(
+ CallNode(11...15)(nil, nil, (11...15), nil, nil, nil, nil, 0, "meth"),
+ (16...22),
+ ArrayNode(23...29)(
+ [IntegerNode(24...25)(), IntegerNode(27...28)()],
+ (23...24),
+ (28...29)
+ )
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_mod_op_assign.txt b/test/yarp/snapshots/whitequark/rescue_mod_op_assign.txt
new file mode 100644
index 0000000000..9f846f792e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_mod_op_assign.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...22)(
+ [:foo],
+ StatementsNode(0...22)(
+ [LocalVariableOperatorWriteNode(0...22)(
+ (0...3),
+ (4...6),
+ RescueModifierNode(7...22)(
+ CallNode(7...11)(nil, nil, (7...11), nil, nil, nil, nil, 0, "meth"),
+ (12...18),
+ CallNode(19...22)(nil, nil, (19...22), nil, nil, nil, nil, 0, "bar")
+ ),
+ :foo,
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/rescue_without_begin_end.txt b/test/yarp/snapshots/whitequark/rescue_without_begin_end.txt
new file mode 100644
index 0000000000..bc290f265b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/rescue_without_begin_end.txt
@@ -0,0 +1,60 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [CallNode(0...30)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ nil,
+ nil,
+ BlockNode(5...30)(
+ [],
+ nil,
+ BeginNode(9...30)(
+ nil,
+ StatementsNode(9...12)(
+ [CallNode(9...12)(
+ nil,
+ nil,
+ (9...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ RescueNode(14...25)(
+ (14...20),
+ [],
+ nil,
+ nil,
+ StatementsNode(22...25)(
+ [CallNode(22...25)(
+ nil,
+ nil,
+ (22...25),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil
+ ),
+ nil,
+ nil,
+ (27...30)
+ ),
+ (5...7),
+ (27...30)
+ ),
+ 0,
+ "meth"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/restarg_named.txt b/test/yarp/snapshots/whitequark/restarg_named.txt
new file mode 100644
index 0000000000..ce26b2fc67
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/restarg_named.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [DefNode(0...16)(
+ (4...5),
+ nil,
+ ParametersNode(6...10)(
+ [],
+ [],
+ [],
+ RestParameterNode(6...10)((6...7), (7...10)),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:foo],
+ (0...3),
+ nil,
+ (5...6),
+ (10...11),
+ nil,
+ (13...16)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/restarg_unnamed.txt b/test/yarp/snapshots/whitequark/restarg_unnamed.txt
new file mode 100644
index 0000000000..b6778e293c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/restarg_unnamed.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [DefNode(0...13)(
+ (4...5),
+ nil,
+ ParametersNode(6...7)(
+ [],
+ [],
+ [],
+ RestParameterNode(6...7)((6...7), nil),
+ [],
+ nil,
+ nil
+ ),
+ nil,
+ [:*],
+ (0...3),
+ nil,
+ (5...6),
+ (7...8),
+ nil,
+ (10...13)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/retry.txt b/test/yarp/snapshots/whitequark/retry.txt
new file mode 100644
index 0000000000..8963228e67
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/retry.txt
@@ -0,0 +1 @@
+ProgramNode(0...5)([], StatementsNode(0...5)([RetryNode(0...5)()]))
diff --git a/test/yarp/snapshots/whitequark/return.txt b/test/yarp/snapshots/whitequark/return.txt
new file mode 100644
index 0000000000..da8c8a6f0f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/return.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...41)(
+ [],
+ StatementsNode(0...41)(
+ [ReturnNode(0...6)((0...6), nil),
+ ReturnNode(8...18)(
+ (8...14),
+ ArgumentsNode(15...18)(
+ [CallNode(15...18)(nil, nil, (15...18), nil, nil, nil, nil, 0, "foo")]
+ )
+ ),
+ ReturnNode(20...28)(
+ (20...26),
+ ArgumentsNode(26...28)(
+ [ParenthesesNode(26...28)(nil, (26...27), (27...28))]
+ )
+ ),
+ ReturnNode(30...41)(
+ (30...36),
+ ArgumentsNode(36...41)(
+ [ParenthesesNode(36...41)(
+ StatementsNode(37...40)(
+ [CallNode(37...40)(
+ nil,
+ nil,
+ (37...40),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ (36...37),
+ (40...41)
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/return_block.txt b/test/yarp/snapshots/whitequark/return_block.txt
new file mode 100644
index 0000000000..87b2028abe
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/return_block.txt
@@ -0,0 +1,33 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [ReturnNode(0...21)(
+ (0...6),
+ ArgumentsNode(7...21)(
+ [CallNode(7...21)(
+ nil,
+ nil,
+ (7...10),
+ nil,
+ ArgumentsNode(11...14)(
+ [CallNode(11...14)(
+ nil,
+ nil,
+ (11...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )]
+ ),
+ nil,
+ BlockNode(15...21)([], nil, nil, (15...17), (18...21)),
+ 0,
+ "fun"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_10279.txt b/test/yarp/snapshots/whitequark/ruby_bug_10279.txt
new file mode 100644
index 0000000000..74c9d70fa3
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_10279.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [HashNode(0...24)(
+ (0...1),
+ [AssocNode(1...23)(
+ SymbolNode(1...3)(nil, (1...2), (2...3), "a"),
+ IfNode(4...23)(
+ (4...6),
+ TrueNode(7...11)(),
+ StatementsNode(17...19)([IntegerNode(17...19)()]),
+ nil,
+ (20...23)
+ ),
+ nil
+ )],
+ (23...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_10653.txt b/test/yarp/snapshots/whitequark/ruby_bug_10653.txt
new file mode 100644
index 0000000000..9223db088b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_10653.txt
@@ -0,0 +1,131 @@
+ProgramNode(0...93)(
+ [],
+ StatementsNode(0...93)(
+ [IfNode(0...33)(
+ nil,
+ FalseNode(0...5)(),
+ StatementsNode(8...20)(
+ [CallNode(8...20)(
+ nil,
+ nil,
+ (8...13),
+ nil,
+ nil,
+ nil,
+ BlockNode(14...20)([], nil, nil, (14...16), (17...20)),
+ 0,
+ "raise"
+ )]
+ ),
+ ElseNode(21...33)(
+ (21...22),
+ StatementsNode(23...33)(
+ [CallNode(23...33)(
+ nil,
+ nil,
+ (23...26),
+ nil,
+ nil,
+ nil,
+ BlockNode(27...33)([], nil, nil, (27...29), (30...33)),
+ 0,
+ "tap"
+ )]
+ ),
+ nil
+ ),
+ nil
+ ),
+ IfNode(35...60)(
+ nil,
+ FalseNode(35...40)(),
+ StatementsNode(43...51)(
+ [CallNode(43...51)(
+ nil,
+ nil,
+ (43...48),
+ nil,
+ nil,
+ nil,
+ BlockNode(49...51)([], nil, nil, (49...50), (50...51)),
+ 0,
+ "raise"
+ )]
+ ),
+ ElseNode(52...60)(
+ (52...53),
+ StatementsNode(54...60)(
+ [CallNode(54...60)(
+ nil,
+ nil,
+ (54...57),
+ nil,
+ nil,
+ nil,
+ BlockNode(58...60)([], nil, nil, (58...59), (59...60)),
+ 0,
+ "tap"
+ )]
+ ),
+ nil
+ ),
+ nil
+ ),
+ IfNode(62...93)(
+ nil,
+ TrueNode(62...66)(),
+ StatementsNode(69...89)(
+ [CallNode(69...89)(
+ IntegerNode(69...70)(),
+ (70...71),
+ (71...74),
+ nil,
+ nil,
+ nil,
+ BlockNode(75...89)(
+ [:n],
+ BlockParametersNode(78...81)(
+ ParametersNode(79...80)(
+ [RequiredParameterNode(79...80)(:n)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (78...79),
+ (80...81)
+ ),
+ StatementsNode(82...85)(
+ [CallNode(82...85)(
+ nil,
+ nil,
+ (82...83),
+ nil,
+ ArgumentsNode(84...85)(
+ [LocalVariableReadNode(84...85)(:n, 0)]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (75...77),
+ (86...89)
+ ),
+ 0,
+ "tap"
+ )]
+ ),
+ ElseNode(90...93)(
+ (90...91),
+ StatementsNode(92...93)([IntegerNode(92...93)()]),
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11107.txt b/test/yarp/snapshots/whitequark/ruby_bug_11107.txt
new file mode 100644
index 0000000000..0f5b129c5c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11107.txt
@@ -0,0 +1,35 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [CallNode(0...24)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...24)(
+ [LambdaNode(2...24)(
+ [],
+ (2...4),
+ BlockParametersNode(4...6)(nil, [], (4...5), (5...6)),
+ StatementsNode(10...20)(
+ [CallNode(10...20)(
+ nil,
+ nil,
+ (10...11),
+ (11...12),
+ nil,
+ (12...13),
+ BlockNode(14...20)([], nil, nil, (14...16), (17...20)),
+ 0,
+ "a"
+ )]
+ )
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11380.txt b/test/yarp/snapshots/whitequark/ruby_bug_11380.txt
new file mode 100644
index 0000000000..5962097a6a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11380.txt
@@ -0,0 +1,32 @@
+ProgramNode(0...28)(
+ [],
+ StatementsNode(0...28)(
+ [CallNode(0...28)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...21)(
+ [LambdaNode(2...15)(
+ [],
+ (2...4),
+ nil,
+ StatementsNode(7...13)(
+ [SymbolNode(7...13)((7...8), (8...13), nil, "hello")]
+ )
+ ),
+ KeywordHashNode(17...21)(
+ [AssocNode(17...21)(
+ SymbolNode(17...19)(nil, (17...18), (18...19), "a"),
+ IntegerNode(20...21)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ BlockNode(22...28)([], nil, nil, (22...24), (25...28)),
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11873.txt b/test/yarp/snapshots/whitequark/ruby_bug_11873.txt
new file mode 100644
index 0000000000..fa2e919f6e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11873.txt
@@ -0,0 +1,665 @@
+ProgramNode(0...272)(
+ [],
+ StatementsNode(0...272)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...13)(
+ [CallNode(2...8)(
+ nil,
+ nil,
+ (2...3),
+ (3...4),
+ ArgumentsNode(4...7)(
+ [CallNode(4...7)(
+ nil,
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...7)(
+ [CallNode(6...7)(
+ nil,
+ nil,
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (7...8),
+ nil,
+ 0,
+ "b"
+ ),
+ StringNode(10...13)((10...11), (11...12), (12...13), "x")]
+ ),
+ nil,
+ BlockNode(14...20)([], nil, nil, (14...16), (17...20)),
+ 0,
+ "a"
+ ),
+ CallNode(22...42)(
+ nil,
+ nil,
+ (22...23),
+ nil,
+ ArgumentsNode(24...35)(
+ [CallNode(24...30)(
+ nil,
+ nil,
+ (24...25),
+ (25...26),
+ ArgumentsNode(26...29)(
+ [CallNode(26...29)(
+ nil,
+ nil,
+ (26...27),
+ nil,
+ ArgumentsNode(28...29)(
+ [CallNode(28...29)(
+ nil,
+ nil,
+ (28...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (29...30),
+ nil,
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(32...35)(
+ (32...33),
+ (33...34),
+ (34...35),
+ "x",
+ 0
+ )]
+ ),
+ nil,
+ BlockNode(36...42)([], nil, nil, (36...38), (39...42)),
+ 0,
+ "a"
+ ),
+ CallNode(44...65)(
+ nil,
+ nil,
+ (44...45),
+ nil,
+ ArgumentsNode(46...58)(
+ [CallNode(46...52)(
+ nil,
+ nil,
+ (46...47),
+ (47...48),
+ ArgumentsNode(48...51)(
+ [CallNode(48...51)(
+ nil,
+ nil,
+ (48...49),
+ nil,
+ ArgumentsNode(50...51)(
+ [CallNode(50...51)(
+ nil,
+ nil,
+ (50...51),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (51...52),
+ nil,
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(54...58)(
+ (54...55),
+ (55...56),
+ (56...58),
+ "x",
+ 2
+ )]
+ ),
+ nil,
+ BlockNode(59...65)([], nil, nil, (59...61), (62...65)),
+ 0,
+ "a"
+ ),
+ CallNode(67...88)(
+ nil,
+ nil,
+ (67...68),
+ nil,
+ ArgumentsNode(69...81)(
+ [CallNode(69...76)(
+ nil,
+ nil,
+ (69...70),
+ (70...71),
+ ArgumentsNode(71...75)(
+ [CallNode(71...75)(
+ nil,
+ nil,
+ (71...72),
+ (72...73),
+ ArgumentsNode(73...74)(
+ [CallNode(73...74)(
+ nil,
+ nil,
+ (73...74),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (74...75),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (75...76),
+ nil,
+ 0,
+ "b"
+ ),
+ StringNode(78...81)((78...79), (79...80), (80...81), "x")]
+ ),
+ nil,
+ BlockNode(82...88)([], nil, nil, (82...84), (85...88)),
+ 0,
+ "a"
+ ),
+ CallNode(90...111)(
+ nil,
+ nil,
+ (90...91),
+ nil,
+ ArgumentsNode(92...104)(
+ [CallNode(92...99)(
+ nil,
+ nil,
+ (92...93),
+ (93...94),
+ ArgumentsNode(94...98)(
+ [CallNode(94...98)(
+ nil,
+ nil,
+ (94...95),
+ (95...96),
+ ArgumentsNode(96...97)(
+ [CallNode(96...97)(
+ nil,
+ nil,
+ (96...97),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (97...98),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (98...99),
+ nil,
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(101...104)(
+ (101...102),
+ (102...103),
+ (103...104),
+ "x",
+ 0
+ )]
+ ),
+ nil,
+ BlockNode(105...111)([], nil, nil, (105...107), (108...111)),
+ 0,
+ "a"
+ ),
+ CallNode(113...135)(
+ nil,
+ nil,
+ (113...114),
+ nil,
+ ArgumentsNode(115...128)(
+ [CallNode(115...122)(
+ nil,
+ nil,
+ (115...116),
+ (116...117),
+ ArgumentsNode(117...121)(
+ [CallNode(117...121)(
+ nil,
+ nil,
+ (117...118),
+ (118...119),
+ ArgumentsNode(119...120)(
+ [CallNode(119...120)(
+ nil,
+ nil,
+ (119...120),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (120...121),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (121...122),
+ nil,
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(124...128)(
+ (124...125),
+ (125...126),
+ (126...128),
+ "x",
+ 2
+ )]
+ ),
+ nil,
+ BlockNode(129...135)([], nil, nil, (129...131), (132...135)),
+ 0,
+ "a"
+ ),
+ CallNode(137...157)(
+ nil,
+ nil,
+ (137...138),
+ nil,
+ ArgumentsNode(139...150)(
+ [CallNode(139...145)(
+ nil,
+ nil,
+ (139...140),
+ nil,
+ nil,
+ nil,
+ BlockNode(140...145)(
+ [],
+ nil,
+ StatementsNode(141...144)(
+ [CallNode(141...144)(
+ nil,
+ nil,
+ (141...142),
+ nil,
+ ArgumentsNode(143...144)(
+ [CallNode(143...144)(
+ nil,
+ nil,
+ (143...144),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (140...141),
+ (144...145)
+ ),
+ 0,
+ "b"
+ ),
+ StringNode(147...150)((147...148), (148...149), (149...150), "x")]
+ ),
+ nil,
+ BlockNode(151...157)([], nil, nil, (151...153), (154...157)),
+ 0,
+ "a"
+ ),
+ CallNode(159...179)(
+ nil,
+ nil,
+ (159...160),
+ nil,
+ ArgumentsNode(161...172)(
+ [CallNode(161...167)(
+ nil,
+ nil,
+ (161...162),
+ nil,
+ nil,
+ nil,
+ BlockNode(162...167)(
+ [],
+ nil,
+ StatementsNode(163...166)(
+ [CallNode(163...166)(
+ nil,
+ nil,
+ (163...164),
+ nil,
+ ArgumentsNode(165...166)(
+ [CallNode(165...166)(
+ nil,
+ nil,
+ (165...166),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (162...163),
+ (166...167)
+ ),
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(169...172)(
+ (169...170),
+ (170...171),
+ (171...172),
+ "x",
+ 0
+ )]
+ ),
+ nil,
+ BlockNode(173...179)([], nil, nil, (173...175), (176...179)),
+ 0,
+ "a"
+ ),
+ CallNode(181...202)(
+ nil,
+ nil,
+ (181...182),
+ nil,
+ ArgumentsNode(183...195)(
+ [CallNode(183...189)(
+ nil,
+ nil,
+ (183...184),
+ nil,
+ nil,
+ nil,
+ BlockNode(184...189)(
+ [],
+ nil,
+ StatementsNode(185...188)(
+ [CallNode(185...188)(
+ nil,
+ nil,
+ (185...186),
+ nil,
+ ArgumentsNode(187...188)(
+ [CallNode(187...188)(
+ nil,
+ nil,
+ (187...188),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (184...185),
+ (188...189)
+ ),
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(191...195)(
+ (191...192),
+ (192...193),
+ (193...195),
+ "x",
+ 2
+ )]
+ ),
+ nil,
+ BlockNode(196...202)([], nil, nil, (196...198), (199...202)),
+ 0,
+ "a"
+ ),
+ CallNode(204...225)(
+ nil,
+ nil,
+ (204...205),
+ nil,
+ ArgumentsNode(206...218)(
+ [CallNode(206...213)(
+ nil,
+ nil,
+ (206...207),
+ nil,
+ nil,
+ nil,
+ BlockNode(207...213)(
+ [],
+ nil,
+ StatementsNode(208...212)(
+ [CallNode(208...212)(
+ nil,
+ nil,
+ (208...209),
+ (209...210),
+ ArgumentsNode(210...211)(
+ [CallNode(210...211)(
+ nil,
+ nil,
+ (210...211),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (211...212),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (207...208),
+ (212...213)
+ ),
+ 0,
+ "b"
+ ),
+ StringNode(215...218)((215...216), (216...217), (217...218), "x")]
+ ),
+ nil,
+ BlockNode(219...225)([], nil, nil, (219...221), (222...225)),
+ 0,
+ "a"
+ ),
+ CallNode(227...248)(
+ nil,
+ nil,
+ (227...228),
+ nil,
+ ArgumentsNode(229...241)(
+ [CallNode(229...236)(
+ nil,
+ nil,
+ (229...230),
+ nil,
+ nil,
+ nil,
+ BlockNode(230...236)(
+ [],
+ nil,
+ StatementsNode(231...235)(
+ [CallNode(231...235)(
+ nil,
+ nil,
+ (231...232),
+ (232...233),
+ ArgumentsNode(233...234)(
+ [CallNode(233...234)(
+ nil,
+ nil,
+ (233...234),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (234...235),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (230...231),
+ (235...236)
+ ),
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(238...241)(
+ (238...239),
+ (239...240),
+ (240...241),
+ "x",
+ 0
+ )]
+ ),
+ nil,
+ BlockNode(242...248)([], nil, nil, (242...244), (245...248)),
+ 0,
+ "a"
+ ),
+ CallNode(250...272)(
+ nil,
+ nil,
+ (250...251),
+ nil,
+ ArgumentsNode(252...265)(
+ [CallNode(252...259)(
+ nil,
+ nil,
+ (252...253),
+ nil,
+ nil,
+ nil,
+ BlockNode(253...259)(
+ [],
+ nil,
+ StatementsNode(254...258)(
+ [CallNode(254...258)(
+ nil,
+ nil,
+ (254...255),
+ (255...256),
+ ArgumentsNode(256...257)(
+ [CallNode(256...257)(
+ nil,
+ nil,
+ (256...257),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (257...258),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (253...254),
+ (258...259)
+ ),
+ 0,
+ "b"
+ ),
+ RegularExpressionNode(261...265)(
+ (261...262),
+ (262...263),
+ (263...265),
+ "x",
+ 2
+ )]
+ ),
+ nil,
+ BlockNode(266...272)([], nil, nil, (266...268), (269...272)),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11873_a.txt b/test/yarp/snapshots/whitequark/ruby_bug_11873_a.txt
new file mode 100644
index 0000000000..4cb06f16cd
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11873_a.txt
@@ -0,0 +1,1025 @@
+ProgramNode(0...444)(
+ [],
+ StatementsNode(0...444)(
+ [CallNode(0...18)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...11)(
+ [CallNode(2...8)(
+ nil,
+ nil,
+ (2...3),
+ (3...4),
+ ArgumentsNode(4...7)(
+ [CallNode(4...7)(
+ nil,
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...7)(
+ [CallNode(6...7)(
+ nil,
+ nil,
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (7...8),
+ nil,
+ 0,
+ "b"
+ ),
+ IntegerNode(10...11)()]
+ ),
+ nil,
+ BlockNode(12...18)([], nil, nil, (12...14), (15...18)),
+ 0,
+ "a"
+ ),
+ CallNode(20...40)(
+ nil,
+ nil,
+ (20...21),
+ nil,
+ ArgumentsNode(22...33)(
+ [CallNode(22...28)(
+ nil,
+ nil,
+ (22...23),
+ (23...24),
+ ArgumentsNode(24...27)(
+ [CallNode(24...27)(
+ nil,
+ nil,
+ (24...25),
+ nil,
+ ArgumentsNode(26...27)(
+ [CallNode(26...27)(
+ nil,
+ nil,
+ (26...27),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (27...28),
+ nil,
+ 0,
+ "b"
+ ),
+ FloatNode(30...33)()]
+ ),
+ nil,
+ BlockNode(34...40)([], nil, nil, (34...36), (37...40)),
+ 0,
+ "a"
+ ),
+ CallNode(42...63)(
+ nil,
+ nil,
+ (42...43),
+ nil,
+ ArgumentsNode(44...56)(
+ [CallNode(44...50)(
+ nil,
+ nil,
+ (44...45),
+ (45...46),
+ ArgumentsNode(46...49)(
+ [CallNode(46...49)(
+ nil,
+ nil,
+ (46...47),
+ nil,
+ ArgumentsNode(48...49)(
+ [CallNode(48...49)(
+ nil,
+ nil,
+ (48...49),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (49...50),
+ nil,
+ 0,
+ "b"
+ ),
+ ImaginaryNode(52...56)(FloatNode(52...55)())]
+ ),
+ nil,
+ BlockNode(57...63)([], nil, nil, (57...59), (60...63)),
+ 0,
+ "a"
+ ),
+ CallNode(65...86)(
+ nil,
+ nil,
+ (65...66),
+ nil,
+ ArgumentsNode(67...79)(
+ [CallNode(67...73)(
+ nil,
+ nil,
+ (67...68),
+ (68...69),
+ ArgumentsNode(69...72)(
+ [CallNode(69...72)(
+ nil,
+ nil,
+ (69...70),
+ nil,
+ ArgumentsNode(71...72)(
+ [CallNode(71...72)(
+ nil,
+ nil,
+ (71...72),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (72...73),
+ nil,
+ 0,
+ "b"
+ ),
+ RationalNode(75...79)(FloatNode(75...78)())]
+ ),
+ nil,
+ BlockNode(80...86)([], nil, nil, (80...82), (83...86)),
+ 0,
+ "a"
+ ),
+ CallNode(88...107)(
+ nil,
+ nil,
+ (88...89),
+ nil,
+ ArgumentsNode(90...100)(
+ [CallNode(90...96)(
+ nil,
+ nil,
+ (90...91),
+ (91...92),
+ ArgumentsNode(92...95)(
+ [CallNode(92...95)(
+ nil,
+ nil,
+ (92...93),
+ nil,
+ ArgumentsNode(94...95)(
+ [CallNode(94...95)(
+ nil,
+ nil,
+ (94...95),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (95...96),
+ nil,
+ 0,
+ "b"
+ ),
+ SymbolNode(98...100)((98...99), (99...100), nil, "e")]
+ ),
+ nil,
+ BlockNode(101...107)([], nil, nil, (101...103), (104...107)),
+ 0,
+ "a"
+ ),
+ CallNode(109...128)(
+ nil,
+ nil,
+ (109...110),
+ nil,
+ ArgumentsNode(111...121)(
+ [CallNode(111...118)(
+ nil,
+ nil,
+ (111...112),
+ (112...113),
+ ArgumentsNode(113...117)(
+ [CallNode(113...117)(
+ nil,
+ nil,
+ (113...114),
+ (114...115),
+ ArgumentsNode(115...116)(
+ [CallNode(115...116)(
+ nil,
+ nil,
+ (115...116),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (116...117),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (117...118),
+ nil,
+ 0,
+ "b"
+ ),
+ IntegerNode(120...121)()]
+ ),
+ nil,
+ BlockNode(122...128)([], nil, nil, (122...124), (125...128)),
+ 0,
+ "a"
+ ),
+ CallNode(130...151)(
+ nil,
+ nil,
+ (130...131),
+ nil,
+ ArgumentsNode(132...144)(
+ [CallNode(132...139)(
+ nil,
+ nil,
+ (132...133),
+ (133...134),
+ ArgumentsNode(134...138)(
+ [CallNode(134...138)(
+ nil,
+ nil,
+ (134...135),
+ (135...136),
+ ArgumentsNode(136...137)(
+ [CallNode(136...137)(
+ nil,
+ nil,
+ (136...137),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (137...138),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (138...139),
+ nil,
+ 0,
+ "b"
+ ),
+ FloatNode(141...144)()]
+ ),
+ nil,
+ BlockNode(145...151)([], nil, nil, (145...147), (148...151)),
+ 0,
+ "a"
+ ),
+ CallNode(153...175)(
+ nil,
+ nil,
+ (153...154),
+ nil,
+ ArgumentsNode(155...168)(
+ [CallNode(155...162)(
+ nil,
+ nil,
+ (155...156),
+ (156...157),
+ ArgumentsNode(157...161)(
+ [CallNode(157...161)(
+ nil,
+ nil,
+ (157...158),
+ (158...159),
+ ArgumentsNode(159...160)(
+ [CallNode(159...160)(
+ nil,
+ nil,
+ (159...160),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (160...161),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (161...162),
+ nil,
+ 0,
+ "b"
+ ),
+ ImaginaryNode(164...168)(FloatNode(164...167)())]
+ ),
+ nil,
+ BlockNode(169...175)([], nil, nil, (169...171), (172...175)),
+ 0,
+ "a"
+ ),
+ CallNode(177...199)(
+ nil,
+ nil,
+ (177...178),
+ nil,
+ ArgumentsNode(179...192)(
+ [CallNode(179...186)(
+ nil,
+ nil,
+ (179...180),
+ (180...181),
+ ArgumentsNode(181...185)(
+ [CallNode(181...185)(
+ nil,
+ nil,
+ (181...182),
+ (182...183),
+ ArgumentsNode(183...184)(
+ [CallNode(183...184)(
+ nil,
+ nil,
+ (183...184),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (184...185),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (185...186),
+ nil,
+ 0,
+ "b"
+ ),
+ RationalNode(188...192)(FloatNode(188...191)())]
+ ),
+ nil,
+ BlockNode(193...199)([], nil, nil, (193...195), (196...199)),
+ 0,
+ "a"
+ ),
+ CallNode(201...221)(
+ nil,
+ nil,
+ (201...202),
+ nil,
+ ArgumentsNode(203...214)(
+ [CallNode(203...210)(
+ nil,
+ nil,
+ (203...204),
+ (204...205),
+ ArgumentsNode(205...209)(
+ [CallNode(205...209)(
+ nil,
+ nil,
+ (205...206),
+ (206...207),
+ ArgumentsNode(207...208)(
+ [CallNode(207...208)(
+ nil,
+ nil,
+ (207...208),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (208...209),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (209...210),
+ nil,
+ 0,
+ "b"
+ ),
+ SymbolNode(212...214)((212...213), (213...214), nil, "e")]
+ ),
+ nil,
+ BlockNode(215...221)([], nil, nil, (215...217), (218...221)),
+ 0,
+ "a"
+ ),
+ CallNode(223...241)(
+ nil,
+ nil,
+ (223...224),
+ nil,
+ ArgumentsNode(225...234)(
+ [CallNode(225...231)(
+ nil,
+ nil,
+ (225...226),
+ nil,
+ nil,
+ nil,
+ BlockNode(226...231)(
+ [],
+ nil,
+ StatementsNode(227...230)(
+ [CallNode(227...230)(
+ nil,
+ nil,
+ (227...228),
+ nil,
+ ArgumentsNode(229...230)(
+ [CallNode(229...230)(
+ nil,
+ nil,
+ (229...230),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (226...227),
+ (230...231)
+ ),
+ 0,
+ "b"
+ ),
+ IntegerNode(233...234)()]
+ ),
+ nil,
+ BlockNode(235...241)([], nil, nil, (235...237), (238...241)),
+ 0,
+ "a"
+ ),
+ CallNode(243...263)(
+ nil,
+ nil,
+ (243...244),
+ nil,
+ ArgumentsNode(245...256)(
+ [CallNode(245...251)(
+ nil,
+ nil,
+ (245...246),
+ nil,
+ nil,
+ nil,
+ BlockNode(246...251)(
+ [],
+ nil,
+ StatementsNode(247...250)(
+ [CallNode(247...250)(
+ nil,
+ nil,
+ (247...248),
+ nil,
+ ArgumentsNode(249...250)(
+ [CallNode(249...250)(
+ nil,
+ nil,
+ (249...250),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (246...247),
+ (250...251)
+ ),
+ 0,
+ "b"
+ ),
+ FloatNode(253...256)()]
+ ),
+ nil,
+ BlockNode(257...263)([], nil, nil, (257...259), (260...263)),
+ 0,
+ "a"
+ ),
+ CallNode(265...286)(
+ nil,
+ nil,
+ (265...266),
+ nil,
+ ArgumentsNode(267...279)(
+ [CallNode(267...273)(
+ nil,
+ nil,
+ (267...268),
+ nil,
+ nil,
+ nil,
+ BlockNode(268...273)(
+ [],
+ nil,
+ StatementsNode(269...272)(
+ [CallNode(269...272)(
+ nil,
+ nil,
+ (269...270),
+ nil,
+ ArgumentsNode(271...272)(
+ [CallNode(271...272)(
+ nil,
+ nil,
+ (271...272),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (268...269),
+ (272...273)
+ ),
+ 0,
+ "b"
+ ),
+ ImaginaryNode(275...279)(FloatNode(275...278)())]
+ ),
+ nil,
+ BlockNode(280...286)([], nil, nil, (280...282), (283...286)),
+ 0,
+ "a"
+ ),
+ CallNode(288...309)(
+ nil,
+ nil,
+ (288...289),
+ nil,
+ ArgumentsNode(290...302)(
+ [CallNode(290...296)(
+ nil,
+ nil,
+ (290...291),
+ nil,
+ nil,
+ nil,
+ BlockNode(291...296)(
+ [],
+ nil,
+ StatementsNode(292...295)(
+ [CallNode(292...295)(
+ nil,
+ nil,
+ (292...293),
+ nil,
+ ArgumentsNode(294...295)(
+ [CallNode(294...295)(
+ nil,
+ nil,
+ (294...295),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (291...292),
+ (295...296)
+ ),
+ 0,
+ "b"
+ ),
+ RationalNode(298...302)(FloatNode(298...301)())]
+ ),
+ nil,
+ BlockNode(303...309)([], nil, nil, (303...305), (306...309)),
+ 0,
+ "a"
+ ),
+ CallNode(311...330)(
+ nil,
+ nil,
+ (311...312),
+ nil,
+ ArgumentsNode(313...323)(
+ [CallNode(313...319)(
+ nil,
+ nil,
+ (313...314),
+ nil,
+ nil,
+ nil,
+ BlockNode(314...319)(
+ [],
+ nil,
+ StatementsNode(315...318)(
+ [CallNode(315...318)(
+ nil,
+ nil,
+ (315...316),
+ nil,
+ ArgumentsNode(317...318)(
+ [CallNode(317...318)(
+ nil,
+ nil,
+ (317...318),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (314...315),
+ (318...319)
+ ),
+ 0,
+ "b"
+ ),
+ SymbolNode(321...323)((321...322), (322...323), nil, "e")]
+ ),
+ nil,
+ BlockNode(324...330)([], nil, nil, (324...326), (327...330)),
+ 0,
+ "a"
+ ),
+ CallNode(332...351)(
+ nil,
+ nil,
+ (332...333),
+ nil,
+ ArgumentsNode(334...344)(
+ [CallNode(334...341)(
+ nil,
+ nil,
+ (334...335),
+ nil,
+ nil,
+ nil,
+ BlockNode(335...341)(
+ [],
+ nil,
+ StatementsNode(336...340)(
+ [CallNode(336...340)(
+ nil,
+ nil,
+ (336...337),
+ (337...338),
+ ArgumentsNode(338...339)(
+ [CallNode(338...339)(
+ nil,
+ nil,
+ (338...339),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (339...340),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (335...336),
+ (340...341)
+ ),
+ 0,
+ "b"
+ ),
+ IntegerNode(343...344)()]
+ ),
+ nil,
+ BlockNode(345...351)([], nil, nil, (345...347), (348...351)),
+ 0,
+ "a"
+ ),
+ CallNode(353...374)(
+ nil,
+ nil,
+ (353...354),
+ nil,
+ ArgumentsNode(355...367)(
+ [CallNode(355...362)(
+ nil,
+ nil,
+ (355...356),
+ nil,
+ nil,
+ nil,
+ BlockNode(356...362)(
+ [],
+ nil,
+ StatementsNode(357...361)(
+ [CallNode(357...361)(
+ nil,
+ nil,
+ (357...358),
+ (358...359),
+ ArgumentsNode(359...360)(
+ [CallNode(359...360)(
+ nil,
+ nil,
+ (359...360),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (360...361),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (356...357),
+ (361...362)
+ ),
+ 0,
+ "b"
+ ),
+ FloatNode(364...367)()]
+ ),
+ nil,
+ BlockNode(368...374)([], nil, nil, (368...370), (371...374)),
+ 0,
+ "a"
+ ),
+ CallNode(376...398)(
+ nil,
+ nil,
+ (376...377),
+ nil,
+ ArgumentsNode(378...391)(
+ [CallNode(378...385)(
+ nil,
+ nil,
+ (378...379),
+ nil,
+ nil,
+ nil,
+ BlockNode(379...385)(
+ [],
+ nil,
+ StatementsNode(380...384)(
+ [CallNode(380...384)(
+ nil,
+ nil,
+ (380...381),
+ (381...382),
+ ArgumentsNode(382...383)(
+ [CallNode(382...383)(
+ nil,
+ nil,
+ (382...383),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (383...384),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (379...380),
+ (384...385)
+ ),
+ 0,
+ "b"
+ ),
+ ImaginaryNode(387...391)(FloatNode(387...390)())]
+ ),
+ nil,
+ BlockNode(392...398)([], nil, nil, (392...394), (395...398)),
+ 0,
+ "a"
+ ),
+ CallNode(400...422)(
+ nil,
+ nil,
+ (400...401),
+ nil,
+ ArgumentsNode(402...415)(
+ [CallNode(402...409)(
+ nil,
+ nil,
+ (402...403),
+ nil,
+ nil,
+ nil,
+ BlockNode(403...409)(
+ [],
+ nil,
+ StatementsNode(404...408)(
+ [CallNode(404...408)(
+ nil,
+ nil,
+ (404...405),
+ (405...406),
+ ArgumentsNode(406...407)(
+ [CallNode(406...407)(
+ nil,
+ nil,
+ (406...407),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (407...408),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (403...404),
+ (408...409)
+ ),
+ 0,
+ "b"
+ ),
+ RationalNode(411...415)(FloatNode(411...414)())]
+ ),
+ nil,
+ BlockNode(416...422)([], nil, nil, (416...418), (419...422)),
+ 0,
+ "a"
+ ),
+ CallNode(424...444)(
+ nil,
+ nil,
+ (424...425),
+ nil,
+ ArgumentsNode(426...437)(
+ [CallNode(426...433)(
+ nil,
+ nil,
+ (426...427),
+ nil,
+ nil,
+ nil,
+ BlockNode(427...433)(
+ [],
+ nil,
+ StatementsNode(428...432)(
+ [CallNode(428...432)(
+ nil,
+ nil,
+ (428...429),
+ (429...430),
+ ArgumentsNode(430...431)(
+ [CallNode(430...431)(
+ nil,
+ nil,
+ (430...431),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "d"
+ )]
+ ),
+ (431...432),
+ nil,
+ 0,
+ "c"
+ )]
+ ),
+ (427...428),
+ (432...433)
+ ),
+ 0,
+ "b"
+ ),
+ SymbolNode(435...437)((435...436), (436...437), nil, "e")]
+ ),
+ nil,
+ BlockNode(438...444)([], nil, nil, (438...440), (441...444)),
+ 0,
+ "a"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11873_b.txt b/test/yarp/snapshots/whitequark/ruby_bug_11873_b.txt
new file mode 100644
index 0000000000..b84ec0e5b1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11873_b.txt
@@ -0,0 +1,82 @@
+ProgramNode(0...25)(
+ [],
+ StatementsNode(0...25)(
+ [CallNode(0...25)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...18)(
+ [CallNode(2...13)(
+ nil,
+ nil,
+ (2...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(3...13)(
+ [],
+ nil,
+ StatementsNode(4...12)(
+ [CallNode(4...8)(
+ nil,
+ nil,
+ (4...5),
+ (5...6),
+ ArgumentsNode(6...7)(
+ [CallNode(6...7)(
+ nil,
+ nil,
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (7...8),
+ nil,
+ 0,
+ "p"
+ ),
+ CallNode(9...12)(
+ nil,
+ nil,
+ (9...10),
+ nil,
+ ArgumentsNode(11...12)(
+ [CallNode(11...12)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ ),
+ (3...4),
+ (12...13)
+ ),
+ 0,
+ "p"
+ ),
+ CallNode(15...18)(nil, nil, (15...18), nil, nil, nil, nil, 0, "tap")]
+ ),
+ nil,
+ BlockNode(19...25)([], nil, nil, (19...21), (22...25)),
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11989.txt b/test/yarp/snapshots/whitequark/ruby_bug_11989.txt
new file mode 100644
index 0000000000..fb5f7330c9
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11989.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [CallNode(0...21)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...21)(
+ [InterpolatedStringNode(2...21)(
+ (2...8),
+ [StringNode(9...19)(nil, (9...19), nil, "x\n" + " y\n")],
+ (19...21)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_11990.txt b/test/yarp/snapshots/whitequark/ruby_bug_11990.txt
new file mode 100644
index 0000000000..1a1a68796e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_11990.txt
@@ -0,0 +1,25 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...12)(
+ [StringConcatNode(2...12)(
+ InterpolatedStringNode(2...19)(
+ (2...6),
+ [StringNode(13...17)(nil, (13...17), nil, "x\n")],
+ (17...19)
+ ),
+ StringNode(7...12)((7...8), (8...11), (11...12), " y")
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "p"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_12073.txt b/test/yarp/snapshots/whitequark/ruby_bug_12073.txt
new file mode 100644
index 0000000000..7614f1b120
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_12073.txt
@@ -0,0 +1,71 @@
+ProgramNode(0...49)(
+ [:a],
+ StatementsNode(0...49)(
+ [LocalVariableWriteNode(0...5)(
+ :a,
+ 0,
+ IntegerNode(4...5)(),
+ (0...1),
+ (2...3)
+ ),
+ CallNode(7...13)(
+ nil,
+ nil,
+ (7...8),
+ nil,
+ ArgumentsNode(9...13)(
+ [KeywordHashNode(9...13)(
+ [AssocNode(9...13)(
+ SymbolNode(9...11)(nil, (9...10), (10...11), "b"),
+ IntegerNode(12...13)(),
+ nil
+ )]
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "a"
+ ),
+ DefNode(15...49)(
+ (19...22),
+ nil,
+ ParametersNode(23...28)(
+ [RequiredParameterNode(23...28)(:raise)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ StatementsNode(30...44)(
+ [CallNode(30...44)(
+ nil,
+ nil,
+ (30...35),
+ nil,
+ ArgumentsNode(36...44)(
+ [ConstantPathNode(36...40)(
+ ConstantReadNode(36...37)(),
+ ConstantReadNode(39...40)(),
+ (37...39)
+ ),
+ StringNode(42...44)((42...43), (43...43), (43...44), "")]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ )]
+ ),
+ [:raise],
+ (15...18),
+ nil,
+ nil,
+ nil,
+ nil,
+ (46...49)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_12402.txt b/test/yarp/snapshots/whitequark/ruby_bug_12402.txt
new file mode 100644
index 0000000000..f68c8dc46b
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_12402.txt
@@ -0,0 +1,543 @@
+ProgramNode(0...437)(
+ [:foo],
+ StatementsNode(0...437)(
+ [LocalVariableOperatorWriteNode(0...27)(
+ (0...3),
+ (4...6),
+ CallNode(7...27)(
+ nil,
+ nil,
+ (7...12),
+ nil,
+ ArgumentsNode(13...27)(
+ [RescueModifierNode(13...27)(
+ CallNode(13...16)(
+ nil,
+ nil,
+ (13...16),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (17...23),
+ NilNode(24...27)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :foo,
+ :+
+ ),
+ LocalVariableOperatorWriteNode(29...57)(
+ (29...32),
+ (33...35),
+ RescueModifierNode(36...57)(
+ CallNode(36...46)(
+ nil,
+ nil,
+ (36...41),
+ (41...42),
+ ArgumentsNode(42...45)(
+ [CallNode(42...45)(
+ nil,
+ nil,
+ (42...45),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (45...46),
+ nil,
+ 0,
+ "raise"
+ ),
+ (47...53),
+ NilNode(54...57)()
+ ),
+ :foo,
+ :+
+ ),
+ LocalVariableWriteNode(59...85)(
+ :foo,
+ 0,
+ CallNode(65...85)(
+ nil,
+ nil,
+ (65...70),
+ nil,
+ ArgumentsNode(71...85)(
+ [RescueModifierNode(71...85)(
+ CallNode(71...74)(
+ nil,
+ nil,
+ (71...74),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (75...81),
+ NilNode(82...85)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ (59...62),
+ (63...64)
+ ),
+ LocalVariableWriteNode(87...114)(
+ :foo,
+ 0,
+ RescueModifierNode(93...114)(
+ CallNode(93...103)(
+ nil,
+ nil,
+ (93...98),
+ (98...99),
+ ArgumentsNode(99...102)(
+ [CallNode(99...102)(
+ nil,
+ nil,
+ (99...102),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (102...103),
+ nil,
+ 0,
+ "raise"
+ ),
+ (104...110),
+ NilNode(111...114)()
+ ),
+ (87...90),
+ (91...92)
+ ),
+ CallOperatorWriteNode(116...145)(
+ CallNode(116...121)(
+ LocalVariableReadNode(116...119)(:foo, 0),
+ (119...120),
+ (120...121),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "C="
+ ),
+ (122...124),
+ CallNode(125...145)(
+ nil,
+ nil,
+ (125...130),
+ nil,
+ ArgumentsNode(131...145)(
+ [RescueModifierNode(131...145)(
+ CallNode(131...134)(
+ nil,
+ nil,
+ (131...134),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (135...141),
+ NilNode(142...145)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(147...177)(
+ CallNode(147...152)(
+ LocalVariableReadNode(147...150)(:foo, 0),
+ (150...151),
+ (151...152),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "C="
+ ),
+ (153...155),
+ RescueModifierNode(156...177)(
+ CallNode(156...166)(
+ nil,
+ nil,
+ (156...161),
+ (161...162),
+ ArgumentsNode(162...165)(
+ [CallNode(162...165)(
+ nil,
+ nil,
+ (162...165),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (165...166),
+ nil,
+ 0,
+ "raise"
+ ),
+ (167...173),
+ NilNode(174...177)()
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(179...208)(
+ CallNode(179...184)(
+ LocalVariableReadNode(179...182)(:foo, 0),
+ (182...183),
+ (183...184),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "m="
+ ),
+ (185...187),
+ CallNode(188...208)(
+ nil,
+ nil,
+ (188...193),
+ nil,
+ ArgumentsNode(194...208)(
+ [RescueModifierNode(194...208)(
+ CallNode(194...197)(
+ nil,
+ nil,
+ (194...197),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (198...204),
+ NilNode(205...208)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(210...240)(
+ CallNode(210...215)(
+ LocalVariableReadNode(210...213)(:foo, 0),
+ (213...214),
+ (214...215),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "m="
+ ),
+ (216...218),
+ RescueModifierNode(219...240)(
+ CallNode(219...229)(
+ nil,
+ nil,
+ (219...224),
+ (224...225),
+ ArgumentsNode(225...228)(
+ [CallNode(225...228)(
+ nil,
+ nil,
+ (225...228),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (228...229),
+ nil,
+ 0,
+ "raise"
+ ),
+ (230...236),
+ NilNode(237...240)()
+ ),
+ :+
+ ),
+ ConstantPathOperatorOrWriteNode(242...273)(
+ ConstantPathNode(242...248)(
+ LocalVariableReadNode(242...245)(:foo, 0),
+ ConstantReadNode(247...248)(),
+ (245...247)
+ ),
+ (249...252),
+ CallNode(253...273)(
+ nil,
+ nil,
+ (253...258),
+ nil,
+ ArgumentsNode(259...273)(
+ [RescueModifierNode(259...273)(
+ CallNode(259...262)(
+ nil,
+ nil,
+ (259...262),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (263...269),
+ NilNode(270...273)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ )
+ ),
+ ConstantPathOperatorOrWriteNode(275...307)(
+ ConstantPathNode(275...281)(
+ LocalVariableReadNode(275...278)(:foo, 0),
+ ConstantReadNode(280...281)(),
+ (278...280)
+ ),
+ (282...285),
+ RescueModifierNode(286...307)(
+ CallNode(286...296)(
+ nil,
+ nil,
+ (286...291),
+ (291...292),
+ ArgumentsNode(292...295)(
+ [CallNode(292...295)(
+ nil,
+ nil,
+ (292...295),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (295...296),
+ nil,
+ 0,
+ "raise"
+ ),
+ (297...303),
+ NilNode(304...307)()
+ )
+ ),
+ CallOperatorWriteNode(309...339)(
+ CallNode(309...315)(
+ LocalVariableReadNode(309...312)(:foo, 0),
+ (312...314),
+ (314...315),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "m="
+ ),
+ (316...318),
+ CallNode(319...339)(
+ nil,
+ nil,
+ (319...324),
+ nil,
+ ArgumentsNode(325...339)(
+ [RescueModifierNode(325...339)(
+ CallNode(325...328)(
+ nil,
+ nil,
+ (325...328),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (329...335),
+ NilNode(336...339)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(341...372)(
+ CallNode(341...347)(
+ LocalVariableReadNode(341...344)(:foo, 0),
+ (344...346),
+ (346...347),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "m="
+ ),
+ (348...350),
+ RescueModifierNode(351...372)(
+ CallNode(351...361)(
+ nil,
+ nil,
+ (351...356),
+ (356...357),
+ ArgumentsNode(357...360)(
+ [CallNode(357...360)(
+ nil,
+ nil,
+ (357...360),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (360...361),
+ nil,
+ 0,
+ "raise"
+ ),
+ (362...368),
+ NilNode(369...372)()
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(374...404)(
+ CallNode(374...380)(
+ LocalVariableReadNode(374...377)(:foo, 0),
+ nil,
+ (377...380),
+ (377...378),
+ ArgumentsNode(378...379)([IntegerNode(378...379)()]),
+ (379...380),
+ nil,
+ 0,
+ "[]="
+ ),
+ (381...383),
+ CallNode(384...404)(
+ nil,
+ nil,
+ (384...389),
+ nil,
+ ArgumentsNode(390...404)(
+ [RescueModifierNode(390...404)(
+ CallNode(390...393)(
+ nil,
+ nil,
+ (390...393),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ (394...400),
+ NilNode(401...404)()
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :+
+ ),
+ CallOperatorWriteNode(406...437)(
+ CallNode(406...412)(
+ LocalVariableReadNode(406...409)(:foo, 0),
+ nil,
+ (409...412),
+ (409...410),
+ ArgumentsNode(410...411)([IntegerNode(410...411)()]),
+ (411...412),
+ nil,
+ 0,
+ "[]="
+ ),
+ (413...415),
+ RescueModifierNode(416...437)(
+ CallNode(416...426)(
+ nil,
+ nil,
+ (416...421),
+ (421...422),
+ ArgumentsNode(422...425)(
+ [CallNode(422...425)(
+ nil,
+ nil,
+ (422...425),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (425...426),
+ nil,
+ 0,
+ "raise"
+ ),
+ (427...433),
+ NilNode(434...437)()
+ ),
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_12669.txt b/test/yarp/snapshots/whitequark/ruby_bug_12669.txt
new file mode 100644
index 0000000000..fc6b673c50
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_12669.txt
@@ -0,0 +1,105 @@
+ProgramNode(0...74)(
+ [:a, :b],
+ StatementsNode(0...74)(
+ [LocalVariableOperatorWriteNode(0...18)(
+ (0...1),
+ (2...4),
+ LocalVariableOperatorWriteNode(5...18)(
+ (5...6),
+ (7...9),
+ CallNode(10...18)(
+ nil,
+ nil,
+ (10...15),
+ nil,
+ ArgumentsNode(16...18)(
+ [SymbolNode(16...18)((16...17), (17...18), nil, "x")]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :b,
+ :+
+ ),
+ :a,
+ :+
+ ),
+ LocalVariableOperatorWriteNode(20...37)(
+ (20...21),
+ (22...24),
+ LocalVariableWriteNode(25...37)(
+ :b,
+ 0,
+ CallNode(29...37)(
+ nil,
+ nil,
+ (29...34),
+ nil,
+ ArgumentsNode(35...37)(
+ [SymbolNode(35...37)((35...36), (36...37), nil, "x")]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ (25...26),
+ (27...28)
+ ),
+ :a,
+ :+
+ ),
+ LocalVariableWriteNode(39...56)(
+ :a,
+ 0,
+ LocalVariableOperatorWriteNode(43...56)(
+ (43...44),
+ (45...47),
+ CallNode(48...56)(
+ nil,
+ nil,
+ (48...53),
+ nil,
+ ArgumentsNode(54...56)(
+ [SymbolNode(54...56)((54...55), (55...56), nil, "x")]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ :b,
+ :+
+ ),
+ (39...40),
+ (41...42)
+ ),
+ LocalVariableWriteNode(58...74)(
+ :a,
+ 0,
+ LocalVariableWriteNode(62...74)(
+ :b,
+ 0,
+ CallNode(66...74)(
+ nil,
+ nil,
+ (66...71),
+ nil,
+ ArgumentsNode(72...74)(
+ [SymbolNode(72...74)((72...73), (73...74), nil, "x")]
+ ),
+ nil,
+ nil,
+ 0,
+ "raise"
+ ),
+ (62...63),
+ (64...65)
+ ),
+ (58...59),
+ (60...61)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_12686.txt b/test/yarp/snapshots/whitequark/ruby_bug_12686.txt
new file mode 100644
index 0000000000..6e23f38355
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_12686.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...16)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...16)(
+ [ParenthesesNode(2...16)(
+ StatementsNode(3...15)(
+ [RescueModifierNode(3...15)(
+ CallNode(3...4)(
+ nil,
+ nil,
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "g"
+ ),
+ (5...11),
+ NilNode(12...15)()
+ )]
+ ),
+ (2...3),
+ (15...16)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_13547.txt b/test/yarp/snapshots/whitequark/ruby_bug_13547.txt
new file mode 100644
index 0000000000..42592cfc6a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_13547.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ CallNode(0...4)(nil, nil, (0...4), nil, nil, nil, nil, 0, "meth"),
+ nil,
+ (4...6),
+ (4...5),
+ nil,
+ (5...6),
+ BlockNode(7...9)([], nil, nil, (7...8), (8...9)),
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_14690.txt b/test/yarp/snapshots/whitequark/ruby_bug_14690.txt
new file mode 100644
index 0000000000..65a6cb5737
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_14690.txt
@@ -0,0 +1,46 @@
+ProgramNode(0...23)(
+ [],
+ StatementsNode(0...23)(
+ [CallNode(0...23)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...6)([ParenthesesNode(4...6)(nil, (4...5), (5...6))]),
+ nil,
+ BlockNode(7...23)(
+ [],
+ nil,
+ StatementsNode(9...21)(
+ [CallNode(9...21)(
+ nil,
+ nil,
+ (9...10),
+ (10...11),
+ ArgumentsNode(11...12)(
+ [CallNode(11...12)(
+ nil,
+ nil,
+ (11...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "a"
+ )]
+ ),
+ (12...13),
+ BlockNode(14...21)([], nil, nil, (14...16), (18...21)),
+ 0,
+ "m"
+ )]
+ ),
+ (7...8),
+ (22...23)
+ ),
+ 0,
+ "let"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_15789.txt b/test/yarp/snapshots/whitequark/ruby_bug_15789.txt
new file mode 100644
index 0000000000..705992927f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_15789.txt
@@ -0,0 +1,109 @@
+ProgramNode(0...41)(
+ [],
+ StatementsNode(0...41)(
+ [CallNode(0...20)(
+ nil,
+ nil,
+ (0...1),
+ nil,
+ ArgumentsNode(2...20)(
+ [LambdaNode(2...20)(
+ [:a],
+ (2...4),
+ BlockParametersNode(4...16)(
+ ParametersNode(5...15)(
+ [],
+ [OptionalParameterNode(5...15)(
+ :a,
+ (5...6),
+ (7...8),
+ LambdaNode(9...15)(
+ [],
+ (9...11),
+ nil,
+ StatementsNode(12...14)(
+ [CallNode(12...14)(
+ nil,
+ nil,
+ (12...14),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_1"
+ )]
+ )
+ )
+ )],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (4...5),
+ (15...16)
+ ),
+ StatementsNode(18...19)([LocalVariableReadNode(18...19)(:a, 0)])
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ CallNode(22...41)(
+ nil,
+ nil,
+ (22...23),
+ nil,
+ ArgumentsNode(24...41)(
+ [LambdaNode(24...41)(
+ [:a],
+ (24...26),
+ BlockParametersNode(26...37)(
+ ParametersNode(27...36)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(27...36)(
+ (27...29),
+ LambdaNode(30...36)(
+ [],
+ (30...32),
+ nil,
+ StatementsNode(33...35)(
+ [CallNode(33...35)(
+ nil,
+ nil,
+ (33...35),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "_1"
+ )]
+ )
+ )
+ )],
+ nil,
+ nil
+ ),
+ [],
+ (26...27),
+ (36...37)
+ ),
+ StatementsNode(39...40)([LocalVariableReadNode(39...40)(:a, 0)])
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ruby_bug_9669.txt b/test/yarp/snapshots/whitequark/ruby_bug_9669.txt
new file mode 100644
index 0000000000..3cdaf91407
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ruby_bug_9669.txt
@@ -0,0 +1,41 @@
+ProgramNode(0...33)(
+ [:o],
+ StatementsNode(0...33)(
+ [DefNode(0...19)(
+ (4...5),
+ nil,
+ ParametersNode(6...8)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(6...8)((6...8), nil)],
+ nil,
+ nil
+ ),
+ StatementsNode(9...15)([ReturnNode(9...15)((9...15), nil)]),
+ [:b],
+ (0...3),
+ nil,
+ nil,
+ nil,
+ nil,
+ (16...19)
+ ),
+ LocalVariableWriteNode(21...33)(
+ :o,
+ 0,
+ HashNode(25...33)(
+ (25...26),
+ [AssocNode(27...31)(
+ SymbolNode(27...29)(nil, (27...28), (28...29), "a"),
+ IntegerNode(30...31)(),
+ nil
+ )],
+ (32...33)
+ ),
+ (21...22),
+ (23...24)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/sclass.txt b/test/yarp/snapshots/whitequark/sclass.txt
new file mode 100644
index 0000000000..1f032b1cf0
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/sclass.txt
@@ -0,0 +1,13 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [SingletonClassNode(0...22)(
+ [],
+ (0...5),
+ (6...8),
+ CallNode(9...12)(nil, nil, (9...12), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(14...17)([NilNode(14...17)()]),
+ (19...22)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/self.txt b/test/yarp/snapshots/whitequark/self.txt
new file mode 100644
index 0000000000..0002d6ee6d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/self.txt
@@ -0,0 +1 @@
+ProgramNode(0...4)([], StatementsNode(0...4)([SelfNode(0...4)()]))
diff --git a/test/yarp/snapshots/whitequark/send_attr_asgn.txt b/test/yarp/snapshots/whitequark/send_attr_asgn.txt
new file mode 100644
index 0000000000..a220143a97
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_attr_asgn.txt
@@ -0,0 +1,47 @@
+ProgramNode(0...44)(
+ [],
+ StatementsNode(0...44)(
+ [CallNode(0...9)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...5),
+ nil,
+ ArgumentsNode(8...9)([IntegerNode(8...9)()]),
+ nil,
+ nil,
+ 0,
+ "A="
+ ),
+ CallNode(11...20)(
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo"),
+ (14...15),
+ (15...16),
+ nil,
+ ArgumentsNode(19...20)([IntegerNode(19...20)()]),
+ nil,
+ nil,
+ 0,
+ "a="
+ ),
+ ConstantPathWriteNode(22...32)(
+ ConstantPathNode(22...28)(
+ CallNode(22...25)(nil, nil, (22...25), nil, nil, nil, nil, 0, "foo"),
+ ConstantReadNode(27...28)(),
+ (25...27)
+ ),
+ (29...30),
+ IntegerNode(31...32)()
+ ),
+ CallNode(34...44)(
+ CallNode(34...37)(nil, nil, (34...37), nil, nil, nil, nil, 0, "foo"),
+ (37...39),
+ (39...40),
+ nil,
+ ArgumentsNode(43...44)([IntegerNode(43...44)()]),
+ nil,
+ nil,
+ 0,
+ "a="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_attr_asgn_conditional.txt b/test/yarp/snapshots/whitequark/send_attr_asgn_conditional.txt
new file mode 100644
index 0000000000..fabbcb5ca7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_attr_asgn_conditional.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ ArgumentsNode(7...8)([IntegerNode(7...8)()]),
+ nil,
+ nil,
+ 1,
+ "b="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_binary_op.txt b/test/yarp/snapshots/whitequark/send_binary_op.txt
new file mode 100644
index 0000000000..c8f2682cf1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_binary_op.txt
@@ -0,0 +1,336 @@
+ProgramNode(0...200)(
+ [],
+ StatementsNode(0...200)(
+ [CallNode(0...8)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (4...6),
+ nil,
+ ArgumentsNode(7...8)([IntegerNode(7...8)()]),
+ nil,
+ nil,
+ 0,
+ "!="
+ ),
+ CallNode(10...18)(
+ CallNode(10...13)(nil, nil, (10...13), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (14...16),
+ nil,
+ ArgumentsNode(17...18)([IntegerNode(17...18)()]),
+ nil,
+ nil,
+ 0,
+ "!~"
+ ),
+ CallNode(20...27)(
+ CallNode(20...23)(nil, nil, (20...23), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (24...25),
+ nil,
+ ArgumentsNode(26...27)([IntegerNode(26...27)()]),
+ nil,
+ nil,
+ 0,
+ "%"
+ ),
+ CallNode(29...36)(
+ CallNode(29...32)(nil, nil, (29...32), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (33...34),
+ nil,
+ ArgumentsNode(35...36)([IntegerNode(35...36)()]),
+ nil,
+ nil,
+ 0,
+ "&"
+ ),
+ CallNode(38...45)(
+ CallNode(38...41)(nil, nil, (38...41), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (42...43),
+ nil,
+ ArgumentsNode(44...45)([IntegerNode(44...45)()]),
+ nil,
+ nil,
+ 0,
+ "*"
+ ),
+ CallNode(47...55)(
+ CallNode(47...50)(nil, nil, (47...50), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (51...53),
+ nil,
+ ArgumentsNode(54...55)([IntegerNode(54...55)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ CallNode(57...64)(
+ CallNode(57...60)(nil, nil, (57...60), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (61...62),
+ nil,
+ ArgumentsNode(63...64)([IntegerNode(63...64)()]),
+ nil,
+ nil,
+ 0,
+ "+"
+ ),
+ CallNode(66...73)(
+ CallNode(66...69)(nil, nil, (66...69), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (70...71),
+ nil,
+ ArgumentsNode(72...73)([IntegerNode(72...73)()]),
+ nil,
+ nil,
+ 0,
+ "-"
+ ),
+ CallNode(75...82)(
+ CallNode(75...78)(nil, nil, (75...78), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (79...80),
+ nil,
+ ArgumentsNode(81...82)([IntegerNode(81...82)()]),
+ nil,
+ nil,
+ 0,
+ "/"
+ ),
+ CallNode(84...91)(
+ CallNode(84...87)(nil, nil, (84...87), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (88...89),
+ nil,
+ ArgumentsNode(90...91)([IntegerNode(90...91)()]),
+ nil,
+ nil,
+ 0,
+ "<"
+ ),
+ CallNode(93...101)(
+ CallNode(93...96)(nil, nil, (93...96), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (97...99),
+ nil,
+ ArgumentsNode(100...101)([IntegerNode(100...101)()]),
+ nil,
+ nil,
+ 0,
+ "<<"
+ ),
+ CallNode(103...111)(
+ CallNode(103...106)(
+ nil,
+ nil,
+ (103...106),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (107...109),
+ nil,
+ ArgumentsNode(110...111)([IntegerNode(110...111)()]),
+ nil,
+ nil,
+ 0,
+ "<="
+ ),
+ CallNode(113...122)(
+ CallNode(113...116)(
+ nil,
+ nil,
+ (113...116),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (117...120),
+ nil,
+ ArgumentsNode(121...122)([IntegerNode(121...122)()]),
+ nil,
+ nil,
+ 0,
+ "<=>"
+ ),
+ CallNode(124...132)(
+ CallNode(124...127)(
+ nil,
+ nil,
+ (124...127),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (128...130),
+ nil,
+ ArgumentsNode(131...132)([IntegerNode(131...132)()]),
+ nil,
+ nil,
+ 0,
+ "=="
+ ),
+ CallNode(134...143)(
+ CallNode(134...137)(
+ nil,
+ nil,
+ (134...137),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (138...141),
+ nil,
+ ArgumentsNode(142...143)([IntegerNode(142...143)()]),
+ nil,
+ nil,
+ 0,
+ "==="
+ ),
+ CallNode(145...153)(
+ CallNode(145...148)(
+ nil,
+ nil,
+ (145...148),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (149...151),
+ nil,
+ ArgumentsNode(152...153)([IntegerNode(152...153)()]),
+ nil,
+ nil,
+ 0,
+ "=~"
+ ),
+ CallNode(155...162)(
+ CallNode(155...158)(
+ nil,
+ nil,
+ (155...158),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (159...160),
+ nil,
+ ArgumentsNode(161...162)([IntegerNode(161...162)()]),
+ nil,
+ nil,
+ 0,
+ ">"
+ ),
+ CallNode(164...172)(
+ CallNode(164...167)(
+ nil,
+ nil,
+ (164...167),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (168...170),
+ nil,
+ ArgumentsNode(171...172)([IntegerNode(171...172)()]),
+ nil,
+ nil,
+ 0,
+ ">="
+ ),
+ CallNode(174...182)(
+ CallNode(174...177)(
+ nil,
+ nil,
+ (174...177),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (178...180),
+ nil,
+ ArgumentsNode(181...182)([IntegerNode(181...182)()]),
+ nil,
+ nil,
+ 0,
+ ">>"
+ ),
+ CallNode(184...191)(
+ CallNode(184...187)(
+ nil,
+ nil,
+ (184...187),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (188...189),
+ nil,
+ ArgumentsNode(190...191)([IntegerNode(190...191)()]),
+ nil,
+ nil,
+ 0,
+ "^"
+ ),
+ CallNode(193...200)(
+ CallNode(193...196)(
+ nil,
+ nil,
+ (193...196),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ ),
+ nil,
+ (197...198),
+ nil,
+ ArgumentsNode(199...200)([IntegerNode(199...200)()]),
+ nil,
+ nil,
+ 0,
+ "|"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_block_chain_cmd.txt b/test/yarp/snapshots/whitequark/send_block_chain_cmd.txt
new file mode 100644
index 0000000000..15e364b829
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_block_chain_cmd.txt
@@ -0,0 +1,194 @@
+ProgramNode(0...173)(
+ [],
+ StatementsNode(0...173)(
+ [CallNode(0...21)(
+ CallNode(0...13)(
+ nil,
+ nil,
+ (0...4),
+ nil,
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ nil,
+ BlockNode(7...13)([], nil, nil, (7...9), (10...13)),
+ 0,
+ "meth"
+ ),
+ (13...14),
+ (14...17),
+ nil,
+ ArgumentsNode(18...21)(
+ [CallNode(18...21)(nil, nil, (18...21), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(23...51)(
+ CallNode(23...36)(
+ nil,
+ nil,
+ (23...27),
+ nil,
+ ArgumentsNode(28...29)([IntegerNode(28...29)()]),
+ nil,
+ BlockNode(30...36)([], nil, nil, (30...32), (33...36)),
+ 0,
+ "meth"
+ ),
+ (36...37),
+ (37...40),
+ nil,
+ ArgumentsNode(41...44)(
+ [CallNode(41...44)(nil, nil, (41...44), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ BlockNode(45...51)([], nil, nil, (45...47), (48...51)),
+ 0,
+ "fun"
+ ),
+ CallNode(53...73)(
+ CallNode(53...66)(
+ nil,
+ nil,
+ (53...57),
+ nil,
+ ArgumentsNode(58...59)([IntegerNode(58...59)()]),
+ nil,
+ BlockNode(60...66)([], nil, nil, (60...62), (63...66)),
+ 0,
+ "meth"
+ ),
+ (66...67),
+ (67...70),
+ nil,
+ nil,
+ nil,
+ BlockNode(71...73)([], nil, nil, (71...72), (72...73)),
+ 0,
+ "fun"
+ ),
+ CallNode(75...97)(
+ CallNode(75...88)(
+ nil,
+ nil,
+ (75...79),
+ nil,
+ ArgumentsNode(80...81)([IntegerNode(80...81)()]),
+ nil,
+ BlockNode(82...88)([], nil, nil, (82...84), (85...88)),
+ 0,
+ "meth"
+ ),
+ (88...89),
+ (89...92),
+ (92...93),
+ ArgumentsNode(93...96)(
+ [CallNode(93...96)(nil, nil, (93...96), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (96...97),
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(99...124)(
+ CallNode(99...112)(
+ nil,
+ nil,
+ (99...103),
+ nil,
+ ArgumentsNode(104...105)([IntegerNode(104...105)()]),
+ nil,
+ BlockNode(106...112)([], nil, nil, (106...108), (109...112)),
+ 0,
+ "meth"
+ ),
+ (112...113),
+ (113...116),
+ (116...117),
+ ArgumentsNode(117...120)(
+ [CallNode(117...120)(
+ nil,
+ nil,
+ (117...120),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (120...121),
+ BlockNode(122...124)([], nil, nil, (122...123), (123...124)),
+ 0,
+ "fun"
+ ),
+ CallNode(126...148)(
+ CallNode(126...139)(
+ nil,
+ nil,
+ (126...130),
+ nil,
+ ArgumentsNode(131...132)([IntegerNode(131...132)()]),
+ nil,
+ BlockNode(133...139)([], nil, nil, (133...135), (136...139)),
+ 0,
+ "meth"
+ ),
+ (139...141),
+ (145...148),
+ nil,
+ ArgumentsNode(145...148)(
+ [CallNode(145...148)(
+ nil,
+ nil,
+ (145...148),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "bar"
+ ),
+ CallNode(150...173)(
+ CallNode(150...163)(
+ nil,
+ nil,
+ (150...154),
+ nil,
+ ArgumentsNode(155...156)([IntegerNode(155...156)()]),
+ nil,
+ BlockNode(157...163)([], nil, nil, (157...159), (160...163)),
+ 0,
+ "meth"
+ ),
+ (163...165),
+ (172...173),
+ (168...169),
+ ArgumentsNode(169...172)(
+ [CallNode(169...172)(
+ nil,
+ nil,
+ (169...172),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (172...173),
+ nil,
+ 0,
+ ")"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_block_conditional.txt b/test/yarp/snapshots/whitequark/send_block_conditional.txt
new file mode 100644
index 0000000000..a25fb4ac4e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_block_conditional.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...5),
+ (5...8),
+ nil,
+ nil,
+ nil,
+ BlockNode(9...11)([], nil, nil, (9...10), (10...11)),
+ 1,
+ "bar"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_call.txt b/test/yarp/snapshots/whitequark/send_call.txt
new file mode 100644
index 0000000000..6c52bec0fe
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_call.txt
@@ -0,0 +1,27 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...7)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (0...0),
+ (4...5),
+ ArgumentsNode(5...6)([IntegerNode(5...6)()]),
+ (6...7),
+ nil,
+ 0,
+ "call"
+ ),
+ CallNode(9...17)(
+ CallNode(9...12)(nil, nil, (9...12), nil, nil, nil, nil, 0, "foo"),
+ (12...14),
+ (0...0),
+ (14...15),
+ ArgumentsNode(15...16)([IntegerNode(15...16)()]),
+ (16...17),
+ nil,
+ 0,
+ "call"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_conditional.txt b/test/yarp/snapshots/whitequark/send_conditional.txt
new file mode 100644
index 0000000000..1621715838
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_conditional.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...4)(
+ [],
+ StatementsNode(0...4)(
+ [CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_index.txt b/test/yarp/snapshots/whitequark/send_index.txt
new file mode 100644
index 0000000000..f09270736f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_index.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...8)([IntegerNode(4...5)(), IntegerNode(7...8)()]),
+ (8...9),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_index_asgn.txt b/test/yarp/snapshots/whitequark/send_index_asgn.txt
new file mode 100644
index 0000000000..d6cfd22a29
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_index_asgn.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...13)(
+ [IntegerNode(4...5)(), IntegerNode(7...8)(), IntegerNode(12...13)()]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "[]="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_index_asgn_legacy.txt b/test/yarp/snapshots/whitequark/send_index_asgn_legacy.txt
new file mode 100644
index 0000000000..d6cfd22a29
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_index_asgn_legacy.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...13)(
+ [],
+ StatementsNode(0...13)(
+ [CallNode(0...13)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...13)(
+ [IntegerNode(4...5)(), IntegerNode(7...8)(), IntegerNode(12...13)()]
+ ),
+ (8...9),
+ nil,
+ 0,
+ "[]="
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_index_cmd.txt b/test/yarp/snapshots/whitequark/send_index_cmd.txt
new file mode 100644
index 0000000000..cf98204073
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_index_cmd.txt
@@ -0,0 +1,40 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallNode(0...10)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...10),
+ (3...4),
+ ArgumentsNode(4...9)(
+ [CallNode(4...9)(
+ nil,
+ nil,
+ (4...5),
+ nil,
+ ArgumentsNode(6...9)(
+ [CallNode(6...9)(
+ nil,
+ nil,
+ (6...9),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "m"
+ )]
+ ),
+ (9...10),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_index_legacy.txt b/test/yarp/snapshots/whitequark/send_index_legacy.txt
new file mode 100644
index 0000000000..f09270736f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_index_legacy.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (3...9),
+ (3...4),
+ ArgumentsNode(4...8)([IntegerNode(4...5)(), IntegerNode(7...8)()]),
+ (8...9),
+ nil,
+ 0,
+ "[]"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_lambda.txt b/test/yarp/snapshots/whitequark/send_lambda.txt
new file mode 100644
index 0000000000..3c9f4f56cb
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_lambda.txt
@@ -0,0 +1,26 @@
+ProgramNode(0...26)(
+ [],
+ StatementsNode(0...26)(
+ [LambdaNode(0...8)(
+ [:*],
+ (0...2),
+ BlockParametersNode(3...4)(
+ ParametersNode(3...4)(
+ [],
+ [],
+ [],
+ RestParameterNode(3...4)((3...4), nil),
+ [],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ nil
+ ),
+ LambdaNode(10...19)([], (10...12), nil, nil),
+ LambdaNode(21...26)([], (21...23), nil, nil)]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_lambda_args.txt b/test/yarp/snapshots/whitequark/send_lambda_args.txt
new file mode 100644
index 0000000000..f904384781
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_lambda_args.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...21)(
+ [],
+ StatementsNode(0...21)(
+ [LambdaNode(0...10)(
+ [:a],
+ (0...2),
+ BlockParametersNode(3...6)(
+ ParametersNode(4...5)(
+ [RequiredParameterNode(4...5)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (3...4),
+ (5...6)
+ ),
+ nil
+ ),
+ LambdaNode(12...21)(
+ [:a],
+ (12...14),
+ BlockParametersNode(14...17)(
+ ParametersNode(15...16)(
+ [RequiredParameterNode(15...16)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [],
+ (14...15),
+ (16...17)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_lambda_args_noparen.txt b/test/yarp/snapshots/whitequark/send_lambda_args_noparen.txt
new file mode 100644
index 0000000000..8767cf48fa
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_lambda_args_noparen.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...22)(
+ [],
+ StatementsNode(0...22)(
+ [LambdaNode(0...11)(
+ [:a],
+ (0...2),
+ BlockParametersNode(3...7)(
+ ParametersNode(3...7)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(3...7)((3...5), IntegerNode(6...7)())],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ nil
+ ),
+ LambdaNode(13...22)(
+ [:a],
+ (13...15),
+ BlockParametersNode(16...18)(
+ ParametersNode(16...18)(
+ [],
+ [],
+ [],
+ nil,
+ [KeywordParameterNode(16...18)((16...18), nil)],
+ nil,
+ nil
+ ),
+ [],
+ nil,
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_lambda_args_shadow.txt b/test/yarp/snapshots/whitequark/send_lambda_args_shadow.txt
new file mode 100644
index 0000000000..a2e92a67dc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_lambda_args_shadow.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...19)(
+ [],
+ StatementsNode(0...19)(
+ [LambdaNode(0...19)(
+ [:a, :foo, :bar],
+ (0...2),
+ BlockParametersNode(2...15)(
+ ParametersNode(3...4)(
+ [RequiredParameterNode(3...4)(:a)],
+ [],
+ [],
+ nil,
+ [],
+ nil,
+ nil
+ ),
+ [(6...9), (11...14)],
+ (2...3),
+ (14...15)
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_lambda_legacy.txt b/test/yarp/snapshots/whitequark/send_lambda_legacy.txt
new file mode 100644
index 0000000000..fdc30c30dc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_lambda_legacy.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)([LambdaNode(0...5)([], (0...2), nil, nil)])
+)
diff --git a/test/yarp/snapshots/whitequark/send_op_asgn_conditional.txt b/test/yarp/snapshots/whitequark/send_op_asgn_conditional.txt
new file mode 100644
index 0000000000..db30a2a0ee
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_op_asgn_conditional.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...10)(
+ [],
+ StatementsNode(0...10)(
+ [CallOperatorAndWriteNode(0...10)(
+ CallNode(0...4)(
+ CallNode(0...1)(nil, nil, (0...1), nil, nil, nil, nil, 0, "a"),
+ (1...3),
+ (3...4),
+ nil,
+ nil,
+ nil,
+ nil,
+ 1,
+ "b="
+ ),
+ (5...8),
+ IntegerNode(9...10)()
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_plain.txt b/test/yarp/snapshots/whitequark/send_plain.txt
new file mode 100644
index 0000000000..892e30696c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_plain.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...29)(
+ [],
+ StatementsNode(0...29)(
+ [CallNode(0...7)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(9...19)(
+ CallNode(9...12)(nil, nil, (9...12), nil, nil, nil, nil, 0, "foo"),
+ (12...14),
+ (14...17),
+ (17...18),
+ nil,
+ (18...19),
+ nil,
+ 0,
+ "Fun"
+ ),
+ CallNode(21...29)(
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "foo"),
+ (24...26),
+ (26...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_plain_cmd.txt b/test/yarp/snapshots/whitequark/send_plain_cmd.txt
new file mode 100644
index 0000000000..0b13828cb4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_plain_cmd.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...39)(
+ [],
+ StatementsNode(0...39)(
+ [CallNode(0...11)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...7),
+ nil,
+ ArgumentsNode(8...11)(
+ [CallNode(8...11)(nil, nil, (8...11), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "fun"
+ ),
+ CallNode(13...25)(
+ CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo"),
+ (16...18),
+ (18...21),
+ nil,
+ ArgumentsNode(22...25)(
+ [CallNode(22...25)(nil, nil, (22...25), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "Fun"
+ ),
+ CallNode(27...39)(
+ CallNode(27...30)(nil, nil, (27...30), nil, nil, nil, nil, 0, "foo"),
+ (30...32),
+ (36...39),
+ nil,
+ ArgumentsNode(36...39)(
+ [CallNode(36...39)(nil, nil, (36...39), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_self.txt b/test/yarp/snapshots/whitequark/send_self.txt
new file mode 100644
index 0000000000..e12291d277
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_self.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...17)(
+ [],
+ StatementsNode(0...17)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "fun"),
+ CallNode(5...9)(nil, nil, (5...9), nil, nil, nil, nil, 0, "fun!"),
+ CallNode(11...17)(
+ nil,
+ nil,
+ (11...14),
+ (14...15),
+ ArgumentsNode(15...16)([IntegerNode(15...16)()]),
+ (16...17),
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_self_block.txt b/test/yarp/snapshots/whitequark/send_self_block.txt
new file mode 100644
index 0000000000..1ae9968e74
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_self_block.txt
@@ -0,0 +1,49 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [CallNode(0...10)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ nil,
+ nil,
+ BlockNode(4...10)([], nil, nil, (4...6), (7...10)),
+ 0,
+ "fun"
+ ),
+ CallNode(12...19)(
+ nil,
+ nil,
+ (12...15),
+ nil,
+ nil,
+ nil,
+ BlockNode(16...19)([], nil, nil, (16...17), (18...19)),
+ 0,
+ "fun"
+ ),
+ CallNode(21...30)(
+ nil,
+ nil,
+ (21...24),
+ (24...25),
+ nil,
+ (25...26),
+ BlockNode(27...30)([], nil, nil, (27...28), (29...30)),
+ 0,
+ "fun"
+ ),
+ CallNode(32...42)(
+ nil,
+ nil,
+ (32...35),
+ (35...36),
+ ArgumentsNode(36...37)([IntegerNode(36...37)()]),
+ (37...38),
+ BlockNode(39...42)([], nil, nil, (39...40), (41...42)),
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/send_unary_op.txt b/test/yarp/snapshots/whitequark/send_unary_op.txt
new file mode 100644
index 0000000000..6e1a3315b9
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/send_unary_op.txt
@@ -0,0 +1,38 @@
+ProgramNode(0...16)(
+ [],
+ StatementsNode(0...16)(
+ [CallNode(0...4)(
+ CallNode(1...4)(nil, nil, (1...4), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (0...1),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "+@"
+ ),
+ CallNode(6...10)(
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (6...7),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ CallNode(12...16)(
+ CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo"),
+ nil,
+ (12...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "~"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/slash_newline_in_heredocs.txt b/test/yarp/snapshots/whitequark/slash_newline_in_heredocs.txt
new file mode 100644
index 0000000000..facffc7a2a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/slash_newline_in_heredocs.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...56)(
+ [],
+ StatementsNode(0...56)(
+ [InterpolatedStringNode(0...27)(
+ (0...4),
+ [StringNode(5...25)(
+ nil,
+ (5...25),
+ nil,
+ " 1 \n" + " 2\n" + " 3\n"
+ )],
+ (25...27)
+ ),
+ InterpolatedStringNode(29...56)(
+ (29...33),
+ [StringNode(34...54)(nil, (34...54), nil, "1 \n" + "2\n" + "3\n")],
+ (54...56)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/space_args_arg.txt b/test/yarp/snapshots/whitequark/space_args_arg.txt
new file mode 100644
index 0000000000..d1dfcc4f65
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/space_args_arg.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...7)(
+ [],
+ StatementsNode(0...7)(
+ [CallNode(0...7)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...7)(
+ [ParenthesesNode(4...7)(
+ StatementsNode(5...6)([IntegerNode(5...6)()]),
+ (4...5),
+ (6...7)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/space_args_arg_block.txt b/test/yarp/snapshots/whitequark/space_args_arg_block.txt
new file mode 100644
index 0000000000..4ac9d1d7e4
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/space_args_arg_block.txt
@@ -0,0 +1,56 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [CallNode(0...14)(
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ (3...4),
+ (4...7),
+ nil,
+ ArgumentsNode(8...11)(
+ [ParenthesesNode(8...11)(
+ StatementsNode(9...10)([IntegerNode(9...10)()]),
+ (8...9),
+ (10...11)
+ )]
+ ),
+ nil,
+ BlockNode(12...14)([], nil, nil, (12...13), (13...14)),
+ 0,
+ "fun"
+ ),
+ CallNode(16...31)(
+ CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "foo"),
+ (19...21),
+ (30...31),
+ nil,
+ ArgumentsNode(25...28)(
+ [ParenthesesNode(25...28)(
+ StatementsNode(26...27)([IntegerNode(26...27)()]),
+ (25...26),
+ (27...28)
+ )]
+ ),
+ nil,
+ BlockNode(29...31)([], nil, nil, (29...30), (30...31)),
+ 0,
+ "}"
+ ),
+ CallNode(33...43)(
+ nil,
+ nil,
+ (33...36),
+ nil,
+ ArgumentsNode(37...40)(
+ [ParenthesesNode(37...40)(
+ StatementsNode(38...39)([IntegerNode(38...39)()]),
+ (37...38),
+ (39...40)
+ )]
+ ),
+ nil,
+ BlockNode(41...43)([], nil, nil, (41...42), (42...43)),
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/space_args_arg_call.txt b/test/yarp/snapshots/whitequark/space_args_arg_call.txt
new file mode 100644
index 0000000000..01bc1dbde3
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/space_args_arg_call.txt
@@ -0,0 +1,32 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [CallNode(0...12)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...12)(
+ [CallNode(4...12)(
+ ParenthesesNode(4...7)(
+ StatementsNode(5...6)([IntegerNode(5...6)()]),
+ (4...5),
+ (6...7)
+ ),
+ (7...8),
+ (8...12),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "to_i"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/space_args_arg_newline.txt b/test/yarp/snapshots/whitequark/space_args_arg_newline.txt
new file mode 100644
index 0000000000..36e321ad7c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/space_args_arg_newline.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [CallNode(0...8)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...8)(
+ [ParenthesesNode(4...8)(
+ StatementsNode(5...6)([IntegerNode(5...6)()]),
+ (4...5),
+ (7...8)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/space_args_block.txt b/test/yarp/snapshots/whitequark/space_args_block.txt
new file mode 100644
index 0000000000..7895ad2606
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/space_args_block.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...9)(
+ [],
+ StatementsNode(0...9)(
+ [CallNode(0...9)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...6)([ParenthesesNode(4...6)(nil, (4...5), (5...6))]),
+ nil,
+ BlockNode(7...9)([], nil, nil, (7...8), (8...9)),
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/space_args_cmd.txt b/test/yarp/snapshots/whitequark/space_args_cmd.txt
new file mode 100644
index 0000000000..289ef54f8c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/space_args_cmd.txt
@@ -0,0 +1,46 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [CallNode(0...11)(
+ nil,
+ nil,
+ (0...3),
+ nil,
+ ArgumentsNode(4...11)(
+ [ParenthesesNode(4...11)(
+ StatementsNode(5...10)(
+ [CallNode(5...10)(
+ nil,
+ nil,
+ (5...6),
+ nil,
+ ArgumentsNode(7...10)(
+ [CallNode(7...10)(
+ nil,
+ nil,
+ (7...10),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "f"
+ )]
+ ),
+ (4...5),
+ (10...11)
+ )]
+ ),
+ nil,
+ nil,
+ 0,
+ "fun"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/string___FILE__.txt b/test/yarp/snapshots/whitequark/string___FILE__.txt
new file mode 100644
index 0000000000..31d5437b21
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/string___FILE__.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [SourceFileNode(0...8)("/fixtures/whitequark/string___FILE__.txt")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/string_concat.txt b/test/yarp/snapshots/whitequark/string_concat.txt
new file mode 100644
index 0000000000..c20f4ac35e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/string_concat.txt
@@ -0,0 +1,17 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [StringConcatNode(0...14)(
+ InterpolatedStringNode(0...8)(
+ (0...1),
+ [StringNode(1...4)(nil, (1...4), nil, "foo"),
+ EmbeddedVariableNode(4...7)(
+ (4...5),
+ InstanceVariableReadNode(5...7)()
+ )],
+ (7...8)
+ ),
+ StringNode(9...14)((9...10), (10...13), (13...14), "bar")
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/string_dvar.txt b/test/yarp/snapshots/whitequark/string_dvar.txt
new file mode 100644
index 0000000000..c89e359565
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/string_dvar.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedStringNode(0...14)(
+ (0...1),
+ [EmbeddedVariableNode(1...4)(
+ (1...2),
+ InstanceVariableReadNode(2...4)()
+ ),
+ StringNode(4...5)(nil, (4...5), nil, " "),
+ EmbeddedVariableNode(5...9)((5...6), ClassVariableReadNode(6...9)()),
+ StringNode(9...10)(nil, (9...10), nil, " "),
+ EmbeddedVariableNode(10...13)(
+ (10...11),
+ GlobalVariableReadNode(11...13)()
+ )],
+ (13...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/string_interp.txt b/test/yarp/snapshots/whitequark/string_interp.txt
new file mode 100644
index 0000000000..20a4555ae2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/string_interp.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedStringNode(0...14)(
+ (0...1),
+ [StringNode(1...4)(nil, (1...4), nil, "foo"),
+ EmbeddedStatementsNode(4...10)(
+ (4...6),
+ StatementsNode(6...9)(
+ [CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (9...10)
+ ),
+ StringNode(10...13)(nil, (10...13), nil, "baz")],
+ (13...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/string_plain.txt b/test/yarp/snapshots/whitequark/string_plain.txt
new file mode 100644
index 0000000000..fe0822a568
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/string_plain.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...20)(
+ [],
+ StatementsNode(0...20)(
+ [StringNode(0...10)((0...3), (3...9), (9...10), "foobar"),
+ StringNode(12...20)((12...13), (13...19), (19...20), "foobar")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/super.txt b/test/yarp/snapshots/whitequark/super.txt
new file mode 100644
index 0000000000..0724119add
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/super.txt
@@ -0,0 +1,24 @@
+ProgramNode(0...30)(
+ [],
+ StatementsNode(0...30)(
+ [SuperNode(0...9)(
+ (0...5),
+ nil,
+ ArgumentsNode(6...9)(
+ [CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil,
+ nil
+ ),
+ SuperNode(11...18)((11...16), (16...17), nil, (17...18), nil),
+ SuperNode(20...30)(
+ (20...25),
+ (25...26),
+ ArgumentsNode(26...29)(
+ [CallNode(26...29)(nil, nil, (26...29), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (29...30),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/super_block.txt b/test/yarp/snapshots/whitequark/super_block.txt
new file mode 100644
index 0000000000..e2af525f24
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/super_block.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...35)(
+ [],
+ StatementsNode(0...35)(
+ [ForwardingSuperNode(0...12)(
+ BlockNode(6...12)([], nil, nil, (6...8), (9...12))
+ ),
+ SuperNode(14...35)(
+ (14...19),
+ nil,
+ ArgumentsNode(20...28)(
+ [CallNode(20...23)(nil, nil, (20...23), nil, nil, nil, nil, 0, "foo"),
+ CallNode(25...28)(nil, nil, (25...28), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ BlockNode(29...35)([], nil, nil, (29...31), (32...35))
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/symbol_interp.txt b/test/yarp/snapshots/whitequark/symbol_interp.txt
new file mode 100644
index 0000000000..cc6da96739
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/symbol_interp.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...15)(
+ [],
+ StatementsNode(0...15)(
+ [InterpolatedSymbolNode(0...15)(
+ (0...2),
+ [StringNode(2...5)(nil, (2...5), nil, "foo"),
+ EmbeddedStatementsNode(5...11)(
+ (5...7),
+ StatementsNode(7...10)(
+ [CallNode(7...10)(
+ nil,
+ nil,
+ (7...10),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (10...11)
+ ),
+ StringNode(11...14)(nil, (11...14), nil, "baz")],
+ (14...15)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/symbol_plain.txt b/test/yarp/snapshots/whitequark/symbol_plain.txt
new file mode 100644
index 0000000000..7cbac4e19d
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/symbol_plain.txt
@@ -0,0 +1,7 @@
+ProgramNode(0...12)(
+ [],
+ StatementsNode(0...12)(
+ [SymbolNode(0...6)((0...2), (2...5), (5...6), "foo"),
+ SymbolNode(8...12)((8...9), (9...12), nil, "foo")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ternary.txt b/test/yarp/snapshots/whitequark/ternary.txt
new file mode 100644
index 0000000000..58bccdd8be
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ternary.txt
@@ -0,0 +1,16 @@
+ProgramNode(0...11)(
+ [],
+ StatementsNode(0...11)(
+ [IfNode(0...11)(
+ nil,
+ CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(6...7)([IntegerNode(6...7)()]),
+ ElseNode(8...11)(
+ (8...9),
+ StatementsNode(10...11)([IntegerNode(10...11)()]),
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/ternary_ambiguous_symbol.txt b/test/yarp/snapshots/whitequark/ternary_ambiguous_symbol.txt
new file mode 100644
index 0000000000..012b77a3d2
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/ternary_ambiguous_symbol.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...13)(
+ [:t],
+ StatementsNode(0...13)(
+ [LocalVariableWriteNode(0...3)(
+ :t,
+ 0,
+ IntegerNode(2...3)(),
+ (0...1),
+ (1...2)
+ ),
+ IfNode(4...13)(
+ nil,
+ ParenthesesNode(4...9)(
+ StatementsNode(5...8)(
+ [CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (4...5),
+ (8...9)
+ ),
+ StatementsNode(10...11)([LocalVariableReadNode(10...11)(:t, 0)]),
+ ElseNode(11...13)(
+ (11...12),
+ StatementsNode(12...13)([ConstantReadNode(12...13)()]),
+ nil
+ ),
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/trailing_forward_arg.txt b/test/yarp/snapshots/whitequark/trailing_forward_arg.txt
new file mode 100644
index 0000000000..61f29acca5
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/trailing_forward_arg.txt
@@ -0,0 +1,43 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [DefNode(0...40)(
+ (4...7),
+ nil,
+ ParametersNode(8...17)(
+ [RequiredParameterNode(8...9)(:a),
+ RequiredParameterNode(11...12)(:b)],
+ [],
+ [],
+ nil,
+ [],
+ ForwardingParameterNode(14...17)(),
+ nil
+ ),
+ StatementsNode(20...35)(
+ [CallNode(20...35)(
+ nil,
+ nil,
+ (20...23),
+ (23...24),
+ ArgumentsNode(24...34)(
+ [LocalVariableReadNode(24...25)(:a, 0),
+ IntegerNode(27...29)(),
+ ForwardingArgumentsNode(31...34)()]
+ ),
+ (34...35),
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ [:a, :b, :"..."],
+ (0...3),
+ nil,
+ (7...8),
+ (17...18),
+ nil,
+ (37...40)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/true.txt b/test/yarp/snapshots/whitequark/true.txt
new file mode 100644
index 0000000000..14b0c8cecc
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/true.txt
@@ -0,0 +1 @@
+ProgramNode(0...4)([], StatementsNode(0...4)([TrueNode(0...4)()]))
diff --git a/test/yarp/snapshots/whitequark/unary_num_pow_precedence.txt b/test/yarp/snapshots/whitequark/unary_num_pow_precedence.txt
new file mode 100644
index 0000000000..319b29b170
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/unary_num_pow_precedence.txt
@@ -0,0 +1,58 @@
+ProgramNode(0...32)(
+ [],
+ StatementsNode(0...32)(
+ [CallNode(0...10)(
+ FloatNode(0...4)(),
+ nil,
+ (5...7),
+ nil,
+ ArgumentsNode(8...10)([IntegerNode(8...10)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ CallNode(12...20)(
+ CallNode(13...20)(
+ IntegerNode(13...14)(),
+ nil,
+ (15...17),
+ nil,
+ ArgumentsNode(18...20)([IntegerNode(18...20)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ nil,
+ (12...13),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ ),
+ CallNode(22...32)(
+ CallNode(23...32)(
+ FloatNode(23...26)(),
+ nil,
+ (27...29),
+ nil,
+ ArgumentsNode(30...32)([IntegerNode(30...32)()]),
+ nil,
+ nil,
+ 0,
+ "**"
+ ),
+ nil,
+ (22...23),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "-@"
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/undef.txt b/test/yarp/snapshots/whitequark/undef.txt
new file mode 100644
index 0000000000..eb253762b3
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/undef.txt
@@ -0,0 +1,20 @@
+ProgramNode(0...27)(
+ [],
+ StatementsNode(0...27)(
+ [UndefNode(0...27)(
+ [SymbolNode(6...9)(nil, (6...9), nil, "foo"),
+ SymbolNode(11...15)((11...12), (12...15), nil, "bar"),
+ InterpolatedSymbolNode(17...27)(
+ (17...19),
+ [StringNode(19...22)(nil, (19...22), nil, "foo"),
+ EmbeddedStatementsNode(22...26)(
+ (22...24),
+ StatementsNode(24...25)([IntegerNode(24...25)()]),
+ (25...26)
+ )],
+ (26...27)
+ )],
+ (0...5)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/unless.txt b/test/yarp/snapshots/whitequark/unless.txt
new file mode 100644
index 0000000000..291a636f99
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/unless.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...46)(
+ [],
+ StatementsNode(0...46)(
+ [UnlessNode(0...24)(
+ (0...6),
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(16...19)(
+ [CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ (21...24)
+ ),
+ UnlessNode(26...46)(
+ (26...32),
+ CallNode(33...36)(nil, nil, (33...36), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(38...41)(
+ [CallNode(38...41)(nil, nil, (38...41), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ (43...46)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/unless_else.txt b/test/yarp/snapshots/whitequark/unless_else.txt
new file mode 100644
index 0000000000..a3564a0c29
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/unless_else.txt
@@ -0,0 +1,55 @@
+ProgramNode(0...66)(
+ [],
+ StatementsNode(0...66)(
+ [UnlessNode(0...34)(
+ (0...6),
+ CallNode(7...10)(nil, nil, (7...10), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(16...19)(
+ [CallNode(16...19)(nil, nil, (16...19), nil, nil, nil, nil, 0, "bar")]
+ ),
+ ElseNode(21...34)(
+ (21...25),
+ StatementsNode(26...29)(
+ [CallNode(26...29)(
+ nil,
+ nil,
+ (26...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (31...34)
+ ),
+ (31...34)
+ ),
+ UnlessNode(36...66)(
+ (36...42),
+ CallNode(43...46)(nil, nil, (43...46), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(48...51)(
+ [CallNode(48...51)(nil, nil, (48...51), nil, nil, nil, nil, 0, "bar")]
+ ),
+ ElseNode(53...66)(
+ (53...57),
+ StatementsNode(58...61)(
+ [CallNode(58...61)(
+ nil,
+ nil,
+ (58...61),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )]
+ ),
+ (63...66)
+ ),
+ (63...66)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/unless_mod.txt b/test/yarp/snapshots/whitequark/unless_mod.txt
new file mode 100644
index 0000000000..37e4f48881
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/unless_mod.txt
@@ -0,0 +1,14 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [UnlessNode(0...14)(
+ (4...10),
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(0...3)(
+ [CallNode(0...3)(nil, nil, (0...3), nil, nil, nil, nil, 0, "bar")]
+ ),
+ nil,
+ nil
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/until.txt b/test/yarp/snapshots/whitequark/until.txt
new file mode 100644
index 0000000000..46632a6734
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/until.txt
@@ -0,0 +1,39 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [UntilNode(0...21)(
+ (0...5),
+ CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(13...17)(
+ [CallNode(13...17)(
+ nil,
+ nil,
+ (13...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ )
+ ),
+ UntilNode(23...42)(
+ (23...28),
+ CallNode(29...32)(nil, nil, (29...32), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(34...38)(
+ [CallNode(34...38)(
+ nil,
+ nil,
+ (34...38),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/until_mod.txt b/test/yarp/snapshots/whitequark/until_mod.txt
new file mode 100644
index 0000000000..604dc3d9ec
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/until_mod.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [UntilNode(0...14)(
+ (5...10),
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(0...4)(
+ [CallNode(0...4)(nil, nil, (0...4), nil, nil, nil, nil, 0, "meth")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/until_post.txt b/test/yarp/snapshots/whitequark/until_post.txt
new file mode 100644
index 0000000000..0c2a28ab5c
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/until_post.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [UntilNode(0...24)(
+ (15...20),
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(0...14)(
+ [BeginNode(0...14)(
+ (0...5),
+ StatementsNode(6...10)(
+ [CallNode(6...10)(
+ nil,
+ nil,
+ (6...10),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (11...14)
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/var_and_asgn.txt b/test/yarp/snapshots/whitequark/var_and_asgn.txt
new file mode 100644
index 0000000000..76469d6b93
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/var_and_asgn.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...7)(
+ [:a],
+ StatementsNode(0...7)(
+ [LocalVariableOperatorAndWriteNode(0...7)(
+ (0...1),
+ (2...5),
+ IntegerNode(6...7)(),
+ :a
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/var_op_asgn.txt b/test/yarp/snapshots/whitequark/var_op_asgn.txt
new file mode 100644
index 0000000000..2bc8667b6a
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/var_op_asgn.txt
@@ -0,0 +1,44 @@
+ProgramNode(0...53)(
+ [:a],
+ StatementsNode(0...53)(
+ [ClassVariableOperatorWriteNode(0...11)(
+ (0...5),
+ (6...8),
+ IntegerNode(9...11)(),
+ :|
+ ),
+ InstanceVariableOperatorWriteNode(13...20)(
+ (13...15),
+ (16...18),
+ IntegerNode(19...20)(),
+ :|
+ ),
+ LocalVariableOperatorWriteNode(22...28)(
+ (22...23),
+ (24...26),
+ IntegerNode(27...28)(),
+ :a,
+ :+
+ ),
+ DefNode(30...53)(
+ (34...35),
+ nil,
+ nil,
+ StatementsNode(37...48)(
+ [ClassVariableOperatorWriteNode(37...48)(
+ (37...42),
+ (43...45),
+ IntegerNode(46...48)(),
+ :|
+ )]
+ ),
+ [],
+ (30...33),
+ nil,
+ nil,
+ nil,
+ nil,
+ (50...53)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/var_op_asgn_cmd.txt b/test/yarp/snapshots/whitequark/var_op_asgn_cmd.txt
new file mode 100644
index 0000000000..4ef661f2fd
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/var_op_asgn_cmd.txt
@@ -0,0 +1,22 @@
+ProgramNode(0...12)(
+ [:foo],
+ StatementsNode(0...12)(
+ [LocalVariableOperatorWriteNode(0...12)(
+ (0...3),
+ (4...6),
+ CallNode(7...12)(
+ nil,
+ nil,
+ (7...8),
+ nil,
+ ArgumentsNode(9...12)([LocalVariableReadNode(9...12)(:foo, 0)]),
+ nil,
+ nil,
+ 0,
+ "m"
+ ),
+ :foo,
+ :+
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/var_or_asgn.txt b/test/yarp/snapshots/whitequark/var_or_asgn.txt
new file mode 100644
index 0000000000..39cc823867
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/var_or_asgn.txt
@@ -0,0 +1,11 @@
+ProgramNode(0...7)(
+ [:a],
+ StatementsNode(0...7)(
+ [LocalVariableOperatorOrWriteNode(0...7)(
+ (0...1),
+ (2...5),
+ IntegerNode(6...7)(),
+ :a
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/when_multi.txt b/test/yarp/snapshots/whitequark/when_multi.txt
new file mode 100644
index 0000000000..d81232ad20
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/when_multi.txt
@@ -0,0 +1,29 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [CaseNode(0...37)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(10...32)(
+ (10...14),
+ [StringNode(15...20)((15...16), (16...19), (19...20), "bar"),
+ StringNode(22...27)((22...23), (23...26), (26...27), "baz")],
+ StatementsNode(29...32)(
+ [CallNode(29...32)(
+ nil,
+ nil,
+ (29...32),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ nil,
+ (0...4),
+ (34...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/when_splat.txt b/test/yarp/snapshots/whitequark/when_splat.txt
new file mode 100644
index 0000000000..428ea20d6e
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/when_splat.txt
@@ -0,0 +1,60 @@
+ProgramNode(0...43)(
+ [],
+ StatementsNode(0...43)(
+ [CaseNode(0...43)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(10...27)(
+ (10...14),
+ [IntegerNode(15...16)(),
+ SplatNode(18...22)(
+ (18...19),
+ CallNode(19...22)(
+ nil,
+ nil,
+ (19...22),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "baz"
+ )
+ )],
+ StatementsNode(24...27)(
+ [CallNode(24...27)(
+ nil,
+ nil,
+ (24...27),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ ),
+ WhenNode(29...38)(
+ (29...33),
+ [SplatNode(34...38)(
+ (34...35),
+ CallNode(35...38)(
+ nil,
+ nil,
+ (35...38),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "foo"
+ )
+ )],
+ nil
+ )],
+ nil,
+ (0...4),
+ (40...43)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/when_then.txt b/test/yarp/snapshots/whitequark/when_then.txt
new file mode 100644
index 0000000000..3880028b7f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/when_then.txt
@@ -0,0 +1,28 @@
+ProgramNode(0...34)(
+ [],
+ StatementsNode(0...34)(
+ [CaseNode(0...34)(
+ CallNode(5...8)(nil, nil, (5...8), nil, nil, nil, nil, 0, "foo"),
+ [WhenNode(10...29)(
+ (10...14),
+ [StringNode(15...20)((15...16), (16...19), (19...20), "bar")],
+ StatementsNode(26...29)(
+ [CallNode(26...29)(
+ nil,
+ nil,
+ (26...29),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ )
+ )],
+ nil,
+ (0...4),
+ (31...34)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/while.txt b/test/yarp/snapshots/whitequark/while.txt
new file mode 100644
index 0000000000..9cd21ff154
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/while.txt
@@ -0,0 +1,39 @@
+ProgramNode(0...42)(
+ [],
+ StatementsNode(0...42)(
+ [WhileNode(0...21)(
+ (0...5),
+ CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(13...17)(
+ [CallNode(13...17)(
+ nil,
+ nil,
+ (13...17),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ )
+ ),
+ WhileNode(23...42)(
+ (23...28),
+ CallNode(29...32)(nil, nil, (29...32), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(34...38)(
+ [CallNode(34...38)(
+ nil,
+ nil,
+ (34...38),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/while_mod.txt b/test/yarp/snapshots/whitequark/while_mod.txt
new file mode 100644
index 0000000000..b39baf15c1
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/while_mod.txt
@@ -0,0 +1,12 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [WhileNode(0...14)(
+ (5...10),
+ CallNode(11...14)(nil, nil, (11...14), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(0...4)(
+ [CallNode(0...4)(nil, nil, (0...4), nil, nil, nil, nil, 0, "meth")]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/while_post.txt b/test/yarp/snapshots/whitequark/while_post.txt
new file mode 100644
index 0000000000..94adefedc7
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/while_post.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...24)(
+ [],
+ StatementsNode(0...24)(
+ [WhileNode(0...24)(
+ (15...20),
+ CallNode(21...24)(nil, nil, (21...24), nil, nil, nil, nil, 0, "foo"),
+ StatementsNode(0...14)(
+ [BeginNode(0...14)(
+ (0...5),
+ StatementsNode(6...10)(
+ [CallNode(6...10)(
+ nil,
+ nil,
+ (6...10),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "meth"
+ )]
+ ),
+ nil,
+ nil,
+ nil,
+ (11...14)
+ )]
+ )
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/xstring_interp.txt b/test/yarp/snapshots/whitequark/xstring_interp.txt
new file mode 100644
index 0000000000..0b7c91cf7f
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/xstring_interp.txt
@@ -0,0 +1,18 @@
+ProgramNode(0...14)(
+ [],
+ StatementsNode(0...14)(
+ [InterpolatedXStringNode(0...14)(
+ (0...1),
+ [StringNode(1...4)(nil, (1...4), nil, "foo"),
+ EmbeddedStatementsNode(4...10)(
+ (4...6),
+ StatementsNode(6...9)(
+ [CallNode(6...9)(nil, nil, (6...9), nil, nil, nil, nil, 0, "bar")]
+ ),
+ (9...10)
+ ),
+ StringNode(10...13)(nil, (10...13), nil, "baz")],
+ (13...14)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/xstring_plain.txt b/test/yarp/snapshots/whitequark/xstring_plain.txt
new file mode 100644
index 0000000000..61515d89d9
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/xstring_plain.txt
@@ -0,0 +1,6 @@
+ProgramNode(0...8)(
+ [],
+ StatementsNode(0...8)(
+ [XStringNode(0...8)((0...1), (1...7), (7...8), "foobar")]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/yield.txt b/test/yarp/snapshots/whitequark/yield.txt
new file mode 100644
index 0000000000..89b53914b6
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/yield.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...37)(
+ [],
+ StatementsNode(0...37)(
+ [YieldNode(0...5)((0...5), nil, nil, nil),
+ YieldNode(7...16)(
+ (7...12),
+ nil,
+ ArgumentsNode(13...16)(
+ [CallNode(13...16)(nil, nil, (13...16), nil, nil, nil, nil, 0, "foo")]
+ ),
+ nil
+ ),
+ YieldNode(18...25)((18...23), (23...24), nil, (24...25)),
+ YieldNode(27...37)(
+ (27...32),
+ (32...33),
+ ArgumentsNode(33...36)(
+ [CallNode(33...36)(nil, nil, (33...36), nil, nil, nil, nil, 0, "foo")]
+ ),
+ (36...37)
+ )]
+ )
+)
diff --git a/test/yarp/snapshots/whitequark/zsuper.txt b/test/yarp/snapshots/whitequark/zsuper.txt
new file mode 100644
index 0000000000..b9f92d0055
--- /dev/null
+++ b/test/yarp/snapshots/whitequark/zsuper.txt
@@ -0,0 +1,4 @@
+ProgramNode(0...5)(
+ [],
+ StatementsNode(0...5)([ForwardingSuperNode(0...5)(nil)])
+)
diff --git a/test/yarp/snapshots/xstring.txt b/test/yarp/snapshots/xstring.txt
new file mode 100644
index 0000000000..5bc0e9be56
--- /dev/null
+++ b/test/yarp/snapshots/xstring.txt
@@ -0,0 +1,31 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [XStringNode(0...7)((0...3), (3...6), (6...7), "foo"),
+ InterpolatedXStringNode(9...25)(
+ (9...10),
+ [StringNode(10...14)(nil, (10...14), nil, "foo "),
+ EmbeddedStatementsNode(14...20)(
+ (14...16),
+ StatementsNode(16...19)(
+ [CallNode(16...19)(
+ nil,
+ nil,
+ (16...19),
+ nil,
+ nil,
+ nil,
+ nil,
+ 0,
+ "bar"
+ )]
+ ),
+ (19...20)
+ ),
+ StringNode(20...24)(nil, (20...24), nil, " baz")],
+ (24...25)
+ ),
+ XStringNode(27...33)((27...28), (28...32), (32...33), "foo"),
+ XStringNode(35...40)((35...36), (36...39), (39...40), "foo")]
+ )
+)
diff --git a/test/yarp/snapshots/yield.txt b/test/yarp/snapshots/yield.txt
new file mode 100644
index 0000000000..9dba03e7b7
--- /dev/null
+++ b/test/yarp/snapshots/yield.txt
@@ -0,0 +1,23 @@
+ProgramNode(0...40)(
+ [],
+ StatementsNode(0...40)(
+ [YieldNode(0...5)((0...5), nil, nil, nil),
+ YieldNode(7...14)((7...12), (12...13), nil, (13...14)),
+ YieldNode(16...24)(
+ (16...21),
+ (21...22),
+ ArgumentsNode(22...23)([IntegerNode(22...23)()]),
+ (23...24)
+ ),
+ YieldNode(26...40)(
+ (26...31),
+ (31...32),
+ ArgumentsNode(32...39)(
+ [IntegerNode(32...33)(),
+ IntegerNode(35...36)(),
+ IntegerNode(38...39)()]
+ ),
+ (39...40)
+ )]
+ )
+)
diff --git a/test/yarp/unescape_test.rb b/test/yarp/unescape_test.rb
new file mode 100644
index 0000000000..314e59aa6a
--- /dev/null
+++ b/test/yarp/unescape_test.rb
@@ -0,0 +1,152 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+module UnescapeTest
+ class UnescapeNoneTest < Test::Unit::TestCase
+ def test_backslash
+ assert_unescape_none("\\")
+ end
+
+ def test_single_quote
+ assert_unescape_none("'")
+ end
+
+ private
+
+ def assert_unescape_none(source)
+ assert_equal(source, YARP.unescape_none(source))
+ end
+ end
+
+ class UnescapeMinimalTest < Test::Unit::TestCase
+ def test_backslash
+ assert_unescape_minimal("\\", "\\\\")
+ end
+
+ def test_single_quote
+ assert_unescape_minimal("'", "\\'")
+ end
+
+ def test_single_char
+ assert_unescape_minimal("\\a", "\\a")
+ end
+
+ private
+
+ def assert_unescape_minimal(expected, source)
+ assert_equal(expected, YARP.unescape_minimal(source))
+ end
+ end
+
+ class UnescapeAllTest < Test::Unit::TestCase
+ def test_backslash
+ assert_unescape_all("\\", "\\\\")
+ end
+
+ def test_single_quote
+ assert_unescape_all("'", "\\'")
+ end
+
+ def test_single_char
+ assert_unescape_all("\a", "\\a")
+ assert_unescape_all("\b", "\\b")
+ assert_unescape_all("\e", "\\e")
+ assert_unescape_all("\f", "\\f")
+ assert_unescape_all("\n", "\\n")
+ assert_unescape_all("\r", "\\r")
+ assert_unescape_all("\s", "\\s")
+ assert_unescape_all("\t", "\\t")
+ assert_unescape_all("\v", "\\v")
+ end
+
+ def test_octal
+ assert_unescape_all("\a", "\\7")
+ assert_unescape_all("#", "\\43")
+ assert_unescape_all("a", "\\141")
+ end
+
+ def test_hexadecimal
+ assert_unescape_all("\a", "\\x7")
+ assert_unescape_all("#", "\\x23")
+ assert_unescape_all("a", "\\x61")
+ end
+
+ def test_deletes
+ assert_unescape_all("\x7f", "\\c?")
+ assert_unescape_all("\x7f", "\\C-?")
+ end
+
+ def test_unicode_codepoint
+ assert_unescape_all("a", "\\u0061")
+ assert_unescape_all("Ā", "\\u0100", "UTF-8")
+ assert_unescape_all("က", "\\u1000", "UTF-8")
+ assert_unescape_all("တ", "\\u1010", "UTF-8")
+
+ assert_nil(YARP.unescape_all("\\uxxxx"))
+ end
+
+ def test_unicode_codepoints
+ assert_unescape_all("a", "\\u{61}")
+ assert_unescape_all("Ā", "\\u{0100}", "UTF-8")
+ assert_unescape_all("က", "\\u{1000}", "UTF-8")
+ assert_unescape_all("တ", "\\u{1010}", "UTF-8")
+ assert_unescape_all("𐀀", "\\u{10000}", "UTF-8")
+ assert_unescape_all("𐀐", "\\u{10010}", "UTF-8")
+ assert_unescape_all("aĀကတ𐀀𐀐", "\\u{ 61\s100\n1000\t1010\r10000\v10010 }", "UTF-8")
+
+ assert_nil(YARP.unescape_all("\\u{110000}"))
+ assert_nil(YARP.unescape_all("\\u{110000 110001 110002}"))
+ end
+
+ def test_control_characters
+ each_printable do |chr|
+ byte = eval("\"\\c#{chr}\"").bytes.first
+ assert_unescape_all(byte.chr, "\\c#{chr}")
+
+ byte = eval("\"\\C-#{chr}\"").bytes.first
+ assert_unescape_all(byte.chr, "\\C-#{chr}")
+ end
+ end
+
+ def test_meta_characters
+ each_printable do |chr|
+ byte = eval("\"\\M-#{chr}\"").bytes.first
+ assert_unescape_all(byte.chr, "\\M-#{chr}")
+ end
+ end
+
+ def test_meta_control_characters
+ each_printable do |chr|
+ byte = eval("\"\\M-\\c#{chr}\"").bytes.first
+ assert_unescape_all(byte.chr, "\\M-\\c#{chr}")
+
+ byte = eval("\"\\M-\\C-#{chr}\"").bytes.first
+ assert_unescape_all(byte.chr, "\\M-\\C-#{chr}")
+
+ byte = eval("\"\\c\\M-#{chr}\"").bytes.first
+ assert_unescape_all(byte.chr, "\\c\\M-#{chr}")
+ end
+ end
+
+ def test_escaping_normal_characters
+ assert_unescape_all("d", "\\d")
+ assert_unescape_all("g", "\\g")
+ end
+
+ private
+
+ def assert_unescape_all(expected, source, forced_encoding = nil)
+ result = YARP.unescape_all(source)
+ result.force_encoding(forced_encoding) if forced_encoding
+ assert_equal(expected, result)
+ end
+
+ def each_printable
+ (1..127).each do |ord|
+ chr = ord.chr
+ yield chr if chr.match?(/[[:print:]]/) && chr != " " && chr != "\\"
+ end
+ end
+ end
+end
diff --git a/test/yarp/version_test.rb b/test/yarp/version_test.rb
new file mode 100644
index 0000000000..f431157ae9
--- /dev/null
+++ b/test/yarp/version_test.rb
@@ -0,0 +1,9 @@
+# frozen_string_literal: true
+
+require "yarp_test_helper"
+
+class VersionTest < Test::Unit::TestCase
+ def test_version_is_set
+ refute_nil YARP::VERSION
+ end
+end
diff --git a/test/yarp/yarp_test_helper.rb b/test/yarp/yarp_test_helper.rb
new file mode 100644
index 0000000000..666bc337c7
--- /dev/null
+++ b/test/yarp/yarp_test_helper.rb
@@ -0,0 +1,98 @@
+# frozen_string_literal: true
+
+require "yarp"
+require "ripper"
+require "pp"
+require "test/unit"
+require "tempfile"
+
+module YARP
+ module Assertions
+ private
+
+ def assert_equal_nodes(expected, actual, compare_location: true, parent: nil)
+ assert_equal expected.class, actual.class
+
+ case expected
+ when Array
+ assert_equal(
+ expected.size,
+ actual.size,
+ -> { "Arrays were different sizes. Parent: #{parent.pretty_inspect}" }
+ )
+
+ expected.zip(actual).each do |(expected_element, actual_element)|
+ assert_equal_nodes(
+ expected_element,
+ actual_element,
+ compare_location: compare_location,
+ parent: actual
+ )
+ end
+ when YARP::SourceFileNode
+ deconstructed_expected = expected.deconstruct_keys(nil)
+ deconstructed_actual = actual.deconstruct_keys(nil)
+ assert_equal deconstructed_expected.keys, deconstructed_actual.keys
+
+ # Filepaths can be different if test suites were run
+ # on different machines.
+ # We accommodate for this by comparing the basenames,
+ # and not the absolute filepaths
+ assert_equal deconstructed_expected.except(:filepath), deconstructed_actual.except(:filepath)
+ assert_equal File.basename(deconstructed_expected[:filepath]), File.basename(deconstructed_actual[:filepath])
+ when YARP::Node
+ deconstructed_expected = expected.deconstruct_keys(nil)
+ deconstructed_actual = actual.deconstruct_keys(nil)
+ assert_equal deconstructed_expected.keys, deconstructed_actual.keys
+
+ deconstructed_expected.each_key do |key|
+ assert_equal_nodes(
+ deconstructed_expected[key],
+ deconstructed_actual[key],
+ compare_location: compare_location,
+ parent: actual
+ )
+ end
+ when YARP::Location
+ assert_operator actual.start_offset, :<=, actual.end_offset, -> {
+ "start_offset > end_offset for #{actual.inspect}, parent is #{parent.pretty_inspect}"
+ }
+ if compare_location
+ assert_equal(
+ expected.start_offset,
+ actual.start_offset,
+ -> { "Start locations were different. Parent: #{parent.pretty_inspect}" }
+ )
+
+ assert_equal(
+ expected.end_offset,
+ actual.end_offset,
+ -> { "End locations were different. Parent: #{parent.pretty_inspect}" }
+ )
+
+ end
+ else
+ assert_equal expected, actual
+ end
+ end
+
+ def assert_valid_locations(value, parent: nil)
+ case value
+ when Array
+ value.each do |element|
+ assert_valid_locations(element, parent: value)
+ end
+ when YARP::Node
+ value.deconstruct_keys(nil).each_value do |field|
+ assert_valid_locations(field, parent: value)
+ end
+ when YARP::Location
+ assert_operator value.start_offset, :<=, value.end_offset, -> {
+ "start_offset > end_offset for #{value.inspect}, parent is #{parent.pretty_inspect}"
+ }
+ end
+ end
+ end
+end
+
+Test::Unit::TestCase.include(YARP::Assertions)