diff options
| author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-01-27 20:53:37 +0000 |
|---|---|---|
| committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-01-27 20:53:37 +0000 |
| commit | 4201e2b3d069c66c35bd2eac98f963186ad76409 (patch) | |
| tree | 8090dd47f06da54f44e1bc078de7dcd0b3edd036 | |
| parent | 3c0ebab6f1598377fc652ec2ebe2411d19bd1bc8 (diff) | |
* lib/irb/completion.rb (IRB::InputCompletor::CompletionProc):
ignore non-string name modules. [ruby-core:42244][Bug #5938]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | lib/irb/completion.rb | 8 | ||||
| -rw-r--r-- | test/irb/test_completion.rb | 17 |
3 files changed, 28 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Sat Jan 28 05:53:34 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * lib/irb/completion.rb (IRB::InputCompletor::CompletionProc): + ignore non-string name modules. [ruby-core:42244][Bug #5938] + Mon Jan 23 18:18:58 2012 NARUSE, Yui <naruse@ruby-lang.org> * encoding.c (rb_enc_compatible): fix segv on symbols. diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index 54e6526957..7fd69a0a09 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -178,8 +178,12 @@ module IRB rescue Exception name = "" end - next if name != "IRB::Context" and - /^(IRB|SLex|RubyLex|RubyToken)/ =~ name + begin + next if name != "IRB::Context" and + /^(IRB|SLex|RubyLex|RubyToken)/ =~ name + rescue Exception + next + end candidates.concat m.instance_methods(false).collect{|x| x.to_s} } candidates.sort! diff --git a/test/irb/test_completion.rb b/test/irb/test_completion.rb new file mode 100644 index 0000000000..3c11eb003c --- /dev/null +++ b/test/irb/test_completion.rb @@ -0,0 +1,17 @@ +require 'test/unit' +require_relative '../ruby/envutil' + +module TestIRB + class TestCompletion < Test::Unit::TestCase + def test_nonstring_module_name + bug5938 = '[ruby-core:42244]' + cmds = %W[-rirb -rirb/completion -e IRB.setup(__FILE__) + -e IRB.conf[:MAIN_CONTEXT]=IRB::Irb.new.context + -e module\sFoo;def\sself.name;//;end;end + -e IRB::InputCompletor::CompletionProc.call("[1].first.") + -- -f --] + status = assert_in_out_err(cmds, "", //, [], bug5938) + assert(status.success?, bug5938) + end + end +end |
