<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -110,58 +110,128 @@ describe &quot;Breaking out of a loop with a value&quot; do
     a = loop do break [*[1,2]]; end; a.should == [1,2]
   end
 
-  it &quot;assigns splatted objects&quot; do
-    a = loop do break *nil; end;      a.should == nil
-    a = loop do break *1; end;        a.should == 1
-    a = loop do break *[]; end;       a.should == nil
-    a = loop do break *[1]; end;      a.should == 1
-    a = loop do break *[nil]; end;    a.should == nil
-    a = loop do break *[[]]; end;     a.should == []
-    a = loop do break *[*[]]; end;    a.should == nil
-    a = loop do break *[1]; end;      a.should == 1
-    a = loop do break *[*[1]]; end;   a.should == 1
-    a = loop do break *[1,2]; end;    a.should == [1,2]
-    a = loop do break *[*[1,2]]; end; a.should == [1,2]
-  end
-
-  it &quot;assigns to a splatted reference&quot; do
-    *a = loop do break; end;          a.should == [nil]
-    *a = loop do break nil; end;      a.should == [nil]
-    *a = loop do break 1; end;        a.should == [1]
-    *a = loop do break []; end;       a.should == [[]]
-    *a = loop do break [1]; end;      a.should == [[1]]
-    *a = loop do break [nil]; end;    a.should == [[nil]]
-    *a = loop do break [[]]; end;     a.should == [[[]]]
-    *a = loop do break [1,2]; end;    a.should == [[1,2]]
-    *a = loop do break [*[]]; end;    a.should == [[]]
-    *a = loop do break [*[1]]; end;   a.should == [[1]]
-    *a = loop do break [*[1,2]]; end; a.should == [[1,2]]
-  end
-
-  it &quot;assigns splatted objects to a splatted reference&quot; do
-    *a = loop do break *nil; end;      a.should == [nil]
-    *a = loop do break *1; end;        a.should == [1]
-    *a = loop do break *[]; end;       a.should == [nil]
-    *a = loop do break *[1]; end;      a.should == [1]
-    *a = loop do break *[nil]; end;    a.should == [nil]
-    *a = loop do break *[[]]; end;     a.should == [[]]
-    *a = loop do break *[1,2]; end;    a.should == [[1,2]]
-    *a = loop do break *[*[]]; end;    a.should == [nil]
-    *a = loop do break *[*[1]]; end;   a.should == [1]
-    *a = loop do break *[*[1,2]]; end; a.should == [[1,2]]
-  end
-
-  it &quot;assigns splatted objects to a splatted reference from a splatted loop&quot; do
-    *a = *loop do break *nil; end;      a.should == [nil]
-    *a = *loop do break *1; end;        a.should == [1]
-    *a = *loop do break *[]; end;       a.should == [nil]
-    *a = *loop do break *[1]; end;      a.should == [1]
-    *a = *loop do break *[nil]; end;    a.should == [nil]
-    *a = *loop do break *[[]]; end;     a.should == []
-    *a = *loop do break *[1,2]; end;    a.should == [1,2]
-    *a = *loop do break *[*[]]; end;    a.should == [nil]
-    *a = *loop do break *[*[1]]; end;   a.should == [1]
-    *a = *loop do break *[*[1,2]]; end; a.should == [1,2]
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;assigns splatted objects&quot; do
+      a = loop do break *nil; end;      a.should == nil
+      a = loop do break *[]; end;       a.should == nil
+      a = loop do break *1; end;        a.should == 1
+      a = loop do break *[1]; end;      a.should == 1
+      a = loop do break *[nil]; end;    a.should == nil
+      a = loop do break *[[]]; end;     a.should == []
+      a = loop do break *[*[]]; end;    a.should == nil
+      a = loop do break *[1]; end;      a.should == 1
+      a = loop do break *[*[1]]; end;   a.should == 1
+      a = loop do break *[1,2]; end;    a.should == [1,2]
+      a = loop do break *[*[1,2]]; end; a.should == [1,2]
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;assigns splatted objects&quot; do
+      a = loop do break *nil; end;      a.should == []
+      a = loop do break *[]; end;       a.should == []
+      a = loop do break *1; end;        a.should == [1]
+      a = loop do break *[1]; end;      a.should == [1]
+      a = loop do break *[nil]; end;    a.should == [nil]
+      a = loop do break *[[]]; end;     a.should == [[]]
+      a = loop do break *[*[]]; end;    a.should == []
+      a = loop do break *[1]; end;      a.should == [1]
+      a = loop do break *[*[1]]; end;   a.should == [1]
+      a = loop do break *[1,2]; end;    a.should == [1,2]
+      a = loop do break *[*[1,2]]; end; a.should == [1,2]
+    end
+  end
+
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;assigns to a splatted reference&quot; do
+      *a = loop do break; end;          a.should == [nil]
+      *a = loop do break nil; end;      a.should == [nil]
+      *a = loop do break 1; end;        a.should == [1]
+      *a = loop do break []; end;       a.should == [[]]
+      *a = loop do break [1]; end;      a.should == [[1]]
+      *a = loop do break [nil]; end;    a.should == [[nil]]
+      *a = loop do break [[]]; end;     a.should == [[[]]]
+      *a = loop do break [1,2]; end;    a.should == [[1,2]]
+      *a = loop do break [*[]]; end;    a.should == [[]]
+      *a = loop do break [*[1]]; end;   a.should == [[1]]
+      *a = loop do break [*[1,2]]; end; a.should == [[1,2]]
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;assigns to a splatted reference&quot; do
+      *a = loop do break; end;          a.should == [nil]
+      *a = loop do break nil; end;      a.should == [nil]
+      *a = loop do break 1; end;        a.should == [1]
+      *a = loop do break []; end;       a.should == []
+      *a = loop do break [1]; end;      a.should == [1]
+      *a = loop do break [nil]; end;    a.should == [nil]
+      *a = loop do break [[]]; end;     a.should == [[]]
+      *a = loop do break [1,2]; end;    a.should == [1,2]
+      *a = loop do break [*[]]; end;    a.should == []
+      *a = loop do break [*[1]]; end;   a.should == [1]
+      *a = loop do break [*[1,2]]; end; a.should == [1,2]
+    end
+  end
+
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;assigns splatted objects to a splatted reference&quot; do
+      *a = loop do break *nil; end;      a.should == [nil]
+      *a = loop do break *[]; end;       a.should == [nil]
+      *a = loop do break *[1,2]; end;    a.should == [[1,2]]
+      *a = loop do break *[*[]]; end;    a.should == [nil]
+      *a = loop do break *[*[1,2]]; end; a.should == [[1,2]]
+      *a = loop do break *1; end;        a.should == [1]
+      *a = loop do break *[1]; end;      a.should == [1]
+      *a = loop do break *[nil]; end;    a.should == [nil]
+      *a = loop do break *[[]]; end;     a.should == [[]]
+      *a = loop do break *[*[1]]; end;   a.should == [1]
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;assigns splatted objects to a splatted reference&quot; do
+      *a = loop do break *nil; end;      a.should == []
+      *a = loop do break *[]; end;       a.should == []
+      *a = loop do break *[1,2]; end;    a.should == [1,2]
+      *a = loop do break *[*[]]; end;    a.should == []
+      *a = loop do break *[*[1,2]]; end; a.should == [1,2]
+      *a = loop do break *1; end;        a.should == [1]
+      *a = loop do break *[1]; end;      a.should == [1]
+      *a = loop do break *[nil]; end;    a.should == [nil]
+      *a = loop do break *[[]]; end;     a.should == [[]]
+      *a = loop do break *[*[1]]; end;   a.should == [1]
+    end
+  end
+
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;assigns splatted objects to a splatted reference from a splatted loop&quot; do
+      *a = *loop do break *nil; end;      a.should == [nil]
+      *a = *loop do break *[]; end;       a.should == [nil]
+      *a = *loop do break *[[]]; end;     a.should == []
+      *a = *loop do break *[*[]]; end;    a.should == [nil]
+      *a = *loop do break *1; end;        a.should == [1]
+      *a = *loop do break *[1]; end;      a.should == [1]
+      *a = *loop do break *[nil]; end;    a.should == [nil]
+      *a = *loop do break *[1,2]; end;    a.should == [1,2]
+      *a = *loop do break *[*[1]]; end;   a.should == [1]
+      *a = *loop do break *[*[1,2]]; end; a.should == [1,2]
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;assigns splatted objects to a splatted reference from a splatted loop&quot; do
+      *a = *loop do break *nil; end;      a.should == []
+      *a = *loop do break *[]; end;       a.should == []
+      *a = *loop do break *[[]]; end;     a.should == [[]]
+      *a = *loop do break *[*[]]; end;    a.should == []
+      *a = *loop do break *1; end;        a.should == [1]
+      *a = *loop do break *[1]; end;      a.should == [1]
+      *a = *loop do break *[nil]; end;    a.should == [nil]
+      *a = *loop do break *[1,2]; end;    a.should == [1,2]
+      *a = *loop do break *[*[1]]; end;   a.should == [1]
+      *a = *loop do break *[*[1,2]]; end; a.should == [1,2]
+    end
   end
 
   it &quot;assigns objects to multiple block variables&quot; do
