summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorima1zumi <[email protected]>2023-06-06 03:34:05 +0900
committergit <[email protected]>2023-06-05 18:34:10 +0000
commit76ee4edb97da67d2ab6f289de14cd3ac334c372d (patch)
treed7c9dcd0de9594c975064406eba11e0cbb2019c5
parent135a5eb716399443da58db342de6093c91b5ad62 (diff)
[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)
-rw-r--r--lib/irb/completion.rb2
-rw-r--r--test/irb/test_completion.rb1
2 files changed, 2 insertions, 1 deletions
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