From c724ca943d9b7f732262c2e0b6e0da6edc7afd3a Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Fri, 8 Apr 2022 01:30:37 +0200 Subject: [PATCH] test: add labels and breaks count tests. --- .../testData/box/inline/anonymousFunction.kt | 2 ++ .../box/inline/anonymousObjectInlineMethod.kt | 2 ++ .../testData/box/inline/arrayLiteralAliasing.kt | 2 ++ js/js.translator/testData/box/inline/astCopy.kt | 2 ++ .../testData/box/inline/callFunction.kt | 2 ++ .../testData/box/inline/classObject.kt | 6 ++++++ .../inline/continueInLoopWithInlinableCondition.kt | 2 ++ .../box/inline/crossModuleUnsignedLiterals.kt | 2 ++ .../testData/box/inline/dontInlineFunctionCall.kt | 2 ++ .../box/inline/expressionBodyWithLambdaCall.kt | 2 ++ .../box/inline/extensionWithManyArguments.kt | 2 ++ .../testData/box/inline/fakeOverrideInlining.kt | 2 ++ .../box/inline/fakeOverrideInliningCrossModule.kt | 3 +++ .../box/inline/faultyRedundantCallElimination.kt | 2 ++ .../testData/box/inline/identityEquals.kt | 2 ++ .../testData/box/inline/incrementProperty.kt | 2 ++ .../box/inline/inlineCallInsideStringTemplate.kt | 2 ++ .../testData/box/inline/inlineCallNoInline.kt | 2 ++ .../testData/box/inline/inlineChain.kt | 2 ++ .../testData/box/inline/inlineChainCrossModule.kt | 2 ++ .../box/inline/inlineChainWithFewStatements.kt | 3 +++ .../testData/box/inline/inlineDefaultArgument.kt | 4 ++++ .../testData/box/inline/inlineFunctionInLambda.kt | 2 ++ .../testData/box/inline/inlineGenericSimple.kt | 4 ++++ js/js.translator/testData/box/inline/inlineIf.kt | 9 +++++++++ .../testData/box/inline/inlineImportNameClash.kt | 2 ++ .../box/inline/inlineInInlineWithLambda.kt | 2 ++ .../box/inline/inlineInInlineWithLambdaPrivate.kt | 2 ++ js/js.translator/testData/box/inline/inlineInc.kt | 2 ++ .../testData/box/inline/inlineIntSimple.kt | 6 ++++++ .../testData/box/inline/inlineLambdaNoCapture.kt | 2 ++ .../testData/box/inline/inlineLambdaWithCapture.kt | 2 ++ .../testData/box/inline/inlineMethod.kt | 2 ++ .../testData/box/inline/inlineNoReturn.kt | 2 ++ .../testData/box/inline/inlineOrder.kt | 4 ++++ .../testData/box/inline/inlineSimpleAssignment.kt | 2 ++ .../box/inline/inlinedObjectLiteralIsCheck.kt | 2 ++ .../testData/box/inline/invokeOnField.kt | 4 ++++ .../box/inline/iteratorOnInlineFunctionResult.kt | 2 ++ js/js.translator/testData/box/inline/jsCode.kt | 2 ++ .../testData/box/inline/jsCodeVarDeclared.kt | 2 ++ .../testData/box/inline/lambdaInLambda.kt | 2 ++ .../testData/box/inline/lambdaReassignment.kt | 2 ++ .../box/inline/lambdaReassignmentWithCapture.kt | 2 ++ .../testData/box/inline/lastLabeledReturn.kt | 2 ++ .../testData/box/inline/localDeclarationsClash.kt | 2 ++ .../box/inline/localInlineExtensionFunction.kt | 4 ++++ .../testData/box/inline/localInlineFunction.kt | 4 ++++ .../box/inline/localInlineFunctionComplex.kt | 2 ++ .../inline/localInlineFunctionDeclaredInLambda.kt | 4 ++++ .../box/inline/localInlineFunctionNameClash.kt | 2 ++ .../testData/box/inline/multiDeclaration.kt | 2 ++ .../testData/box/inline/noInlineLambda.kt | 2 ++ js/js.translator/testData/box/inline/operators.kt | 2 ++ js/js.translator/testData/box/inline/params.kt | 8 ++++++++ .../testData/box/inline/privateProperty.kt | 2 ++ js/js.translator/testData/box/inline/safeCall.kt | 2 ++ .../inline/sameNameOfDeclarationsInSameModule.kt | 2 ++ .../testData/box/inline/severalClosures.kt | 6 ++++++ .../testData/box/inline/severalUsage.kt | 3 ++- .../testData/box/inline/simpleDouble.kt | 14 ++++++++++++++ js/js.translator/testData/box/inline/simpleEnum.kt | 2 ++ js/js.translator/testData/box/inline/simpleInt.kt | 14 ++++++++++++++ .../testData/box/inline/simpleLambda.kt | 4 ++++ .../testData/box/inline/simpleObject.kt | 14 ++++++++++++++ .../inline/simpleReturnFunctionWithResultUnused.kt | 2 ++ .../testData/box/inline/statementsAfterReturn.kt | 2 ++ .../testData/box/inline/thisLiteralAliasing.kt | 2 ++ js/js.translator/testData/box/inline/vararg.kt | 2 ++ 69 files changed, 217 insertions(+), 1 deletion(-) diff --git a/js/js.translator/testData/box/inline/anonymousFunction.kt b/js/js.translator/testData/box/inline/anonymousFunction.kt index 1b1f3277dc3..3a8507b071b 100644 --- a/js/js.translator/testData/box/inline/anonymousFunction.kt +++ b/js/js.translator/testData/box/inline/anonymousFunction.kt @@ -5,6 +5,8 @@ package foo inline fun block(f: () -> T): T = f() +// CHECK_BREAKS_COUNT: function=test count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test() = block(fun(): Int { return 23 }) fun box(): String { diff --git a/js/js.translator/testData/box/inline/anonymousObjectInlineMethod.kt b/js/js.translator/testData/box/inline/anonymousObjectInlineMethod.kt index 81c41fcd714..e7217aa7326 100644 --- a/js/js.translator/testData/box/inline/anonymousObjectInlineMethod.kt +++ b/js/js.translator/testData/box/inline/anonymousObjectInlineMethod.kt @@ -1,6 +1,8 @@ // EXPECTED_REACHABLE_NODES: 1287 package foo +// CHECK_BREAKS_COUNT: function=add count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=add name=$l$block count=0 TARGET_BACKENDS=JS_IR fun add(a: Int, b: Int): Int { val o = object { inline fun add(a: Int, b: Int): Int = a + b diff --git a/js/js.translator/testData/box/inline/arrayLiteralAliasing.kt b/js/js.translator/testData/box/inline/arrayLiteralAliasing.kt index 73e781b491e..4bc109989e2 100644 --- a/js/js.translator/testData/box/inline/arrayLiteralAliasing.kt +++ b/js/js.translator/testData/box/inline/arrayLiteralAliasing.kt @@ -47,6 +47,8 @@ inline fun moveTo(source: Array, sink: Array): PairArray { return PairArray(source, sink) } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val expected = PairArray(arrayOf(), arrayOf(1,2,3,4)) assertTrue(expected.deepEquals(moveTo(arrayOf(3, 4), arrayOf(1, 2)))) diff --git a/js/js.translator/testData/box/inline/astCopy.kt b/js/js.translator/testData/box/inline/astCopy.kt index 559df55634f..b3a83c3f194 100644 --- a/js/js.translator/testData/box/inline/astCopy.kt +++ b/js/js.translator/testData/box/inline/astCopy.kt @@ -67,6 +67,8 @@ fun syntaxTest() { syntaxTestInline() } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { syntaxTest() return "OK" diff --git a/js/js.translator/testData/box/inline/callFunction.kt b/js/js.translator/testData/box/inline/callFunction.kt index 7c4bb3fa8b7..1b6f5a5911f 100644 --- a/js/js.translator/testData/box/inline/callFunction.kt +++ b/js/js.translator/testData/box/inline/callFunction.kt @@ -33,6 +33,8 @@ fun callLocalExtension(a: Int): String { return Boo().call(a) } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { var result = call(1) if (result != "call(1)") return "fail1: $result" diff --git a/js/js.translator/testData/box/inline/classObject.kt b/js/js.translator/testData/box/inline/classObject.kt index 5e78e81b650..33c3ec6c578 100644 --- a/js/js.translator/testData/box/inline/classObject.kt +++ b/js/js.translator/testData/box/inline/classObject.kt @@ -23,15 +23,21 @@ class InlineAll { } } +// CHECK_BREAKS_COUNT: function=testClassObjectCall count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testClassObjectCall name=$l$block count=0 TARGET_BACKENDS=JS_IR fun testClassObjectCall(): String { return InlineAll.inline({"classobject"}) } +// CHECK_BREAKS_COUNT: function=testInstanceCall count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testInstanceCall name=$l$block count=0 TARGET_BACKENDS=JS_IR fun testInstanceCall(): String { val inlineX = InlineAll() return inlineX.inline({"instance"}) } +// CHECK_BREAKS_COUNT: function=testPackageCall count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testPackageCall name=$l$block count=0 TARGET_BACKENDS=JS_IR fun testPackageCall(): String { return inline({"package"}) } diff --git a/js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt b/js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt index be6ddf1f2bd..e33024d6dae 100644 --- a/js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt +++ b/js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt @@ -6,6 +6,8 @@ package foo inline fun condition() = false +// CHECK_BREAKS_COUNT: function=run count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=run name=$block count=0 TARGET_BACKENDS=JS_IR fun run(x: Boolean): String { var y = 0 do { diff --git a/js/js.translator/testData/box/inline/crossModuleUnsignedLiterals.kt b/js/js.translator/testData/box/inline/crossModuleUnsignedLiterals.kt index 39f0956abc2..dfe76c046ea 100644 --- a/js/js.translator/testData/box/inline/crossModuleUnsignedLiterals.kt +++ b/js/js.translator/testData/box/inline/crossModuleUnsignedLiterals.kt @@ -11,6 +11,8 @@ inline fun tenULong() = 10UL // MODULE: main(lib) // FILE: main.kt +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { if (tenUInt() != 10U) return "fail 1" diff --git a/js/js.translator/testData/box/inline/dontInlineFunctionCall.kt b/js/js.translator/testData/box/inline/dontInlineFunctionCall.kt index 3c21b1da460..5a7701c81c8 100644 --- a/js/js.translator/testData/box/inline/dontInlineFunctionCall.kt +++ b/js/js.translator/testData/box/inline/dontInlineFunctionCall.kt @@ -5,6 +5,8 @@ inline fun block(p: () -> Int) = p() fun createFunction(x: Int): () -> Int = { x } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { assertEquals(23, block(createFunction(23))) return "OK" diff --git a/js/js.translator/testData/box/inline/expressionBodyWithLambdaCall.kt b/js/js.translator/testData/box/inline/expressionBodyWithLambdaCall.kt index b95750302b5..1bc2b01f76d 100644 --- a/js/js.translator/testData/box/inline/expressionBodyWithLambdaCall.kt +++ b/js/js.translator/testData/box/inline/expressionBodyWithLambdaCall.kt @@ -8,6 +8,8 @@ package foo // It's important, that the body is just `return fn()`. internal inline fun evaluate(fn: ()->T): T = fn() +// CHECK_BREAKS_COUNT: function=test count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun test(n: Int): Int { return evaluate { var i = n diff --git a/js/js.translator/testData/box/inline/extensionWithManyArguments.kt b/js/js.translator/testData/box/inline/extensionWithManyArguments.kt index 31fe9e15904..cfe5a22ec26 100644 --- a/js/js.translator/testData/box/inline/extensionWithManyArguments.kt +++ b/js/js.translator/testData/box/inline/extensionWithManyArguments.kt @@ -7,6 +7,8 @@ internal class A(val a: Int) internal inline fun with2(receiver: T, arg1: R, arg2: R, f: T.(R, R) -> R): R = receiver.f(arg1, arg2) +// CHECK_BREAKS_COUNT: function=myMultiply count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=myMultiply name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun myMultiply(a: Int, b: Int, c: Int): Int = with2(A(a), b, c) { x, y -> a*x*y } fun box(): String { diff --git a/js/js.translator/testData/box/inline/fakeOverrideInlining.kt b/js/js.translator/testData/box/inline/fakeOverrideInlining.kt index c8d65762b08..0605ad2b405 100644 --- a/js/js.translator/testData/box/inline/fakeOverrideInlining.kt +++ b/js/js.translator/testData/box/inline/fakeOverrideInlining.kt @@ -2,6 +2,8 @@ inline fun foo() = (object : II {}).ok() +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box() = foo() interface I { diff --git a/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt b/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt index 4de6b91326a..e6d3ae3ce19 100644 --- a/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt +++ b/js/js.translator/testData/box/inline/fakeOverrideInliningCrossModule.kt @@ -16,6 +16,9 @@ inline fun bar() = foo() // MODULE: main(libB) // FILE: main.kt + +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box() = bar() diff --git a/js/js.translator/testData/box/inline/faultyRedundantCallElimination.kt b/js/js.translator/testData/box/inline/faultyRedundantCallElimination.kt index 80288c80fd6..bc8841804e5 100644 --- a/js/js.translator/testData/box/inline/faultyRedundantCallElimination.kt +++ b/js/js.translator/testData/box/inline/faultyRedundantCallElimination.kt @@ -23,4 +23,6 @@ inline fun K(a: A) = a.foo.call(a, "K") val a = A +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box() = O() + K(a) \ No newline at end of file diff --git a/js/js.translator/testData/box/inline/identityEquals.kt b/js/js.translator/testData/box/inline/identityEquals.kt index bff47ae37fc..686e7e8a9a0 100644 --- a/js/js.translator/testData/box/inline/identityEquals.kt +++ b/js/js.translator/testData/box/inline/identityEquals.kt @@ -11,6 +11,8 @@ inline fun compare2(a1: A, a2: A): Boolean { return a1 === a2 } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { assertEquals(true, compare1(A()), "compare1(A())") assertEquals(false, compare2(A(), A()), "compare2(A(), A())") diff --git a/js/js.translator/testData/box/inline/incrementProperty.kt b/js/js.translator/testData/box/inline/incrementProperty.kt index dfe0aa6536a..29e4eac34de 100644 --- a/js/js.translator/testData/box/inline/incrementProperty.kt +++ b/js/js.translator/testData/box/inline/incrementProperty.kt @@ -12,6 +12,8 @@ inline fun inc(countable: Countable) = countable.count++ inline fun run(func: () -> Unit) = func() +// CHECK_BREAKS_COUNT: function=incNoInline count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=incNoInline name=$l$block count=0 TARGET_BACKENDS=JS_IR fun incNoInline(countable: Countable) = run { inc(countable) } fun box(): String { diff --git a/js/js.translator/testData/box/inline/inlineCallInsideStringTemplate.kt b/js/js.translator/testData/box/inline/inlineCallInsideStringTemplate.kt index e1a6f2b3aeb..9bde3977d39 100644 --- a/js/js.translator/testData/box/inline/inlineCallInsideStringTemplate.kt +++ b/js/js.translator/testData/box/inline/inlineCallInsideStringTemplate.kt @@ -3,6 +3,8 @@ package foo inline fun foo(): Any? = "foo()" +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { assertEquals("foo()", "${foo()}") assertEquals("aaa foo() bb", "aaa ${foo()} bb") diff --git a/js/js.translator/testData/box/inline/inlineCallNoInline.kt b/js/js.translator/testData/box/inline/inlineCallNoInline.kt index 09c30e308ab..720d67d0321 100644 --- a/js/js.translator/testData/box/inline/inlineCallNoInline.kt +++ b/js/js.translator/testData/box/inline/inlineCallNoInline.kt @@ -23,6 +23,8 @@ inline fun sumEvenInRange(a: Int, b: Int): Int { return c } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val sum6 = sumEvenInRange(1, 5) assertEquals(6, sum6) diff --git a/js/js.translator/testData/box/inline/inlineChain.kt b/js/js.translator/testData/box/inline/inlineChain.kt index 7a012cef08c..bb0364931dc 100644 --- a/js/js.translator/testData/box/inline/inlineChain.kt +++ b/js/js.translator/testData/box/inline/inlineChain.kt @@ -15,6 +15,8 @@ internal inline fun inline3(a: Int): Int { return inline1(a) * inline2(a) } +// CHECK_BREAKS_COUNT: function=squareMultipliedByTwo count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=squareMultipliedByTwo name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun squareMultipliedByTwo(a: Int): Int { return inline3(a) } diff --git a/js/js.translator/testData/box/inline/inlineChainCrossModule.kt b/js/js.translator/testData/box/inline/inlineChainCrossModule.kt index 7a86e094ae6..e4684acf50f 100644 --- a/js/js.translator/testData/box/inline/inlineChainCrossModule.kt +++ b/js/js.translator/testData/box/inline/inlineChainCrossModule.kt @@ -20,4 +20,6 @@ inline fun foo()= baz() // MODULE: main(mid) // FILE: main.kt +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box() = foo() \ No newline at end of file diff --git a/js/js.translator/testData/box/inline/inlineChainWithFewStatements.kt b/js/js.translator/testData/box/inline/inlineChainWithFewStatements.kt index 20be2efea71..509a1a079c4 100644 --- a/js/js.translator/testData/box/inline/inlineChainWithFewStatements.kt +++ b/js/js.translator/testData/box/inline/inlineChainWithFewStatements.kt @@ -20,6 +20,9 @@ internal inline fun inline3(a: Int): Int { return i1 } +// CHECK_BREAKS_COUNT: function=squareMultipliedByTwo count=2 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=squareMultipliedByTwo name=$l$block count=1 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=squareMultipliedByTwo name=$l$block_0 count=1 TARGET_BACKENDS=JS_IR internal fun squareMultipliedByTwo(a: Int): Int { return inline3(a) } diff --git a/js/js.translator/testData/box/inline/inlineDefaultArgument.kt b/js/js.translator/testData/box/inline/inlineDefaultArgument.kt index f10df54e86c..aa12ae580fa 100644 --- a/js/js.translator/testData/box/inline/inlineDefaultArgument.kt +++ b/js/js.translator/testData/box/inline/inlineDefaultArgument.kt @@ -8,10 +8,14 @@ internal inline fun sum(a: Int, b: Int = 0): Int { return a + b } +// CHECK_BREAKS_COUNT: function=identity count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=identity name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun identity(a: Int): Int { return sum(a) } +// CHECK_BREAKS_COUNT: function=sumNoInline count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=sumNoInline name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun sumNoInline(a: Int, b: Int): Int { return sum(a, b) } diff --git a/js/js.translator/testData/box/inline/inlineFunctionInLambda.kt b/js/js.translator/testData/box/inline/inlineFunctionInLambda.kt index 315fc79f8e0..0141c7ace20 100644 --- a/js/js.translator/testData/box/inline/inlineFunctionInLambda.kt +++ b/js/js.translator/testData/box/inline/inlineFunctionInLambda.kt @@ -11,6 +11,8 @@ internal inline fun doNothing2(a: T, f: (T) -> T): T { return f(a) } +// CHECK_BREAKS_COUNT: function=doNothingNoInline count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=doNothingNoInline name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun doNothingNoInline(a: Int): Int { return doNothing2(a, { x -> doNothing1(x)}) } diff --git a/js/js.translator/testData/box/inline/inlineGenericSimple.kt b/js/js.translator/testData/box/inline/inlineGenericSimple.kt index a72ba61af32..78c35be93d4 100644 --- a/js/js.translator/testData/box/inline/inlineGenericSimple.kt +++ b/js/js.translator/testData/box/inline/inlineGenericSimple.kt @@ -8,10 +8,14 @@ internal inline fun doNothing(a: T): T { return a } +// CHECK_BREAKS_COUNT: function=doNothingInt count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=doNothingInt name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun doNothingInt(a: Int): Int { return doNothing(a) } +// CHECK_BREAKS_COUNT: function=doNothingStr count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=doNothingStr name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun doNothingStr(a: String): String { return doNothing(a) } diff --git a/js/js.translator/testData/box/inline/inlineIf.kt b/js/js.translator/testData/box/inline/inlineIf.kt index afe908b47b4..8e0ec1122d4 100644 --- a/js/js.translator/testData/box/inline/inlineIf.kt +++ b/js/js.translator/testData/box/inline/inlineIf.kt @@ -31,6 +31,9 @@ inline fun if3(f: (Int) -> Int, a: Int, b: Int, c: Int): Int { } } +// CHECK_BREAKS_COUNT: function=testIf1 count=2 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testIf1 name=$l$block count=1 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testIf1 name=$l$block_0 count=1 TARGET_BACKENDS=JS_IR fun testIf1(): String { val test1 = if1({it}, 1, 2, 3) if (test1 != 3) return "testIf1: test1 fail" @@ -41,6 +44,9 @@ fun testIf1(): String { return "OK" } +// CHECK_BREAKS_COUNT: function=testIf2 count=2 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testIf2 name=$l$block count=1 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testIf2 name=$l$block_0 count=1 TARGET_BACKENDS=JS_IR fun testIf2(): String { val test1 = if2({it}, 1, 2, 3) if (test1 != 3) return "testIf2: test1 fail" @@ -51,6 +57,9 @@ fun testIf2(): String { return "OK" } +// CHECK_BREAKS_COUNT: function=testIf3 count=4 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testIf3 name=$l$block_0 count=1 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testIf3 name=$l$block_2 count=1 TARGET_BACKENDS=JS_IR fun testIf3(): String { val test1 = if3({it}, 1, 2, 3) if (test1 != 3) return "testIf3: test1 fail" diff --git a/js/js.translator/testData/box/inline/inlineImportNameClash.kt b/js/js.translator/testData/box/inline/inlineImportNameClash.kt index 59ffca2b48d..fb1ffcffcca 100644 --- a/js/js.translator/testData/box/inline/inlineImportNameClash.kt +++ b/js/js.translator/testData/box/inline/inlineImportNameClash.kt @@ -26,6 +26,8 @@ inline fun foo() { baz("BBB", 333) } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { bar() if (l != "baz(AAA);foo();baz(BBB, 333);") return "fail: $l" diff --git a/js/js.translator/testData/box/inline/inlineInInlineWithLambda.kt b/js/js.translator/testData/box/inline/inlineInInlineWithLambda.kt index 3bbd34e04d5..699fe2f65e1 100644 --- a/js/js.translator/testData/box/inline/inlineInInlineWithLambda.kt +++ b/js/js.translator/testData/box/inline/inlineInInlineWithLambda.kt @@ -21,6 +21,8 @@ inline fun shouldBeInlined() { log("shouldBeInlined") } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val result = foo() if (result != "([(OK)])") return "fail1: $result" diff --git a/js/js.translator/testData/box/inline/inlineInInlineWithLambdaPrivate.kt b/js/js.translator/testData/box/inline/inlineInInlineWithLambdaPrivate.kt index 20f8f3bf28e..839929a1f04 100644 --- a/js/js.translator/testData/box/inline/inlineInInlineWithLambdaPrivate.kt +++ b/js/js.translator/testData/box/inline/inlineInInlineWithLambdaPrivate.kt @@ -21,6 +21,8 @@ private inline fun shouldBeInlined() { log("shouldBeInlined") } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val result = foo() if (result != "([(OK)])") return "fail: $result" diff --git a/js/js.translator/testData/box/inline/inlineInc.kt b/js/js.translator/testData/box/inline/inlineInc.kt index 23e55e89b30..d8aa2257d22 100644 --- a/js/js.translator/testData/box/inline/inlineInc.kt +++ b/js/js.translator/testData/box/inline/inlineInc.kt @@ -13,6 +13,8 @@ internal fun multiplyNoInline(a: Int, b: Int): Int { return (c++) + (d++) + multiply(c, d) - (--c + --d) } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { assertEquals(0, multiplyNoInline(1, 0)) assertEquals(1, multiplyNoInline(1, 1)) diff --git a/js/js.translator/testData/box/inline/inlineIntSimple.kt b/js/js.translator/testData/box/inline/inlineIntSimple.kt index 10da70bc55a..e5bdd4cab44 100644 --- a/js/js.translator/testData/box/inline/inlineIntSimple.kt +++ b/js/js.translator/testData/box/inline/inlineIntSimple.kt @@ -19,14 +19,20 @@ internal class Inline { } } +// CHECK_BREAKS_COUNT: function=doNothing1 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=doNothing1 name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun doNothing1 (inline1: Inline, a: Int): Int { return inline1.identity1(a) } +// CHECK_BREAKS_COUNT: function=doNothing2 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=doNothing2 name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun doNothing2 (inline2: Inline, a: Int): Int { return inline2.identity2(a, {it}) } +// CHECK_BREAKS_COUNT: function=doNothing3 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=doNothing3 name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun doNothing3 (inline3: Inline): Int { return inline3.identity3({11}) } diff --git a/js/js.translator/testData/box/inline/inlineLambdaNoCapture.kt b/js/js.translator/testData/box/inline/inlineLambdaNoCapture.kt index 41e94c9c64e..f4140823917 100644 --- a/js/js.translator/testData/box/inline/inlineLambdaNoCapture.kt +++ b/js/js.translator/testData/box/inline/inlineLambdaNoCapture.kt @@ -16,6 +16,8 @@ internal inline fun filteredReduce(a: Array, predicate: (Int) -> Boolean, r return result } +// CHECK_BREAKS_COUNT: function=sumEven count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=sumEven name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun sumEven(a: Array): Int { return filteredReduce(a, { x -> x % 2 == 0}, { x, y -> x + y}) } diff --git a/js/js.translator/testData/box/inline/inlineLambdaWithCapture.kt b/js/js.translator/testData/box/inline/inlineLambdaWithCapture.kt index e0b0268e8d7..69660b2746e 100644 --- a/js/js.translator/testData/box/inline/inlineLambdaWithCapture.kt +++ b/js/js.translator/testData/box/inline/inlineLambdaWithCapture.kt @@ -21,6 +21,8 @@ internal inline fun maxBy(a: Array, keyFun: (Int) -> Int): Int { return maxVal } +// CHECK_BREAKS_COUNT: function=maxBySquare count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=maxBySquare name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun maxBySquare(a: Array, r: Result): Result { var invocationCount = 0 val maxVal = maxBy(a, { x -> invocationCount++; x * x;}) diff --git a/js/js.translator/testData/box/inline/inlineMethod.kt b/js/js.translator/testData/box/inline/inlineMethod.kt index 10a81a16e6d..a3e9282b4ad 100644 --- a/js/js.translator/testData/box/inline/inlineMethod.kt +++ b/js/js.translator/testData/box/inline/inlineMethod.kt @@ -11,6 +11,8 @@ internal data class IntPair(public var fst: Int, public var snd: Int) { inline public fun setSnd(v: Int) { this.snd = v } } +// CHECK_BREAKS_COUNT: function=myAdd count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=myAdd name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun myAdd(p: IntPair, toFst: Int, toSnd: Int) { val fst = p.getFst() p.setFst(fst + toFst) diff --git a/js/js.translator/testData/box/inline/inlineNoReturn.kt b/js/js.translator/testData/box/inline/inlineNoReturn.kt index 5e1d3dd7aa8..cadbfc578a3 100644 --- a/js/js.translator/testData/box/inline/inlineNoReturn.kt +++ b/js/js.translator/testData/box/inline/inlineNoReturn.kt @@ -33,6 +33,8 @@ internal inline fun factAbs(state: State) { } } +// CHECK_BREAKS_COUNT: function=factAbsNoInline1 count=1 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=factAbsNoInline1 name=$l$block count=1 TARGET_BACKENDS=JS_IR internal fun factAbsNoInline1(state: State): Int { factAbs(state) return state.value diff --git a/js/js.translator/testData/box/inline/inlineOrder.kt b/js/js.translator/testData/box/inline/inlineOrder.kt index bdc44f61e35..8cd69d62900 100644 --- a/js/js.translator/testData/box/inline/inlineOrder.kt +++ b/js/js.translator/testData/box/inline/inlineOrder.kt @@ -3,6 +3,8 @@ package foo // CHECK_FUNCTIONS_HAVE_SAME_LINES: declaredBefore declaredAfter match=(h|g)1 replace=$1 TARGET_BACKENDS=JS +// CHECK_BREAKS_COUNT: function=declaredBefore count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=declaredBefore name=$l$block count=0 TARGET_BACKENDS=JS_IR fun declaredBefore(): Int { val a = g() + h() return a @@ -28,6 +30,8 @@ inline fun h1(): Int { return a } +// CHECK_BREAKS_COUNT: function=declaredAfter count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=declaredAfter name=$l$block count=0 TARGET_BACKENDS=JS_IR fun declaredAfter(): Int { val a = g1() + h1() return a diff --git a/js/js.translator/testData/box/inline/inlineSimpleAssignment.kt b/js/js.translator/testData/box/inline/inlineSimpleAssignment.kt index ee6df4004f2..edd5e09a5bf 100644 --- a/js/js.translator/testData/box/inline/inlineSimpleAssignment.kt +++ b/js/js.translator/testData/box/inline/inlineSimpleAssignment.kt @@ -7,6 +7,8 @@ inline fun sum(a: Int, b: Int): Int { return a + b } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val sum3 = sum(1, 2) assertEquals(3, sum3) diff --git a/js/js.translator/testData/box/inline/inlinedObjectLiteralIsCheck.kt b/js/js.translator/testData/box/inline/inlinedObjectLiteralIsCheck.kt index 8eece0a7b85..d122c6a2008 100644 --- a/js/js.translator/testData/box/inline/inlinedObjectLiteralIsCheck.kt +++ b/js/js.translator/testData/box/inline/inlinedObjectLiteralIsCheck.kt @@ -20,6 +20,8 @@ inline fun convolutedOk(): I { return ok() } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val ok = js("_").convolutedOk() if (ok !is I) return "fail" diff --git a/js/js.translator/testData/box/inline/invokeOnField.kt b/js/js.translator/testData/box/inline/invokeOnField.kt index c4c6bf3c8e7..fb92edd80ed 100644 --- a/js/js.translator/testData/box/inline/invokeOnField.kt +++ b/js/js.translator/testData/box/inline/invokeOnField.kt @@ -13,11 +13,15 @@ class Foo { val baz = Baz() } +// CHECK_BREAKS_COUNT: function=testDispatch count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testDispatch name=$l$block count=0 TARGET_BACKENDS=JS_IR fun testDispatch(foo: Foo): String { foo.bar { return "O" } return "FailDispatch;" } +// CHECK_BREAKS_COUNT: function=testExtension count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=testExtension name=$l$block count=0 TARGET_BACKENDS=JS_IR fun testExtension(foo: Foo): String { foo.baz { return "K" } return "FailExtension;" diff --git a/js/js.translator/testData/box/inline/iteratorOnInlineFunctionResult.kt b/js/js.translator/testData/box/inline/iteratorOnInlineFunctionResult.kt index 26b21096b75..f9cd7ba03f5 100644 --- a/js/js.translator/testData/box/inline/iteratorOnInlineFunctionResult.kt +++ b/js/js.translator/testData/box/inline/iteratorOnInlineFunctionResult.kt @@ -3,6 +3,8 @@ package foo inline fun bar(f: () -> Int): Array = arrayOf(f()) +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val iterator = bar { 23 }.iterator() assertEquals(true, iterator.hasNext()) diff --git a/js/js.translator/testData/box/inline/jsCode.kt b/js/js.translator/testData/box/inline/jsCode.kt index 3934fabf3fa..0b3bfb908cb 100644 --- a/js/js.translator/testData/box/inline/jsCode.kt +++ b/js/js.translator/testData/box/inline/jsCode.kt @@ -7,6 +7,8 @@ package foo internal inline fun sum(x: Int, y: Int): Int = js("x + y") +// CHECK_BREAKS_COUNT: function=test count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun test(x: Int, y: Int): Int = sum(sum(x, x), sum(y, y)) fun box(): String { diff --git a/js/js.translator/testData/box/inline/jsCodeVarDeclared.kt b/js/js.translator/testData/box/inline/jsCodeVarDeclared.kt index febe2cc3f74..df1cf1deacb 100644 --- a/js/js.translator/testData/box/inline/jsCodeVarDeclared.kt +++ b/js/js.translator/testData/box/inline/jsCodeVarDeclared.kt @@ -7,6 +7,8 @@ package foo internal inline fun sum(x: Int, y: Int): Int = js("var a = x; a + y") +// CHECK_BREAKS_COUNT: function=test count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun test(x: Int, y: Int): Int { val xx = sum(x, x) js("var a = 0;") diff --git a/js/js.translator/testData/box/inline/lambdaInLambda.kt b/js/js.translator/testData/box/inline/lambdaInLambda.kt index 62559ce992d..ba7a5c11fb5 100644 --- a/js/js.translator/testData/box/inline/lambdaInLambda.kt +++ b/js/js.translator/testData/box/inline/lambdaInLambda.kt @@ -11,6 +11,8 @@ internal inline fun runLambdaInLambda(noinline inner: (T) -> T, outer: ((T) return outer(inner, arg) } +// CHECK_BREAKS_COUNT: function=multiplyBy2 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=multiplyBy2 name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun multiplyBy2(x: Int): Int { return runLambdaInLambda({ it * 2 }, { f, x -> f(x) }, x) } diff --git a/js/js.translator/testData/box/inline/lambdaReassignment.kt b/js/js.translator/testData/box/inline/lambdaReassignment.kt index 13200ddb319..63edf76e103 100644 --- a/js/js.translator/testData/box/inline/lambdaReassignment.kt +++ b/js/js.translator/testData/box/inline/lambdaReassignment.kt @@ -5,6 +5,8 @@ inline fun run(func: () -> Int): Int { return func() } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun bar(): Int { var f = { -> 0 } var get0 = f diff --git a/js/js.translator/testData/box/inline/lambdaReassignmentWithCapture.kt b/js/js.translator/testData/box/inline/lambdaReassignmentWithCapture.kt index 06651668a4f..cb39af3cafa 100644 --- a/js/js.translator/testData/box/inline/lambdaReassignmentWithCapture.kt +++ b/js/js.translator/testData/box/inline/lambdaReassignmentWithCapture.kt @@ -7,6 +7,8 @@ inline fun run(func: () -> Int): Int { return func() } +// CHECK_BREAKS_COUNT: function=bar count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=bar name=$l$block count=0 TARGET_BACKENDS=JS_IR fun bar(p: IntPair): Int { var f = { -> p.fst++ } var get0 = f diff --git a/js/js.translator/testData/box/inline/lastLabeledReturn.kt b/js/js.translator/testData/box/inline/lastLabeledReturn.kt index 62fe96f9cc4..2d462897fd6 100644 --- a/js/js.translator/testData/box/inline/lastLabeledReturn.kt +++ b/js/js.translator/testData/box/inline/lastLabeledReturn.kt @@ -1,6 +1,8 @@ inline fun foo(l: () -> Unit) { l() } inline fun bar(l: () -> Unit) { l() } +// CHECK_BREAKS_COUNT: function=box count=1 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=1 TARGET_BACKENDS=JS_IR fun box(): String { foo { bar { diff --git a/js/js.translator/testData/box/inline/localDeclarationsClash.kt b/js/js.translator/testData/box/inline/localDeclarationsClash.kt index 23749b51d21..d1ca1e3a144 100644 --- a/js/js.translator/testData/box/inline/localDeclarationsClash.kt +++ b/js/js.translator/testData/box/inline/localDeclarationsClash.kt @@ -26,6 +26,8 @@ inline fun run(): String { // FILE: 3.kt +// CHECK_BREAKS_COUNT: function=ok count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=ok name=$l$block count=0 TARGET_BACKENDS=JS_IR fun ok() = o.run() + k.run() // FILE: main.kt diff --git a/js/js.translator/testData/box/inline/localInlineExtensionFunction.kt b/js/js.translator/testData/box/inline/localInlineExtensionFunction.kt index 5ed95807161..41fa5624224 100644 --- a/js/js.translator/testData/box/inline/localInlineExtensionFunction.kt +++ b/js/js.translator/testData/box/inline/localInlineExtensionFunction.kt @@ -12,6 +12,8 @@ internal inline fun repeatAction(times: Int, action: () -> Unit) { } } +// CHECK_BREAKS_COUNT: function=capturedInLambda count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=capturedInLambda name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun capturedInLambda(state: State, a: Int, b: Int): Int { inline fun State.inc() { count++ @@ -25,6 +27,8 @@ internal fun capturedInLambda(state: State, a: Int, b: Int): Int { } +// CHECK_BREAKS_COUNT: function=declaredInLambda count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=declaredInLambda name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun declaredInLambda(state: State, a: Int, b: Int): Int { repeatAction(a) { inline fun State.inc() { diff --git a/js/js.translator/testData/box/inline/localInlineFunction.kt b/js/js.translator/testData/box/inline/localInlineFunction.kt index 4dbadfea061..e931dbbd882 100644 --- a/js/js.translator/testData/box/inline/localInlineFunction.kt +++ b/js/js.translator/testData/box/inline/localInlineFunction.kt @@ -10,6 +10,8 @@ internal inline fun repeatAction(times: Int, action: () -> Unit) { } } +// CHECK_BREAKS_COUNT: function=localWithoutCapture count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=localWithoutCapture name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun localWithoutCapture(a: Int, b: Int): Int { var sum = 0 @@ -24,6 +26,8 @@ internal fun localWithoutCapture(a: Int, b: Int): Int { return sum } +// CHECK_BREAKS_COUNT: function=localWithCapture count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=localWithCapture name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun localWithCapture(a: Int, b: Int): Int { var sum = 0 diff --git a/js/js.translator/testData/box/inline/localInlineFunctionComplex.kt b/js/js.translator/testData/box/inline/localInlineFunctionComplex.kt index 8ea5dd24f49..6739e0192b6 100644 --- a/js/js.translator/testData/box/inline/localInlineFunctionComplex.kt +++ b/js/js.translator/testData/box/inline/localInlineFunctionComplex.kt @@ -11,6 +11,8 @@ internal inline fun repeatAction(times: Int, action: () -> Unit) { } } +// CHECK_BREAKS_COUNT: function=addToState count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=addToState name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun addToState(state: State, a: Int, b: Int): Int { inline fun inc(a: Int): Int { return a + 1 diff --git a/js/js.translator/testData/box/inline/localInlineFunctionDeclaredInLambda.kt b/js/js.translator/testData/box/inline/localInlineFunctionDeclaredInLambda.kt index 70688bf651b..c01e700882a 100644 --- a/js/js.translator/testData/box/inline/localInlineFunctionDeclaredInLambda.kt +++ b/js/js.translator/testData/box/inline/localInlineFunctionDeclaredInLambda.kt @@ -10,6 +10,8 @@ internal inline fun repeatAction(times: Int, action: () -> Unit) { } } +// CHECK_BREAKS_COUNT: function=localWithoutCapture count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=localWithoutCapture name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun localWithoutCapture(a: Int, b: Int): Int { var mult = 0 @@ -26,6 +28,8 @@ internal fun localWithoutCapture(a: Int, b: Int): Int { return mult } +// CHECK_BREAKS_COUNT: function=localWithCapture count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=localWithCapture name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun localWithCapture(a: Int, b: Int): Int { var mult = 0 diff --git a/js/js.translator/testData/box/inline/localInlineFunctionNameClash.kt b/js/js.translator/testData/box/inline/localInlineFunctionNameClash.kt index 261334a0014..fdf6fc04c69 100644 --- a/js/js.translator/testData/box/inline/localInlineFunctionNameClash.kt +++ b/js/js.translator/testData/box/inline/localInlineFunctionNameClash.kt @@ -7,6 +7,8 @@ internal inline fun run(action: () -> Int): Int { return action() } +// CHECK_BREAKS_COUNT: function=myAdd count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=myAdd name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun myAdd(a: Int, b: Int): Int { var sum = a + b diff --git a/js/js.translator/testData/box/inline/multiDeclaration.kt b/js/js.translator/testData/box/inline/multiDeclaration.kt index 643e9c56758..d326f84b911 100644 --- a/js/js.translator/testData/box/inline/multiDeclaration.kt +++ b/js/js.translator/testData/box/inline/multiDeclaration.kt @@ -9,6 +9,8 @@ class A(val a: Int, val b: Int) inline operator fun A.component1(): Int = a inline operator fun A.component2(): Int = b +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val (a, b) = A(1, 2) assertEquals(1, a) diff --git a/js/js.translator/testData/box/inline/noInlineLambda.kt b/js/js.translator/testData/box/inline/noInlineLambda.kt index 540c8531e0b..456c0128d75 100644 --- a/js/js.translator/testData/box/inline/noInlineLambda.kt +++ b/js/js.translator/testData/box/inline/noInlineLambda.kt @@ -10,6 +10,8 @@ internal inline fun run(noinline func: (T) -> T, arg: T): T { return func(arg) } +// CHECK_BREAKS_COUNT: function=multiplyBy2 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=multiplyBy2 name=$l$block count=0 TARGET_BACKENDS=JS_IR internal fun multiplyBy2(x: Int): Int { return run({ it * 2 }, x) } diff --git a/js/js.translator/testData/box/inline/operators.kt b/js/js.translator/testData/box/inline/operators.kt index 4d60874f5d1..2e8d16ef8d6 100644 --- a/js/js.translator/testData/box/inline/operators.kt +++ b/js/js.translator/testData/box/inline/operators.kt @@ -58,6 +58,8 @@ class N(val value: Int) { inline operator fun dec() = N(value - 1) } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { var result = A() + 1 if (result != 11) return "fail: member operator: $result" diff --git a/js/js.translator/testData/box/inline/params.kt b/js/js.translator/testData/box/inline/params.kt index 8637fe1cab8..074b83a1a06 100644 --- a/js/js.translator/testData/box/inline/params.kt +++ b/js/js.translator/testData/box/inline/params.kt @@ -21,21 +21,29 @@ class Inline() { } } +// CHECK_BREAKS_COUNT: function=test1 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1(): Int { val inlineX = Inline() return inlineX.foo1Int({ z: Int -> z}, 25) } +// CHECK_BREAKS_COUNT: function=test2 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2(): Double { val inlineX = Inline() return inlineX.foo1Double(25.0, { z: Double -> z}) } +// CHECK_BREAKS_COUNT: function=test3 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test3 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test3(): Double { val inlineX = Inline() return inlineX.foo2Param(15.0, { z1: Int, z2: Double -> z1 + z2}, 10) } +// CHECK_BREAKS_COUNT: function=test3WithCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test3WithCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test3WithCaptured(): Double { val inlineX = Inline() var c = 11.0; diff --git a/js/js.translator/testData/box/inline/privateProperty.kt b/js/js.translator/testData/box/inline/privateProperty.kt index e0395df0237..552ec6bbe6e 100644 --- a/js/js.translator/testData/box/inline/privateProperty.kt +++ b/js/js.translator/testData/box/inline/privateProperty.kt @@ -176,6 +176,8 @@ private var A.p17: Int } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { p1 = 1 if (p1 != 10101) return "test1: $p1" diff --git a/js/js.translator/testData/box/inline/safeCall.kt b/js/js.translator/testData/box/inline/safeCall.kt index 6f0f22110a2..f0e24adc030 100644 --- a/js/js.translator/testData/box/inline/safeCall.kt +++ b/js/js.translator/testData/box/inline/safeCall.kt @@ -5,6 +5,8 @@ package foo inline fun T.doLet(f: (T) -> R): R = f(this) +// CHECK_BREAKS_COUNT: function=sum count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=sum name=$l$block count=0 TARGET_BACKENDS=JS_IR private fun sum(x: Int?, y: Int): Int = x?.doLet { it + y } ?: 0 diff --git a/js/js.translator/testData/box/inline/sameNameOfDeclarationsInSameModule.kt b/js/js.translator/testData/box/inline/sameNameOfDeclarationsInSameModule.kt index d1e15df7fce..85630a57445 100644 --- a/js/js.translator/testData/box/inline/sameNameOfDeclarationsInSameModule.kt +++ b/js/js.translator/testData/box/inline/sameNameOfDeclarationsInSameModule.kt @@ -7,6 +7,8 @@ inline fun bar(x: Int) = foo(x) inline fun bar(x: String) = foo(x) +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val a = bar(23) if (a != "int: 23") return "fail1: $a" diff --git a/js/js.translator/testData/box/inline/severalClosures.kt b/js/js.translator/testData/box/inline/severalClosures.kt index e465e954f6a..72fb5f003c3 100644 --- a/js/js.translator/testData/box/inline/severalClosures.kt +++ b/js/js.translator/testData/box/inline/severalClosures.kt @@ -17,17 +17,23 @@ class Inline() { } } +// CHECK_BREAKS_COUNT: function=test1 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1(): Double { val inlineX = Inline() return inlineX.foo1({ z: Int -> z}, 25, { z: Double -> z}, 11.5) } +// CHECK_BREAKS_COUNT: function=test1WithCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1WithCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1WithCaptured(): Double { val inlineX = Inline() var d = 0.0; return inlineX.foo1({ z: Int -> d = 1.0; z}, 25, { z: Double -> z + d}, 11.5) } +// CHECK_BREAKS_COUNT: function=test2 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2(): Double { val inlineX = Inline() return inlineX.foo2({ z: Int, p: Int -> z + p}, 25, { x: Double, y: Int, z: Int -> z + x + y}, 11.5, 2) diff --git a/js/js.translator/testData/box/inline/severalUsage.kt b/js/js.translator/testData/box/inline/severalUsage.kt index 72f526fc4fe..d9bfe5ee1fd 100644 --- a/js/js.translator/testData/box/inline/severalUsage.kt +++ b/js/js.translator/testData/box/inline/severalUsage.kt @@ -15,7 +15,8 @@ public inline fun minByTest(f: (Int) -> R): R { val v = f(1) return v } - +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val result = runTest{minByTest { it }} diff --git a/js/js.translator/testData/box/inline/simpleDouble.kt b/js/js.translator/testData/box/inline/simpleDouble.kt index 278d4e18742..77d4de75140 100644 --- a/js/js.translator/testData/box/inline/simpleDouble.kt +++ b/js/js.translator/testData/box/inline/simpleDouble.kt @@ -30,37 +30,51 @@ class InlineDouble(val res : Double) { } } +// CHECK_BREAKS_COUNT: function=test0Param count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test0Param name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test0Param(): Double { val inlineX = InlineDouble(10.0) return inlineX.foo({ -> 1.0}) } +// CHECK_BREAKS_COUNT: function=test1Param count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1Param name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1Param(): Double { val inlineX = InlineDouble(10.0) return inlineX.foo11({ z: Double -> z}) } +// CHECK_BREAKS_COUNT: function=test1ParamCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamCaptured(): Double { val s = 100.0 val inlineX = InlineDouble(10.0) return inlineX.foo11({ z: Double -> s}) } +// CHECK_BREAKS_COUNT: function=test1ParamMissed count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamMissed name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamMissed() : Double { val inlineX = InlineDouble(10.0) return inlineX.foo11({ z: Double -> 111.0}) } +// CHECK_BREAKS_COUNT: function=test1ParamFromCallContext count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamFromCallContext name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamFromCallContext() : Double { val inlineX = InlineDouble(1000.0) return inlineX.fooRes({ z: Double -> z}) } +// CHECK_BREAKS_COUNT: function=test2Params count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2Params name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2Params() : Double { val inlineX = InlineDouble(1000.0) return inlineX.fooRes2({ y: Double, z: Double -> 2.0 * y + 3.0 * z}) } +// CHECK_BREAKS_COUNT: function=test2ParamsWithCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2ParamsWithCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2ParamsWithCaptured() : Double { val inlineX = InlineDouble(1000.0) val s = 9.0 diff --git a/js/js.translator/testData/box/inline/simpleEnum.kt b/js/js.translator/testData/box/inline/simpleEnum.kt index ebc2a0e701a..accbc1bacdb 100644 --- a/js/js.translator/testData/box/inline/simpleEnum.kt +++ b/js/js.translator/testData/box/inline/simpleEnum.kt @@ -15,6 +15,8 @@ enum class MyEnum { } } +// CHECK_BREAKS_COUNT: function=test1 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1(): String { return MyEnum.K.doSmth("O") } diff --git a/js/js.translator/testData/box/inline/simpleInt.kt b/js/js.translator/testData/box/inline/simpleInt.kt index 974808f76e3..c79e7334703 100644 --- a/js/js.translator/testData/box/inline/simpleInt.kt +++ b/js/js.translator/testData/box/inline/simpleInt.kt @@ -30,37 +30,51 @@ class Inline(val res : Int) { } } +// CHECK_BREAKS_COUNT: function=test0Param count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test0Param name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test0Param(): Int { val inlineX = Inline(10) return inlineX.foo({ -> 1}) } +// CHECK_BREAKS_COUNT: function=test1Param count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1Param name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1Param(): Int { val inlineX = Inline(10) return inlineX.foo11({ z: Int -> z}) } +// CHECK_BREAKS_COUNT: function=test1ParamCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamCaptured(): Int { val s = 100 val inlineX = Inline(10) return inlineX.foo11({ z: Int -> s}) } +// CHECK_BREAKS_COUNT: function=test1ParamMissed count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamMissed name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamMissed() : Int { val inlineX = Inline(10) return inlineX.foo11({ z: Int -> 111}) } +// CHECK_BREAKS_COUNT: function=test1ParamFromCallContext count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamFromCallContext name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamFromCallContext() : Int { val inlineX = Inline(1000) return inlineX.fooRes({ z: Int -> z}) } +// CHECK_BREAKS_COUNT: function=test2Params count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2Params name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2Params() : Int { val inlineX = Inline(1000) return inlineX.fooRes2({ y: Int, z: Int -> 2 * y + 3 * z}) } +// CHECK_BREAKS_COUNT: function=test2ParamsWithCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2ParamsWithCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2ParamsWithCaptured() : Int { val inlineX = Inline(1000) val s = 9 diff --git a/js/js.translator/testData/box/inline/simpleLambda.kt b/js/js.translator/testData/box/inline/simpleLambda.kt index 7ba6f99a6fc..24c02aeae9c 100644 --- a/js/js.translator/testData/box/inline/simpleLambda.kt +++ b/js/js.translator/testData/box/inline/simpleLambda.kt @@ -19,6 +19,8 @@ public inline fun use2() : Int { class Z {} +// CHECK_BREAKS_COUNT: function=test1 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1() : Int { val input = Z() return input.use{ @@ -26,6 +28,8 @@ fun test1() : Int { } } +// CHECK_BREAKS_COUNT: function=test2 count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2 name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2() : Int { val x = 1000 return use2() + x diff --git a/js/js.translator/testData/box/inline/simpleObject.kt b/js/js.translator/testData/box/inline/simpleObject.kt index 2ae59aaf765..c1ee88f836e 100644 --- a/js/js.translator/testData/box/inline/simpleObject.kt +++ b/js/js.translator/testData/box/inline/simpleObject.kt @@ -30,37 +30,51 @@ class InlineString(val res : String) { } } +// CHECK_BREAKS_COUNT: function=test0Param count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test0Param name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test0Param(): String { val inlineX = InlineString("10") return inlineX.foo({ -> "1"}) } +// CHECK_BREAKS_COUNT: function=test1Param count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1Param name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1Param(): String { val inlineX = InlineString("10") return inlineX.foo11({ z: String -> z}) } +// CHECK_BREAKS_COUNT: function=test1ParamCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamCaptured(): String { val s = "100" val inlineX = InlineString("10") return inlineX.foo11({ z: String -> s}) } +// CHECK_BREAKS_COUNT: function=test1ParamMissed count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamMissed name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamMissed() : String { val inlineX = InlineString("10") return inlineX.foo11({ z: String -> "111"}) } +// CHECK_BREAKS_COUNT: function=test1ParamFromCallContext count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test1ParamFromCallContext name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test1ParamFromCallContext() : String { val inlineX = InlineString("1000") return inlineX.fooRes({ z: String -> z}) } +// CHECK_BREAKS_COUNT: function=test2Params count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2Params name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2Params() : String { val inlineX = InlineString("1000") return inlineX.fooRes2({ y: String, z: String -> y + "0" + z}) } +// CHECK_BREAKS_COUNT: function=test2ParamsWithCaptured count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=test2ParamsWithCaptured name=$l$block count=0 TARGET_BACKENDS=JS_IR fun test2ParamsWithCaptured() : String { val inlineX = InlineString("1000") val s = "9" diff --git a/js/js.translator/testData/box/inline/simpleReturnFunctionWithResultUnused.kt b/js/js.translator/testData/box/inline/simpleReturnFunctionWithResultUnused.kt index 0da111a6383..177c301ea86 100644 --- a/js/js.translator/testData/box/inline/simpleReturnFunctionWithResultUnused.kt +++ b/js/js.translator/testData/box/inline/simpleReturnFunctionWithResultUnused.kt @@ -12,6 +12,8 @@ inline fun run(noinline f: () -> Int): Int { return f() } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { run({ toggle(); 4 }) assertEquals(true, flag) diff --git a/js/js.translator/testData/box/inline/statementsAfterReturn.kt b/js/js.translator/testData/box/inline/statementsAfterReturn.kt index 9045135e91c..e820cc5126b 100644 --- a/js/js.translator/testData/box/inline/statementsAfterReturn.kt +++ b/js/js.translator/testData/box/inline/statementsAfterReturn.kt @@ -9,6 +9,8 @@ inline fun withState(state: State, ext: State.() -> Unit) { state.value = 0 } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { val state = State() diff --git a/js/js.translator/testData/box/inline/thisLiteralAliasing.kt b/js/js.translator/testData/box/inline/thisLiteralAliasing.kt index ca62c6a7b6d..b60e0673298 100644 --- a/js/js.translator/testData/box/inline/thisLiteralAliasing.kt +++ b/js/js.translator/testData/box/inline/thisLiteralAliasing.kt @@ -16,6 +16,8 @@ class B(val value: Int) { } } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR public fun box(): String { val a = A() a.setParam(10) diff --git a/js/js.translator/testData/box/inline/vararg.kt b/js/js.translator/testData/box/inline/vararg.kt index 145da95a996..5447e3ad955 100644 --- a/js/js.translator/testData/box/inline/vararg.kt +++ b/js/js.translator/testData/box/inline/vararg.kt @@ -28,6 +28,8 @@ internal fun test3(list: Array): String { return concat(*list) } +// CHECK_BREAKS_COUNT: function=box count=0 TARGET_BACKENDS=JS_IR +// CHECK_LABELS_COUNT: function=box name=$l$block count=0 TARGET_BACKENDS=JS_IR fun box(): String { assertEquals("", test1()) assertEquals("abc", test2())