Edit

kc3-lang/kc3/test/ikc3/while.kc3

Branch :

  • test/ikc3/while.kc3
  • quote while false do
      puts("This should not print")
    end
    while false do
      puts("This should not print")
    end
    quote while (false) do
      puts("This should not print with parens")
    end
    while (false) do
      puts("This should not print with parens")
    end
    quote do
      i = 0
      while (i < 3) do
        puts(i)
        i = i + 1
      end
      i
    end
    do
      i = 0
      while (i < 3) do
        puts(i)
        i = i + 1
      end
      i
    end
    quote do
      i = 0
      while i < 3 do
        puts(i)
        i = i + 1
      end
      i
    end
    do
      i = 0
      while i < 3 do
        puts(i)
        i = i + 1
      end
      i
    end
    quote do
      sum = 0
      i = 1
      while (i <= 5) do
        sum = sum + i
        i = i + 1
      end
      sum
    end
    do
      sum = 0
      i = 1
      while (i <= 5) do
        sum = sum + i
        i = i + 1
      end
      sum
    end
    quote do
      sum = 0
      i = 1
      while i <= 5 do
        sum = sum + i
        i = i + 1
      end
      sum
    end
    do
      sum = 0
      i = 1
      while i <= 5 do
        sum = sum + i
        i = i + 1
      end
      sum
    end
    quote do
      x = 10
      while (x > 0) do
        if x == 5 do
          break
        end
        puts(x)
        x = x - 1
      end
      x
    end
    do
      x = 10
      while (x > 0) do
        if x == 5 do
          break
        end
        puts(x)
        x = x - 1
      end
      x
    end
    quote do
      x = 10
      while x > 0 do
        if x == 5 do
          break
        end
        puts(x)
        x = x - 1
      end
      x
    end
    do
      x = 10
      while x > 0 do
        if x == 5 do
          break
        end
        puts(x)
        x = x - 1
      end
      x
    end
    quote do
      result = []
      i = 0
      while (i < 3) do
        result = [i | result]
        i = i + 1
      end
      result
    end
    do
      result = []
      i = 0
      while (i < 3) do
        result = [i | result]
        i = i + 1
      end
      result
    end
    quote do
      result = []
      i = 0
      while i < 3 do
        result = [i | result]
        i = i + 1
      end
      result
    end
    do
      result = []
      i = 0
      while i < 3 do
        result = [i | result]
        i = i + 1
      end
      result
    end
    quote do
      i = 0
      result = []
      while i < 10 do
        i = i + 1
        if i mod 2 == 0 do
          continue
        end
        result = [i | result]
      end
      result
    end
    do
      i = 0
      result = []
      while i < 10 do
        i = i + 1
        if i mod 2 == 0 do
          continue
        end
        result = [i | result]
      end
      result
    end
    quote do
      result = []
      i = 0
      while i < 10 do
        i = i + 1
        if i mod 2 == 0 do
          continue
        end
        if i > 7 do
          break
        end
        result = [i | result]
      end
      result
    end
    do
      result = []
      i = 0
      while i < 10 do
        i = i + 1
        if i mod 2 == 0 do
          continue
        end
        if i > 7 do
          break
        end
        result = [i | result]
      end
      result
    end
    block :test do
      i = 0
      while i < 10 do
        puts("loop #{i}")
        i = i + 1
        if i == 4 do
          return :ok
        end
      end
      :failed
    end
    quote block :unwind_test do
      unwind_protect(
        do
          i = 0
          while i < 5 do
            puts("unwind loop #{i}")
            i = i + 1
            if i == 3 do
              return "early exit"
            end
          end
          "normal completion"
        end,
        puts("cleanup executed")
      )
    end
    block :unwind_test do
      unwind_protect(
        do
          i = 0
          while i < 5 do
            puts("unwind loop #{i}")
            i = i + 1
            if i == 3 do
              return "early exit"
            end
          end
          "normal completion"
        end,
        puts("cleanup executed")
      )
    end