Ruby warns "instance variable `@version` not initialized" for optparse when it receives `--version` option.

`test.rb`

```ruby
require 'optparse'
Version = '1'
OptionParser.new.parse(ARGV)
```

```
$ ruby -w test.rb --version
/home/pocke/.rbenv/versions/2.5.1/lib/ruby/2.5.0/optparse.rb:1168: warning: instance variable @version not initialized
/home/pocke/.rbenv/versions/2.5.1/lib/ruby/2.5.0/optparse.rb:1175: warning: instance variable @release not initialized
test 1
```

This change will suppress the warnings.

[Fix GH-1871]

From: Masataka Pocke Kuwabara <kuwabara@pocke.me>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63342 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-05-06 09:53:33 +00:00
Родитель d32763eca0
Коммит 2ad7fb6dc1
2 изменённых файлов: 4 добавлений и 2 удалений

Просмотреть файл

@ -1165,14 +1165,14 @@ XXX
# Version
#
def version
@version || (defined?(::Version) && ::Version)
(defined?(@version) && @version) || (defined?(::Version) && ::Version)
end
#
# Release code
#
def release
@release || (defined?(::Release) && ::Release) || (defined?(::RELEASE) && ::RELEASE)
(defined?(@release) && @release) || (defined?(::Release) && ::Release) || (defined?(::RELEASE) && ::RELEASE)
end
#

Просмотреть файл

@ -48,6 +48,8 @@ class TestOptionParser::SummaryTest < TestOptionParser
def test_ver
o = OptionParser.new("foo bar")
o.program_name = "foo"
assert_warning('') {assert_nil(o.version)}
assert_warning('') {assert_nil(o.release)}
o.version = [0, 1]
assert_equal "foo 0.1", o.ver
o.release = "rel"