// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

package lambdas_kstyle_captures

fun consume(l: () -> String) = l()

fun main(args: Array<String>) {
  test()
}

private fun test() {
  test1(1, 2, 3, "A", "B", "C", D("x"), D("y"), D("z"), 7, 8, 9)
  test2(true, 10, '*', 20, 30, 40, 50.0f, 60.0, D("D"), "S", null, 70)
}

data class D(val d: String)

private fun test1(
  i1: Int,
  i2: Int,
  i3: Int,
  s1: String,
  s2: String,
  s3: String,
  d1: D,
  d2: D,
  d3: D,
  o1: Int?,
  o2: Int?,
  o3: Int?,
) {
  println(consume { "a: $i1 $i2 $i3" })
  println(consume { "b: $i2 $i3 $i1" })
  println(consume { "c: $i3 $i1 $i2" })

  println(consume { "d: $i1 $s1 $d1" })
  println(consume { "e: $i2 $d2 $s2" })
  println(consume { "f: $i3 $d3 $d1" })
  println(consume { "g: $o1 $d3 $i3" })
  println(consume { "h: $o2 $o3 $i1" })

  println(consume { "i: $s1 $s2 $s3" })
  println(consume { "j: $d1 $d2 $d3" })
  println(consume { "k: $o1 $o2 $o3" })
  println(consume { "l: $s1 $d2 $o3" })
  println(consume { "n: $o1 $s2 $d3" })
  println(consume { "o: $d1 $o2 $s3" })

  println(consume { "p: $i1 $i2 $s3" })
}

private fun test2(
  z: Boolean,
  b: Byte,
  c: Char,
  s: Short,
  i: Int,
  l: Long,
  f: Float,
  d: Double,
  o1: D,
  o2: String,
  o3: Any?,
  o4: Byte?,
) {
  println(consume { "a: $z $b $c $s $i $l $f $d $o1 $o2 $o3 $o4" })
  println(consume { "a: $z $b $o1 $o2 $c $s $i $l $f $d $o3 $o4" })
  println(consume { "a: $z $c $s $l $f $d $o2 $o3 $o4 $b $i $o1" })
  println(consume { "a: $o1 $o2 $o3 $o4 $z $b $c $s $i $l $f $d" })

  println(consume { "a: $z $b $c $s $i $l $f $d $o1 $o2 \$o3 \$o4" })
  println(consume { "a: $z $b $c $s $i $l $f $d $o1 \$o2 \$o3 $o4" })
  println(consume { "a: $z $b $c $s $i $l $f $d \$o1 \$o2 $o3 $o4" })
  println(consume { "a: $z $b $c $s $i $l $f $d \$o1 $o2 $o3 \$o4" })

  println(consume { "x: $z $b $c $s $i $l $f $d $o1 $o2 \$o3 $o4" })
  println(consume { "y: $z $b $c $s $i $l \$f $d $o1 $o2 $o3 $o4" })
  println(consume { "z: $z $b $c \$s $i $l $f $d $o1 $o2 $o3 $o4" })
}
