Issue #13809 has been reported by pocke (Masataka Kuwabara).

----------------------------------------
Bug #13809: Unused variable warning does not occur when a method with the same name was called
https://bugs.ruby-lang.org/issues/13809

* Author: pocke (Masataka Kuwabara)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
## problem


~~~ ruby
a = 1
a()
~~~

`a` is unused, but `ruby -cw` does not add warning for this code.


~~~
$ ruby -cw test.rb
Syntax OK
~~~


## Cause


The parser changes mode by lvar definition. At that time, parser checks whether lvar is defined that is with same name.
https://github.com/ruby/ruby/blob/6ee82564fac2745e45154938b5b75d9f5ab70b58/parse.y#L7886
Then, if lvar with same name is defined, the lvar is marked as used.
https://github.com/ruby/ruby/blob/6ee82564fac2745e45154938b5b75d9f5ab70b58/parse.y#L10494



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