blob: 5bdd9c35e6728bf2d7a965d6dbcebac2658708ff [file]
// RUN_PIPELINE_TILL: BACKEND
// LANGUAGE: +IrIntraModuleInlinerBeforeKlibSerialization +IrCrossModuleInlinerBeforeKlibSerialization
// MODULE: lib1
// FILE: A.kt
const val JS_CODE = """
var usageOfTheFirstValue = value + 4;
var usageOfTheComplexValue = complexValue[4];
console.log("The first result is: " + firstFunction());"""
inline fun firstTest(
value: Int,
complexValue: List<Map<String, Int>>,
firstFunction: () -> Int,
secondFunction: String.(Int) -> Int,
thirdWhichWillBeShadowed: (String, String) -> String,
crossinline crossInlineOne: () -> String,
noinline noInlineOne: () -> List<Int>
) {
js(<!JS_CODE_CAPTURES_INLINABLE_FUNCTION_ERROR!>JS_CODE<!>)
js(<!JS_CODE_CAPTURES_INLINABLE_FUNCTION_ERROR!>"console.log('The second is: ' + secondFunction());"<!>)
js(<!JS_CODE_CAPTURES_INLINABLE_FUNCTION_ERROR!>"console.log('The third results is: ' + crossInlineOne());"<!>)
js("""
var thirdWhichWillBeShadowed = 44;
console.log("The valid result should be: " + noInlineOne() + ", " + thirdWhichWillBeShadowed());
""")
}
fun secondTest(
value: Int,
complexValue: List<Map<String, Int>>,
firstFunction: () -> Int,
secondFunction: String.(Int) -> Int,
thirdWhichWillBeShadowed: (String, String) -> String,
crossInlineOne: () -> String,
noInlineOne: () -> List<Int>
) {
js(JS_CODE)
js("console.log('The second is: ' + secondFunction());")
js("console.log('The third results is: ' + crossInlineOne());")
js("""
console.log("The valid result should be: " + noInlineOne() + ", " + thirdWhichWillBeShadowed());
""")
}
// MODULE: lib2
// FILE: B.kt
inline fun theOnlyFunction(
value: Int,
complexValue: List<Map<String, Int>>,
firstFunction: () -> Int,
thirdWhichWillBeShadowed: (String, String) -> String,
crossinline crossInlineOne: () -> String,
noinline noInlineOne: () -> List<Int>
) {
js("""
var usageOfTheFirstValue = value + 4;
var usageOfTheComplexValue = complexValue[4];
""")
js(<!JS_CODE_CAPTURES_INLINABLE_FUNCTION_ERROR!>"console.log('The first result is: ' + firstFunction());"<!>)
js(<!JS_CODE_CAPTURES_INLINABLE_FUNCTION_ERROR!>"console.log('The third results is: ' + crossInlineOne());"<!>)
js("""
var thirdWhichWillBeShadowed = 44;
console.log("The valid result should be: " + noInlineOne() + ", " + thirdWhichWillBeShadowed());
""")
}