зеркало из https://github.com/github/ruby.git
[ruby/irb] fix reserved words and completion for them
https://github.com/ruby/irb/commit/6184b227ad
This commit is contained in:
Родитель
38f1e84c37
Коммит
961630126b
|
@ -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
|
||||
|
|
Загрузка…
Ссылка в новой задаче