From: Kazuhiro NISHIYAMA Date: 2010-04-11T11:34:37+09:00 Subject: [ruby-dev:40953] [Bug #3126] irb/completionでTypeError Bug #3126: irb/completionでTypeError http://redmine.ruby-lang.org/issues/show/3126 起票者: Kazuhiro NISHIYAMA ステータス: Open, 優先度: Normal 担当者: Keiju Ishitsuka, カテゴリ: lib, Target version: 1.9.2 ruby -v: ruby 1.9.2dev (2010-04-10 trunk 27284) [x86_64-linux] irb/completion を読み込んでいると「a.」や「C::」などの後にタブキーを押すと .../irb/completion.rb:137:in `quote': can't convert NilClass to String (TypeError) や .../irb/completion.rb:87:in `quote': can't convert NilClass to String (TypeError) で終了してしまいます。 以下の修正で直るようです。 diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index a345c23..e059bc4 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -81,10 +81,10 @@ module IRB candidates.grep(/^#{receiver}/).collect{|e| "::" + e} # when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ - when /^([A-Z].*)::([^:.]+)*$/ + when /^([A-Z].*)::([^:.]*)$/ # Constant or class methods receiver = $1 - message = Regexp.quote($4) + message = Regexp.quote($2) begin candidates = eval("#{receiver}.constants.collect{|m| m.to_s}", bind) candidates |= eval("#{receiver}.methods.collect{|m| m.to_s}", bind) @@ -134,7 +134,7 @@ module IRB when /^([^."].*)\.([^.]*)$/ # variable receiver = $1 - message = Regexp.quote($3) + message = Regexp.quote($2) gv = eval("global_variables", bind).collect{|m| m.to_s} lv = eval("local_variables", bind).collect{|m| m.to_s} ---------------------------------------- http://redmine.ruby-lang.org