| Age | Commit message (Collapse) | Author |
|
Previously, this code:
ruby2_keywords def foo(*a) a.last end
foo(**{})
Returned an empty frozen hash. However, the final hash should
not be frozen in this case, as it wouldn't be if foo accepted
a keyword splat.
Use a new unfrozen empty hash instead of reusing the frozen empty
hash in this case.
Fixes [Bug #16642]
|
|
Previously, if an object has a singleton class, and you call
Object#method on the object, the resulting string would include
the object's singleton class, even though the method was not
defined in the singleton class.
Change this so the we only show the singleton class if the method
is defined in the singleton class.
Fixes [Bug #15608]
(cherry picked from commit e02bd0e713ef920e6d12c27f16548f48ec5c2cf0)
|
|
As `command_rhs` is always a "value expression", `command_asgn`
does not need the same check. [Bug #16619]
(cherry picked from commit 6e6844320de989cb88a154e2ac75066ccea1bba2)
|
|
`rb_funcallv_public` and `rb_respond_to` require an `ID`, not a
`Symbol`. [Bug #16649]
(cherry picked from commit 8b6e2685a4b7c7de905f7ed60c02ef85e0724754)
|
|
(cherry picked from commit 041c2932e336b509b0ddc1fdbd9f160bce8d4893)
|
|
Retrying after rescued `require` should try to load the same
library again. [Bug #16607]
(cherry picked from commit 7d6903dc476f982e7b432adbeef3a3d9372a309f)
|
|
commit c98c492578d898dc07a04b8240d8d5b1508ffafa
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date: Fri Jan 17 16:56:53 2020 +0900
Added test for f38b3e8c707ebdcad05aa9485cf1760640b74fbb
commit f38b3e8c707ebdcad05aa9485cf1760640b74fbb
Author: Nobuyoshi Nakada <nobu@ruby-lang.org>
Date: Thu Jan 16 18:34:31 2020 +0900
Fixed the location of args node with numbered parameter
|
|
|
|
when the next insn is already compiled by former branches.
|
|
In #2818, `Hash.ruby2_keywords!` has renamed to `Hash.ruby2_keywords_hash`.
|
|
It was found that a feature to check and add ruby2_keywords flag to an
existing Hash is needed when arguments are serialized and deserialized.
It is possible to do the same without explicit APIs, but it would be
good to provide them as a core feature.
https://github.com/rails/rails/pull/38105#discussion_r361863767
Hash.ruby2_keywords_hash?(hash) checks if hash is flagged or not.
Hash.ruby2_keywords_hash(hash) returns a duplicated hash that has a
ruby2_keywords flag,
[Bug #16486]
|
|
If the timer thread is left stopped, memory crash or segfault can
happen. [Bug #16624]
|
|
* MinGW - skip spec in spec/ruby/optional/capi/thread_spec.rb
C-API Thread function rb_thread_call_without_gvl
-- runs a C function with the global lock unlocked and unlocks IO with the generic RUBY_UBF_IO
stops/freezes spec tests
See https://bugs.ruby-lang.org/issues/16265
* MinGW - skip test test/resolv/test_dns.rb
Test times out in CI (both AppVeyor & Actions), cannot repo locally
* MinGW - skip test test/ruby/test_thread_queue.rb
* Add Actions mingw.yml
|
|
Which is by coercion of `Qundef`, when any keyword argument
without `toward:` option is given. [Bug #16598]
|
|
`String#sub` with a string pattern defers creating a `Regexp`
until `MatchData#regexp` creates a `Regexp` from the matched
string. `Regexp#last_match(group_name)` accessed its content
without creating the `Regexp` though. [Bug #16508]
|
|
script_compiled event for TracePoint should not be invoked on
compile error (SyntaxError) because it is not "compiled".
[Bug #16459]
|
|
[Bug #16450]
|
|
warnings
|
|
objspace->id_to_obj_tbl can contain died objects because of lazy
sweep, so that it should check liveness.
|
|
We want to introduce consistency and better compatibility with unixen,
but the Windows APIs doues not have consistency fundamentally and
we can not found any logical way...
This reverts commit 61aff0cd189e67fa6f2565639ad0128fa33b88fc.
|
|
* Use Queue for synchronization.
* Don't use `sleep 0.2` and use `th.join` because created thread
can raise an exception after 0.2 seconds.
|
|
`foo(*rest, post, **empty_kw)` is compiled like
`foo(*rest + [post, **empty_kw])`, and `**empty_kw` is removed by
"newarraykwsplat" instruction.
However, the method call still has a flag of KW_SPLAT, so "post" is
considered as a keyword hash, which caused a segfault.
Note that the flag cannot be removed if "empty_kw" is not always empty.
This change fixes the issue by compiling arguments with "newarray"
instead of "newarraykwsplat".
[Bug #16442]
|
|
But not changes another cases, such as "file.rb."
[Bug #15267]
|
|
Before this commit, Kernel#lambda can't tell the difference between a
directly passed literal block and one passed with an ampersand.
A block passed with an ampersand is semantically speaking already a
non-lambda proc. When Kernel#lambda receives a non-lambda proc, it
should simply return it.
Implementation wise, when the VM calls a method with a literal block, it
places the code for the block on the calling control frame and passes a
pointer (block handler) to the callee. Before this commit, the VM
forwards block arguments by simply forwarding the block handler, which
leaves the slot for block code unused when a control frame forwards its
block argument. I use the vacant space to indicate that a frame has
forwarded its block argument and inspect that in Kernel#lambda to detect
forwarded blocks.
This is a very ad-hoc solution and relies *heavily* on the way block
passing works in the VM. However, it's the most self-contained solution
I have.
[Bug #15620]
Notes:
Merged: https://github.com/ruby/ruby/pull/2289
|
|
|
|
[Feature #16420]
|
|
[Feature #16420]
|
|
To manage `Warning[category]` flags. Only `-W:deprecated` and
`-W:no-deprecated` are available now. [Feature #16345]
|
|
(old)
test.rb:4: warning: The last argument is used as the keyword parameter
test.rb:1: warning: for `foo' defined here; maybe ** should be added to the call?
(new)
test.rb:4: warning: The last argument is used as keyword parameters; maybe ** should be added to the call
test.rb:1: warning: The called method `foo' is defined here
|
|
[Bug #16438]
|
|
[Bug #16438]
|
|
[Bug #16438]
|
|
[Feature #16419]
|
|
Fixed misspellings reported at [Bug #16437], only in ruby and rubyspec.
|
|
|
|
[Feature #16433]
|
|
|
|
|
|
Errno::EROFS may occur when the source tree is placed in a
read-only filesystem.
|
|
|
|
|
|
[Bug #16424]
Notes:
Merged: https://github.com/ruby/ruby/pull/2754
|
|
Except for ASCII-8BIT. [Bug #16422]
|
|
same as `rand(endless_range)`
Before:
```
$ ruby -e 'rand(..1)'
Traceback (most recent call last):
2: from -e:1:in `<main>'
1: from -e:1:in `rand'
-e:1:in `-': nil can't be coerced into Integer (TypeError)
```
After:
```
$ ruby -e 'rand(..1)'
Traceback (most recent call last):
1: from -e:1:in `<main>'
-e:1:in `rand': Numerical argument out of domain (Errno::EDOM)
```
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/2739
|
|
|
|
Paths start with the root are absolute on cygwin, regardless the
drive letter.
|
|
|
|
This makes behavior the same as super in instance_eval in method
in class. The reason this wasn't implemented before is that
there is a check to determine if the self in the current context
is of the expected class, and a module itself can be included
in multiple classes, so it doesn't have an expected class.
Implementing this requires giving iclasses knowledge of which
class created them, so that super call in the module method
knows the expected class for super calls. This reference
is called includer, and should only be set for iclasses.
Note that the approach Ruby uses in this check is not robust. If
you instance_eval another object of the same class and call super,
instead of an TypeError, you get super called with the
instance_eval receiver instead of the method receiver. Truly
fixing super would require keeping a reference to the super object
(method receiver) in each frame where scope has changed, and using
that instead of current self when calling super.
Fixes [Bug #11636]
Notes:
Merged: https://github.com/ruby/ruby/pull/2717
|
|
related https://bugs.ruby-lang.org/issues/16177
Notes:
Merged: https://github.com/ruby/ruby/pull/2736
|