ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:96750] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda
       [not found] <redmine.issue-16496.20200110022105@ruby-lang.org>
@ 2020-01-10  2:21 ` realfengjia
  2020-01-10  2:49 ` [ruby-core:96752] " mame
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 4+ messages in thread
From: realfengjia @ 2020-01-10  2:21 UTC (permalink / raw)
  To: ruby-core

Issue #16496 has been reported by JustinFeng (Justin Feng).

----------------------------------------
Bug #16496: Numbered Parameter not parsed properly in lambda
https://bugs.ruby-lang.org/issues/16496

* Author: JustinFeng (Justin Feng)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
The space between `*` and `1` changes the lambda behaviour, looks like numbered parameter `_1` is not parsed properly

```
2.7.0 :001 > l = -> { _1 * 1 }
2.7.0 :002 > l[2]
 => 2
2.7.0 :003 > l2 = -> { _1 *1 }
2.7.0 :004 > l2[2]
Traceback (most recent call last):
        5: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `<main>'
        4: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `load'
        3: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
        2: from (irb):4
        1: from (irb):3:in `block in irb_binding'
ArgumentError (wrong number of arguments (given 1, expected 0))
2.7.0 :005 >
```



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ruby-core:96752] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda
       [not found] <redmine.issue-16496.20200110022105@ruby-lang.org>
  2020-01-10  2:21 ` [ruby-core:96750] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda realfengjia
@ 2020-01-10  2:49 ` mame
  2020-01-11 11:49 ` [ruby-core:96786] " realfengjia
  2020-01-11 12:34 ` [ruby-core:96787] " mame
  3 siblings, 0 replies; 4+ messages in thread
From: mame @ 2020-01-10  2:49 UTC (permalink / raw)
  To: ruby-core

Issue #16496 has been updated by mame (Yusuke Endoh).

Status changed from Open to Rejected

`_1 *1` is parsed as `_1(*1)`, a call to a method `_1` with a variable-length argument with `1`.  It is the same as `p * ary` and `p *ary`.  You can see a warning under verbose mode:

```
$ ruby -w -e '-> { _1 *1 }.call'
-e:1: warning: `*' interpreted as argument prefix
...
```

It is difficult to change until a method name `_1` is valid.

----------------------------------------
Bug #16496: Numbered Parameter not parsed properly in lambda
https://bugs.ruby-lang.org/issues/16496#change-83742

* Author: JustinFeng (Justin Feng)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
The space between `*` and `1` changes the lambda behaviour, looks like numbered parameter `_1` is not parsed properly

```
2.7.0 :001 > l = -> { _1 * 1 }
2.7.0 :002 > l[2]
 => 2
2.7.0 :003 > l2 = -> { _1 *1 }
2.7.0 :004 > l2[2]
Traceback (most recent call last):
        5: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `<main>'
        4: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `load'
        3: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
        2: from (irb):4
        1: from (irb):3:in `block in irb_binding'
ArgumentError (wrong number of arguments (given 1, expected 0))
2.7.0 :005 >
```



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ruby-core:96786] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda
       [not found] <redmine.issue-16496.20200110022105@ruby-lang.org>
  2020-01-10  2:21 ` [ruby-core:96750] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda realfengjia
  2020-01-10  2:49 ` [ruby-core:96752] " mame
@ 2020-01-11 11:49 ` realfengjia
  2020-01-11 12:34 ` [ruby-core:96787] " mame
  3 siblings, 0 replies; 4+ messages in thread
From: realfengjia @ 2020-01-11 11:49 UTC (permalink / raw)
  To: ruby-core

Issue #16496 has been updated by JustinFeng (Justin Feng).


mame (Yusuke Endoh) wrote:
> `_1 *1` is parsed as `_1(*1)`, a call to a method `_1` with a variable-length argument with `1`.  It is the same as `p * ary` and `p *ary`.  You can see a warning under verbose mode:
> 
> ```
> $ ruby -w -e '-> { _1 *1 }.call'
> -e:1: warning: `*' interpreted as argument prefix
> ...
> ```
> 
> It is difficult to change until a method name `_1` is valid.

