| // 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_generics |
| |
| private var COUNT = 11 |
| |
| private fun next() = "${COUNT++}" |
| |
| data class Alpha(val id: String = next()) |
| |
| data class Beta(val id: String = next()) |
| |
| data class Gamma<out T>(val payload: T?, val id: String = next()) |
| |
| fun <T> consume(t: T, l: (t: T) -> String) = l(t) |
| |
| fun main(args: Array<String>) { |
| println(consume(Any(), { "${Alpha()}" })) |
| println(consume(Any(), { "${Beta()}" })) |
| println(consume(Any(), { "${Gamma("{any}")}" })) |
| println(consume(Alpha(), { "$it" })) |
| |
| testFirst(11) |
| testSecond(22) |
| testThird() |
| } |
| |
| private fun testFirst(sh: Short) { |
| val prefix = "First" |
| println(consume(Beta(), { "$prefix-1-$it" })) |
| println(consume(Beta(), { "$prefix-2-$it" })) |
| println(consume(Beta(), { "$prefix-3-$it" })) |
| println(consume(Gamma(next()), { "$prefix-A-$it-$sh" })) |
| println(consume(Gamma(next()), { "$prefix-B-$it-$sh" })) |
| println(consume(Gamma(next()), { "$prefix-C-$it-$sh" })) |
| println(consume(Gamma(COUNT++), { "$prefix-D-$it-$sh" })) |
| println(consume(Gamma(COUNT++), { "$prefix-E-$it-$sh" })) |
| println(consume(Gamma(COUNT++), { "$prefix-F-$it-$sh" })) |
| } |
| |
| private fun testSecond(sh: Short) { |
| val prefix = "Second" |
| println(consume(Beta(), { "$prefix-1-$it" })) |
| println(consume(Beta(), { "$prefix-2-$it" })) |
| println(consume(Beta(), { "$prefix-3-$it" })) |
| println(consume(Gamma(next()), { "$prefix-A-$it-$sh" })) |
| println(consume(Gamma(next()), { "$prefix-B-$it-$sh" })) |
| println(consume(Gamma(next()), { "$prefix-C-$it-$sh" })) |
| println(consume(Gamma(COUNT++), { "$prefix-D-$it-$sh" })) |
| println(consume(Gamma(COUNT++), { "$prefix-E-$it-$sh" })) |
| println(consume(Gamma(COUNT++), { "$prefix-F-$it-$sh" })) |
| } |
| |
| private fun testThird() { |
| println(consume(4321, { "$it ${next()} ${next()} ${next()}" })) |
| println(consume(1234, { "$it ${Alpha()} ${Beta()} ${Gamma(next())}" })) |
| } |
| |