Commit graph

957 commits

Author SHA1 Message Date
ko1
12bf73637b * include/ruby/ruby.h: add new utility macros to access
Array's element.
* RARRAY_AREF(a, i) returns i-th element of an array `a'
* RARRAY_ASET(a, i, v) set i-th element of `a' to `v'
  This change is a part of RGENGC branch [ruby-trunk - Feature #8339].



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40689 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 09:41:48 +00:00
ko1
b6b85f6eaf * object.c (rb_obj_setup): added.
* include/ruby/ruby.h (OBJSETUP): ues rb_obj_setup() instead of
  a macro.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40687 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-13 06:33:48 +00:00
nobu
d2b4011a94 ruby.h: OFFT2NUM redefinition
* include/ruby/ruby.h (OFFT2NUM): RUBY_REPLACE_TYPE also defines macro
  to convert int type to VALUE if found.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40673 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 12:13:01 +00:00
kosaki
2b881310f8 * include/ruby/intern.h (rb_iv_set, rb_iv_get): removed. Bcause
ruby.h has a declaration for that.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 09:02:10 +00:00
kosaki
f3c9bb063e * include/ruby/intern.h (rb_uint2big, rb_int2big, rb_uint2inum)
(rb_int2inum, rb_ll2inum, rb_ull2inum): removed because ruby.h
  has a declaration for these.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40670 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 09:01:57 +00:00
kosaki
05628d3b6d * configure.in: removes AC_CHECK_FUNC(ftruncate64).
* configure.in: adds RUBY_REPLACE_TYPE(off_t) for creating
  NUM2OFFT.
* file.c (rb_file_truncate): use correct type. chsize() take
  a long.
* include/ruby/ruby.h (NUM2OFFT): use a definition created by
  a configure script by default.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 08:41:24 +00:00
kosaki
e79f790798 * configure.in: removes AC_CHECK_FUNC(fseeko, fseeko64, ftello,
ftello64). They are not used from anywhere.

* win32/win32.c (fseeko): removes.
* win32/win32.c (rb_w32_ftello): removes.
* include/ruby/win32.h: removes declarations of rb_w32_ftello and
  rb_w32_fseeko.
* win32/Makefile.sub: removes '#define HAVE_FTELLO 1'.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40661 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-12 08:41:12 +00:00
nobu
b8bcd92059 ruby.h: ISGRAPH
* include/ruby/ruby.h (ISGRAPH): add missing macro.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-08 04:06:34 +00:00
kosaki
9b89888dda * include/ruby/defines.h (RUBY_ATTR_ALLOC_SIZE): New for
attribute((alloc_size(params))).

* include/ruby/defines.h (xmalloc, xmalloc2, xcalloc)
(xrealloc, xrealloc2): Annotated by RUBY_ATTR_ALLOC_SIZE.
* include/ruby/ruby.h (rb_alloc_tmp_buffer): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40572 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 21:03:58 +00:00
nobu
3b62e8e78b win32.h: INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX
* include/ruby/win32.h (INTPTR_MAX, INTPTR_MIN, UINTPTR_MAX): also
  should be defined when defining intptr_t and uintptr_t.
  bigdecimal.c requires the former two now.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40567 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-05-03 04:29:18 +00:00
nobu
3a0641a896 intern.h: rb_block_lambda
* include/ruby/intern.h (rb_block_lambda): add declaration instead of
  deprecated rb_f_lambda.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-30 03:30:23 +00:00
charliesome
5d7b5481ca * benchmark/bm_hash_shift.rb: add benchmark for Hash#shift
* hash.c (rb_hash_shift): use st_shift if hash is not being iterated to
  delete element without iterating the whole hash.

* hash.c (shift_i): remove function

* include/ruby/st.h (st_shift): add st_shift function

* st.c (st_shift): ditto

[Bug #8312] [ruby-core:54524] Patch by funny-falcon

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-25 05:03:30 +00:00
naruse
536a3274c9 * Merge Onigmo 5.13.4 f22cf2e566712cace60d17f84d63119d7c5764ee.
[bug] fix problem with optimization of \z (Issue #16) [Bug #8210]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40276 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-13 11:30:35 +00:00
headius
0626d9b91c Fix #6154 by introducing new EAGAIN/EWOULDBLOCK/EINPROGRESS
subclasses that include WaitReadable or WaitWritable rather than
extending them into the exception object each time.

* error.c: Capture EGAIN, EWOULDBLOCK, EINPROGRESS exceptions and
  export them for use in WaitReadable/Writable exceptions.
* io.c: Create versions of EAGAIN, EWOULDBLOCK, EINPROGRESS that
  include WaitReadable and WaitWritable. Add rb_readwrite_sys_fail
  for nonblocking failures using those exceptions. Use that
  function in io_getpartial and io_write_nonblock instead of
  rb_mod_sys_fail
* ext/openssl/ossl_ssl.c: Add new SSLError subclasses that include
  WaitReadable and WaitWritable. Use those classes for
  write_would_block and read_would_block instead of rb_mod_sys_fail.
* ext/socket/ancdata.c: Use rb_readwrite_sys_fail instead of
  rb_mod_sys_fail in bsock_sendmsg_internal and
  bsock_recvmsg_internal.
* ext/socket/init.c: Use rb_readwrite_sys_fail instead of
  rb_mod_sys_fail in rsock_s_recvfrom_nonblock and
  rsock_s_connect_nonblock.
* ext/socket/socket.c: Use rb_readwrite_sys_fail instead of
  rb_mod_sys_fail in sock_connect_nonblock.
* include/ruby/ruby.h: Export rb_readwrite_sys_fail for use instead
  of rb_mod_sys_fail. Introduce new constants RB_IO_WAIT_READABLE and
  RB_IO_WAIT_WRITABLE for first arg to rb_readwrite_sys_fail.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-08 19:58:55 +00:00
akr
1f32d09523 * include/ruby/defines.h: Simplify the logic to include sys/select.h.
This fixes a compilation error on Haiku (gcc2 and gcc4).

* configure.in: Use shared linker as $(CC) for Haiku.
  This fixes a build error on Haiku (gcc2).



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40172 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-07 02:00:46 +00:00
akr
e9382c7332 fix a typo.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40128 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-05 11:57:59 +00:00
akr
755e09ebf1 * include/ruby/defines.h (HAVE_TRUE_LONG_LONG): Defined to distinguish
availability of long long and availability of 64bit integer type.

* pack.c: Use HAVE_TRUE_LONG_LONG to distinguish q! and Q! support.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-05 11:44:56 +00:00
nobu
bff997e02b defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END}
* include/ruby/defines.h (RUBY_SYMBOL_EXPORT_{BEGIN,END}): visibility
  control macros.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-05 10:29:38 +00:00
akr
61b245cc40 * include/ruby/ruby.h (FIX2LONG): Parenthesize the macro body.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40110 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-04-04 13:54:10 +00:00
akr
a7526797a6 * include/ruby/ruby.h (FIX2ULONG): Make it consistent with NUM2ULONG.
* ext/-test-/num2int/num2int.c: Add utility methods for FIX2XXX tests.

* test/-ext-/num2int/test_num2int.rb: Add tests for FIX2XXX.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40023 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-31 16:14:15 +00:00
nobu
cea3a73f19 ruby/io.h: get rid of conflict on AIX
* include/ruby/io.h: undef POSIX compliants names on AIX, which are no
  longer needed.  patch suggested by edelsohn (David Edelsohn) in
  [ruby-core:53815].  [Bug #8174]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-29 01:24:14 +00:00
nobu
05f5cbeb75 ruby/io.h: get rid of conflict on AIX
* include/ruby/io.h: rename SVR3,4 member names as POSIX compliants,
  to get rid of conflict on AIX.  [ruby-core:53765] [Bug #8174]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39987 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-28 14:10:21 +00:00
akr
7d672f3e37 * include/ruby/intern.h: Delete redundant inclusions caused by
AC_INCLUDES_DEFAULT in defines.h.

* include/ruby/defines.h: Ditto.

* include/ruby/ruby.h: Ditto.

* include/ruby/st.h: Ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-27 22:13:06 +00:00
akr
6537dc3099 * include/ruby/defines.h: Fix a compilation error on NetBSD,
"type of formal parameter 1 is incomplete" for the rb_thread_wait_for
  invocation in rb_file_flock, by including header files as
  AC_INCLUDES_DEFAULT of autoconf.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39972 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-27 21:56:20 +00:00
nobu
7f7621e734 revert r39861
* include/ruby/ruby.h: revert r39861 because RB_UNUSED_VAR() is used
  for array variables in extension libraries.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39864 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-21 14:32:17 +00:00
nobu
042594bb50 ruby.h: RB_UNUSED_VAR from UNINITIALIZED_VAR
* include/ruby/ruby.h (RB_UNUSED_VAR): move code from
  UNINITIALIZED_VAR() in vm_core.h.
* vm_core.h (UNINITIALIZED_VAR): use RB_UNUSED_VAR().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39861 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-21 14:14:19 +00:00
kosaki
28d3acb045 * include/ruby/missing.h: removed __linux__. it's unnecessary.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39783 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 15:58:25 +00:00
nobu
7c14f03c0c missing.h: build fix
* include/ruby/missing.h: include time.h and sys/time.h iff needed,
  but excepct for sys/time.h on linux to get rid of glibc bug.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39781 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 15:16:32 +00:00
nobu
cab124776e mingw build fix
* configure.in: struct timeval is defined in winsock2.h on mingw.

* include/ruby/missing.h: include time.h for time_t, and sys/time.h
  for timeval and timespec.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 07:28:32 +00:00
kosaki
c824d47ebc * include/ruby/missing.h (__syscall): moved to...
* io.c: here. because __syscall() is only used from io.c.

* include/ruby/missing.h: move "#include <sys/type.h>" to ....
* include/ruby/intern.h: here. because it was introduced for
  fixing NFDBITS issue. [ruby-core:05179].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39774 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 05:07:14 +00:00
kosaki
03a6ce80d0 * include/ruby/missing.h (struct timespec): include <sys/time.h>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39773 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 05:07:02 +00:00
kosaki
798ff850e4 * configure.in: check struct timeval exist or not.
* include/ruby/missing.h (struct timeval): check HAVE_STRUCT_TIMEVAL
  properly. and don't include sys/time.h if struct timeval exist.

* file.c: include sys/time.h explicitly.
* random.c: ditto.
* thread_pthread.c: ditto.
* time.c: ditto.
* ext/date/date_strftime.c: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-16 05:06:47 +00:00
nobu
4f59a115fd intern.h: macro rb_check_arity
* include/ruby/intern.h (rb_check_arity): same name macro for backward
  compatibility checking by ifdef.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39610 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-06 06:29:57 +00:00
nobu
708df44e59 intern.h: inline function rb_check_arity
* include/ruby/intern.h (rb_check_arity): make a static inline
  function so it can be used as an expression and argc would be
  evaulated only once.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39598 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-05 11:23:55 +00:00
naruse
78dbaa1648 * Merge Onigmo 0fe387da2fee089254f6b04990541c731a26757f
v5.13.3 [Bug#7972] [Bug#7974]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-03-01 16:36:37 +00:00
nobu
c75f360bdf version.h: bump RUBY_API_VERSION
* include/ruby/version.h: bump RUBY_API_VERSION same as RUBY_VERSION.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-25 14:51:12 +00:00
nobu
57bccfa900 ruby.h: HAVE_RB_SCAN_ARGS_OPTIONAL_HASH
* include/ruby/ruby.h (HAVE_RB_SCAN_ARGS_OPTIONAL_HASH): for
  rb_scan_args() optional hash feature.  [Bug #7861]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39335 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-02-20 10:27:04 +00:00
nobu
111b861422 win32.h: revert r37337
* include/ruby/win32.h (fstat): revert r37337, which uses _fstati64()
  instead of fstati64() on mingw32.  [Bug #7276]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38992 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-30 08:08:23 +00:00
ko1
18e01f6381 * vm_backtrace.c: fix issue of rb_debug_inspector_open().
The order of making binding should be stack (frame) top to bottom.
  [Bug #7635]
  And also fix issue of collecting klass. Collecting klass is same
  as TracePoint#defined_class.
  (previous version, it returns T_ICLASS (internal objects).
* test/-ext-/debug/test_debug.rb: add a test.
* ext/-test-/debug/extconf.rb, init.c, inspector.c: ditto.
* vm_backtrace.c: remove magic number and add enum CALLER_BINDING_*.
* vm_backtrace.c, include/ruby/debug.h: add new C api (experimental)
  rb_debug_inspector_frame_self_get().
* vm.c, vm_core.h, vm_trace.c: move decl. of
  rb_vm_control_frame_id_and_class() and constify first parameter.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38970 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-29 08:25:32 +00:00
nobu
616f2c43c6 vm_backtrace.c: use long
* vm_backtrace.c (rb_debug_inspector_frame_{class,binding,iseq}_get):
  use long as index as well as RARRAY_LEN().

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-28 09:02:19 +00:00
nobu
8ad7143327 ruby.h: align
* include/ruby/ruby.h (RBasic): to be aligned on a VALUE size
  boundary.  [Bug #7647]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-08 17:13:26 +00:00
ko1
06f2a86f1a * include/ruby/ruby.h (RUBY_EVENT_SPECIFIED_LINE): make it special.
This flag is not contained by RUBY_EVENT_TRACEPOINT_ALL.
  This event is experimental one. It is possible to remove/rename
  flag name after 2.0.1.
* vm_trace.c (get_event_id): return :line if SPECIFIED_LINE was
  occurred. `:specified_line' never been returned.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38728 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2013-01-07 08:38:25 +00:00
usa
a3d9672407 * bignum.c, include/ruby/intern.h (rb_big_eql): exported.
* thread.c (recursive_check): object_id maybe a Bignum, not Fixnum on
  LLP64.  see also r38493 and r38548.
  reported by Heesob Park at [ruby-core:51083] [Bug #7607], and patched
  by shirosaki at [ruby-core:51095]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-25 10:14:12 +00:00
mrkn
a756488c6d * include/ruby/intern.h: add the prototype declaration of
rb_num_coerce_bit.

* numeric.c (rb_num_coerce_bit): the new coerce function for bitwise
  binary operation.

* bignum.c (rb_big_and): use coerce to convert the argument, which isn't
  a Fixnum nor a Bignum, to the corresponding Integer object so that
  bitwise operations can support Integer-mimic objects.
  [Bug #1792] [ruby-core:39491]

* bignum.c (rb_big_or): ditto.

* bignum.c (rb_big_xor): ditto.

* numeric.c (bit_coerce): ditto.

* numeric.c (fix_and): ditto.

* numeric.c (fix_or): ditto.

* numeric.c (fix_xor): ditto.

* test/ruby/test_integer.rb: add tests for the above changes.

* test/ruby/test_bignum.rb: ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38560 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-22 15:06:22 +00:00
ko1
8578cc337b * include/ruby/debug.h: define rb_trace_arg_t.
* vm_core.h: catch up above changes.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38526 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-21 09:48:15 +00:00
nobu
8497a7b918 ruby.h: RTEST NIL_P
* include/ruby/ruby.h (RTEST, NIL_P): make bare expressions without
  outermost parentheses.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38499 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-20 09:29:57 +00:00
nobu
ce6a2c7fac thread.c: revert r38382 but deprecate rb_thread_polling()
* thread.c (rb_thread_polling): revert but deprecate.
* include/ruby/intern.h (rb_thread_polling): deprecate.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38391 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-15 01:22:44 +00:00
shugo
3a6dec0c5d * include/ruby/ruby.h (RB_UNUSED_VAR): new macro to suppress
warnings for unused variables.

* ext/bigdecimal/bigdecimal.c (ENTER): use RB_UNUSED_VAR() to
  suppress annoying warnings by -Wunused-but-set-variable in gcc 4.6.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38351 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-13 03:09:22 +00:00
shugo
7ef16d224a * fix the behavior when a module is included into a refinement.
This change is a little tricky, so it might be better to prohibit
  module inclusion to refinements.

* include/ruby/ruby.h (RMODULE_INCLUDED_INTO_REFINEMENT): new flag
  to represent that a module (iclass) is included into a refinement.

* class.c (include_modules_at): set RMODULE_INCLUDED_INTO_REFINEMENT
  if klass is a refinement.

* eval.c (rb_mod_refine): set the superclass of a refinement to the
  refined class for super.

* eval.c (rb_using_refinement): skip the above superclass (the
  refined class) when creating iclasses for refinements.  Otherwise,
  `using Refinement1; using Refinement2' creates iclasses:
  <Refinement2> -> <RefinedClass> -> <Refinement1> -> RefinedClass,
  where <Module> is an iclass for Module, so RefinedClass is
  searched before Refinement1.  The correct iclasses should be
  <Refinement2> -> <Refinement1> -> RefinedClass.

* vm_insnhelper.c (vm_search_normal_superclass): if klass is an
  iclass for a refinement, use the refinement's superclass instead
  of the iclass's superclass.  Otherwise, multiple refinements are
  searched by super.  For example, if a refinement Refinement2
  includes a module M (i.e., Refinement2 -> <M> -> RefinedClass,
  and if refinements iclasses are <Refinement2> -> <M>' ->
  <Refinement1> -> RefinedClass, then super in <Refinement2> should
  use Refinement2's superclass <M> instead of <Refinement2>'s
  superclass <M>'.

* vm_insnhelper.c (vm_search_super_method): do not raise a
  NotImplementError if current_defind_class is a module included
  into a refinement.  Because of the change of
  vm_search_normal_superclass(), the receiver might not be an
  instance of the module('s iclass).

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-10 16:05:45 +00:00
shugo
db051011d6 * eval.c (rb_mod_refine), vm_eval.c (rb_yield_refine_block):
Module#refine activates all refinements defined in that module
  only in a given block.

* string.c (sym_to_proc, sym_call): don't use refinements.

* test/ruby/test_refinement.rb: related test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38269 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2012-12-08 02:37:16 +00:00