Hi Yusuke, thank you for the reply

understand there is limitation on the numbered parameter, just feel it's 

mame (Yusuke Endoh) wrote:
> `_1 *1` is parsed as `_1(*1)`, a call to a method `_1` with a variable-length argument with `1`.  It is the same as `p * ary` and `p *ary`.  You can see a warning under verbose mode:
> 
> ```
> $ ruby -w -e '-> { _1 *1 }.call'
> -e:1: warning: `*' interpreted as argument prefix
> ...
> ```
> 
> It is difficult to change until a method name `_1` is valid.

Hi Yusuke, thank you for the reply, good to understand what caused the issue

However, it just makes me feel the numbered parameter behaves different from traditional block parameter

```
2.7.0 :001 > l = lambda {|p| p *1 }
2.7.0 :002 > l[2]
 => 2 
2.7.0 :003 > l = lambda {|p| p * 1 }
2.7.0 :004 > l[2]
 => 2 
```

----------------------------------------
Bug #16496: Numbered Parameter not parsed properly in lambda
https://bugs.ruby-lang.org/issues/16496#change-83780

* Author: JustinFeng (Justin Feng)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
The space between `*` and `1` changes the lambda behaviour, looks like numbered parameter `_1` is not parsed properly

```
2.7.0 :001 > l = -> { _1 * 1 }
2.7.0 :002 > l[2]
 => 2
2.7.0 :003 > l2 = -> { _1 *1 }
2.7.0 :004 > l2[2]
Traceback (most recent call last):
        5: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `<main>'
        4: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `load'
        3: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
        2: from (irb):4
        1: from (irb):3:in `block in irb_binding'
ArgumentError (wrong number of arguments (given 1, expected 0))
2.7.0 :005 >
```



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [ruby-core:96787] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda
       [not found] <redmine.issue-16496.20200110022105@ruby-lang.org>
                   ` (2 preceding siblings ...)
  2020-01-11 11:49 ` [ruby-core:96786] " realfengjia
@ 2020-01-11 12:34 ` mame
  3 siblings, 0 replies; 4+ messages in thread
From: mame @ 2020-01-11 12:34 UTC (permalink / raw)
  To: ruby-core

Issue #16496 has been updated by mame (Yusuke Endoh).


We are now migrating.  If we change it immediately, a program that uses `_1` as a method name will break.  So it is now warned:

```
warning: `_1' is reserved for numbered parameter; consider another name
```

After enough time, we will be able to prohibit `_1` as a method name, and `_1` can be always used as a numbered parameter.  So please wait for a few years.

----------------------------------------
Bug #16496: Numbered Parameter not parsed properly in lambda
https://bugs.ruby-lang.org/issues/16496#change-83782

* Author: JustinFeng (Justin Feng)
* Status: Feedback
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-darwin18]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
The space between `*` and `1` changes the lambda behaviour, looks like numbered parameter `_1` is not parsed properly

```
2.7.0 :001 > l = -> { _1 * 1 }
2.7.0 :002 > l[2]
 => 2
2.7.0 :003 > l2 = -> { _1 *1 }
2.7.0 :004 > l2[2]
Traceback (most recent call last):
        5: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `<main>'
        4: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/bin/irb:23:in `load'
        3: from /Users/justin.feng/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/gems/irb-1.2.1/exe/irb:11:in `<top (required)>'
        2: from (irb):4
        1: from (irb):3:in `block in irb_binding'
ArgumentError (wrong number of arguments (given 1, expected 0))
2.7.0 :005 >
```



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

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-01-11 12:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <redmine.issue-16496.20200110022105@ruby-lang.org>
2020-01-10  2:21 ` [ruby-core:96750] [Ruby master Bug#16496] Numbered Parameter not parsed properly in lambda realfengjia
2020-01-10  2:49 ` [ruby-core:96752] " mame
2020-01-11 11:49 ` [ruby-core:96786] " realfengjia
2020-01-11 12:34 ` [ruby-core:96787] " mame

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).