xref: /aosp_15_r20/external/bazelbuild-kotlin-rules/tests/jvm/java/ijar/InlineInnerClass.kt (revision 3a22c0a33dd99bcca39a024d43e6fbcc55c2806e)
1 /*
2  * * Copyright 2022 Google LLC. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package ijar
18 
19 import java.util.function.Function
20 
21 // kotlinc requires the anonymous inner class of this function to be on the classpath in order to
22 // inline this function.
appendernull23 inline fun appender(append: String): Function<String, String> {
24   return object : Function<String, String> {
25     override fun apply(arg: String) = arg + append
26   }
27 }
28 
29 // Additional regression test for https://youtrack.jetbrains.net/issue/KT-29471
appendernull30 inline fun appender(crossinline init: () -> String): Function<String, String> {
31   return object : Function<String, String> {
32     private val base = init()
33     override fun apply(arg: String) = base + arg
34   }
35 }
36