@@ -178,40 +248,85 @@ describe &quot;Breaking out of a loop with a value&quot; do
     a,b,*c = loop do break [*[1,2]]; end; [a,b,c].should == [1,2,[]]
   end
 
-  it &quot;assigns splatted objects to multiple block variables&quot; do
-    a,b,*c = loop do break *nil; end;      [a,b,c].should == [nil,nil,[]]
-    a,b,*c = loop do break *1; end;        [a,b,c].should == [1,nil,[]]
-    a,b,*c = loop do break *[]; end;       [a,b,c].should == [nil,nil,[]]
-    a,b,*c = loop do break *[1]; end;      [a,b,c].should == [1,nil,[]]
-    a,b,*c = loop do break *[nil]; end;    [a,b,c].should == [nil,nil,[]]
-    a,b,*c = loop do break *[[]]; end;     [a,b,c].should == [nil,nil,[]]
-    a,b,*c = loop do break *[1,2]; end;    [a,b,c].should == [1,2,[]]
-    a,b,*c = loop do break *[*[]]; end;    [a,b,c].should == [nil,nil,[]]
-    a,b,*c = loop do break *[*[1]]; end;   [a,b,c].should == [1,nil,[]]
-    a,b,*c = loop do break *[*[1,2]]; end; [a,b,c].should == [1,2,[]]
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;assigns splatted objects to multiple block variables&quot; do
+      a,b,*c = loop do break *nil; end;      [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *1; end;        [a,b,c].should == [1,nil,[]]
+      a,b,*c = loop do break *[]; end;       [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[1]; end;      [a,b,c].should == [1,nil,[]]
+      a,b,*c = loop do break *[nil]; end;    [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[[]]; end;     [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[1,2]; end;    [a,b,c].should == [1,2,[]]
+      a,b,*c = loop do break *[*[]]; end;    [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[*[1]]; end;   [a,b,c].should == [1,nil,[]]
+      a,b,*c = loop do break *[*[1,2]]; end; [a,b,c].should == [1,2,[]]
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;assigns splatted objects to multiple block variables&quot; do
+      a,b,*c = loop do break *nil; end;      [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *1; end;        [a,b,c].should == [1,nil,[]]
+      a,b,*c = loop do break *[]; end;       [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[1]; end;      [a,b,c].should == [1,nil,[]]
+      a,b,*c = loop do break *[nil]; end;    [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[[]]; end;     [a,b,c].should == [[],nil,[]]
+      a,b,*c = loop do break *[1,2]; end;    [a,b,c].should == [1,2,[]]
+      a,b,*c = loop do break *[*[]]; end;    [a,b,c].should == [nil,nil,[]]
+      a,b,*c = loop do break *[*[1]]; end;   [a,b,c].should == [1,nil,[]]
+      a,b,*c = loop do break *[*[1,2]]; end; [a,b,c].should == [1,2,[]]
+    end
   end
 
-  it &quot;stops any loop type at the correct spot&quot; do
-    i = 0; loop do break i if i == 2; i+=1; end.should == 2
-    i = 0; loop do break if i == 3; i+=1; end; i.should == 3
-    i = 0; 0.upto(5) {|i| break i if i == 2 }.should == 2
-    i = 0; 0.upto(5) {|i| break if i == 3 }; i.should == 3
-    i = 0; while (i &lt; 5) do break i if i == 2 ; i+=1; end.should == 2
-    i = 0; while (i &lt; 5) do break if i == 3 ; i+=1; end; i.should == 3
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;stops any loop type at the correct spot&quot; do
+      i = 0; loop do break i if i == 2; i+=1; end.should == 2
+      i = 0; loop do break if i == 3; i+=1; end; i.should == 3
+      i = 0; 0.upto(5) {|i| break i if i == 2 }.should == 2
+      i = 0; 0.upto(5) {|i| break if i == 3 }; i.should == 3
+      i = 0; while (i &lt; 5) do break i if i == 2 ; i+=1; end.should == 2
+      i = 0; while (i &lt; 5) do break if i == 3 ; i+=1; end; i.should == 3
+    end
   end
 
-  it &quot;stops a yielded method at the correct spot&quot; do
-    def break_test()
-      yield 1
-      yield 2
-      yield 3
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;stops any loop type at the correct spot&quot; do
+      i = 0; loop do break i if i == 2; i+=1; end.should == 2
+      i = 0; loop do break if i == 3; i+=1; end; i.should == 3
+      i = 0; 0.upto(5) {|i| break i if i == 2 }.should == 2
+      i = 0; 0.upto(5) {|i| break if i == 3 }; i.should == 0
+      i = 0; while (i &lt; 5) do break i if i == 2 ; i+=1; end.should == 2
+      i = 0; while (i &lt; 5) do break if i == 3 ; i+=1; end; i.should == 3
     end
-    break_test {|i| break i if i == 2 }.should == 2
-    i = 0
-    break_test {|i| break i if i == 1 }
-    i.should == 1
   end
 
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;stops a yielded method at the correct spot&quot; do
+      def break_test()
+        yield 1
+        yield 2
+        yield 3
+      end
+      break_test {|i| break i if i == 2 }.should == 2
+      i = 0
+      break_test {|i| break i if i == 1 }
+      i.should == 1
+    end
+  end
+  
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;stops a yielded method at the correct spot&quot; do
+      def break_test()
+        yield 1
+        yield 2
+        yield 3
+      end
+      break_test {|i| break i if i == 2 }.should == 2
+      i = 0
+      break_test {|i| break i if i == 1 }
+      i.should == 0
+    end
+  end
 end
 
-language_version __FILE__, &quot;break&quot;
\ No newline at end of file
+language_version __FILE__, &quot;break&quot;</diff>
      <filename>language/break_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,22 +1,50 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
-describe &quot;The catch keyword&quot; do  
-  it &quot;only allows symbols and strings&quot; do
-    lambda { catch(:foo) {} }.should_not raise_error
-    lambda { catch(&quot;foo&quot;) {} }.should_not raise_error
-    lambda { catch 1 }.should raise_error(ArgumentError)    
-    lambda { catch Object.new }.should raise_error(TypeError)    
+describe &quot;The catch keyword&quot; do
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;only allows symbols and strings&quot; do
+      lambda { catch(:foo) {} }.should_not raise_error
+      lambda { catch(&quot;foo&quot;) {} }.should_not raise_error
+      lambda { catch(1) {} }.should raise_error(ArgumentError)
+      lambda { catch(Object.new) {} }.should raise_error(TypeError)
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;allows any object&quot; do
+      lambda { catch(:foo) {} }.should_not raise_error
+      lambda { catch(&quot;foo&quot;) {} }.should_not raise_error
+      lambda { catch(1) {} }.should_not raise_error
+      lambda { catch(Object.new) {} }.should_not raise_error
+    end
   end
 
   it &quot;returns the last value of the block if it nothing is thrown&quot; do
-    catch(:exit) do      
+    catch(:exit) do
       :noexit
     end.should == :noexit
   end
-  
-  it &quot;matches strings as symbols&quot; do
-    lambda { catch(&quot;exit&quot;) { throw :exit } }.should_not raise_error
-    lambda { catch(&quot;exit&quot;) { throw &quot;exit&quot; } }.should_not raise_error
+
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;matches strings as symbols&quot; do
+      lambda { catch(&quot;exit&quot;) { throw :exit } }.should_not raise_error
+    end
+
+    it &quot;matches strings with strings that contain the same characters&quot; do
+      lambda { catch(&quot;exit&quot;) { throw &quot;exit&quot; } }.should_not raise_error
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;does not match objects that are not exactly the same&quot; do
+      lambda { catch(&quot;exit&quot;) { throw :exit } }.should raise_error(ArgumentError)
+      lambda { catch(&quot;exit&quot;) { throw &quot;exit&quot; } }.should raise_error(ArgumentError)
+    end
+
+    it &quot;catches objects that are exactly the same&quot; do
+      lambda { catch(:exit) { throw :exit } }.should_not raise_error
+      lambda { exit = &quot;exit&quot;; catch(exit) { throw exit } }.should_not raise_error
+    end
   end
 
   it &quot;requires a block&quot; do
@@ -52,5 +80,5 @@ describe &quot;The catch keyword&quot; do
     i &lt;&lt; :a_exit
 
     i.should == [:a,:b,:b_exit,:a_exit]
-  end  
+  end
 end</diff>
      <filename>language/catch_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -138,6 +138,11 @@ describe &quot;The defined? keyword&quot; do
     ret.should == &quot;constant&quot;
   end
 
+  it &quot;returns 'constant' when defined?(::File) is sent&quot; do
+    ret = defined?(::File)
+    ret.should == &quot;constant&quot;
+  end
+
   it &quot;returns 'constant' when defined?(File::SEPARATOR) is sent&quot; do
     ret = defined?(File::SEPARATOR)
     ret.should == &quot;constant&quot;</diff>
      <filename>language/defined_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -164,22 +164,13 @@ describe &quot;A constant on an eigenclass&quot; do
     end.should raise_error(NameError)
   end
 
-  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
-    it &quot;appears in the eigenclass constant list&quot; do
-      constants = class &lt;&lt; @object; constants; end 
-      constants.should include(&quot;CONST&quot;)
-    end
-  end
-
-  ruby_version_is &quot;1.9&quot; do
-    it &quot;appears in the eigenclass constant list&quot; do
-      constants = class &lt;&lt; @object; constants; end 
-      constants.should include(:CONST)
-    end
+  it &quot;appears in the eigenclass constant list&quot; do
+    klass = class &lt;&lt; @object; self; end
+    klass.should have_constant(:CONST)
   end
 
   it &quot;does not appear in the object's class constant list&quot; do
-    @object.class.constants.should_not include(:CONST)
+    @object.class.should_not have_constant(:CONST)
   end
 
   it &quot;is not preserved when the object is duped&quot; do</diff>
      <filename>language/eigenclass_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -49,16 +49,15 @@ describe &quot;The for expression&quot; do
     n.should == 3
   end
   
-  # TODO: commented out due to a compiler error
-  #it &quot;allows a class variable as an iterator name&quot; do
-  #  m = [1,2,3]
-  #  n = 0
-  #  for @@var in m
-  #    n += 1
-  #  end
-  #  @@var.should == 3
-  #  n.should == 3
-  #end
+  it &quot;allows a class variable as an iterator name&quot; do
+    m = [1,2,3]
+    n = 0
+    for @@var in m
+      n += 1
+    end
+    @@var.should == 3
+    n.should == 3
+  end
 
   it &quot;splats multiple arguments together if there are fewer arguments than values&quot; do
     class OFor
@@ -153,4 +152,4 @@ describe &quot;The for expression&quot; do
   end
 end
 
-language_version __FILE__, &quot;for&quot;
\ No newline at end of file
+language_version __FILE__, &quot;for&quot;</diff>
      <filename>language/for_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,6 @@
 require File.dirname(__FILE__) + '/../spec_helper'
 
 describe &quot;The loop expression&quot; do
-  
   it &quot;repeats the given block until a break is called&quot; do
     outer_loop = 0
     loop do
@@ -10,7 +9,7 @@ describe &quot;The loop expression&quot; do
     end
     outer_loop.should == 10
   end
-  
+
   it &quot;executes code in its own scope&quot; do
     loop do
       inner_loop = 123
@@ -18,13 +17,13 @@ describe &quot;The loop expression&quot; do
     end
     lambda { inner_loop }.should raise_error(NameError)
   end
-  
+
   it &quot;returns the value passed to break if interrupted by break&quot; do
     loop do
       break 123
     end.should == 123
   end
-  
+
   it &quot;returns nil if interrupted by break with no arguments&quot; do
     loop do
       break
@@ -41,14 +40,14 @@ describe &quot;The loop expression&quot; do
     end
     a.should == [1, 2, 4]
   end
-  
+
   it &quot;restarts the current iteration with redo&quot; do
     a = []
     loop do
       a &lt;&lt; 1
       redo if a.size &lt; 2
       a &lt;&lt; 2
-      break if a.size == 3      
+      break if a.size == 3
     end
     a.should == [1, 1, 2]
   end
@@ -64,5 +63,5 @@ describe &quot;The loop expression&quot; do
       break if a.size &gt; 6
     end
     a.should == [1, 1, 2, 1, 2, 3, 1, 2, 3]
-  end  
+  end
 end</diff>
      <filename>language/loop_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -27,8 +27,8 @@ describe &quot;self in a metaclass body (class &lt;&lt; obj)&quot; do
     cls.is_a?(Class).should == true
     cls.should_not equal(Object)
   end
-  
-  deviates_on(:rubinius) do 
+
+  deviates_on(:rubinius) do
     it &quot;is a MetaClass instance&quot; do
       cls = class &lt;&lt; mock('x'); self; end
       cls.is_a?(MetaClass).should == true
@@ -132,8 +132,4 @@ describe &quot;A constant on a metaclass&quot; do
       CONST.should_not be_nil
     end
   end
-end
-
-
-
-
+end
\ No newline at end of file</diff>
      <filename>language/metaclass_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -642,29 +642,31 @@ describe &quot;Literal Regexps&quot; do
     2.times { /#{o}/o }
     ScratchPad.recorded.should == [:to_s_callback]
   end
+ 
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do 
+    it 'does not do thread synchronization for /o' do
+      ScratchPad.record []
+      
+      to_s_callback2 = Proc.new do
+        ScratchPad &lt;&lt; :to_s_callback2
+        &quot;class_with_to_s2&quot;
+      end
   
-  it 'does not do thread synchronization for /o' do
-    ScratchPad.record []
-    
-    to_s_callback2 = Proc.new do
-      ScratchPad &lt;&lt; :to_s_callback2
-      &quot;class_with_to_s2&quot;
-    end
-
-    to_s_callback1 = Proc.new do
-      ScratchPad &lt;&lt; :to_s_callback1
-      t2 = Thread.new do
-        o2 = LanguageSpecs::ClassWith_to_s.new(to_s_callback2)
-        ScratchPad &lt;&lt; LanguageSpecs.get_regexp_with_substitution(o2)
+      to_s_callback1 = Proc.new do
+        ScratchPad &lt;&lt; :to_s_callback1
+        t2 = Thread.new do
+          o2 = LanguageSpecs::ClassWith_to_s.new(to_s_callback2)
+          ScratchPad &lt;&lt; LanguageSpecs.get_regexp_with_substitution(o2)
+        end
+        t2.join
+        &quot;class_with_to_s1&quot;
       end
-      t2.join
-      &quot;class_with_to_s1&quot;
+      
+      o1 = LanguageSpecs::ClassWith_to_s.new(to_s_callback1)
+      ScratchPad &lt;&lt; LanguageSpecs.get_regexp_with_substitution(o1)
+  
+      ScratchPad.recorded.should == [:to_s_callback1, :to_s_callback2, /class_with_to_s2/, /class_with_to_s2/]
     end
-    
-    o1 = LanguageSpecs::ClassWith_to_s.new(to_s_callback1)
-    ScratchPad &lt;&lt; LanguageSpecs.get_regexp_with_substitution(o1)
-
-    ScratchPad.recorded.should == [:to_s_callback1, :to_s_callback2, /class_with_to_s2/, /class_with_to_s2/]
   end
   
   it 'supports modifier combinations' do
@@ -678,7 +680,7 @@ describe &quot;Literal Regexps&quot; do
   # Encodings
   #############################################################################
 
-  not_compliant_on :ruby19 do
+  not_compliant_on :ruby19, :macruby do
     it 'supports /e (EUC encoding)' do
       /./e.match(&quot;\303\251&quot;).to_a.should == [&quot;\303\251&quot;]
     end</diff>
      <filename>language/regexp_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -22,22 +22,47 @@ describe &quot;The return keyword&quot; do
     r().should be_nil
   end
 
-
   describe &quot;in a Thread&quot; do
-    it &quot;raises a ThreadError if used to exit a thread&quot; do
-      lambda { Thread.new { return }.join }.should raise_error(ThreadError)
+    ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+      it &quot;raises a ThreadError if used to exit a thread&quot; do
+        lambda { Thread.new { return }.join }.should raise_error(ThreadError)
+      end
+    end
+
+    ruby_version_is &quot;1.9&quot; do
+      it &quot;raises a LocalJumpError if used to exit a thread&quot; do
+        lambda { Thread.new { return }.join }.should raise_error(LocalJumpError)
+      end
     end
   end
 
   describe &quot;when passed a splat&quot; do
-    it &quot;returns nil when the ary is empty&quot; do
-      def r; ary = []; return *ary; end
-      r.should be_nil
+    ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+      it &quot;returns nil when the ary is empty&quot; do
+        def r; ary = []; return *ary; end
+        r.should be_nil
+      end
     end
 
-    it &quot;returns the first element when the array is size of 1&quot; do
-      def r; ary = [1]; return *ary; end
-      r.should == 1
+    ruby_version_is &quot;1.9&quot; do
+      it &quot;returns [] when the ary is empty&quot; do
+        def r; ary = []; return *ary; end
+        r.should == []
+      end
+    end
+
+    ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+      it &quot;returns the first element when the array is size of 1&quot; do
+        def r; ary = [1]; return *ary; end
+        r.should == 1
+      end
+    end
+
+    ruby_version_is &quot;1.9&quot; do
+      it &quot;returns the array when the array is size of 1&quot; do
+        def r; ary = [1]; return *ary; end
+        r.should == [1]
+      end
     end
 
     it &quot;returns the whole array when size is greater than 1&quot; do
@@ -48,34 +73,22 @@ describe &quot;The return keyword&quot; do
       r.should == [1,2,3]
     end
 
-    it &quot;returns a non-array when used as a splat&quot; do
-      def r; value = 1; return *value; end
-      r.should == 1
-    end
-
-    it &quot;calls 'to_a' on the splatted value first&quot; do
-      def r
-        obj = Object.new
-        def obj.to_a
-          []
-        end
-
-        return *obj
+    ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+      it &quot;returns a non-array when used as a splat&quot; do
+        def r; value = 1; return *value; end
+        r.should == 1
       end
+    end
 
-      r().should be_nil
-
-      def r
-        obj = Object.new
-        def obj.to_a
-          [1]
-        end
-
-        return *obj
+    ruby_version_is &quot;1.9&quot; do
+      it &quot;returns an array when used as a splat&quot; do
+        def r; value = 1; return *value; end
+        r.should == [1]
       end
+    end
 
-      r().should == 1
 
+    it &quot;calls 'to_a' on the splatted value first&quot; do
       def r
         obj = Object.new
         def obj.to_a
@@ -88,43 +101,22 @@ describe &quot;The return keyword&quot; do
       r().should == [1,2]
     end
 
-    it &quot;calls 'to_ary' on the splatted value first&quot; do
-      def r
-        obj = Object.new
-        def obj.to_ary
-          []
-        end
-
-        return *obj
-      end
-
-      r().should be_nil
-
-      def r
-        obj = Object.new
-        def obj.to_ary
-          [1]
-        end
-
-        return *obj
-      end
-
-      r().should == 1
+    ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+      it &quot;calls 'to_ary' on the splatted value first&quot; do
+        def r
+          obj = Object.new
+          def obj.to_ary
+            [1,2]
+          end
 
-      def r
-        obj = Object.new
-        def obj.to_ary
-          [1,2]
+          return *obj
         end
 
-        return *obj
+        r().should == [1,2]
       end
-
-      r().should == [1,2]
     end
   end
 
-
   describe &quot;within a begin&quot; do
     it &quot;executes ensure before returning from function&quot; do
       def f(a)
@@ -184,15 +176,16 @@ describe &quot;The return keyword&quot; do
     end
   end
 
-
   describe &quot;within a block&quot; do
     before :each do
       ScratchPad.clear
     end
 
-    it &quot;raises a LocalJumpError if there is no lexicaly enclosing method&quot; do
-      def f; yield; end
-      lambda { f { return 5 } }.should raise_error(LocalJumpError)
+    ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+      it &quot;raises a LocalJumpError if there is no lexicaly enclosing method&quot; do
+        def f; yield; end
+        lambda { f { return 5 } }.should raise_error(LocalJumpError)
+      end
     end
 
     it &quot;causes lambda to return nil if invoked without any arguments&quot; do
@@ -231,5 +224,4 @@ describe &quot;The return keyword&quot; do
       f.should be_true
     end
   end
-
 end</diff>
      <filename>language/return_spec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@ describe &quot;The throw keyword&quot; do
         throw :done if i &gt; 4
       end
       i += 1
-    end    
+    end
     i.should == 5
   end
   
@@ -27,17 +27,34 @@ describe &quot;The throw keyword&quot; do
     msg.should == nil
   end
 
-  it &quot;only allows symbols and strings as it's argument&quot; do
-    lambda { throw 1 }.should raise_error(ArgumentError)    
-    lambda { throw Object.new }.should raise_error(TypeError)    
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;only allows symbols and strings as its argument&quot; do
+      lambda { throw 1 }.should raise_error(ArgumentError)
+      lambda { throw Object.new }.should raise_error(TypeError)
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;only any object as its argument&quot; do
+      lambda { catch(1) { throw 1 } }.should_not raise_error
+      lambda { o = Object.new; catch(o) { throw o } }.should_not raise_error
+    end
   end
 
-  it &quot;converts strings to a symbol&quot; do
-    lambda { catch(:exit) { throw &quot;exit&quot; } }.should_not raise_error
-    a = &quot;exit&quot;
-    lambda { catch(:exit) { throw a } }.should_not raise_error
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;converts strings to a symbol&quot; do
+      lambda { catch(:exit) { throw &quot;exit&quot; } }.should_not raise_error
+      a = &quot;exit&quot;
+      lambda { catch(:exit) { throw a } }.should_not raise_error
+    end
   end
-    
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;does not convert strings to a symbol&quot; do
+      lambda { catch(:exit) { throw &quot;exit&quot; } }.should raise_error(ArgumentError)
+    end
+  end
+
   it &quot;unwinds stack from within a method&quot; do
     def throw_method(handler,val)
       throw handler,val
@@ -52,19 +69,42 @@ describe &quot;The throw keyword&quot; do
     c = lambda { throw :foo, :msg }
     catch(:foo) { c.call }.should == :msg
   end
-  
-  it &quot;raises a name error if outside of scope of a matching catch&quot; do    
-    lambda { throw :test,5 }.should raise_error(NameError)
-    lambda { catch(:different) { throw :test,5 } }.should raise_error(NameError)
+
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do 
+    it &quot;raises a NameError if outside of scope of a matching catch&quot; do
+      lambda { throw :test,5 }.should raise_error(NameError)
+      lambda { catch(:different) { throw :test,5 } }.should raise_error(NameError)
+    end
   end
 
-  it &quot;raises a ThreadError if used to exit a thread&quot; do
-    lambda {
-      catch(:what) do
-        Thread.new do
-          throw :what
-        end.join
-      end
-    }.should raise_error(ThreadError)
-  end    
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;raises an ArgumentError if outside of scope of a matching catch&quot; do
+      lambda { throw :test,5 }.should raise_error(ArgumentError)
+      lambda { catch(:different) { throw :test,5 } }.should raise_error(ArgumentError)
+    end
+  end
+
+  ruby_version_is &quot;&quot; ... &quot;1.9&quot; do
+    it &quot;raises a ThreadError if used to exit a thread&quot; do
+      lambda {
+        catch(:what) do
+          Thread.new do
+            throw :what
+          end.join
+        end
+      }.should raise_error(ThreadError)
+    end
+  end
+
+  ruby_version_is &quot;1.9&quot; do
+    it &quot;raises a ArgumentError if used to exit a thread&quot; do
+      lambda {
+        catch(:what) do
+          Thread.new do
+            throw :what
+          end.join
+        end
+      }.should raise_error(ArgumentError)
+    end
+  end
 end</diff>
      <filename>language/throw_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>01c957aeac4ae0fcaf7b48063f8a8e4b6c35a97e</id>
    </parent>
  </parents>
  <author>
    <name>Eloy Duran</name>
    <email>eloy.de.enige@gmail.com</email>
  </author>
  <url>http://github.com/rubyspec/rubyspec/commit/554d336fb5911e571e10cada12402a91ab5f8ac0</url>
  <id>554d336fb5911e571e10cada12402a91ab5f8ac0</id>
  <committed-date>2009-07-01T11:33:25-07:00</committed-date>
  <authored-date>2009-06-30T13:47:53-07:00</authored-date>
  <message>Updated and added a few specs in ./language/ for 1.9.

No idea why ./language/for_spec.rb was commented...?</message>
  <tree>1565c623655adb7790bb9fbe8526ddbb9daf17ed</tree>
  <committer>
    <name>Eloy Duran</name>
    <email>eloy.de.enige@gmail.com</email>
  </committer>
</commit>
