KOBAYASHI Shuji
07856a7e8f
Exception#initialize should not allow two or more arguments
2019-09-24 21:43:46 +09:00
Yukihiro "Matz" Matsumoto
4f0f712b51
Merge pull request #4726 from shuujii/fix-Fixnum-overflow-test-in-Integer-lshift-test
...
Fix `Fixnum` overflow test in `Integer#<<` test
2019-09-23 23:27:15 +09:00
KOBAYASHI Shuji
549317a36b
Fix Fixnum overflow test in Integer#<< test
...
- Skip when `MRB_WITHOUT_FLOAT` is defined.
- Make `Fixnum` overflow even when `MRB_INT64` is defined.
2019-09-23 21:59:35 +09:00
Yukihiro "Matz" Matsumoto
a4f2e1276c
Merge pull request #4725 from shuujii/implement-all-type-predicate-macros-for-MRB_WORD_BOXING
...
Implement all type predicate macros for `MRB_WORD_BOXING`
2019-09-23 03:30:24 +09:00
KOBAYASHI Shuji
5dda4f5da3
Implement all type predicate macros for MRB_WORD_BOXING
...
The default implementations of type predicate macros use `mrb_type`.
But `mrb_type` with `MRB_WORD_BOXING` isn't very efficient, so the new
implementations avoid `mrb_type`.
2019-09-22 22:36:12 +09:00
Yukihiro "Matz" Matsumoto
046b116c18
Merge pull request #4716 from MaskRay/rodata
...
Rename MRB_USE_ETEXT_EDATA to MRB_USE_LINK_TIME_RO_DATA_P and support lld linked programs
2019-09-22 17:00:49 +09:00
Fangrui Song
7f044341f9
Rename MRB_USE_ETEXT_EDATA to MRB_USE_LINK_TIME_RO_DATA_P and support lld linked programs
...
In lld linked programs, .rodata comes before .text, thus mrb_ro_data_p
will return false for strings in .rodata. Change the lower bound from
_etext to __ehdr_start to catch these cases. This works for ld.bfd, gold
and lld, and it does not have false positives even if .init_array does
not exist.
Remove the branch that uses _edata: strings in .data can be modified so
this is semantically incorrect. Delete the __APPLE__ branch (its
manpages say get_etext() and get_edata() are strongly discouraged).
.init_array has been adopted by most ELF platforms to supersede .ctors.
Neither _etext nor _edata is used, so rename MRB_USE_ETEXT_EDATA to
MRB_USE_EHDR_START.
2019-09-21 17:55:14 -07:00
Yukihiro "Matz" Matsumoto
8db7dfb5c4
Merge pull request #4724 from shuujii/use-mrb_define_method-instead-of-mrb_define_alias
...
Use `mrb_define_method` instead of `mrb_define_alias`
2019-09-21 17:50:21 +09:00
KOBAYASHI Shuji
f252ab0770
Use mrb_define_method instead of mrb_define_alias
2019-09-21 16:51:10 +09:00
Yukihiro "Matz" Matsumoto
15701a32f5
Fix compatibility issue of class variables.
...
Singleton class definition do not introduce its own class variable scope
in CRuby/JRuby. So should mruby.
```
module Mod1
class << Object.new
C = 1
@@cv = 1
p Module.nesting, # => [#<Class:#<Object:0x55cb16e60a50>>, Mod1]
constants, # => [:C]
class_variables, # => []
Mod1.class_variables # => [:@@cv]
end
end
```
2019-09-20 13:07:58 +09:00
Yukihiro "Matz" Matsumoto
683baec4f0
Add optional argument to Module#class_variables.
2019-09-20 13:07:58 +09:00
Yukihiro "Matz" Matsumoto
01ce5824f0
Merge pull request #4723 from shuujii/fix-typo-in-Array-difference-document
...
Fix typo in `Array#difference` document [ci skip]
2019-09-20 09:46:19 +09:00
KOBAYASHI Shuji
1fb4e73981
Fix typo in Array#difference document [ci skip]
2019-09-20 09:28:56 +09:00
Yukihiro "Matz" Matsumoto
21c0c78d2e
Merge pull request #4722 from shuujii/simplify-arguments-check-in-String-index
...
Simplify arguments check in `String#index`
2019-09-20 08:02:14 +09:00
KOBAYASHI Shuji
e61095426b
Simplify arguments check in String#index
...
Also fix document about type of the first argument.
2019-09-19 20:19:38 +09:00
Yukihiro "Matz" Matsumoto
77f00d5006
Merge pull request #4720 from shuujii/fix-Enumerable-filter_map-without-block
...
Fix `Enumerable#filter_map` without block; ref d380c7d2
2019-09-18 21:52:28 +09:00
KOBAYASHI Shuji
c7c344dbc2
Fix Enumerable#filter_map without block; ref d380c7d2
2019-09-18 19:33:15 +09:00
Yukihiro "Matz" Matsumoto
c20dda4f4c
Merge pull request #4719 from shuujii/remove-unneeded-mrb_get_args
...
Remove `mrb_get_args(mrb, "")`; ref 30f37872
2019-09-18 17:14:00 +09:00
KOBAYASHI Shuji
0bedd900b9
Remove mrb_get_args(mrb, ""); ref 30f37872
2019-09-18 16:07:21 +09:00
Yukihiro "Matz" Matsumoto
ca2d47c20f
Fix super from aliased methods to work correctly; fix #4718
...
We needed to preserve the original method name somewhere. We kept it in
the `env` structure pointed from aliased methods. #1457 and #1531 tried
to address this issue. But this patch is more memory efficient.
Limitation: this fix does not support `super` from methods defined by
`define_method`. This limitation may be addressed in the future, but
it's low priority.
2019-09-18 10:31:28 +09:00
Yukihiro "Matz" Matsumoto
47add060cc
Merge pull request #4717 from shuujii/fix-Fixnum-to_s-inspect-argument-specs
...
Fix `Fixnum#(to_s|inspect)` argument specs
2019-09-17 13:39:51 +09:00
KOBAYASHI Shuji
2f7175442f
Fix Fixnum#(to_s|inspect) argument specs
...
Before this patch:
$ bin/mruby -e 'p 3.to_s(2)'
trace (most recent call last):
[0] -e:1
-e:1: 'to_s': wrong number of arguments (1 for 0) (ArgumentError)
After this patch:
$ bin/mruby -e 'p 3.to_s(2)'
"11"
2019-09-17 09:28:51 +09:00
Yukihiro "Matz" Matsumoto
88cd1d6593
Merge pull request #4714 from dearblue/shrink-mrb_get_args
...
Shrink `mrb_get_args()`
2019-09-17 08:41:51 +09:00
Yukihiro "Matz" Matsumoto
cc636f334f
Merge pull request #4715 from dearblue/need-block
...
Entrust "no block given" error to `mrb_get_args()`
2019-09-17 08:40:03 +09:00
Yukihiro "Matz" Matsumoto
d45c94fe1c
Merge pull request #4713 from shuujii/fix-argument-specs-to-Enumerable
...
Fix argument specs to `Enumerable`
2019-09-17 08:31:18 +09:00
dearblue
099a4f3969
Entrust "no block given" error to mrb_get_args()
...
Some error messages will be changed.
2019-09-16 20:29:58 +09:00
dearblue
62499c6250
Shrink mrb_get_args()
...
As a side effect, all specifiers now accept the `!` modifier.
2019-09-16 18:14:00 +09:00
dearblue
f312638ecd
Cache argv first in each specifiers for mrb_get_args(); ref #3090
...
In terms of specifiers, argv is never referenced after a method call as
shown in #3090 .
Reduction of object code can be expected.
If you need to refer to argv after a method call in the same loop,
update argv after the method call.
2019-09-16 18:14:00 +09:00
Yukihiro "Matz" Matsumoto
2f9b1fdb0c
Merge pull request #4255 from shuujii/enumerator-size-is-not-supported
...
`Enumerator#size` is not supported [ci skip]
2019-09-16 15:37:58 +09:00
KOBAYASHI Shuji
b3b55132a9
Fix argument specs to Enumerable
2019-09-16 11:58:35 +09:00
Yukihiro "Matz" Matsumoto
2256bb07b0
Remove MRB_METHOD_TABLE_INLINE.
...
`MRB_METHOD_TABLE_INLINE` was fragile. It requires `-falign-functions=n`.
On platform that uses higher bits of function pointers, you can use new
`MRB_METHOD_T_STRUCT` configuration macro.
2019-09-16 11:14:13 +09:00
Yukihiro "Matz" Matsumoto
30f3787248
Raise ArgumentError by aspec check; ref #4688
...
This is partial `aspec` check that only checks `MRB_ARGS_NONE()`.
2019-09-16 10:50:31 +09:00
Yukihiro "Matz" Matsumoto
2764fdf9f0
Share common definition of MRB_METHOD_FUNC_FL.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
0eb9355acd
Use bit shifting to pack function pointers to mrb_method_t.
...
So you don't need `-falign-functions=2` anymore. Instead your platform
must not use higher bits of the pointer (true for most platforms).
If not, you have to use `struct mrb_method_t` version.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
743d480fba
Refactor mrb_method_t.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
a57b6f8ed0
Implement Enumerable tally from Ruby2.7.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
d380c7d26f
Implement filter_map from Ruby2.6.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
57a0132b41
Add filter aliases for Enumerable and Hash.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
f4117d81d2
Add Array#difference method from Ruby2.6.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
3daa53ce63
Implement bind_call method from Ruby2.7.
2019-09-16 10:10:09 +09:00
Yukihiro "Matz" Matsumoto
a016d1d0ff
Merge branch 'dearblue-mruby-io'
2019-09-16 07:45:42 +09:00
Yukihiro "Matz" Matsumoto
6de1c64a9c
Add small fix over #4712
2019-09-16 07:44:51 +09:00
dearblue
992ba476a9
Fix broken UTF-8 characters by IO#getc
...
Character (multi-byte UTF-8) is destroyed when character spanning
`IO::BUF_SIZE` (4096 bytes) exist.
- Prepare file:
```ruby
File.open("sample", "wb") { |f| f << "●" * 1370 }
```
- Before patched:
```ruby
File.open("sample") { |f| a = []; while ch = f.getc; a << ch; end; p a }
# => ["●", "●", ..., "●", "\xe2", "\x97", "\x8f", "●", "●", "●", "●"]
- After patched:
```ruby
File.open("sample") { |f| a = []; while ch = f.getc; a << ch; end; p a }
# => ["●", "●", ..., "●", "●", "●", "●", "●", "●"]
2019-09-16 00:26:41 +09:00
dearblue
7cc8c7d2ff
Small improvement for mruby-io
2019-09-16 00:11:43 +09:00
dearblue
52a0ad4108
Fix IO#pos
2019-09-16 00:11:43 +09:00
dearblue
77368ce762
Revert part of 8c90b5fc6
...
`IO#readline` and `IO#readchar` process in character units.
2019-09-16 00:11:43 +09:00
Yukihiro "Matz" Matsumoto
0734d9f314
Merge pull request #4512 from lopopolo/patch-1
...
Support parsing a Regexp literal with 'o' option
2019-09-15 18:19:59 +09:00
Yukihiro "Matz" Matsumoto
e790fb5128
Merge pull request #4710 from shuujii/refactor-mrb_type-in-include-mruby-boxing_word.h
...
Refactor `mrb_type` in `include/mruby/boxing_word.h`
2019-09-15 18:19:27 +09:00
KOBAYASHI Shuji
7fcda585bc
Refactor mrb_type in include/mruby/boxing_word.h
2019-09-15 18:11:16 +09:00
Yukihiro "Matz" Matsumoto
76355dee68
Add unavailability of declaration form of visibility methods; #4708
2019-09-14 23:21:44 +09:00