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


1.8でも -w オプション付きなら警告が出るようになったはずだったんですが、結局その1.8.8はリリースされず1.9になってしまったんですよね…。

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

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