Issue #18250 has been updated by nobu (Nobuyoshi Nakada).


That is not enough.
```
$ ./ruby -v -e 'def foo((x, y)) -> {super}; end' -e 'Ractor.make_shareable(foo(nil))'
ruby 3.1.0dev (2021-10-13T02:03:39Z master e309d0260b) [x86_64-darwin19]
last_commit=Give `*` params a name
<internal:ractor>:816:in `make_shareable': wrong argument type false (expected Symbol) (TypeError)
	from -e:2:in `<main>'
```

----------------------------------------
Bug #18250: Anonymous variables seem to break `Ractor.make_shareable`
https://bugs.ruby-lang.org/issues/18250#change-94117

* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-darwin20]
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
The following code breaks with a strange error:

```ruby
def foo(*); ->{ super };end
Ractor.make_shareable(foo) # expected Symbol
```

Output:

```
[aaron@tc ~/g/ruby (master)]$ cat test.rb
def foo(*); ->{ super };end      
Ractor.make_shareable(foo) # expected Symbol
[aaron@tc ~/g/ruby (master)]$ ruby test.rb
<internal:ractor>:816:in `make_shareable': wrong argument type false (expected Symbol) (TypeError)
        from test.rb:2:in `<main>'
[aaron@tc ~/g/ruby (master)]$
```

The reason is because the `*` parameter has no name, but Ractor tries to find the name so it can make an exception.

I *expect* the above program to raise an `Ractor::IsolationError`, but instead it raises a `TypeError`.

I've attached a patch that fixes this bug.

---Files--------------------------------
0001-Give-params-a-name.patch (3.33 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>