From f0efb1e0d9c15b7a84f2da71a9336e722ee8e933 Mon Sep 17 00:00:00 2001 From: Torsten Ruger Date: Sat, 23 Aug 2014 13:57:14 +0300 Subject: [PATCH] start on implementing set --- lib/virtual/machine.rb | 1 + lib/virtual/send_implementation.rb | 1 - lib/virtual/set_implementation.rb | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 lib/virtual/set_implementation.rb diff --git a/lib/virtual/machine.rb b/lib/virtual/machine.rb index c8a4fd06..84c810c3 100644 --- a/lib/virtual/machine.rb +++ b/lib/virtual/machine.rb @@ -86,3 +86,4 @@ require_relative "constants" require "boot/boot_space" require_relative "send_implementation" require_relative "get_implementation" +require_relative "set_implementation" diff --git a/lib/virtual/send_implementation.rb b/lib/virtual/send_implementation.rb index 129877d3..124e19d5 100644 --- a/lib/virtual/send_implementation.rb +++ b/lib/virtual/send_implementation.rb @@ -26,4 +26,3 @@ module Virtual end end end -require_relative "get_implementation" \ No newline at end of file diff --git a/lib/virtual/set_implementation.rb b/lib/virtual/set_implementation.rb new file mode 100644 index 00000000..3d5e519c --- /dev/null +++ b/lib/virtual/set_implementation.rb @@ -0,0 +1,14 @@ +module Virtual + # This implements the send logic + # Send is so complicated that we actually code it in ruby and stick it in + # That off course opens up an endless loop possibility that we stop by reducing to Class and Module methods + class SetImplementation + def run block + block.codes.dup.each do |code| + next unless code.is_a? Virtual::Set + raise "Start coding" + end + end + end + Object.space.add_pass_after SetImplementation , GetImplementation +end