From 76ee4edb97da67d2ab6f289de14cd3ac334c372d Mon Sep 17 00:00:00 2001 From: ima1zumi <52617472+ima1zumi@users.noreply.github.com> Date: Tue, 6 Jun 2023 03:34:05 +0900 Subject: [PATCH] [ruby/irb] Fixed string escaping omissions (https://github.com/ruby/irb/pull/599) I received a `RegexpError` when I typed `::Array[`. ::Array[/Users/mi/ghq/github.com/ruby/irb/lib/irb/completion.rb:236:in `retrieve_completion_data': premature end of char-class: /^Array[/ (RegexpError) --- lib/irb/completion.rb | 2 +- test/irb/test_completion.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/irb/completion.rb b/lib/irb/completion.rb index 84f4c4e35a..64e387d49c 100644 --- a/lib/irb/completion.rb +++ b/lib/irb/completion.rb @@ -233,7 +233,7 @@ module IRB if doc_namespace candidates.find { |i| i == receiver } else - candidates.grep(/^#{receiver}/).collect{|e| "::" + e} + candidates.grep(/^#{Regexp.quote(receiver)}/).collect{|e| "::" + e} end when /^([A-Z].*)::([^:.]*)$/ diff --git a/test/irb/test_completion.rb b/test/irb/test_completion.rb index e259428d76..6a24f0f9ba 100644 --- a/test/irb/test_completion.rb +++ b/test/irb/test_completion.rb @@ -310,6 +310,7 @@ module TestIRB assert_empty(IRB::InputCompletor.retrieve_completion_data("::A.", bind: binding)) assert_empty(IRB::InputCompletor.retrieve_completion_data("::A(", bind: binding)) assert_empty(IRB::InputCompletor.retrieve_completion_data("::A)", bind: binding)) + assert_empty(IRB::InputCompletor.retrieve_completion_data("::A[", bind: binding)) end def test_complete_reserved_words