Issue #8966 has been updated by shugo (Shugo Maeda).


nobu (Nobuyoshi Nakada) wrote:
> What should happen in that case?
> Printing (({"foo"})), or raising a (({NameError}))?

`undef foo' should raise a NameError because foo is not defined in the original class.

----------------------------------------
Bug #8966: SEGV when a refined method is undefined by undef
https://bugs.ruby-lang.org/issues/8966#change-42084

Author: shugo (Shugo Maeda)
Status: Assigned
Priority: Normal
Assignee: shugo (Shugo Maeda)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-09-27 trunk 43073) [i686-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


=begin
The following code causes SEGV:

  module Foo
    refine Object do
      def foo
        puts "foo"
      end
    end
  end
  
  using Foo
  
  class Object
    undef foo
  end
  
  foo

I guess undef is not aware of refinements.
=end


-- 
http://bugs.ruby-lang.org/