Issue #15416 has been updated by osyo (manga osyo).


もうちょっと調べてみたんですが `#[]` だと `[meth(1, 2)]` として扱われるんですね、なるほど。

```ruby
class X
	def [](*args)
		args
	end
end

def meth a, b = 42
	a + b
end

def hoge
	X.new[meth 1, 2] # => [meth(1, 2)]
end

hoge # => [3]
```

----------------------------------------
Bug #15416: 配列リテラル内の引数を伴う括弧なしのメソッド呼び出しで syntax error
https://bugs.ruby-lang.org/issues/15416#change-75691

* Author: shuujii (Shuji KOBAYASHI)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.0rc1 (2018-12-06 trunk 66253) [x86_64-linux]
* Backport: 2.4: UNKNOWN, 2.5: UNKNOWN
----------------------------------------
以下のような配列リテラル内の引数を伴う括弧なしのメソッド呼び出しで syntax error が発生します。

~~~ 
$ ruby -ce '[p 1]'
-e:1: syntax error, unexpected tINTEGER, expecting do or '{' or '('
[p 1]
   ^
~~~

メソッドの `[]` や `[]=` の中ではエラーにならないので許容されたほうが良いと思います。

~~~
$ ruby -ce '{}[p 1]'
Syntax OK

$ ruby -ce '{}[p 1]=1'
Syntax OK
~~~

なお、Ruby 1.8 ではエラーになりませんでした。

~~~
$ ruby187 -vce '[p 1]'
ruby 1.8.7 (2013-06-27 patchlevel 374) [x86_64-linux]
Syntax OK
~~~

添付のパッチで許容されるようになった気がします。


---Files--------------------------------
method_call_with_args_and_no_parens_in_array.patch (852 Bytes)


-- 
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>