2014-08-29 1 views
2

irb에서 다음 행을 입력하면 irb가 종료됩니다. irb가 메소드 오류없이 종료됩니다.

$ irb 
irb(main):001:0> def !; end 
=> :! 
irb(main):002:0> ! 
/usr/local/lib/ruby/2.1.0/irb/input-method.rb:153:in `gets': private method `!' called for false:FalseClass (NoMethodError) 
... 
$ 

가 정의하거나하는 방법이 !이 유효라는 이름의 여부를 호출 여부의 문제를 차치하더라도, 나는 오류가 발생할 때 IRB도 종료하지 말아야 가정합니다. 이거 버그 야? 이게 무슨 원인인지 아십니까? 파일에이 코드

+0

버그 신고 : https://bugs.ruby-lang.org/issues/10184. – sawa

답변

2

: 제 1.9.3 IRB에서

Hi 
testexclaim.rb:7:in `<main>': private method `!' called for nil:NilClass (NoMethodError) 

가, 그것은 해석하는 것 같다

def !; 
    puts "Hi" 
end 

send(:!) 

!(); 

루비 (1.9.3)이 있습니다! not 연산자로, 괄호로도.

send이 작동하기 때문에 이것은 IRB 나 Ruby가 처리 할 수없는 것보다 더 많은 파싱 버그입니다.

+0

감사합니다. 위의 주석에 링크되어있는 것처럼 루비 트렁크에 버그 보고서를 게시했습니다. – sawa

+0

@sawa : 좋습니다. 누구든지 문제를 해결하는 것이 중요하다고 생각할 지 확신하지 못합니다. 실제 코드 이름에 뭔가가 있다면 큰 문제가 있습니다. – Linuxios

+0

그 이름을 금지하거나 올바르게 작동해야합니다. 당신이 말하는 것처럼 우선 순위가 낮을 수도 있습니다. 그러나 여전히 고쳐 져야합니다. – sawa