aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-01-27 20:53:37 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-01-27 20:53:37 +0000
commitef72bdf2deda76ca8a537d3eeaa9c3f2111017de (patch)
treeaec38cadd07cd6d1cbdd0eb1fe38dbfcb253f332
parent0c5cfb68c89d9e521fa8a43afc233764d0934703 (diff)
downloadruby-ef72bdf2deda76ca8a537d3eeaa9c3f2111017de.tar.gz
* 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/trunk@34384 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--lib/irb/completion.rb8
-rw-r--r--test/irb/test_completion.rb17
3 files changed, 28 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b35833af0e..658708f718 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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]
+
Fri Jan 27 16:31:45 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* gc.c (HEAP_ALIGN, HEAP_ALIGN_MASK): DRY, let compiler calculate
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