| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
[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]
|
| |
|
|
|
|
| |
[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]
|
|
|
|
| |
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)
```
|
| |
|
| |
|
|
|
|
|
| |
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]
|
|
|
|
| |
related https://bugs.ruby-lang.org/issues/16177
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Make it correctly handle lambdas
* Make it iterate over the block if block is given
The original implementation was flawed, based on lazy_set_method
instead of lazy_add_method.
Note that there is no implicit map when passing a block, the return
value of the block passed to with_index is ignored, just as it
is for Enumerator#with_index. Also like Enumerator#with_index,
when called with a block, the return value is an enumerator without
the index.
Fixes [Bug #16414]
|
|
|
|
|
|
|
| |
https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu1604/ruby-master/log/20191210T003005Z.log.html.gz
```
.../test/ruby/test_keyword.rb:2711: warning: `*' interpreted as argument prefix
```
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows passing keywords through a normal argument splat in a
Proc. While needing ruby2_keywords support for methods is more
common, there is code that delegates keywords through normal
argument splats in procs, including code in Rails. For that
reason, it makes sense to expose this for procs as well.
Internally, ruby2_keywords is not tied to methods, but iseqs,
so this just allows for setting the ruby2_keywords for the iseq
related to the proc.
|
|
|
|
|
|
|
|
|
| |
```
1) Error:
TestFileExhaustive#test_socket_p:
ArgumentError: too long unix socket path (109bytes given but 108bytes max)
/export/home/users/chkbuild/cb-sunc/tmp/build/20191207T024036Z/ruby/test/ruby/test_file_exhaustive.rb:155:in `initialize'
```
|
| |
|
|
|
|
|
|
|
|
|
| |
Introduce new RUBY_DEBUG option 'ci' to inform Ruby interpreter
that an interpreter is running on CI environment.
With this option, `rb_bug()` shows more information includes
method entry information, local variables information for each
control frame.
|
|
|
| |
[Bug #16399]
|
|
|
|
| |
As matz requested in [Bug #16366].
|
|
|
|
|
|
|
|
| |
This wasn't working previously because the iclass entry wasn't
being copied, and without an iclass entry, super_method returns
nil.
Fixes [Bug #15629]
|
|
|
|
|
| |
This reverts commit 2a22a6b2d8465934e75520a7fdcf522d50890caf.
Revert [Feature #13083]
|
|
|
|
| |
This reverts commit 452bee3ee8d68059fabd9b1c7a75661b14e3933e.
|
|
|
|
|
|
|
|
| |
Previously, lambdas were converted to procs because of how
rb_block_call works. Switch to rb_funcall_with_block, which
handles procs as procs and lambdas as lambdas.
Fixes [Bug #15613]
|
|
|
|
|
|
|
|
|
|
| |
This copies the private/deprecate constant visibility across the
autoload. It still is backwards compatible with setting the
private/deprecate constant visibility in the autoloaded file.
However, if you explicitly set public constant in the autoloaded
file, that will be reset after the autoload.
Fixes [Bug #11055]
|
|
|
|
|
| |
Get rid of infinite recursion in expanding a load path to the real
path while loading a transcoder.
|
|
|
|
|
| |
to fix test failure on trunk-no-mjit
https://gist.github.com/ko1/32ab982ffd7555988818773c08f97123
|
|
|
|
|
| |
it fails like
https://ci.appveyor.com/project/ruby/ruby/builds/29235837/job/v0apdjj4qx8afars
|