diff --git a/lib/parfait/module.rb b/lib/parfait/module.rb index ca038317..234444cc 100644 --- a/lib/parfait/module.rb +++ b/lib/parfait/module.rb @@ -48,8 +48,14 @@ module Parfait method end - def remove_instance_method method - self.instance_methods.delete method + def remove_instance_method method_name + found = get_instance_method( method_name ) + if found + self.instance_methods.delete(found) + else + raise "No such method #{method_name} in #{self.name}" + end + self.instance_methods.delete found end def create_instance_method method_name , arg_names diff --git a/lib/virtual/passes/minimizer.rb b/lib/virtual/passes/minimizer.rb index 0851c879..aff6cedb 100644 --- a/lib/virtual/passes/minimizer.rb +++ b/lib/virtual/passes/minimizer.rb @@ -38,7 +38,7 @@ module Virtual def remove_remaining @gonners.each do |method| next if(method.name == :plus) - method.for_class.remove_instance_method method + method.for_class.remove_instance_method method.name end end end diff --git a/test/compiler/test_hello.rb b/test/compiler/test_hello.rb index b697b644..bf5f0d24 100644 --- a/test/compiler/test_hello.rb +++ b/test/compiler/test_hello.rb @@ -4,6 +4,8 @@ class HelloTest < MiniTest::Test def check machine = Virtual.machine.boot + Parfait::Space.object_space.get_class_by_name(:Integer).remove_instance_method :plus + #TODO remove this hack: write proper aliases expressions = machine.compile_main @string_input output_at = "Register::CallImplementation" #{}"Register::CallImplementation"