rubyduino 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitmodules +3 -0
- data/CHANGELOG.md +9 -0
- data/LICENSE.txt +21 -0
- data/README.md +72 -0
- data/Rakefile +12 -0
- data/bin/rubyduino +186 -0
- data/examples/hello.rb +9 -0
- data/lib/rubyduino/arduino_entry.c +9 -0
- data/lib/rubyduino/sp_runtime.h +159 -0
- data/lib/rubyduino/spinel.rb +8 -0
- data/lib/rubyduino/spinel_arduino_codegen.rb +129 -0
- data/lib/rubyduino/version.rb +5 -0
- data/lib/rubyduino.rb +9 -0
- data/sig/rubyduino.rbs +4 -0
- data/vendor/spinel/AUTHORS +1 -0
- data/vendor/spinel/LICENSE +19 -0
- data/vendor/spinel/Makefile +406 -0
- data/vendor/spinel/POLY-AS-SET.md +217 -0
- data/vendor/spinel/README.md +409 -0
- data/vendor/spinel/benchmark/bm_ackermann.rb +12 -0
- data/vendor/spinel/benchmark/bm_ao_render.rb +323 -0
- data/vendor/spinel/benchmark/bm_attr_accessor.rb +41 -0
- data/vendor/spinel/benchmark/bm_bigint_fib.rb +10 -0
- data/vendor/spinel/benchmark/bm_binary_trees.rb +53 -0
- data/vendor/spinel/benchmark/bm_csv_process.rb +58 -0
- data/vendor/spinel/benchmark/bm_fannkuch.rb +88 -0
- data/vendor/spinel/benchmark/bm_fasta.rb +87 -0
- data/vendor/spinel/benchmark/bm_fib.rb +9 -0
- data/vendor/spinel/benchmark/bm_gcbench.rb +73 -0
- data/vendor/spinel/benchmark/bm_getivar.rb +34 -0
- data/vendor/spinel/benchmark/bm_getivar_module.rb +34 -0
- data/vendor/spinel/benchmark/bm_huffman.rb +141 -0
- data/vendor/spinel/benchmark/bm_inline.rb +68 -0
- data/vendor/spinel/benchmark/bm_io_wordcount.rb +57 -0
- data/vendor/spinel/benchmark/bm_json_parse.rb +157 -0
- data/vendor/spinel/benchmark/bm_keyword_args.rb +23 -0
- data/vendor/spinel/benchmark/bm_life.rb +70 -0
- data/vendor/spinel/benchmark/bm_linked_list.rb +75 -0
- data/vendor/spinel/benchmark/bm_loops_times.rb +16 -0
- data/vendor/spinel/benchmark/bm_mandel_term.rb +34 -0
- data/vendor/spinel/benchmark/bm_matmul.rb +42 -0
- data/vendor/spinel/benchmark/bm_nbody.rb +115 -0
- data/vendor/spinel/benchmark/bm_nested_loop.rb +29 -0
- data/vendor/spinel/benchmark/bm_nqueens.rb +46 -0
- data/vendor/spinel/benchmark/bm_object_new.rb +21 -0
- data/vendor/spinel/benchmark/bm_object_new_init.rb +21 -0
- data/vendor/spinel/benchmark/bm_object_new_no_escape.rb +28 -0
- data/vendor/spinel/benchmark/bm_partial_sums.rb +38 -0
- data/vendor/spinel/benchmark/bm_pidigits.rb +31 -0
- data/vendor/spinel/benchmark/bm_rbtree.rb +100 -0
- data/vendor/spinel/benchmark/bm_ruby_xor.rb +28 -0
- data/vendor/spinel/benchmark/bm_send_bmethod.rb +31 -0
- data/vendor/spinel/benchmark/bm_send_cfunc_block.rb +18 -0
- data/vendor/spinel/benchmark/bm_send_rubyfunc_block.rb +23 -0
- data/vendor/spinel/benchmark/bm_setivar.rb +33 -0
- data/vendor/spinel/benchmark/bm_setivar_object.rb +33 -0
- data/vendor/spinel/benchmark/bm_setivar_young.rb +37 -0
- data/vendor/spinel/benchmark/bm_sieve.rb +23 -0
- data/vendor/spinel/benchmark/bm_so_lists.rb +47 -0
- data/vendor/spinel/benchmark/bm_so_mandelbrot.rb +65 -0
- data/vendor/spinel/benchmark/bm_spectral_norm.rb +71 -0
- data/vendor/spinel/benchmark/bm_splay.rb +128 -0
- data/vendor/spinel/benchmark/bm_str_concat.rb +15 -0
- data/vendor/spinel/benchmark/bm_structaref.rb +25 -0
- data/vendor/spinel/benchmark/bm_structaset.rb +24 -0
- data/vendor/spinel/benchmark/bm_sudoku.rb +217 -0
- data/vendor/spinel/benchmark/bm_tak.rb +10 -0
- data/vendor/spinel/benchmark/bm_tarai.rb +10 -0
- data/vendor/spinel/benchmark/bm_template.rb +50 -0
- data/vendor/spinel/benchmark/bm_throw.rb +25 -0
- data/vendor/spinel/benchmark/bm_wordfreq.rb +43 -0
- data/vendor/spinel/docs/FFI.md +198 -0
- data/vendor/spinel/examples/ffi/libm/README.md +24 -0
- data/vendor/spinel/examples/ffi/libm/libm.rb +17 -0
- data/vendor/spinel/examples/ffi/sqlite/README.md +73 -0
- data/vendor/spinel/examples/ffi/sqlite/blog.rb +185 -0
- data/vendor/spinel/examples/ffi/sqlite/sqlite3_lib.rb +46 -0
- data/vendor/spinel/lib/erb.rb +19 -0
- data/vendor/spinel/lib/forwardable.rb +8 -0
- data/vendor/spinel/lib/mruby_shim.h +118 -0
- data/vendor/spinel/lib/optparse.rb +123 -0
- data/vendor/spinel/lib/regexp/re_compile.c +979 -0
- data/vendor/spinel/lib/regexp/re_exec.c +665 -0
- data/vendor/spinel/lib/regexp/re_internal.h +146 -0
- data/vendor/spinel/lib/regexp/re_utf8.c +76 -0
- data/vendor/spinel/lib/set.rb +12 -0
- data/vendor/spinel/lib/sp_bigint.c +5400 -0
- data/vendor/spinel/lib/sp_bigint.h +117 -0
- data/vendor/spinel/lib/sp_runtime.h +1361 -0
- data/vendor/spinel/lib/stringio.c +286 -0
- data/vendor/spinel/lib/stringio.rb +5 -0
- data/vendor/spinel/lib/strscan.c +170 -0
- data/vendor/spinel/lib/strscan.rb +55 -0
- data/vendor/spinel/spinel +191 -0
- data/vendor/spinel/spinel.bat +158 -0
- data/vendor/spinel/spinel_codegen.rb +39906 -0
- data/vendor/spinel/spinel_parse +0 -0
- data/vendor/spinel/spinel_parse.c +1586 -0
- data/vendor/spinel/test/alias_global.rb +16 -0
- data/vendor/spinel/test/alias_global.rb.expected +3 -0
- data/vendor/spinel/test/alias_method.rb +28 -0
- data/vendor/spinel/test/alias_method.rb.expected +5 -0
- data/vendor/spinel/test/and_node_poly_operand.rb +24 -0
- data/vendor/spinel/test/anon_block_forward.rb +47 -0
- data/vendor/spinel/test/anon_block_forward.rb.expected +4 -0
- data/vendor/spinel/test/array_3d_nested.rb +48 -0
- data/vendor/spinel/test/array_clear_typed.rb +40 -0
- data/vendor/spinel/test/array_clear_typed.rb.expected +7 -0
- data/vendor/spinel/test/array_concat.rb +18 -0
- data/vendor/spinel/test/array_concat.rb.expected +2 -0
- data/vendor/spinel/test/array_each_with_object.rb +17 -0
- data/vendor/spinel/test/array_each_with_object.rb.expected +2 -0
- data/vendor/spinel/test/array_fill_poly.rb +17 -0
- data/vendor/spinel/test/array_flat_map.rb +16 -0
- data/vendor/spinel/test/array_flat_map.rb.expected +2 -0
- data/vendor/spinel/test/array_keyed_hash_int_array_eql.rb +29 -0
- data/vendor/spinel/test/array_keyed_hash_int_array_eql.rb.expected +6 -0
- data/vendor/spinel/test/array_method_name_clash.rb +15 -0
- data/vendor/spinel/test/array_method_name_clash.rb.expected +1 -0
- data/vendor/spinel/test/array_new_block_typed_container.rb +37 -0
- data/vendor/spinel/test/array_new_block_typed_container.rb.expected +7 -0
- data/vendor/spinel/test/array_new_empty_inner_deferred.rb +47 -0
- data/vendor/spinel/test/array_new_empty_inner_deferred.rb.expected +8 -0
- data/vendor/spinel/test/array_partition_gc.rb +20 -0
- data/vendor/spinel/test/array_partition_gc.rb.expected +3 -0
- data/vendor/spinel/test/array_plus.rb +18 -0
- data/vendor/spinel/test/array_plus.rb.expected +2 -0
- data/vendor/spinel/test/array_rotate_bang.rb +54 -0
- data/vendor/spinel/test/array_rotate_bang.rb.expected +34 -0
- data/vendor/spinel/test/array_shuffle_ptr.rb +11 -0
- data/vendor/spinel/test/array_shuffle_ptr.rb.expected +1 -0
- data/vendor/spinel/test/array_slice_bang.rb +81 -0
- data/vendor/spinel/test/array_slice_bang.rb.expected +40 -0
- data/vendor/spinel/test/attr.rb +77 -0
- data/vendor/spinel/test/attr.rb.expected +9 -0
- data/vendor/spinel/test/attr_writer_poly_box.rb +24 -0
- data/vendor/spinel/test/attr_writer_poly_no_double_eval.rb +29 -0
- data/vendor/spinel/test/attr_writer_poly_no_double_eval.rb.expected +3 -0
- data/vendor/spinel/test/attr_writer_returns_rhs.rb +23 -0
- data/vendor/spinel/test/auto_unbox_keeps_int_slot.rb +38 -0
- data/vendor/spinel/test/auto_unbox_keeps_int_slot.rb.expected +3 -0
- data/vendor/spinel/test/auto_unbox_poly_to_int_local.rb +36 -0
- data/vendor/spinel/test/auto_unbox_poly_to_int_local.rb.expected +2 -0
- data/vendor/spinel/test/back_ref.rb +21 -0
- data/vendor/spinel/test/back_ref.rb.expected +6 -0
- data/vendor/spinel/test/bare_return_in_cls_method.rb +46 -0
- data/vendor/spinel/test/bare_return_in_cls_method.rb.expected +2 -0
- data/vendor/spinel/test/bare_return_in_initialize.rb +55 -0
- data/vendor/spinel/test/bare_return_in_initialize.rb.expected +4 -0
- data/vendor/spinel/test/bare_return_in_poly_method.rb +26 -0
- data/vendor/spinel/test/bare_return_in_poly_method.rb.expected +2 -0
- data/vendor/spinel/test/bigint_div_by_zero.rb +43 -0
- data/vendor/spinel/test/bigint_div_by_zero.rb.expected +3 -0
- data/vendor/spinel/test/block2.rb +31 -0
- data/vendor/spinel/test/block2.rb.expected +4 -0
- data/vendor/spinel/test/block_forward_block_arg.rb +60 -0
- data/vendor/spinel/test/block_forward_block_arg.rb.expected +4 -0
- data/vendor/spinel/test/block_forward_recv_typed.rb +82 -0
- data/vendor/spinel/test/block_forward_recv_typed.rb.expected +11 -0
- data/vendor/spinel/test/block_forward_self_call.rb +61 -0
- data/vendor/spinel/test/block_forward_self_call.rb.expected +6 -0
- data/vendor/spinel/test/block_given_block_param.rb +46 -0
- data/vendor/spinel/test/block_given_block_param.rb.expected +3 -0
- data/vendor/spinel/test/block_param_shadow.rb +246 -0
- data/vendor/spinel/test/block_param_shadow.rb.expected +71 -0
- data/vendor/spinel/test/bm_instance_eval.rb +209 -0
- data/vendor/spinel/test/bm_instance_eval.rb.expected +27 -0
- data/vendor/spinel/test/bound_method_array.rb +22 -0
- data/vendor/spinel/test/bound_method_array.rb.expected +4 -0
- data/vendor/spinel/test/bound_method_basic.rb +27 -0
- data/vendor/spinel/test/bound_method_basic.rb.expected +2 -0
- data/vendor/spinel/test/bound_method_gc.rb +30 -0
- data/vendor/spinel/test/bound_method_gc.rb.expected +1 -0
- data/vendor/spinel/test/bound_method_obj_recv.rb +41 -0
- data/vendor/spinel/test/bound_method_obj_recv.rb.expected +4 -0
- data/vendor/spinel/test/bound_method_single_eval.rb +37 -0
- data/vendor/spinel/test/bound_method_single_eval.rb.expected +4 -0
- data/vendor/spinel/test/box_pointer_to_poly.rb +27 -0
- data/vendor/spinel/test/box_pointer_to_poly.rb.expected +1 -0
- data/vendor/spinel/test/box_unbox_local_assign_cond.rb +22 -0
- data/vendor/spinel/test/box_unbox_local_assign_cond.rb.expected +2 -0
- data/vendor/spinel/test/bundle_array_a.rb +400 -0
- data/vendor/spinel/test/bundle_array_a.rb.expected +117 -0
- data/vendor/spinel/test/bundle_array_b.rb +369 -0
- data/vendor/spinel/test/bundle_array_b.rb.expected +136 -0
- data/vendor/spinel/test/bundle_array_c.rb +146 -0
- data/vendor/spinel/test/bundle_array_c.rb.expected +51 -0
- data/vendor/spinel/test/bundle_array_d.rb +181 -0
- data/vendor/spinel/test/bundle_array_d.rb.expected +66 -0
- data/vendor/spinel/test/bundle_hash.rb +328 -0
- data/vendor/spinel/test/bundle_hash.rb.expected +104 -0
- data/vendor/spinel/test/bundle_int_array.rb +125 -0
- data/vendor/spinel/test/bundle_int_array.rb.expected +24 -0
- data/vendor/spinel/test/bundle_integer.rb +248 -0
- data/vendor/spinel/test/bundle_integer.rb.expected +113 -0
- data/vendor/spinel/test/bundle_io_sys.rb +223 -0
- data/vendor/spinel/test/bundle_io_sys.rb.expected +62 -0
- data/vendor/spinel/test/bundle_misc_a.rb +462 -0
- data/vendor/spinel/test/bundle_misc_a.rb.expected +208 -0
- data/vendor/spinel/test/bundle_misc_b.rb +401 -0
- data/vendor/spinel/test/bundle_misc_b.rb.expected +120 -0
- data/vendor/spinel/test/bundle_poly.rb +145 -0
- data/vendor/spinel/test/bundle_poly.rb.expected +66 -0
- data/vendor/spinel/test/bundle_string_a.rb +278 -0
- data/vendor/spinel/test/bundle_string_a.rb.expected +93 -0
- data/vendor/spinel/test/bundle_string_b.rb +226 -0
- data/vendor/spinel/test/bundle_string_b.rb.expected +83 -0
- data/vendor/spinel/test/bundle_sym.rb +302 -0
- data/vendor/spinel/test/bundle_sym.rb.expected +117 -0
- data/vendor/spinel/test/call_and_write.rb +28 -0
- data/vendor/spinel/test/call_and_write.rb.expected +3 -0
- data/vendor/spinel/test/call_arg_int_to_obj_cast.rb +55 -0
- data/vendor/spinel/test/call_arg_int_to_obj_cast.rb.expected +1 -0
- data/vendor/spinel/test/call_op_write.rb +51 -0
- data/vendor/spinel/test/call_op_write.rb.expected +11 -0
- data/vendor/spinel/test/call_or_write.rb +35 -0
- data/vendor/spinel/test/call_or_write.rb.expected +3 -0
- data/vendor/spinel/test/case.rb +43 -0
- data/vendor/spinel/test/case.rb.expected +10 -0
- data/vendor/spinel/test/case_string_when_sym_no_match.rb +59 -0
- data/vendor/spinel/test/case_string_when_sym_no_match.rb.expected +7 -0
- data/vendor/spinel/test/case_when_class.rb +70 -0
- data/vendor/spinel/test/case_when_class.rb.expected +5 -0
- data/vendor/spinel/test/chained_attr_setter.rb +55 -0
- data/vendor/spinel/test/chained_ivar_op_assign_emits_inner_write.rb +28 -0
- data/vendor/spinel/test/chained_ivar_op_assign_emits_inner_write.rb.expected +3 -0
- data/vendor/spinel/test/chained_ivar_write_call_rhs.rb +30 -0
- data/vendor/spinel/test/chained_ivar_write_call_rhs.rb.expected +2 -0
- data/vendor/spinel/test/chained_ivar_write_split.rb +26 -0
- data/vendor/spinel/test/chained_ivar_write_split.rb.expected +3 -0
- data/vendor/spinel/test/chained_ivar_write_subclass.rb +26 -0
- data/vendor/spinel/test/chained_ivar_write_subclass.rb.expected +2 -0
- data/vendor/spinel/test/chained_or_assign_collection_array_nested.rb +32 -0
- data/vendor/spinel/test/chained_or_assign_collection_array_nested.rb.expected +3 -0
- data/vendor/spinel/test/chained_or_assign_collection_element.rb +29 -0
- data/vendor/spinel/test/chained_or_assign_collection_element.rb.expected +2 -0
- data/vendor/spinel/test/chained_or_assign_collection_poly_array.rb +25 -0
- data/vendor/spinel/test/chained_or_assign_collection_poly_array.rb.expected +3 -0
- data/vendor/spinel/test/chained_or_assign_collection_str_keys.rb +24 -0
- data/vendor/spinel/test/chained_or_assign_collection_str_keys.rb.expected +3 -0
- data/vendor/spinel/test/class_constant_path_read.rb +26 -0
- data/vendor/spinel/test/class_constant_path_read.rb.expected +4 -0
- data/vendor/spinel/test/class_constant_sym_array.rb +19 -0
- data/vendor/spinel/test/class_constant_sym_array.rb.expected +4 -0
- data/vendor/spinel/test/class_def_order.rb +66 -0
- data/vendor/spinel/test/class_def_order.rb.expected +4 -0
- data/vendor/spinel/test/class_method_open_class_call.rb +31 -0
- data/vendor/spinel/test/class_method_open_class_call.rb.expected +3 -0
- data/vendor/spinel/test/class_var_read.rb +113 -0
- data/vendor/spinel/test/class_var_read.rb.expected +8 -0
- data/vendor/spinel/test/class_var_write.rb +19 -0
- data/vendor/spinel/test/class_var_write.rb.expected +1 -0
- data/vendor/spinel/test/cls_ivar_type_parent_defer.rb +32 -0
- data/vendor/spinel/test/cls_method_object.rb +31 -0
- data/vendor/spinel/test/cls_method_object.rb.expected +2 -0
- data/vendor/spinel/test/codegen_class_in_module_with_explicit_parent.rb +15 -0
- data/vendor/spinel/test/codegen_class_in_module_with_explicit_parent.rb.expected +1 -0
- data/vendor/spinel/test/codegen_const_lookup_in_toplevel_method.rb +13 -0
- data/vendor/spinel/test/codegen_const_lookup_in_toplevel_method.rb.expected +1 -0
- data/vendor/spinel/test/comparable.rb +21 -0
- data/vendor/spinel/test/comparable.rb.expected +5 -0
- data/vendor/spinel/test/const_init_block_param_scan.rb +13 -0
- data/vendor/spinel/test/const_init_block_param_scan.rb.expected +2 -0
- data/vendor/spinel/test/constant_path.rb +102 -0
- data/vendor/spinel/test/constant_path.rb.expected +21 -0
- data/vendor/spinel/test/constants.rb +44 -0
- data/vendor/spinel/test/constants.rb.expected +13 -0
- data/vendor/spinel/test/control.rb +23 -0
- data/vendor/spinel/test/control.rb.expected +7 -0
- data/vendor/spinel/test/default_args.rb +108 -0
- data/vendor/spinel/test/default_args.rb.expected +13 -0
- data/vendor/spinel/test/default_argv_narrows_from_string_call_site.rb +32 -0
- data/vendor/spinel/test/default_argv_narrows_from_string_call_site.rb.expected +1 -0
- data/vendor/spinel/test/each_poly_recv_block_auto_splat.rb +43 -0
- data/vendor/spinel/test/each_poly_recv_block_auto_splat.rb.expected +2 -0
- data/vendor/spinel/test/each_with_object_seed_shadow.rb +14 -0
- data/vendor/spinel/test/each_with_object_seed_shadow.rb.expected +4 -0
- data/vendor/spinel/test/elsif_isa_chain.rb +56 -0
- data/vendor/spinel/test/elsif_isa_chain.rb.expected +6 -0
- data/vendor/spinel/test/embedded_var.rb +17 -0
- data/vendor/spinel/test/embedded_var.rb.expected +2 -0
- data/vendor/spinel/test/empty_array_param.rb +94 -0
- data/vendor/spinel/test/empty_array_param.rb.expected +18 -0
- data/vendor/spinel/test/empty_hash_ivar_string_value.rb +51 -0
- data/vendor/spinel/test/empty_hash_ivar_string_value.rb.expected +4 -0
- data/vendor/spinel/test/endless_method.rb +61 -0
- data/vendor/spinel/test/endless_method.rb.expected +11 -0
- data/vendor/spinel/test/endless_method_rescue.rb +33 -0
- data/vendor/spinel/test/endless_method_rescue.rb.expected +10 -0
- data/vendor/spinel/test/ensure_raise_overrides_body_raise.rb +19 -0
- data/vendor/spinel/test/ensure_raise_overrides_body_raise.rb.expected +1 -0
- data/vendor/spinel/test/ensure_runs_on_raise.rb +32 -0
- data/vendor/spinel/test/ensure_runs_on_raise.rb.expected +3 -0
- data/vendor/spinel/test/ensure_runs_on_raise_nested.rb +38 -0
- data/vendor/spinel/test/ensure_runs_on_raise_nested.rb.expected +4 -0
- data/vendor/spinel/test/ensure_runs_on_return.rb +61 -0
- data/vendor/spinel/test/ensure_runs_on_return.rb.expected +6 -0
- data/vendor/spinel/test/ensure_runs_on_return_from_rescue.rb +26 -0
- data/vendor/spinel/test/ensure_runs_on_return_from_rescue.rb.expected +2 -0
- data/vendor/spinel/test/ensure_runs_on_return_nested.rb +37 -0
- data/vendor/spinel/test/ensure_runs_on_return_nested.rb.expected +3 -0
- data/vendor/spinel/test/enumerable.rb +19 -0
- data/vendor/spinel/test/enumerable.rb.expected +2 -0
- data/vendor/spinel/test/env_string_inference.rb +37 -0
- data/vendor/spinel/test/env_string_inference.rb.expected +6 -0
- data/vendor/spinel/test/exception_object_methods.rb +99 -0
- data/vendor/spinel/test/exception_object_methods.rb.expected +15 -0
- data/vendor/spinel/test/exceptions.rb +34 -0
- data/vendor/spinel/test/exceptions.rb.expected +4 -0
- data/vendor/spinel/test/features.rb +32 -0
- data/vendor/spinel/test/features.rb.expected +9 -0
- data/vendor/spinel/test/ffi_buffer_reader.rb +23 -0
- data/vendor/spinel/test/ffi_buffer_reader.rb.expected +5 -0
- data/vendor/spinel/test/ffi_const.rb +12 -0
- data/vendor/spinel/test/ffi_const.rb.expected +5 -0
- data/vendor/spinel/test/ffi_libc_libm_basic.rb +16 -0
- data/vendor/spinel/test/ffi_libc_libm_basic.rb.expected +5 -0
- data/vendor/spinel/test/ffi_ptr_nil.rb +27 -0
- data/vendor/spinel/test/ffi_ptr_nil.rb.expected +2 -0
- data/vendor/spinel/test/ffi_void_return.rb +14 -0
- data/vendor/spinel/test/ffi_void_return.rb.expected +2 -0
- data/vendor/spinel/test/fiber_ivar_persists_across_yield.rb +22 -0
- data/vendor/spinel/test/fiber_ivar_persists_across_yield.rb.expected +3 -0
- data/vendor/spinel/test/fiber_yield_across_method_call.rb +28 -0
- data/vendor/spinel/test/fiber_yield_across_method_call.rb.expected +3 -0
- data/vendor/spinel/test/file_basename_gc.rb +59 -0
- data/vendor/spinel/test/file_basename_gc.rb.expected +2 -0
- data/vendor/spinel/test/forward_call_class_method_inherited_init.rb +36 -0
- data/vendor/spinel/test/forward_call_class_method_inherited_init.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_class_method_inherited_init_int_array.rb +32 -0
- data/vendor/spinel/test/forward_call_class_method_inherited_init_int_array.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_class_method_inherited_init_obj.rb +41 -0
- data/vendor/spinel/test/forward_call_class_method_inherited_init_obj.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_class_method_int_array.rb +26 -0
- data/vendor/spinel/test/forward_call_class_method_int_array.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_class_method_nested.rb +35 -0
- data/vendor/spinel/test/forward_call_class_method_nested.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_class_method_obj.rb +36 -0
- data/vendor/spinel/test/forward_call_class_method_obj.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_param_type_inference.rb +23 -0
- data/vendor/spinel/test/forward_call_param_type_inference.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_param_type_int_array.rb +34 -0
- data/vendor/spinel/test/forward_call_param_type_int_array.rb.expected +1 -0
- data/vendor/spinel/test/forward_call_param_type_obj.rb +38 -0
- data/vendor/spinel/test/forward_call_param_type_obj.rb.expected +1 -0
- data/vendor/spinel/test/gc_root_ptr_array_literal.rb +63 -0
- data/vendor/spinel/test/gc_root_ptr_array_literal.rb.expected +1 -0
- data/vendor/spinel/test/gc_save_double_in_new.rb +13 -0
- data/vendor/spinel/test/gc_save_double_in_new.rb.expected +1 -0
- data/vendor/spinel/test/gc_scan_skip_inherited_ivar.rb +54 -0
- data/vendor/spinel/test/gc_scan_skip_inherited_ivar.rb.expected +2 -0
- data/vendor/spinel/test/global_var.rb +53 -0
- data/vendor/spinel/test/global_var.rb.expected +12 -0
- data/vendor/spinel/test/gvar.rb +22 -0
- data/vendor/spinel/test/gvar.rb.expected +4 -0
- data/vendor/spinel/test/hash_dig.rb +92 -0
- data/vendor/spinel/test/hash_dig.rb.expected +37 -0
- data/vendor/spinel/test/hash_keys_each_shadow.rb +40 -0
- data/vendor/spinel/test/hash_keys_each_shadow.rb.expected +9 -0
- data/vendor/spinel/test/hash_shorthand.rb +37 -0
- data/vendor/spinel/test/hash_shorthand.rb.expected +6 -0
- data/vendor/spinel/test/hash_shorthand_str.rb +48 -0
- data/vendor/spinel/test/hash_shorthand_str.rb.expected +19 -0
- data/vendor/spinel/test/heterogeneous_dispatch_int_return_narrow.rb +46 -0
- data/vendor/spinel/test/heterogeneous_dispatch_int_return_narrow.rb.expected +2 -0
- data/vendor/spinel/test/if_static_false_skips_dead_branch_compile.rb +50 -0
- data/vendor/spinel/test/if_static_false_skips_dead_branch_compile.rb.expected +3 -0
- data/vendor/spinel/test/implicit_self_param_poly.rb +17 -0
- data/vendor/spinel/test/implicit_self_param_poly.rb.expected +1 -0
- data/vendor/spinel/test/index_write.rb +106 -0
- data/vendor/spinel/test/index_write.rb.expected +30 -0
- data/vendor/spinel/test/inference_method_set.rb +35 -0
- data/vendor/spinel/test/inference_method_set.rb.expected +2 -0
- data/vendor/spinel/test/inherit.rb +52 -0
- data/vendor/spinel/test/inherit.rb.expected +7 -0
- data/vendor/spinel/test/inherited_method_param_widen.rb +49 -0
- data/vendor/spinel/test/inherited_method_param_widen.rb.expected +1 -0
- data/vendor/spinel/test/init_locals.rb +43 -0
- data/vendor/spinel/test/init_locals.rb.expected +3 -0
- data/vendor/spinel/test/initialize_param_poly_call_sites.rb +20 -0
- data/vendor/spinel/test/initialize_param_poly_call_sites.rb.expected +2 -0
- data/vendor/spinel/test/initialize_param_through_call.rb +15 -0
- data/vendor/spinel/test/initialize_param_through_call.rb.expected +1 -0
- data/vendor/spinel/test/initialize_void_wrapper_gc_save.rb +40 -0
- data/vendor/spinel/test/initialize_void_wrapper_gc_save.rb.expected +1 -0
- data/vendor/spinel/test/inspect.rb +86 -0
- data/vendor/spinel/test/inspect.rb.expected +52 -0
- data/vendor/spinel/test/instance_eval_trampoline.rb +88 -0
- data/vendor/spinel/test/instance_eval_trampoline.rb.expected +5 -0
- data/vendor/spinel/test/int_bracket_skip_sym_idx.rb +40 -0
- data/vendor/spinel/test/int_bracket_skip_sym_idx.rb.expected +5 -0
- data/vendor/spinel/test/int_keyed_hash_lookup_as_array.rb +19 -0
- data/vendor/spinel/test/int_keyed_hash_lookup_as_array.rb.expected +2 -0
- data/vendor/spinel/test/intarray_slice_assign_from_intarray_ptr_array_first.rb +25 -0
- data/vendor/spinel/test/intarray_slice_assign_from_intarray_ptr_array_first.rb.expected +1 -0
- data/vendor/spinel/test/integer_div.rb +21 -0
- data/vendor/spinel/test/integer_div.rb.expected +10 -0
- data/vendor/spinel/test/integer_div_by_zero.rb +80 -0
- data/vendor/spinel/test/integer_div_by_zero.rb.expected +10 -0
- data/vendor/spinel/test/interp_method_widening.rb +39 -0
- data/vendor/spinel/test/interp_method_widening.rb.expected +4 -0
- data/vendor/spinel/test/interp_symbol.rb +18 -0
- data/vendor/spinel/test/interp_symbol.rb.expected +3 -0
- data/vendor/spinel/test/introspect.rb +35 -0
- data/vendor/spinel/test/introspect.rb.expected +11 -0
- data/vendor/spinel/test/issue176_empty_hash_default.rb +34 -0
- data/vendor/spinel/test/issue176_empty_hash_default.rb.expected +3 -0
- data/vendor/spinel/test/issue203_string_new.rb +27 -0
- data/vendor/spinel/test/issue203_string_new.rb.expected +4 -0
- data/vendor/spinel/test/issue204_user_find_fetch.rb +25 -0
- data/vendor/spinel/test/issue204_user_find_fetch.rb.expected +5 -0
- data/vendor/spinel/test/issue207_factory_pattern.rb +35 -0
- data/vendor/spinel/test/issue207_factory_pattern.rb.expected +1 -0
- data/vendor/spinel/test/issue207_full_repro.rb +52 -0
- data/vendor/spinel/test/issue207_full_repro.rb.expected +1 -0
- data/vendor/spinel/test/issue208_inherited_class_method.rb +24 -0
- data/vendor/spinel/test/issue208_inherited_class_method.rb.expected +4 -0
- data/vendor/spinel/test/issue219_aref_chain.rb +36 -0
- data/vendor/spinel/test/issue219_aref_chain.rb.expected +5 -0
- data/vendor/spinel/test/issue224_bare_new_inherited.rb +66 -0
- data/vendor/spinel/test/issue224_bare_new_inherited.rb.expected +4 -0
- data/vendor/spinel/test/issue229_uncalled_cls_method.rb +76 -0
- data/vendor/spinel/test/issue229_uncalled_cls_method.rb.expected +3 -0
- data/vendor/spinel/test/issue235_chain_tail_widening.rb +48 -0
- data/vendor/spinel/test/issue235_chain_tail_widening.rb.expected +5 -0
- data/vendor/spinel/test/issue236_chain_empty_literal.rb +84 -0
- data/vendor/spinel/test/issue236_chain_empty_literal.rb.expected +7 -0
- data/vendor/spinel/test/issue239_cls_method_default_args.rb +41 -0
- data/vendor/spinel/test/issue239_cls_method_default_args.rb.expected +5 -0
- data/vendor/spinel/test/issue_266_def_length_inference.rb +63 -0
- data/vendor/spinel/test/issue_266_def_length_inference.rb.expected +1 -0
- data/vendor/spinel/test/ivar_and_write_basic.rb +34 -0
- data/vendor/spinel/test/ivar_and_write_basic.rb.expected +5 -0
- data/vendor/spinel/test/ivar_c_keyword.rb +14 -0
- data/vendor/spinel/test/ivar_c_keyword.rb.expected +1 -0
- data/vendor/spinel/test/ivar_float_array.rb +59 -0
- data/vendor/spinel/test/ivar_float_array.rb.expected +11 -0
- data/vendor/spinel/test/ivar_op_assign_bitwise_and_shift.rb +22 -0
- data/vendor/spinel/test/ivar_op_assign_bitwise_and_shift.rb.expected +6 -0
- data/vendor/spinel/test/ivar_or_write_basic.rb +57 -0
- data/vendor/spinel/test/ivar_or_write_basic.rb.expected +9 -0
- data/vendor/spinel/test/ivar_polymorphic.rb +87 -0
- data/vendor/spinel/test/ivar_polymorphic.rb.expected +12 -0
- data/vendor/spinel/test/ivar_ternary_mixed.rb +108 -0
- data/vendor/spinel/test/ivar_ternary_mixed.rb.expected +15 -0
- data/vendor/spinel/test/ivar_writer_heterogeneity.rb +34 -0
- data/vendor/spinel/test/ivar_writer_heterogeneity.rb.expected +2 -0
- data/vendor/spinel/test/known_constants.rb +25 -0
- data/vendor/spinel/test/known_constants.rb.expected +4 -0
- data/vendor/spinel/test/kw_nil_default_string_call.rb +6 -0
- data/vendor/spinel/test/kw_nil_default_string_call.rb.expected +2 -0
- data/vendor/spinel/test/kwargs.rb +21 -0
- data/vendor/spinel/test/kwargs.rb.expected +6 -0
- data/vendor/spinel/test/kwargs_param.rb +26 -0
- data/vendor/spinel/test/kwargs_param.rb.expected +2 -0
- data/vendor/spinel/test/kwargs_param_widen.rb +73 -0
- data/vendor/spinel/test/kwargs_param_widen.rb.expected +3 -0
- data/vendor/spinel/test/lrama_features.rb +142 -0
- data/vendor/spinel/test/lrama_features.rb.expected +38 -0
- data/vendor/spinel/test/map_array_block_result.rb +29 -0
- data/vendor/spinel/test/map_array_block_result.rb.expected +2 -0
- data/vendor/spinel/test/map_block_returns_nested_array.rb +53 -0
- data/vendor/spinel/test/map_empty_block.rb +26 -0
- data/vendor/spinel/test/map_empty_block.rb.expected +6 -0
- data/vendor/spinel/test/map_range_recv_array_block.rb +31 -0
- data/vendor/spinel/test/mega.rb +35 -0
- data/vendor/spinel/test/mega.rb.expected +7 -0
- data/vendor/spinel/test/method.rb +21 -0
- data/vendor/spinel/test/method.rb.expected +6 -0
- data/vendor/spinel/test/method_defined.rb +36 -0
- data/vendor/spinel/test/method_defined.rb.expected +17 -0
- data/vendor/spinel/test/method_dispatch_poly_array.rb +35 -0
- data/vendor/spinel/test/method_dispatch_poly_array.rb.expected +2 -0
- data/vendor/spinel/test/method_introspection.rb +24 -0
- data/vendor/spinel/test/method_introspection.rb.expected +6 -0
- data/vendor/spinel/test/method_param_unify_to_poly.rb +40 -0
- data/vendor/spinel/test/method_param_unify_to_poly.rb.expected +2 -0
- data/vendor/spinel/test/misc.rb +49 -0
- data/vendor/spinel/test/misc.rb.expected +7 -0
- data/vendor/spinel/test/mixin.rb +54 -0
- data/vendor/spinel/test/mixin.rb.expected +4 -0
- data/vendor/spinel/test/module_acc_dispatch_param_box.rb +46 -0
- data/vendor/spinel/test/module_acc_dispatch_param_box.rb.expected +2 -0
- data/vendor/spinel/test/module_class_new.rb +17 -0
- data/vendor/spinel/test/module_class_new.rb.expected +3 -0
- data/vendor/spinel/test/module_cls_method_string_return.rb +53 -0
- data/vendor/spinel/test/module_cls_method_string_return.rb.expected +5 -0
- data/vendor/spinel/test/module_const_array_widen.rb +36 -0
- data/vendor/spinel/test/module_const_array_widen.rb.expected +1 -0
- data/vendor/spinel/test/module_dispatch_param_widen.rb +55 -0
- data/vendor/spinel/test/module_dispatch_param_widen.rb.expected +1 -0
- data/vendor/spinel/test/module_function_namespace.rb +58 -0
- data/vendor/spinel/test/module_ivar_hash.rb +61 -0
- data/vendor/spinel/test/module_ivar_hash.rb.expected +7 -0
- data/vendor/spinel/test/module_relative_constant_path.rb +26 -0
- data/vendor/spinel/test/module_relative_constant_path.rb.expected +2 -0
- data/vendor/spinel/test/module_singleton_accessor.rb +65 -0
- data/vendor/spinel/test/module_singleton_accessor.rb.expected +3 -0
- data/vendor/spinel/test/module_singleton_accessor_poly.rb +62 -0
- data/vendor/spinel/test/module_singleton_accessor_poly.rb.expected +7 -0
- data/vendor/spinel/test/multi_arg_block_call.rb +56 -0
- data/vendor/spinel/test/multi_arg_block_call.rb.expected +5 -0
- data/vendor/spinel/test/multi_arg_yield.rb +70 -0
- data/vendor/spinel/test/multi_arg_yield.rb.expected +6 -0
- data/vendor/spinel/test/multi_assign_ivar.rb +33 -0
- data/vendor/spinel/test/multi_assign_ivar.rb.expected +1 -0
- data/vendor/spinel/test/multi_return.rb +35 -0
- data/vendor/spinel/test/multi_return.rb.expected +10 -0
- data/vendor/spinel/test/multi_return_bare.rb +77 -0
- data/vendor/spinel/test/multi_return_bare.rb.expected +16 -0
- data/vendor/spinel/test/multi_write_const.rb +36 -0
- data/vendor/spinel/test/multi_write_const.rb.expected +9 -0
- data/vendor/spinel/test/multi_write_from_poly_recv.rb +34 -0
- data/vendor/spinel/test/multi_write_from_poly_recv.rb.expected +1 -0
- data/vendor/spinel/test/multi_write_ivar.rb +34 -0
- data/vendor/spinel/test/multi_write_ivar.rb.expected +3 -0
- data/vendor/spinel/test/multi_write_ivar_const_from_array_rhs.rb +53 -0
- data/vendor/spinel/test/multi_write_ivar_const_from_array_rhs.rb.expected +6 -0
- data/vendor/spinel/test/multi_write_ivar_widening.rb +10 -0
- data/vendor/spinel/test/multi_write_ivar_widening.rb.expected +2 -0
- data/vendor/spinel/test/multi_write_map_block.rb +31 -0
- data/vendor/spinel/test/multi_write_map_block.rb.expected +7 -0
- data/vendor/spinel/test/multi_write_setter.rb +28 -0
- data/vendor/spinel/test/multi_write_setter.rb.expected +3 -0
- data/vendor/spinel/test/multi_write_typed_array_dispatch.rb +44 -0
- data/vendor/spinel/test/multi_write_typed_array_dispatch.rb.expected +3 -0
- data/vendor/spinel/test/nested_class_in_class.rb +38 -0
- data/vendor/spinel/test/nested_class_in_class.rb.expected +3 -0
- data/vendor/spinel/test/nested_class_module_const_resolution.rb +38 -0
- data/vendor/spinel/test/nested_class_module_const_resolution.rb.expected +2 -0
- data/vendor/spinel/test/nil_ivar.rb +44 -0
- data/vendor/spinel/test/nil_ivar.rb.expected +5 -0
- data/vendor/spinel/test/no_attr_write_shortcut_complex.rb +33 -0
- data/vendor/spinel/test/no_attr_write_shortcut_complex.rb.expected +3 -0
- data/vendor/spinel/test/no_attr_write_shortcut_multi.rb +38 -0
- data/vendor/spinel/test/no_attr_write_shortcut_multi.rb.expected +4 -0
- data/vendor/spinel/test/no_keywords_param.rb +15 -0
- data/vendor/spinel/test/no_keywords_param.rb.expected +2 -0
- data/vendor/spinel/test/nullable.rb +26 -0
- data/vendor/spinel/test/nullable.rb.expected +2 -0
- data/vendor/spinel/test/obj_array.rb +26 -0
- data/vendor/spinel/test/obj_array.rb.expected +6 -0
- data/vendor/spinel/test/object_new_sentinel.rb +18 -0
- data/vendor/spinel/test/object_new_sentinel.rb.expected +3 -0
- data/vendor/spinel/test/object_truthy.rb +31 -0
- data/vendor/spinel/test/object_truthy.rb.expected +5 -0
- data/vendor/spinel/test/op_assign_user_operator.rb +36 -0
- data/vendor/spinel/test/open_class.rb +27 -0
- data/vendor/spinel/test/open_class.rb.expected +4 -0
- data/vendor/spinel/test/optional_string_param_method.rb +11 -0
- data/vendor/spinel/test/optional_string_param_method.rb.expected +3 -0
- data/vendor/spinel/test/param_inference_if_predicate.rb +90 -0
- data/vendor/spinel/test/param_inference_if_predicate.rb.expected +3 -0
- data/vendor/spinel/test/param_narrow_from_body_call.rb +34 -0
- data/vendor/spinel/test/param_narrow_from_body_call.rb.expected +2 -0
- data/vendor/spinel/test/param_widens_when_body_assigns_string.rb +21 -0
- data/vendor/spinel/test/param_widens_when_body_assigns_string.rb.expected +6 -0
- data/vendor/spinel/test/pattern.rb +41 -0
- data/vendor/spinel/test/pattern.rb.expected +9 -0
- data/vendor/spinel/test/poly.rb +24 -0
- data/vendor/spinel/test/poly.rb.expected +9 -0
- data/vendor/spinel/test/poly2.rb +34 -0
- data/vendor/spinel/test/poly2.rb.expected +9 -0
- data/vendor/spinel/test/poly_arith.rb +34 -0
- data/vendor/spinel/test/poly_arith.rb.expected +10 -0
- data/vendor/spinel/test/poly_array_literal_callnode_typed_elem.rb +37 -0
- data/vendor/spinel/test/poly_array_literal_callnode_typed_elem.rb.expected +9 -0
- data/vendor/spinel/test/poly_array_slot_literal.rb +41 -0
- data/vendor/spinel/test/poly_array_slot_sized_default.rb +33 -0
- data/vendor/spinel/test/poly_box_int_array.rb +13 -0
- data/vendor/spinel/test/poly_box_int_array.rb.expected +2 -0
- data/vendor/spinel/test/poly_dispatch_args_ret.rb +45 -0
- data/vendor/spinel/test/poly_dispatch_args_ret.rb.expected +4 -0
- data/vendor/spinel/test/poly_dispatch_arity_padding.rb +36 -0
- data/vendor/spinel/test/poly_dispatch_arity_truncate.rb +45 -0
- data/vendor/spinel/test/poly_dispatch_attr_reader.rb +44 -0
- data/vendor/spinel/test/poly_dispatch_attr_reader.rb.expected +4 -0
- data/vendor/spinel/test/poly_dispatch_builtin.rb +16 -0
- data/vendor/spinel/test/poly_dispatch_builtin.rb.expected +2 -0
- data/vendor/spinel/test/poly_dispatch_builtin_all.rb +34 -0
- data/vendor/spinel/test/poly_dispatch_builtin_all.rb.expected +8 -0
- data/vendor/spinel/test/poly_dispatch_ptr_array.rb +57 -0
- data/vendor/spinel/test/poly_dispatch_ptr_array.rb.expected +6 -0
- data/vendor/spinel/test/poly_equality_mixed_sites.rb +40 -0
- data/vendor/spinel/test/poly_equality_mixed_sites.rb.expected +10 -0
- data/vendor/spinel/test/poly_gc.rb +39 -0
- data/vendor/spinel/test/poly_gc.rb.expected +3 -0
- data/vendor/spinel/test/poly_hash_literal_from_ivar.rb +47 -0
- data/vendor/spinel/test/poly_hash_literal_from_ivar.rb.expected +5 -0
- data/vendor/spinel/test/poly_hash_with_range.rb +36 -0
- data/vendor/spinel/test/poly_hash_with_range.rb.expected +10 -0
- data/vendor/spinel/test/poly_hash_with_time.rb +32 -0
- data/vendor/spinel/test/poly_hash_with_time.rb.expected +8 -0
- data/vendor/spinel/test/poly_int_arith_auto_unify.rb +26 -0
- data/vendor/spinel/test/poly_int_arith_auto_unify.rb.expected +4 -0
- data/vendor/spinel/test/poly_int_bit_index.rb +50 -0
- data/vendor/spinel/test/poly_int_bit_index.rb.expected +14 -0
- data/vendor/spinel/test/poly_int_bitops_auto_unify.rb +20 -0
- data/vendor/spinel/test/poly_int_bitops_auto_unify.rb.expected +5 -0
- data/vendor/spinel/test/poly_is_a.rb +47 -0
- data/vendor/spinel/test/poly_is_a.rb.expected +10 -0
- data/vendor/spinel/test/poly_keyed_hash_method_dedup.rb +37 -0
- data/vendor/spinel/test/poly_keyed_hash_method_dedup.rb.expected +4 -0
- data/vendor/spinel/test/poly_keyed_hash_pipeline.rb +40 -0
- data/vendor/spinel/test/poly_keyed_hash_pipeline.rb.expected +2 -0
- data/vendor/spinel/test/poly_method_args.rb +23 -0
- data/vendor/spinel/test/poly_method_args.rb.expected +2 -0
- data/vendor/spinel/test/poly_method_mixed_return.rb +23 -0
- data/vendor/spinel/test/poly_method_mixed_return.rb.expected +2 -0
- data/vendor/spinel/test/poly_or_returns_value.rb +13 -0
- data/vendor/spinel/test/poly_or_returns_value.rb.expected +4 -0
- data/vendor/spinel/test/poly_recv_aref_box_arm.rb +41 -0
- data/vendor/spinel/test/poly_recv_aref_box_arm.rb.expected +4 -0
- data/vendor/spinel/test/poly_recv_aref_str_key.rb +42 -0
- data/vendor/spinel/test/poly_recv_aref_str_key.rb.expected +2 -0
- data/vendor/spinel/test/poly_recv_bracket_assign.rb +31 -0
- data/vendor/spinel/test/poly_recv_bracket_assign.rb.expected +1 -0
- data/vendor/spinel/test/poly_recv_each.rb +35 -0
- data/vendor/spinel/test/poly_recv_each.rb.expected +7 -0
- data/vendor/spinel/test/poly_return_value_class.rb +66 -0
- data/vendor/spinel/test/poly_return_value_class.rb.expected +7 -0
- data/vendor/spinel/test/poly_self_deref.rb +28 -0
- data/vendor/spinel/test/poly_self_deref.rb.expected +2 -0
- data/vendor/spinel/test/poly_shl_array_push_dispatch.rb +35 -0
- data/vendor/spinel/test/poly_shl_array_push_dispatch.rb.expected +5 -0
- data/vendor/spinel/test/poly_slice_assign.rb +26 -0
- data/vendor/spinel/test/poly_slice_assign.rb.expected +3 -0
- data/vendor/spinel/test/poly_str_append.rb +40 -0
- data/vendor/spinel/test/poly_str_append.rb.expected +2 -0
- data/vendor/spinel/test/poly_to_i_via_str_poly_hash.rb +19 -0
- data/vendor/spinel/test/poly_to_i_via_str_poly_hash.rb.expected +1 -0
- data/vendor/spinel/test/post_execution.rb +17 -0
- data/vendor/spinel/test/post_execution.rb.expected +4 -0
- data/vendor/spinel/test/pre_execution.rb +18 -0
- data/vendor/spinel/test/pre_execution.rb.expected +4 -0
- data/vendor/spinel/test/primitive_method_shadow.rb +48 -0
- data/vendor/spinel/test/primitive_method_shadow.rb.expected +4 -0
- data/vendor/spinel/test/primitive_method_shadow_int_recv.rb +47 -0
- data/vendor/spinel/test/primitive_method_shadow_int_recv.rb.expected +1 -0
- data/vendor/spinel/test/proc.rb +42 -0
- data/vendor/spinel/test/proc.rb.expected +8 -0
- data/vendor/spinel/test/proc_closure.rb +44 -0
- data/vendor/spinel/test/proc_closure.rb.expected +8 -0
- data/vendor/spinel/test/proc_hash_value.rb +27 -0
- data/vendor/spinel/test/proc_hash_value.rb.expected +1 -0
- data/vendor/spinel/test/ptr_array.rb +107 -0
- data/vendor/spinel/test/ptr_array.rb.expected +23 -0
- data/vendor/spinel/test/range.rb +130 -0
- data/vendor/spinel/test/range.rb.expected +61 -0
- data/vendor/spinel/test/redo.rb +263 -0
- data/vendor/spinel/test/redo.rb.expected +71 -0
- data/vendor/spinel/test/reduce_acc_shadow.rb +31 -0
- data/vendor/spinel/test/reduce_acc_shadow.rb.expected +5 -0
- data/vendor/spinel/test/regex.rb +152 -0
- data/vendor/spinel/test/regex.rb.expected +43 -0
- data/vendor/spinel/test/regexp.rb +34 -0
- data/vendor/spinel/test/regexp.rb.expected +12 -0
- data/vendor/spinel/test/reopen_class.rb +33 -0
- data/vendor/spinel/test/reopen_class.rb.expected +5 -0
- data/vendor/spinel/test/require/lib/greeter.rb +9 -0
- data/vendor/spinel/test/require/main.rb +5 -0
- data/vendor/spinel/test/require_dedup/lib/data.rb +2 -0
- data/vendor/spinel/test/require_dedup/lib/types.rb +1 -0
- data/vendor/spinel/test/require_dedup/main.rb +8 -0
- data/vendor/spinel/test/rescue.rb +48 -0
- data/vendor/spinel/test/rescue.rb.expected +7 -0
- data/vendor/spinel/test/rescue_modifier_assign.rb +24 -0
- data/vendor/spinel/test/rescue_modifier_assign.rb.expected +4 -0
- data/vendor/spinel/test/rightward_assign.rb +36 -0
- data/vendor/spinel/test/rightward_assign.rb.expected +6 -0
- data/vendor/spinel/test/runtime_widen_int_to_poly_array.rb +27 -0
- data/vendor/spinel/test/runtime_widen_int_to_poly_array.rb.expected +3 -0
- data/vendor/spinel/test/sample_user_method.rb +20 -0
- data/vendor/spinel/test/scan_ivars_inherited_slot.rb +32 -0
- data/vendor/spinel/test/scan_new_calls_class_scope.rb +35 -0
- data/vendor/spinel/test/scan_new_calls_class_scope.rb.expected +1 -0
- data/vendor/spinel/test/send.rb +15 -0
- data/vendor/spinel/test/send.rb.expected +2 -0
- data/vendor/spinel/test/shareable_constant.rb +10 -0
- data/vendor/spinel/test/shareable_constant.rb.expected +2 -0
- data/vendor/spinel/test/sized_poly_array_nil_n.rb +37 -0
- data/vendor/spinel/test/sized_poly_array_nil_n.rb.expected +3 -0
- data/vendor/spinel/test/source_file.rb +37 -0
- data/vendor/spinel/test/source_file.rb.expected +8 -0
- data/vendor/spinel/test/splat_call.rb +72 -0
- data/vendor/spinel/test/splat_call.rb.expected +35 -0
- data/vendor/spinel/test/splat_destructure.rb +56 -0
- data/vendor/spinel/test/splat_destructure.rb.expected +36 -0
- data/vendor/spinel/test/splat_destructure_poly.rb +26 -0
- data/vendor/spinel/test/splat_destructure_poly.rb.expected +8 -0
- data/vendor/spinel/test/stdlib.rb +28 -0
- data/vendor/spinel/test/stdlib.rb.expected +5 -0
- data/vendor/spinel/test/stringio.rb +84 -0
- data/vendor/spinel/test/stringio.rb.expected +27 -0
- data/vendor/spinel/test/strip_nullable_int_cast.rb +24 -0
- data/vendor/spinel/test/strip_nullable_int_cast.rb.expected +1 -0
- data/vendor/spinel/test/struct.rb +25 -0
- data/vendor/spinel/test/struct.rb.expected +8 -0
- data/vendor/spinel/test/struct_inherit.rb +28 -0
- data/vendor/spinel/test/struct_inherit.rb.expected +7 -0
- data/vendor/spinel/test/struct_kw.rb +16 -0
- data/vendor/spinel/test/struct_kw.rb.expected +5 -0
- data/vendor/spinel/test/subclass_inherits_module_parent.rb +40 -0
- data/vendor/spinel/test/subclass_inherits_module_parent.rb.expected +3 -0
- data/vendor/spinel/test/super_arg_cross_class_cast.rb +39 -0
- data/vendor/spinel/test/super_arg_cross_class_cast.rb.expected +2 -0
- data/vendor/spinel/test/super_forwarding.rb +25 -0
- data/vendor/spinel/test/super_forwarding.rb.expected +3 -0
- data/vendor/spinel/test/sym_case.rb +15 -0
- data/vendor/spinel/test/sym_case.rb.expected +4 -0
- data/vendor/spinel/test/sym_poly_hash_merge.rb +47 -0
- data/vendor/spinel/test/sym_poly_hash_merge.rb.expected +11 -0
- data/vendor/spinel/test/symbol_ivar_reassign.rb +25 -0
- data/vendor/spinel/test/symbol_ivar_reassign.rb.expected +2 -0
- data/vendor/spinel/test/three_level_array_outer_index.rb +87 -0
- data/vendor/spinel/test/three_level_array_outer_index.rb.expected +17 -0
- data/vendor/spinel/test/toplevel_ivar_array.rb +19 -0
- data/vendor/spinel/test/toplevel_ivar_array.rb.expected +4 -0
- data/vendor/spinel/test/truncate_module_method.rb +46 -0
- data/vendor/spinel/test/truncate_module_method.rb.expected +6 -0
- data/vendor/spinel/test/unbox_poly_index_in_dispatch.rb +20 -0
- data/vendor/spinel/test/unbox_poly_index_in_dispatch.rb.expected +1 -0
- data/vendor/spinel/test/undef.rb +33 -0
- data/vendor/spinel/test/undef.rb.expected +2 -0
- data/vendor/spinel/test/user_method_named_like_mutator.rb +30 -0
- data/vendor/spinel/test/user_method_named_like_mutator.rb.expected +2 -0
- data/vendor/spinel/test/value_type_ctor_gc_save.rb +46 -0
- data/vendor/spinel/test/value_type_ctor_gc_save.rb.expected +3 -0
- data/vendor/spinel/test/widen_int_obj_to_poly.rb +29 -0
- data/vendor/spinel/test/yield.rb +67 -0
- data/vendor/spinel/test/yield.rb.expected +5 -0
- data/vendor/spinel/test/yield_method_call_in_method_body.rb +58 -0
- data/vendor/spinel/test/yield_method_call_in_method_body.rb.expected +4 -0
- metadata +778 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Issue #207: factory class method (`def self.from_raw`) using
|
|
2
|
+
# implicit `new`, calling a setter on the new instance whose value
|
|
3
|
+
# came from a poly-hash-returning fetch. Several composing gaps:
|
|
4
|
+
#
|
|
5
|
+
# 1. Bare `new` inside a `def self.<m>` body must resolve to
|
|
6
|
+
# <CurrentClass>.new (returning obj_<CurrentClass>).
|
|
7
|
+
# 2. The class method's parameter type must widen from the
|
|
8
|
+
# class-constant call site (`T.from_raw(p)` → params: obj_P).
|
|
9
|
+
# 3. The setter's poly arg must widen the receiving ivar's slot
|
|
10
|
+
# type (sp_RbVal field, not mrb_int).
|
|
11
|
+
# 4. The fetch's nil-default param must widen from the call-site
|
|
12
|
+
# string default ("" → string?).
|
|
13
|
+
|
|
14
|
+
class P
|
|
15
|
+
def initialize(h)
|
|
16
|
+
@h = h
|
|
17
|
+
end
|
|
18
|
+
def fetch(key, default = nil)
|
|
19
|
+
return @h[key] if @h.key?(key)
|
|
20
|
+
default
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
class T
|
|
25
|
+
attr_accessor :title
|
|
26
|
+
def self.from_raw(params)
|
|
27
|
+
instance = new
|
|
28
|
+
instance.title = params.fetch(:title, "")
|
|
29
|
+
instance
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
p = P.new({title: "hello", count: 42})
|
|
34
|
+
t = T.from_raw(p)
|
|
35
|
+
puts t.title
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
hello
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Issue #207: full Sam Ruby repro — Rails-style ActiveRecord
|
|
2
|
+
# Parameters wrapper with symbolize_keys recursion plus a typed
|
|
3
|
+
# Params factory using fetch.
|
|
4
|
+
#
|
|
5
|
+
# This combines several fixes that had to land together:
|
|
6
|
+
#
|
|
7
|
+
# - Implicit `new` inside `def self.<m>` resolves to the enclosing
|
|
8
|
+
# class's constructor (#207 partial fix).
|
|
9
|
+
# - cls method body return inference picks up locals (#207 partial
|
|
10
|
+
# fix).
|
|
11
|
+
# - attr_writer call inside cls method body widens the ivar slot.
|
|
12
|
+
# - Class-constant call sites (T.from_raw(p)) widen the cls method's
|
|
13
|
+
# parameter types.
|
|
14
|
+
# - Static is_a? / kind_of? on a known-concrete-type receiver
|
|
15
|
+
# eliminates the unreachable arm so the dead recursion call
|
|
16
|
+
# doesn't land in C and trip the type checker.
|
|
17
|
+
|
|
18
|
+
class Parameters
|
|
19
|
+
def initialize(hash = {})
|
|
20
|
+
@hash = symbolize_keys(hash)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def symbolize_keys(input)
|
|
24
|
+
out = {}
|
|
25
|
+
input.each do |k, v|
|
|
26
|
+
sym = k.is_a?(Symbol) ? k : k.to_s.to_sym
|
|
27
|
+
out[sym] = v.is_a?(Hash) ? symbolize_keys(v) : v
|
|
28
|
+
end
|
|
29
|
+
out
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def fetch(key, default = nil)
|
|
33
|
+
sym = key.to_sym
|
|
34
|
+
return @hash[sym] if @hash.key?(sym)
|
|
35
|
+
default
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class ArticleParams
|
|
40
|
+
def title; @title; end
|
|
41
|
+
def title=(value); @title = value; end
|
|
42
|
+
|
|
43
|
+
def self.from_raw(params)
|
|
44
|
+
instance = new
|
|
45
|
+
instance.title = params.fetch(:title, "")
|
|
46
|
+
instance
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
p = Parameters.new({title: "hello"})
|
|
51
|
+
ap = ArticleParams.from_raw(p)
|
|
52
|
+
puts ap.title
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
hello
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Issue #208: a class method (`def self.<name>`) defined on the
|
|
2
|
+
# parent class must dispatch when called via the subclass. Spinel
|
|
3
|
+
# previously emitted "cannot resolve call to '<method>' on
|
|
4
|
+
# class_<Subclass>" and substituted 0 because cls_cmethod lookup
|
|
5
|
+
# only walked the immediate class.
|
|
6
|
+
|
|
7
|
+
class Base
|
|
8
|
+
def self.all
|
|
9
|
+
[42, 1, 7]
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Single level
|
|
14
|
+
class Leaf < Base; end
|
|
15
|
+
puts Leaf.all.size # 3
|
|
16
|
+
|
|
17
|
+
# Multi level
|
|
18
|
+
class Mid < Base; end
|
|
19
|
+
class Deep < Mid; end
|
|
20
|
+
puts Mid.all.size # 3
|
|
21
|
+
puts Deep.all.size # 3
|
|
22
|
+
|
|
23
|
+
# Direct call on the defining class still works
|
|
24
|
+
puts Base.all.size # 3
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Issue #219: chained calls on a user-defined `[]` operator's
|
|
2
|
+
# result silently lost their coercion (`.to_i` / `.length`) because
|
|
3
|
+
# infer_type's `mname == "[]"` branch handled built-in collection
|
|
4
|
+
# receivers but fell through to "int" for obj receivers.
|
|
5
|
+
# `bag[:id].to_i` then routed through compile_int_method_expr's
|
|
6
|
+
# `to_i` (which is identity) and the underlying `const char *`
|
|
7
|
+
# leaked through.
|
|
8
|
+
|
|
9
|
+
class Bag
|
|
10
|
+
def initialize(h); @h = h; end
|
|
11
|
+
def [](k); @h[k.to_sym]; end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
bag = Bag.new({id: "42"})
|
|
15
|
+
|
|
16
|
+
# .to_i: infers as int via String#to_i
|
|
17
|
+
puts bag[:id].to_i # 42
|
|
18
|
+
puts bag[:id].to_i + 1 # 43
|
|
19
|
+
|
|
20
|
+
# .length: routes through String#length
|
|
21
|
+
puts bag[:id].length # 2
|
|
22
|
+
|
|
23
|
+
# Chained into a method expecting mrb_int
|
|
24
|
+
class M
|
|
25
|
+
def self.find(id); id + 1; end
|
|
26
|
+
end
|
|
27
|
+
puts M.find(bag[:id].to_i) # 43
|
|
28
|
+
|
|
29
|
+
# Integer-valued bag — .to_s works the other direction (already
|
|
30
|
+
# worked before the fix; pinning regression).
|
|
31
|
+
class IntBag
|
|
32
|
+
def initialize(h); @h = h; end
|
|
33
|
+
def [](k); @h[k]; end
|
|
34
|
+
end
|
|
35
|
+
ib = IntBag.new({n: 42})
|
|
36
|
+
puts ib[:n].to_s # "42"
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Issue #224: bare `new` inside an inherited class method body must
|
|
2
|
+
# resolve to the *calling subclass*, not the parent class that
|
|
3
|
+
# defined the method. Sister to issue #208 (which fixed cls method
|
|
4
|
+
# dispatch up the inheritance chain); once `Article.create` runs
|
|
5
|
+
# `Base.create`'s body, the bare `new` *inside* that body should
|
|
6
|
+
# also dispatch to Article's constructor.
|
|
7
|
+
#
|
|
8
|
+
# Pre-fix the basic case warned "cannot resolve call to 'x' on
|
|
9
|
+
# obj_Base" and emitted 0 (because new resolved statically to
|
|
10
|
+
# Base.new, returning an obj_Base which has no `x` method); the
|
|
11
|
+
# variant with attrs args produced a C-level type mismatch
|
|
12
|
+
# (`sp_Base_new(lv_attrs)` calling Base's 0-arg new with an extra
|
|
13
|
+
# pointer arg).
|
|
14
|
+
|
|
15
|
+
# Basic: bare `new`, no args.
|
|
16
|
+
class Base
|
|
17
|
+
def self.create
|
|
18
|
+
new
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
class Article < Base
|
|
23
|
+
def initialize
|
|
24
|
+
@x = "hello"
|
|
25
|
+
end
|
|
26
|
+
def x; @x; end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
puts Article.create.x # hello
|
|
30
|
+
|
|
31
|
+
# Variant: bare `new(args)`, attrs hash. The cls method param `attrs`
|
|
32
|
+
# widens from the call site `Article.create({title: ...})` to a
|
|
33
|
+
# typed hash; the bare `new(attrs)` propagates that ptype to
|
|
34
|
+
# Article's `initialize` so the synthetic `sp_Article_new` signature
|
|
35
|
+
# matches.
|
|
36
|
+
class Base2
|
|
37
|
+
def self.create(attrs)
|
|
38
|
+
instance = new(attrs)
|
|
39
|
+
instance
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
class Article2 < Base2
|
|
44
|
+
def initialize(attrs)
|
|
45
|
+
@title = attrs[:title]
|
|
46
|
+
end
|
|
47
|
+
def title; @title; end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
puts Article2.create({title: "hello"}).title # hello
|
|
51
|
+
|
|
52
|
+
# Multi-level: bare `new` resolves to the leaf class.
|
|
53
|
+
class Mid < Base; end
|
|
54
|
+
class Deep < Mid
|
|
55
|
+
def initialize
|
|
56
|
+
@x = "deep"
|
|
57
|
+
end
|
|
58
|
+
def x; @x; end
|
|
59
|
+
end
|
|
60
|
+
puts Deep.create.x # deep
|
|
61
|
+
|
|
62
|
+
# Direct call on the defining class still works (Base has no
|
|
63
|
+
# initialize so Article-via-Base.create wouldn't make sense, but
|
|
64
|
+
# Article2.create directly uses Base2.create's body via the
|
|
65
|
+
# synthetic copy and exercises the same path twice).
|
|
66
|
+
puts Article2.create({title: "world"}).title # world
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# Issue #229: an unused class method whose body has bare `new(args)`
|
|
2
|
+
# against a defining class with different `initialize` arity used to
|
|
3
|
+
# emit a body that wouldn't C-compile. Sister to issue #224 (which
|
|
4
|
+
# fixed bare-`new` *dispatch* for reachable inherited cls methods);
|
|
5
|
+
# this is the unreached-emit complement. The fix DCEs cls methods
|
|
6
|
+
# with no call site so unreachable bodies never have to type-check.
|
|
7
|
+
#
|
|
8
|
+
# Three Sam-Ruby-filed variants exercise here: solo class (arity
|
|
9
|
+
# mismatch), 3-class inheritance with one leaf called (multiple
|
|
10
|
+
# dead bodies multiply), and default-arg initialize (type mismatch).
|
|
11
|
+
|
|
12
|
+
# Variant 1: solo class. Base.create is defined but never called.
|
|
13
|
+
# Pre-fix: `sp_Base_cls_create` emits `return sp_Base_new(lv_attrs)`
|
|
14
|
+
# against a 0-arg `sp_Base_new(void)` and `cc` rejects.
|
|
15
|
+
class Base
|
|
16
|
+
def initialize
|
|
17
|
+
@x = 1
|
|
18
|
+
end
|
|
19
|
+
def x; @x; end
|
|
20
|
+
|
|
21
|
+
def self.create(attrs)
|
|
22
|
+
new(attrs)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
b = Base.new
|
|
27
|
+
puts b.x # 1
|
|
28
|
+
|
|
29
|
+
# Variant 2: 3-class inheritance, only the leaf is called.
|
|
30
|
+
# Pre-fix all three (Base2/Mid/Leaf) emitted cls_create bodies;
|
|
31
|
+
# only Leaf's compiled. With DCE, only Leaf::create is live.
|
|
32
|
+
class Base2
|
|
33
|
+
def initialize
|
|
34
|
+
@v = 0
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.create(attrs)
|
|
38
|
+
new(attrs)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
class Mid < Base2
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
class Leaf < Mid
|
|
46
|
+
def initialize(x)
|
|
47
|
+
@x = x
|
|
48
|
+
end
|
|
49
|
+
def x; @x; end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# `Leaf.create(42)` runs the body propagated from Base2.create:
|
|
53
|
+
# `instance = new(attrs)` => `Leaf.new(42)` => Leaf#initialize(42).
|
|
54
|
+
puts Leaf.create(42).x # 42
|
|
55
|
+
|
|
56
|
+
# Variant 3: default-arg initialize. `sp_Base3_new` is synthesized
|
|
57
|
+
# as `sp_Base3_new(sp_StrIntHash *)` from the default literal, but
|
|
58
|
+
# the uncalled `Base3.create` can't infer its `attrs` ptype so the
|
|
59
|
+
# body's `sp_Base3_new(lv_attrs)` had `lv_attrs : mrb_int` against
|
|
60
|
+
# the declared `sp_StrIntHash *`. DCE drops the body entirely.
|
|
61
|
+
class Base3
|
|
62
|
+
def initialize(attrs = {})
|
|
63
|
+
@v = attrs.length
|
|
64
|
+
end
|
|
65
|
+
def v; @v; end
|
|
66
|
+
|
|
67
|
+
def self.create(attrs)
|
|
68
|
+
new(attrs)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Demonstrate Base3 still works for the *called* path: explicit
|
|
73
|
+
# `Base3.new` is live, so `sp_Base3_new` is emitted and called.
|
|
74
|
+
# Only `Base3.create` (the uncalled cls method) drops.
|
|
75
|
+
b3 = Base3.new
|
|
76
|
+
puts b3.v # 0
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Issue #235 follow-up to #234: chained `@a = @b = expr` only widened
|
|
2
|
+
# the chain *head*. The tail (and intermediate participants in
|
|
3
|
+
# longer chains) relied on scan_ivars's dual-definite-literal gate,
|
|
4
|
+
# which fires for literal RHS but not for CallNode/expression RHS.
|
|
5
|
+
# A `@a = @b = make_int` with `@a`/`@b` previously string-typed left
|
|
6
|
+
# `@b`'s slot at `const char *` while compile_chained_ivar_writes
|
|
7
|
+
# emitted `iv_b = _t1;` with `_t1 : mrb_int`. Same C error shape
|
|
8
|
+
# #234 was fixing for the head, just on the tail.
|
|
9
|
+
|
|
10
|
+
class C
|
|
11
|
+
def initialize
|
|
12
|
+
@a = "hello"
|
|
13
|
+
@b = "world"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def make_int
|
|
17
|
+
42
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# CallNode RHS — bypasses scan_ivars's literal-gate widening so
|
|
21
|
+
# the chain-drill path is the only thing that can widen `@b`.
|
|
22
|
+
def reset_call
|
|
23
|
+
@a = @b = make_int
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# 3-chain with CallNode RHS — every intermediate must widen.
|
|
27
|
+
def reset_three(c)
|
|
28
|
+
@a = @b = @c = c.length
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def show
|
|
32
|
+
puts @a
|
|
33
|
+
puts @b
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
c = C.new
|
|
38
|
+
c.reset_call
|
|
39
|
+
c.show # 42 / 42
|
|
40
|
+
|
|
41
|
+
c2 = C.new
|
|
42
|
+
c2.reset_three("ab")
|
|
43
|
+
c2.show # 2 / 2
|
|
44
|
+
|
|
45
|
+
# 3-chain that adds an `@c` slot to the picture too. After
|
|
46
|
+
# reset_three sets @c, calling show wouldn't read it (no accessor),
|
|
47
|
+
# but the struct emit needs to type-check.
|
|
48
|
+
puts "ok"
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# Issue #236 follow-up to #234: chained `@a = @b = {}` (or `[]`)
|
|
2
|
+
# with slots promoted to a typed container (e.g. `str_str_hash`)
|
|
3
|
+
# emitted a default `sp_StrIntHash *` temp and assigned it to both
|
|
4
|
+
# slots, mismatching the promoted slot's pointer type. The fix
|
|
5
|
+
# detects empty-literal RHS in compile_chained_ivar_writes and,
|
|
6
|
+
# when every chain participant agrees on the same promoted type,
|
|
7
|
+
# emits the slot-typed constructor for the temp so the assignment
|
|
8
|
+
# type-checks and Ruby's "one shared object" semantic is preserved
|
|
9
|
+
# (both slots receive the same pointer).
|
|
10
|
+
|
|
11
|
+
# Hash: both slots promoted to str_str_hash via @h["k"] = "v" writes.
|
|
12
|
+
class HashOwner
|
|
13
|
+
def initialize
|
|
14
|
+
@a = {}
|
|
15
|
+
@a["seed"] = "value"
|
|
16
|
+
@b = {}
|
|
17
|
+
@b["seed"] = "value"
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def reset
|
|
21
|
+
@a = @b = {}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Sharing test: write to @a, observe through @b. Pre-fix this
|
|
25
|
+
# wouldn't compile; if the chain helper accidentally regressed to
|
|
26
|
+
# per-slot constructors, sharing would be lost and @b would still
|
|
27
|
+
# report length 0 after the @a write.
|
|
28
|
+
def post_reset_share_check
|
|
29
|
+
@a["after"] = "ok"
|
|
30
|
+
puts @b.length # 1 if shared, 0 if separate objects
|
|
31
|
+
puts @b["after"] # "ok" if shared
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
ho = HashOwner.new
|
|
36
|
+
ho.reset
|
|
37
|
+
ho.post_reset_share_check
|
|
38
|
+
|
|
39
|
+
# Array: both slots promoted to str_array via push("x"/"y").
|
|
40
|
+
class ArrayOwner
|
|
41
|
+
def initialize
|
|
42
|
+
@a = []
|
|
43
|
+
@a.push("x")
|
|
44
|
+
@b = []
|
|
45
|
+
@b.push("y")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def reset
|
|
49
|
+
@a = @b = []
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def post_reset_share_check
|
|
53
|
+
@a.push("z")
|
|
54
|
+
puts @b.length # 1 if shared
|
|
55
|
+
puts @b[0] # "z" if shared
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
ao = ArrayOwner.new
|
|
60
|
+
ao.reset
|
|
61
|
+
ao.post_reset_share_check
|
|
62
|
+
|
|
63
|
+
# Three-chain to confirm the consensus check covers length-3 chains.
|
|
64
|
+
class ThreeChain
|
|
65
|
+
def initialize
|
|
66
|
+
@a = {}; @a["s"] = "v"
|
|
67
|
+
@b = {}; @b["s"] = "v"
|
|
68
|
+
@c = {}; @c["s"] = "v"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def reset
|
|
72
|
+
@a = @b = @c = {}
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def show
|
|
76
|
+
puts @a.length
|
|
77
|
+
puts @b.length
|
|
78
|
+
puts @c.length
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
tc = ThreeChain.new
|
|
83
|
+
tc.reset
|
|
84
|
+
tc.show
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Issue #239: `def self.method` with default arguments must accept
|
|
2
|
+
# call sites that omit the optional args. The default-arg fill
|
|
3
|
+
# existed for instance-method codegen (`def method(a, b = nil)`
|
|
4
|
+
# called as `c.method("a")` works) and for top-level `def`
|
|
5
|
+
# methods, but `def self.x` on both modules and classes missed the
|
|
6
|
+
# synthesis — call sites emitted with too few args, failing the C
|
|
7
|
+
# compile with `too few arguments to function call`. Sister to #229
|
|
8
|
+
# (cls method DCE) — both about `def self.method` codegen gaps.
|
|
9
|
+
|
|
10
|
+
# Module form: cls method lives in @meth_* under "<Mod>_cls_<m>".
|
|
11
|
+
# Two gaps: the dispatch path used the un-typed compile_call_args
|
|
12
|
+
# instead of compile_call_args_with_defaults, AND param types
|
|
13
|
+
# weren't widened from `<Mod>.<m>(args)` call sites (issue #207's
|
|
14
|
+
# logic only walked @cls_cmeth_*).
|
|
15
|
+
module M
|
|
16
|
+
def self.greet(name, msg = "default")
|
|
17
|
+
name + "/" + msg
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
puts M.greet("a") # a/default
|
|
22
|
+
puts M.greet("a", "world") # a/world
|
|
23
|
+
|
|
24
|
+
# Class form: cls method lives in @cls_cmeth_*. Defaults weren't
|
|
25
|
+
# stored at all (no @cls_cmeth_defaults table parallel to
|
|
26
|
+
# @cls_meth_defaults).
|
|
27
|
+
class C
|
|
28
|
+
def self.greet(name, msg = "fromcls")
|
|
29
|
+
name + "/" + msg
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
puts C.greet("b") # b/fromcls
|
|
34
|
+
puts C.greet("b", "explicit") # b/explicit
|
|
35
|
+
|
|
36
|
+
# Inheritance + default: subclass inherits the default through
|
|
37
|
+
# the propagate_inherited_class_methods synthetic copy.
|
|
38
|
+
class Sub < C
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
puts Sub.greet("c") # c/fromcls
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Issue #266 regression: defining `def length` on a class flipped
|
|
2
|
+
# Spinel's inference for IntArray params on unrelated class methods to
|
|
3
|
+
# poly. Cause was `infer_cls_meth_param_from_body` committing a param
|
|
4
|
+
# to `obj_<C>` whenever the only methods called on it (here `.length`)
|
|
5
|
+
# matched a user class — even though IntArray (and every other built-in
|
|
6
|
+
# container) also has `.length`. The body signal is too weak to commit;
|
|
7
|
+
# the gate added in this fix skips the pre-typing when the called set
|
|
8
|
+
# is satisfied by built-in container types, leaving call-site
|
|
9
|
+
# unification to decide.
|
|
10
|
+
|
|
11
|
+
class Mat
|
|
12
|
+
attr_accessor :flat, :nrows, :ncols
|
|
13
|
+
def initialize(nrows, ncols)
|
|
14
|
+
@nrows = nrows
|
|
15
|
+
@ncols = ncols
|
|
16
|
+
@flat = Array.new(nrows * ncols, 0.0)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
class Net
|
|
21
|
+
def backward(input_ids, logits)
|
|
22
|
+
n_pred = input_ids.length - 1
|
|
23
|
+
if n_pred <= 0
|
|
24
|
+
return 0.0
|
|
25
|
+
end
|
|
26
|
+
self.cross_entropy_grad(logits, input_ids)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def cross_entropy_grad(logits, token_ids)
|
|
30
|
+
n = token_ids.length - 1
|
|
31
|
+
total = 0.0
|
|
32
|
+
i = 0
|
|
33
|
+
while i < n
|
|
34
|
+
target = token_ids[i + 1]
|
|
35
|
+
total += logits.flat[target]
|
|
36
|
+
i += 1
|
|
37
|
+
end
|
|
38
|
+
total
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def make_ids(s)
|
|
43
|
+
parts = s.split(" ")
|
|
44
|
+
ids = [parts[0].to_i]
|
|
45
|
+
k = 1
|
|
46
|
+
while k < parts.length
|
|
47
|
+
ids.push(parts[k].to_i)
|
|
48
|
+
k += 1
|
|
49
|
+
end
|
|
50
|
+
ids
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# The class with `def length` is the trigger — pre-fix this caused
|
|
54
|
+
# Net#backward and Net#cross_entropy_grad to be inferred with poly
|
|
55
|
+
# `input_ids` / `token_ids` params and then mis-compile.
|
|
56
|
+
class Bag
|
|
57
|
+
attr_accessor :data
|
|
58
|
+
def initialize(data); @data = data; end
|
|
59
|
+
def length; 0; end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
prompt = make_ids("0 1 2")
|
|
63
|
+
puts Net.new.backward(prompt, Mat.new(3, 4))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class T
|
|
2
|
+
def initialize
|
|
3
|
+
@ready = false
|
|
4
|
+
@count = 0
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
def maybe_inc
|
|
8
|
+
@ready &&= step
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def arm
|
|
12
|
+
@ready = true
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def step
|
|
16
|
+
@count += 1
|
|
17
|
+
true
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def state
|
|
21
|
+
"ready=#{@ready} count=#{@count}"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
t = T.new
|
|
26
|
+
puts t.state
|
|
27
|
+
t.maybe_inc
|
|
28
|
+
puts t.state
|
|
29
|
+
t.arm
|
|
30
|
+
puts t.state
|
|
31
|
+
t.maybe_inc
|
|
32
|
+
puts t.state
|
|
33
|
+
t.maybe_inc
|
|
34
|
+
puts t.state
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
42
|