mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	set svn:eol-style
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									1a4b93cf92
								
							
						
					
					
						commit
						fd81221a8e
					
				
					 81 changed files with 13317 additions and 13317 deletions
				
			
		| 
						 | 
				
			
			@ -1,429 +1,429 @@
 | 
			
		|||
require 'yarvtest/yarvtest'
 | 
			
		||||
 | 
			
		||||
class TestBlock < YarvTestBase
 | 
			
		||||
  def test_simple
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      m{
 | 
			
		||||
        1
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        ib*2
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 12345, 67890
 | 
			
		||||
      end
 | 
			
		||||
      m{|ib,jb|
 | 
			
		||||
        ib*2+jb
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param2
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = nil
 | 
			
		||||
      [iter{|a|
 | 
			
		||||
        a
 | 
			
		||||
      }, a]
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a|
 | 
			
		||||
        iter{|a|
 | 
			
		||||
          a + 1
 | 
			
		||||
        } + a
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10, 20, 30, 40
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = b = c = d = nil
 | 
			
		||||
      iter{|a, b, c, d|
 | 
			
		||||
        [a, b, c, d]
 | 
			
		||||
      } + [a, b, c, d]
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10, 20, 30, 40
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = b = nil
 | 
			
		||||
      iter{|a, b, c, d|
 | 
			
		||||
        [a, b, c, d]
 | 
			
		||||
      } + [a, b]
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10, 20, 30, 40
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = nil
 | 
			
		||||
      iter{|a, $b, @c, d|
 | 
			
		||||
        [a, $b]
 | 
			
		||||
      } + [a, $b, @c]
 | 
			
		||||
    } if false # 1.9 doesn't support expr block parameters
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param3
 | 
			
		||||
    if false
 | 
			
		||||
      # TODO: Ruby 1.9 doesn't support expr block parameter
 | 
			
		||||
      ae %q{
 | 
			
		||||
        h = {}
 | 
			
		||||
        [1].each{|h[:foo]|}
 | 
			
		||||
        h
 | 
			
		||||
      }
 | 
			
		||||
      ae %q{
 | 
			
		||||
        obj = Object.new
 | 
			
		||||
        def obj.x=(y)
 | 
			
		||||
        $ans = y
 | 
			
		||||
      end
 | 
			
		||||
      [1].each{|obj.x|}
 | 
			
		||||
        $ans
 | 
			
		||||
      }
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_blocklocal
 | 
			
		||||
    ae %q{
 | 
			
		||||
      1.times{
 | 
			
		||||
        begin
 | 
			
		||||
          a = 1
 | 
			
		||||
        ensure
 | 
			
		||||
          foo = nil
 | 
			
		||||
        end
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_simplenest
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 123
 | 
			
		||||
      end
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        m{|jb|
 | 
			
		||||
          ib*jb
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_simplenest2
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m a
 | 
			
		||||
        yield a
 | 
			
		||||
      end
 | 
			
		||||
      m(1){|ib|
 | 
			
		||||
        m(2){|jb|
 | 
			
		||||
          ib*jb
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_nest2
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      def n
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      m{
 | 
			
		||||
        n{
 | 
			
		||||
          100
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        m{|jb|
 | 
			
		||||
          i = 20
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        m{|jb|
 | 
			
		||||
          ib = 20
 | 
			
		||||
          kb = 2
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def iter1
 | 
			
		||||
        iter2{
 | 
			
		||||
          yield
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      def iter2
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      iter1{
 | 
			
		||||
        jb = 2
 | 
			
		||||
        iter1{
 | 
			
		||||
          jb = 3
 | 
			
		||||
        }
 | 
			
		||||
        jb
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def iter1
 | 
			
		||||
        iter2{
 | 
			
		||||
          yield
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      def iter2
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      iter1{
 | 
			
		||||
        jb = 2
 | 
			
		||||
        iter1{
 | 
			
		||||
          jb
 | 
			
		||||
        }
 | 
			
		||||
        jb
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_ifunc
 | 
			
		||||
    ae %q{
 | 
			
		||||
      (1..3).to_a
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ae %q{
 | 
			
		||||
      (1..3).map{|e|
 | 
			
		||||
        e * 4
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ae %q{
 | 
			
		||||
      class C
 | 
			
		||||
        include Enumerable
 | 
			
		||||
        def each
 | 
			
		||||
          [1,2,3].each{|e|
 | 
			
		||||
            yield e
 | 
			
		||||
          }
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      C.new.to_a
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ae %q{
 | 
			
		||||
      class C
 | 
			
		||||
        include Enumerable
 | 
			
		||||
        def each
 | 
			
		||||
          [1,2,3].each{|e|
 | 
			
		||||
            yield e
 | 
			
		||||
          }
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      C.new.map{|e|
 | 
			
		||||
        e + 3
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_times
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      3.times{|ib|
 | 
			
		||||
        2.times{|jb|
 | 
			
		||||
          sum += ib + jb
 | 
			
		||||
        }}
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      3.times{|bl|
 | 
			
		||||
        break 10
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_for
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      for x in [1, 2, 3]
 | 
			
		||||
        sum += x
 | 
			
		||||
      end
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      for x in (1..5)
 | 
			
		||||
        sum += x
 | 
			
		||||
      end
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      for x in []
 | 
			
		||||
        sum += x
 | 
			
		||||
      end
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      ans = []
 | 
			
		||||
      1.times{
 | 
			
		||||
        for n in 1..3
 | 
			
		||||
          a = n
 | 
			
		||||
          ans << a
 | 
			
		||||
        end
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      ans = []
 | 
			
		||||
      for m in 1..3
 | 
			
		||||
        for n in 1..3
 | 
			
		||||
          a = [m, n]
 | 
			
		||||
          ans << a
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def test_unmatched_params
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1,2,3
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|i, j|
 | 
			
		||||
        [i, j]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|i, j|
 | 
			
		||||
        [i, j]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_rest
 | 
			
		||||
    # TODO: known bug
 | 
			
		||||
    #ae %q{
 | 
			
		||||
    #  def iter
 | 
			
		||||
    #    yield 1, 2
 | 
			
		||||
    #  end
 | 
			
		||||
    #
 | 
			
		||||
    #  iter{|a, |
 | 
			
		||||
    #    [a]
 | 
			
		||||
    #  }
 | 
			
		||||
    #}
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a, *b|
 | 
			
		||||
        [a, b]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|*a|
 | 
			
		||||
        [a]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a, b, *c|
 | 
			
		||||
        [a, b, c]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a, b, c, *d|
 | 
			
		||||
        [a, b, c, d]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param_and_locals
 | 
			
		||||
    ae %q{
 | 
			
		||||
      $a = []
 | 
			
		||||
      
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      def m
 | 
			
		||||
        x = iter{|x|
 | 
			
		||||
          $a << x
 | 
			
		||||
          y = 0
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      m
 | 
			
		||||
      $a
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_c_break
 | 
			
		||||
    ae %q{
 | 
			
		||||
      [1,2,3].find{|x| x == 2}
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      class E
 | 
			
		||||
        include Enumerable
 | 
			
		||||
        def each(&block)
 | 
			
		||||
          [1, 2, 3].each(&block)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      E.new.find {|x| x == 2 }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
require 'yarvtest/yarvtest'
 | 
			
		||||
 | 
			
		||||
class TestBlock < YarvTestBase
 | 
			
		||||
  def test_simple
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      m{
 | 
			
		||||
        1
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        ib*2
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 12345, 67890
 | 
			
		||||
      end
 | 
			
		||||
      m{|ib,jb|
 | 
			
		||||
        ib*2+jb
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param2
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = nil
 | 
			
		||||
      [iter{|a|
 | 
			
		||||
        a
 | 
			
		||||
      }, a]
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a|
 | 
			
		||||
        iter{|a|
 | 
			
		||||
          a + 1
 | 
			
		||||
        } + a
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10, 20, 30, 40
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = b = c = d = nil
 | 
			
		||||
      iter{|a, b, c, d|
 | 
			
		||||
        [a, b, c, d]
 | 
			
		||||
      } + [a, b, c, d]
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10, 20, 30, 40
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = b = nil
 | 
			
		||||
      iter{|a, b, c, d|
 | 
			
		||||
        [a, b, c, d]
 | 
			
		||||
      } + [a, b]
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 10, 20, 30, 40
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      a = nil
 | 
			
		||||
      iter{|a, $b, @c, d|
 | 
			
		||||
        [a, $b]
 | 
			
		||||
      } + [a, $b, @c]
 | 
			
		||||
    } if false # 1.9 doesn't support expr block parameters
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param3
 | 
			
		||||
    if false
 | 
			
		||||
      # TODO: Ruby 1.9 doesn't support expr block parameter
 | 
			
		||||
      ae %q{
 | 
			
		||||
        h = {}
 | 
			
		||||
        [1].each{|h[:foo]|}
 | 
			
		||||
        h
 | 
			
		||||
      }
 | 
			
		||||
      ae %q{
 | 
			
		||||
        obj = Object.new
 | 
			
		||||
        def obj.x=(y)
 | 
			
		||||
        $ans = y
 | 
			
		||||
      end
 | 
			
		||||
      [1].each{|obj.x|}
 | 
			
		||||
        $ans
 | 
			
		||||
      }
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_blocklocal
 | 
			
		||||
    ae %q{
 | 
			
		||||
      1.times{
 | 
			
		||||
        begin
 | 
			
		||||
          a = 1
 | 
			
		||||
        ensure
 | 
			
		||||
          foo = nil
 | 
			
		||||
        end
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_simplenest
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 123
 | 
			
		||||
      end
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        m{|jb|
 | 
			
		||||
          ib*jb
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_simplenest2
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m a
 | 
			
		||||
        yield a
 | 
			
		||||
      end
 | 
			
		||||
      m(1){|ib|
 | 
			
		||||
        m(2){|jb|
 | 
			
		||||
          ib*jb
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_nest2
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      def n
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      m{
 | 
			
		||||
        n{
 | 
			
		||||
          100
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        m{|jb|
 | 
			
		||||
          i = 20
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def m
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      m{|ib|
 | 
			
		||||
        m{|jb|
 | 
			
		||||
          ib = 20
 | 
			
		||||
          kb = 2
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def iter1
 | 
			
		||||
        iter2{
 | 
			
		||||
          yield
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      def iter2
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      iter1{
 | 
			
		||||
        jb = 2
 | 
			
		||||
        iter1{
 | 
			
		||||
          jb = 3
 | 
			
		||||
        }
 | 
			
		||||
        jb
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
    
 | 
			
		||||
    ae %q(
 | 
			
		||||
      def iter1
 | 
			
		||||
        iter2{
 | 
			
		||||
          yield
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      def iter2
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      iter1{
 | 
			
		||||
        jb = 2
 | 
			
		||||
        iter1{
 | 
			
		||||
          jb
 | 
			
		||||
        }
 | 
			
		||||
        jb
 | 
			
		||||
      }
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_ifunc
 | 
			
		||||
    ae %q{
 | 
			
		||||
      (1..3).to_a
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ae %q{
 | 
			
		||||
      (1..3).map{|e|
 | 
			
		||||
        e * 4
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ae %q{
 | 
			
		||||
      class C
 | 
			
		||||
        include Enumerable
 | 
			
		||||
        def each
 | 
			
		||||
          [1,2,3].each{|e|
 | 
			
		||||
            yield e
 | 
			
		||||
          }
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      C.new.to_a
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ae %q{
 | 
			
		||||
      class C
 | 
			
		||||
        include Enumerable
 | 
			
		||||
        def each
 | 
			
		||||
          [1,2,3].each{|e|
 | 
			
		||||
            yield e
 | 
			
		||||
          }
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      C.new.map{|e|
 | 
			
		||||
        e + 3
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_times
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      3.times{|ib|
 | 
			
		||||
        2.times{|jb|
 | 
			
		||||
          sum += ib + jb
 | 
			
		||||
        }}
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      3.times{|bl|
 | 
			
		||||
        break 10
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_for
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      for x in [1, 2, 3]
 | 
			
		||||
        sum += x
 | 
			
		||||
      end
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      for x in (1..5)
 | 
			
		||||
        sum += x
 | 
			
		||||
      end
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      sum = 0
 | 
			
		||||
      for x in []
 | 
			
		||||
        sum += x
 | 
			
		||||
      end
 | 
			
		||||
      sum
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      ans = []
 | 
			
		||||
      1.times{
 | 
			
		||||
        for n in 1..3
 | 
			
		||||
          a = n
 | 
			
		||||
          ans << a
 | 
			
		||||
        end
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      ans = []
 | 
			
		||||
      for m in 1..3
 | 
			
		||||
        for n in 1..3
 | 
			
		||||
          a = [m, n]
 | 
			
		||||
          ans << a
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
  
 | 
			
		||||
  def test_unmatched_params
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1,2,3
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|i, j|
 | 
			
		||||
        [i, j]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|i, j|
 | 
			
		||||
        [i, j]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_rest
 | 
			
		||||
    # TODO: known bug
 | 
			
		||||
    #ae %q{
 | 
			
		||||
    #  def iter
 | 
			
		||||
    #    yield 1, 2
 | 
			
		||||
    #  end
 | 
			
		||||
    #
 | 
			
		||||
    #  iter{|a, |
 | 
			
		||||
    #    [a]
 | 
			
		||||
    #  }
 | 
			
		||||
    #}
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a, *b|
 | 
			
		||||
        [a, b]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|*a|
 | 
			
		||||
        [a]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a, b, *c|
 | 
			
		||||
        [a, b, c]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1, 2
 | 
			
		||||
      end
 | 
			
		||||
 | 
			
		||||
      iter{|a, b, c, *d|
 | 
			
		||||
        [a, b, c, d]
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_param_and_locals
 | 
			
		||||
    ae %q{
 | 
			
		||||
      $a = []
 | 
			
		||||
      
 | 
			
		||||
      def iter
 | 
			
		||||
        yield 1
 | 
			
		||||
      end
 | 
			
		||||
      
 | 
			
		||||
      def m
 | 
			
		||||
        x = iter{|x|
 | 
			
		||||
          $a << x
 | 
			
		||||
          y = 0
 | 
			
		||||
        }
 | 
			
		||||
      end
 | 
			
		||||
      m
 | 
			
		||||
      $a
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def test_c_break
 | 
			
		||||
    ae %q{
 | 
			
		||||
      [1,2,3].find{|x| x == 2}
 | 
			
		||||
    }
 | 
			
		||||
    ae %q{
 | 
			
		||||
      class E
 | 
			
		||||
        include Enumerable
 | 
			
		||||
        def each(&block)
 | 
			
		||||
          [1, 2, 3].each(&block)
 | 
			
		||||
        end
 | 
			
		||||
      end
 | 
			
		||||
      E.new.find {|x| x == 2 }
 | 
			
		||||
    }
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue