[ruby/irb] fix reserved words and completion for them

https://github.com/ruby/irb/commit/6184b227ad
This commit is contained in:
Nobuhiro IMAI 2020-02-12 19:16:12 +09:00 коммит произвёл aycabta
Родитель 38f1e84c37
Коммит 961630126b
2 изменённых файлов: 15 добавлений и 2 удалений

Просмотреть файл

@ -17,11 +17,12 @@ module IRB
# Set of reserved words used by Ruby, you should not use these for
# constants or variables
ReservedWords = %w[
__ENCODING__ __LINE__ __FILE__
BEGIN END
alias and
begin break
case class
def defined do
def defined? do
else elsif end ensure
false for
if in
@ -255,7 +256,7 @@ module IRB
else
candidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}
conditions |= ReservedWords
candidates |= ReservedWords
if doc_namespace
candidates.find{ |i| i == input }

Просмотреть файл

@ -35,5 +35,17 @@ module TestIRB
def test_complete_symbol_failure
assert_nil(IRB::InputCompletor::PerfectMatchedProc.(":aiueo", bind: binding))
end
def test_complete_reserved_words
candidates = IRB::InputCompletor.retrieve_completion_data("de", bind: binding)
%w[def defined?].each do |word|
assert_include candidates, word
end
candidates = IRB::InputCompletor.retrieve_completion_data("__", bind: binding)
%w[__ENCODING__ __LINE__ __FILE__].each do |word|
assert_include candidates, word
end
end
end
end