[macruby-changes] [1505] MacRuby/branches/experimental/test_vm/block.rb

source_changes at macosforge.org source_changes at macosforge.org
Wed Apr 29 00:04:37 PDT 2009


Revision: 1505
          http://trac.macosforge.org/projects/ruby/changeset/1505
Author:   vincent.isambart at gmail.com
Date:     2009-04-29 00:04:30 -0700 (Wed, 29 Apr 2009)
Log Message:
-----------
added some crazy tests for returned procs

Modified Paths:
--------------
    MacRuby/branches/experimental/test_vm/block.rb

Modified: MacRuby/branches/experimental/test_vm/block.rb
===================================================================
--- MacRuby/branches/experimental/test_vm/block.rb	2009-04-29 03:54:03 UTC (rev 1504)
+++ MacRuby/branches/experimental/test_vm/block.rb	2009-04-29 07:04:30 UTC (rev 1505)
@@ -228,5 +228,84 @@
   p f.call
 }
 
+assert "42", %{
+  def f()
+    a = nil
+    b = false
+    x = 42
+    while true
+      return a if b
+      b = true
+      a = proc { x }
+    end
+  end
+  p f.call
+}
+
+assert "42", %{
+  def f()
+    x = 42
+    $a = proc { x }
+    raise 'w'
+  end
+  begin
+    f
+  rescue
+    p $a.call
+  end
+}
+
+assert "42", %{
+  def g()
+    raise 'w'
+  end
+  def f()
+    x = 42
+    $a = proc { x }
+    g
+  end
+  begin
+    f
+  rescue
+    p $a.call
+  end
+}
+
+assert "42", %{
+  def f()
+    x = 42
+    $a = proc { x }
+    throw :w
+  end
+  catch(:w) do
+    f
+  end
+  p $a.call
+}
+
+assert "42", %{
+  def g()
+    throw :w
+  end
+  def f()
+    x = 42
+    $a = proc { x }
+    g()
+  end
+  catch(:w) do
+    f
+  end
+  p $a.call
+}
+
+assert "42", %{
+  def f()
+    x = 42
+    a = proc { x }
+    1.times { return a }
+  end
+  p f.call
+}
+
 # Enumerator 
 assert "[\"f\", \"o\", \"o\"]", "p 'foo'.chars.to_a"
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090429/8dd37453/attachment.html>


More information about the macruby-changes mailing list