fix tests in org.jetbrains.kotlin.js.test.semantics

This commit is contained in:
Michael Nedzelsky
2015-09-07 22:21:52 +03:00
parent aa44606663
commit f6892580f6
57 changed files with 167 additions and 167 deletions
@@ -5,9 +5,9 @@ public fun public_baz(i: Int) {
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { internal native fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -21,9 +21,9 @@ public class PublicClass {
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { native internal fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -35,15 +35,15 @@ public class PublicClass {
val call_private_native_baz = { private_baz("native") } val call_private_native_baz = { private_baz("native") }
} }
class InternalClass { internal class InternalClass {
public fun public_baz(i: Int) { public fun public_baz(i: Int) {
} }
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { native internal fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -61,9 +61,9 @@ private class PrivateClass {
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { native internal fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -81,9 +81,9 @@ open public class OpenPublicClass {
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { native internal fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -95,15 +95,15 @@ open public class OpenPublicClass {
val call_private_native_baz = { private_baz("native") } val call_private_native_baz = { private_baz("native") }
} }
open class OpenInternalClass { internal open class OpenInternalClass {
public fun public_baz(i: Int) { public fun public_baz(i: Int) {
} }
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { native internal fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -121,9 +121,9 @@ open private class OpenPrivateClass {
native public fun public_baz(a: String) { native public fun public_baz(a: String) {
} }
fun internal_baz(i: Int) { internal fun internal_baz(i: Int) {
} }
native fun internal_baz(a: String) { native internal fun internal_baz(a: String) {
} }
private fun private_baz(i: Int) { private fun private_baz(i: Int) {
@@ -2,29 +2,29 @@ package foo
public class A public class A
fun A(a: Int){} internal fun A(a: Int){}
public class B(a: Int) public class B(a: Int)
fun B(){} internal fun B(){}
fun C(a: Int){} internal fun C(a: Int){}
public class C public class C
fun D(){} internal fun D(){}
public class D(a: Int) public class D(a: Int)
//Testing //Testing
fun testClass(name: String, f: () -> Unit) { internal fun testClass(name: String, f: () -> Unit) {
val fs = f.toString() val fs = f.toString()
if ("$name(" !in fs) throw Exception("Name of class '$name' unexpectedly mangled: $fs") if ("$name(" !in fs) throw Exception("Name of class '$name' unexpectedly mangled: $fs")
} }
fun testFun(name: String, f: () -> Unit) { internal fun testFun(name: String, f: () -> Unit) {
val fs = f.toString() val fs = f.toString()
if ("$name(" in fs) throw Exception("Name of fun '$name' unexpectedly not mangled: $fs") if ("$name(" in fs) throw Exception("Name of fun '$name' unexpectedly not mangled: $fs")
@@ -3,16 +3,16 @@ package foo
// CHECK_CONTAINS_NO_CALLS: multiplyInline // CHECK_CONTAINS_NO_CALLS: multiplyInline
// CHECK_NOT_CALLED: runNoinline // CHECK_NOT_CALLED: runNoinline
inline fun multiply(a: Int, b: Int) = a * b internal inline fun multiply(a: Int, b: Int) = a * b
inline fun run(a: Int, b: Int, func: (Int, Int) -> Int) = func(a, b) internal inline fun run(a: Int, b: Int, func: (Int, Int) -> Int) = func(a, b)
fun multiplyInline(a: Int, b: Int) = run(a, b, ::multiply) internal fun multiplyInline(a: Int, b: Int) = run(a, b, ::multiply)
inline fun runNoinline(a: Int, b: Int, noinline func: (Int, Int) -> Int) = func(a, b) internal inline fun runNoinline(a: Int, b: Int, noinline func: (Int, Int) -> Int) = func(a, b)
fun multiplyNoinline(a: Int, b: Int) = runNoinline(a, b, ::multiply) internal fun multiplyNoinline(a: Int, b: Int) = runNoinline(a, b, ::multiply)
fun box(): String { fun box(): String {
@@ -5,9 +5,9 @@ package foo
// A copy of stdlib run function. // A copy of stdlib run function.
// Copied to not to depend on run implementation. // Copied to not to depend on run implementation.
// It's important, that the body is just `return fn()`. // It's important, that the body is just `return fn()`.
inline fun evaluate<T>(fn: ()->T): T = fn() internal inline fun evaluate<T>(fn: ()->T): T = fn()
fun test(n: Int): Int { internal fun test(n: Int): Int {
return evaluate { return evaluate {
var i = n var i = n
var sum = 0 var sum = 0
@@ -2,11 +2,11 @@ package foo
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiply function=multiply$f // CHECK_NOT_CALLED_IN_SCOPE: scope=multiply function=multiply$f
class A(val a: Int) internal class A(val a: Int)
inline fun <T, R> with2(receiver: T, arg1: R, arg2: R, f: T.(R, R) -> R): R = receiver.f(arg1, arg2) internal inline fun <T, R> with2(receiver: T, arg1: R, arg2: R, f: T.(R, R) -> R): R = receiver.f(arg1, arg2)
fun multiply(a: Int, b: Int, c: Int): Int = with2(A(a), b, c) { x, y -> a*x*y } internal fun multiply(a: Int, b: Int, c: Int): Int = with2(A(a), b, c) { x, y -> a*x*y }
fun box(): String { fun box(): String {
assertEquals(105, multiply(3, 5, 7)) assertEquals(105, multiply(3, 5, 7))
+4 -4
View File
@@ -2,19 +2,19 @@ package foo
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo // CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo
inline fun inline1(a: Int): Int { internal inline fun inline1(a: Int): Int {
return a return a
} }
inline fun inline2(a: Int): Int { internal inline fun inline2(a: Int): Int {
return inline1(a) + inline1(a) return inline1(a) + inline1(a)
} }
inline fun inline3(a: Int): Int { internal inline fun inline3(a: Int): Int {
return inline1(a) * inline2(a) return inline1(a) * inline2(a)
} }
fun squareMultipliedByTwo(a: Int): Int { internal fun squareMultipliedByTwo(a: Int): Int {
return inline3(a) return inline3(a)
} }
@@ -2,24 +2,24 @@ package foo
// CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo // CHECK_CONTAINS_NO_CALLS: squareMultipliedByTwo
inline fun inline1(a: Int): Int { internal inline fun inline1(a: Int): Int {
return a return a
} }
inline fun inline2(a: Int): Int { internal inline fun inline2(a: Int): Int {
val a1 = inline1(a) val a1 = inline1(a)
if (a1 == 0) return 0 if (a1 == 0) return 0
return a1 + inline1(a) return a1 + inline1(a)
} }
inline fun inline3(a: Int): Int { internal inline fun inline3(a: Int): Int {
val i = inline2(a) val i = inline2(a)
val i1 = inline1(a) * i val i1 = inline1(a) * i
if (i == i1) return 0 if (i == i1) return 0
return i1 return i1
} }
fun squareMultipliedByTwo(a: Int): Int { internal fun squareMultipliedByTwo(a: Int): Int {
return inline3(a) return inline3(a)
} }
@@ -3,15 +3,15 @@ package foo
// CHECK_CONTAINS_NO_CALLS: identity // CHECK_CONTAINS_NO_CALLS: identity
// CHECK_CONTAINS_NO_CALLS: sumNoInline // CHECK_CONTAINS_NO_CALLS: sumNoInline
inline fun sum(a: Int, b: Int = 0): Int { internal inline fun sum(a: Int, b: Int = 0): Int {
return a + b return a + b
} }
fun identity(a: Int): Int { internal fun identity(a: Int): Int {
return sum(a) return sum(a)
} }
fun sumNoInline(a: Int, b: Int): Int { internal fun sumNoInline(a: Int, b: Int): Int {
return sum(a, b) return sum(a, b)
} }
@@ -2,15 +2,15 @@ package foo
// CHECK_CONTAINS_NO_CALLS: doNothingNoInline // CHECK_CONTAINS_NO_CALLS: doNothingNoInline
inline fun <T> doNothing1(a: T): T { internal inline fun <T> doNothing1(a: T): T {
return a return a
} }
inline fun <T> doNothing2(a: T, f: (T) -> T): T { internal inline fun <T> doNothing2(a: T, f: (T) -> T): T {
return f(a) return f(a)
} }
fun doNothingNoInline(a: Int): Int { internal fun doNothingNoInline(a: Int): Int {
return doNothing2(a, { x -> doNothing1(x)}) return doNothing2(a, { x -> doNothing1(x)})
} }
@@ -3,15 +3,15 @@ package foo
// CHECK_CONTAINS_NO_CALLS: doNothingInt // CHECK_CONTAINS_NO_CALLS: doNothingInt
// CHECK_CONTAINS_NO_CALLS: doNothingStr // CHECK_CONTAINS_NO_CALLS: doNothingStr
inline fun <T> doNothing(a: T): T { internal inline fun <T> doNothing(a: T): T {
return a return a
} }
fun doNothingInt(a: Int): Int { internal fun doNothingInt(a: Int): Int {
return doNothing(a) return doNothing(a)
} }
fun doNothingStr(a: String): String { internal fun doNothingStr(a: String): String {
return doNothing(a) return doNothing(a)
} }
+2 -2
View File
@@ -2,11 +2,11 @@ package foo
// CHECK_CONTAINS_NO_CALLS: multiplyNoInline // CHECK_CONTAINS_NO_CALLS: multiplyNoInline
inline fun multiply(a: Int, b: Int): Int { internal inline fun multiply(a: Int, b: Int): Int {
return a * b return a * b
} }
fun multiplyNoInline(a: Int, b: Int): Int { internal fun multiplyNoInline(a: Int, b: Int): Int {
var c = a - 1 var c = a - 1
var d = b - 1 var d = b - 1
return (c++) + (d++) + multiply(c, d) - (--c + --d) return (c++) + (d++) + multiply(c, d) - (--c + --d)
+4 -4
View File
@@ -4,7 +4,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: doNothing2 // CHECK_CONTAINS_NO_CALLS: doNothing2
// CHECK_CONTAINS_NO_CALLS: doNothing3 // CHECK_CONTAINS_NO_CALLS: doNothing3
class Inline { internal class Inline {
public inline fun <T> identity1 (x: T): T { public inline fun <T> identity1 (x: T): T {
return x return x
} }
@@ -18,15 +18,15 @@ class Inline {
} }
} }
fun doNothing1 (inline1: Inline, a: Int): Int { internal fun doNothing1 (inline1: Inline, a: Int): Int {
return inline1.identity1(a) return inline1.identity1(a)
} }
fun doNothing2 (inline2: Inline, a: Int): Int { internal fun doNothing2 (inline2: Inline, a: Int): Int {
return inline2.identity2(a, {it}) return inline2.identity2(a, {it})
} }
fun doNothing3 (inline3: Inline): Int { internal fun doNothing3 (inline3: Inline): Int {
return inline3.identity3({11}) return inline3.identity3({11})
} }
@@ -2,7 +2,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: sumEven // CHECK_CONTAINS_NO_CALLS: sumEven
inline fun filteredReduce(a: Array<Int>, predicate: (Int) -> Boolean, reduceFun: (Int, Int) -> Int): Int { internal inline fun filteredReduce(a: Array<Int>, predicate: (Int) -> Boolean, reduceFun: (Int, Int) -> Int): Int {
var result = 0 var result = 0
for (element in a) { for (element in a) {
@@ -15,7 +15,7 @@ inline fun filteredReduce(a: Array<Int>, predicate: (Int) -> Boolean, reduceFun:
return result return result
} }
fun sumEven(a: Array<Int>): Int { internal fun sumEven(a: Array<Int>): Int {
return filteredReduce(a, { x -> x % 2 == 0}, { x, y -> x + y}) return filteredReduce(a, { x -> x % 2 == 0}, { x, y -> x + y})
} }
@@ -2,9 +2,9 @@ package foo
// CHECK_CONTAINS_NO_CALLS: maxBySquare // CHECK_CONTAINS_NO_CALLS: maxBySquare
data class Result(var value: Int = 0, var invocationCount: Int = 0) internal data class Result(var value: Int = 0, var invocationCount: Int = 0)
inline fun maxBy(a: Array<Int>, keyFun: (Int) -> Int): Int { internal inline fun maxBy(a: Array<Int>, keyFun: (Int) -> Int): Int {
var maxVal = a[0] var maxVal = a[0]
var maxKey = keyFun(maxVal) var maxKey = keyFun(maxVal)
@@ -20,7 +20,7 @@ inline fun maxBy(a: Array<Int>, keyFun: (Int) -> Int): Int {
return maxVal return maxVal
} }
fun maxBySquare(a: Array<Int>, r: Result): Result { internal fun maxBySquare(a: Array<Int>, r: Result): Result {
var invocationCount = 0 var invocationCount = 0
val maxVal = maxBy(a, { x -> invocationCount++; x * x;}) val maxVal = maxBy(a, { x -> invocationCount++; x * x;})
+2 -2
View File
@@ -2,7 +2,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: add // CHECK_CONTAINS_NO_CALLS: add
data class IntPair(public var fst: Int, public var snd: Int) { internal data class IntPair(public var fst: Int, public var snd: Int) {
inline public fun getFst(): Int { return fst } inline public fun getFst(): Int { return fst }
inline public fun setFst(v: Int) { fst = v } inline public fun setFst(v: Int) { fst = v }
@@ -10,7 +10,7 @@ data class IntPair(public var fst: Int, public var snd: Int) {
inline public fun setSnd(v: Int) { this.snd = v } inline public fun setSnd(v: Int) { this.snd = v }
} }
fun add(p: IntPair, toFst: Int, toSnd: Int) { internal fun add(p: IntPair, toFst: Int, toSnd: Int) {
val fst = p.getFst() val fst = p.getFst()
p.setFst(fst + toFst) p.setFst(fst + toFst)
+6 -6
View File
@@ -2,22 +2,22 @@ package foo
// CHECK_CONTAINS_NO_CALLS: factAbsNoInline1 // CHECK_CONTAINS_NO_CALLS: factAbsNoInline1
class State(value: Int) { internal class State(value: Int) {
public var value: Int = value public var value: Int = value
} }
inline fun multiply(state: State, factor: Int) { internal inline fun multiply(state: State, factor: Int) {
state.value *= factor state.value *= factor
} }
inline fun abs(state: State) { internal inline fun abs(state: State) {
val value = state.value val value = state.value
if (value < 0) { if (value < 0) {
multiply(state, -1) multiply(state, -1)
} }
} }
inline fun factAbs(state: State) { internal inline fun factAbs(state: State) {
abs(state) abs(state)
if (state.value == 0) { if (state.value == 0) {
@@ -32,12 +32,12 @@ inline fun factAbs(state: State) {
} }
} }
fun factAbsNoInline1(state: State): Int { internal fun factAbsNoInline1(state: State): Int {
factAbs(state) factAbs(state)
return state.value return state.value
} }
fun factAbsNoInline2(n: Int): Int { internal fun factAbsNoInline2(n: Int): Int {
return factAbsNoInline1(State(n)) return factAbsNoInline1(State(n))
} }
+2 -2
View File
@@ -2,9 +2,9 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
inline fun sum(x: Int, y: Int): Int = js("x + y") internal inline fun sum(x: Int, y: Int): Int = js("x + y")
fun test(x: Int, y: Int): Int = sum(sum(x, x), sum(y, y)) internal fun test(x: Int, y: Int): Int = sum(sum(x, x), sum(y, y))
fun box(): String { fun box(): String {
assertEquals(4, test(1, 1)) assertEquals(4, test(1, 1))
@@ -2,9 +2,9 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
inline fun sum(x: Int, y: Int): Int = js("var a = x; a + y") internal inline fun sum(x: Int, y: Int): Int = js("var a = x; a + y")
fun test(x: Int, y: Int): Int { internal fun test(x: Int, y: Int): Int {
val xx = sum(x, x) val xx = sum(x, x)
js("var a = 0;") js("var a = 0;")
val yy = sum(y, y) val yy = sum(y, y)
+2 -2
View File
@@ -4,11 +4,11 @@ package foo
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$f_0 // CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$f_0
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=run // CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=run
inline fun runLambdaInLambda<T>(noinline inner: (T) -> T, outer: ((T) -> T, T) -> T, arg: T): T { internal inline fun runLambdaInLambda<T>(noinline inner: (T) -> T, outer: ((T) -> T, T) -> T, arg: T): T {
return outer(inner, arg) return outer(inner, arg)
} }
fun multiplyBy2(x: Int): Int { internal fun multiplyBy2(x: Int): Int {
return runLambdaInLambda({ it * 2 }, { f, x -> f(x) }, x) return runLambdaInLambda({ it * 2 }, { f, x -> f(x) }, x)
} }
@@ -3,15 +3,15 @@ package foo
// CHECK_CONTAINS_NO_CALLS: capturedInLambda // CHECK_CONTAINS_NO_CALLS: capturedInLambda
// CHECK_CONTAINS_NO_CALLS: declaredInLambda // CHECK_CONTAINS_NO_CALLS: declaredInLambda
data class State(var count: Int = 0) internal data class State(var count: Int = 0)
inline fun repeatAction(times: Int, action: () -> Unit) { internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) { for (i in 1..times) {
action() action()
} }
} }
fun capturedInLambda(state: State, a: Int, b: Int): Int { internal fun capturedInLambda(state: State, a: Int, b: Int): Int {
@inline fun State.inc() { @inline fun State.inc() {
count++ count++
} }
@@ -24,7 +24,7 @@ fun capturedInLambda(state: State, a: Int, b: Int): Int {
} }
fun declaredInLambda(state: State, a: Int, b: Int): Int { internal fun declaredInLambda(state: State, a: Int, b: Int): Int {
repeatAction(a) { repeatAction(a) {
@inline fun State.inc() { @inline fun State.inc() {
count++ count++
@@ -3,13 +3,13 @@ package foo
// CHECK_CONTAINS_NO_CALLS: localWithCapture // CHECK_CONTAINS_NO_CALLS: localWithCapture
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture // CHECK_CONTAINS_NO_CALLS: localWithoutCapture
inline fun repeatAction(times: Int, action: () -> Unit) { internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) { for (i in 1..times) {
action() action()
} }
} }
fun localWithoutCapture(a: Int, b: Int): Int { internal fun localWithoutCapture(a: Int, b: Int): Int {
var sum = 0 var sum = 0
@inline fun inc(x: Int): Int { @inline fun inc(x: Int): Int {
@@ -23,7 +23,7 @@ fun localWithoutCapture(a: Int, b: Int): Int {
return sum return sum
} }
fun localWithCapture(a: Int, b: Int): Int { internal fun localWithCapture(a: Int, b: Int): Int {
var sum = 0 var sum = 0
@inline fun inc() { @inline fun inc() {
@@ -2,15 +2,15 @@ package foo
// CHECK_CONTAINS_NO_CALLS: add // CHECK_CONTAINS_NO_CALLS: add
data class State(var count: Int = 0) internal data class State(var count: Int = 0)
inline fun repeatAction(times: Int, action: () -> Unit) { internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) { for (i in 1..times) {
action() action()
} }
} }
fun add(state: State, a: Int, b: Int): Int { internal fun add(state: State, a: Int, b: Int): Int {
@inline fun inc(a: Int): Int { @inline fun inc(a: Int): Int {
return a + 1 return a + 1
} }
@@ -3,13 +3,13 @@ package foo
// CHECK_CONTAINS_NO_CALLS: localWithCapture // CHECK_CONTAINS_NO_CALLS: localWithCapture
// CHECK_CONTAINS_NO_CALLS: localWithoutCapture // CHECK_CONTAINS_NO_CALLS: localWithoutCapture
inline fun repeatAction(times: Int, action: () -> Unit) { internal inline fun repeatAction(times: Int, action: () -> Unit) {
for (i in 1..times) { for (i in 1..times) {
action() action()
} }
} }
fun localWithoutCapture(a: Int, b: Int): Int { internal fun localWithoutCapture(a: Int, b: Int): Int {
var mult = 0 var mult = 0
repeatAction(a) { repeatAction(a) {
@@ -25,7 +25,7 @@ fun localWithoutCapture(a: Int, b: Int): Int {
return mult return mult
} }
fun localWithCapture(a: Int, b: Int): Int { internal fun localWithCapture(a: Int, b: Int): Int {
var mult = 0 var mult = 0
repeatAction(a) { repeatAction(a) {
@@ -2,11 +2,11 @@ package foo
// CHECK_CONTAINS_NO_CALLS: add // CHECK_CONTAINS_NO_CALLS: add
inline fun run(action: () -> Int): Int { internal inline fun run(action: () -> Int): Int {
return action() return action()
} }
fun add(a: Int, b: Int): Int { internal fun add(a: Int, b: Int): Int {
var sum = a + b var sum = a + b
@inline fun getSum(): Int { @inline fun getSum(): Int {
@@ -36,17 +36,17 @@ private object O {
} }
} }
fun test1(x: Int, y: Int): Int = apply(x) { it * y } internal fun test1(x: Int, y: Int): Int = apply(x) { it * y }
fun test2(m: M, x: Int, y: Int): Int = m.applyM(x) { it * y } internal fun test2(m: M, x: Int, y: Int): Int = m.applyM(x) { it * y }
fun test3(n: N, x: Int, y: Int): Int = n.applyN(x) { it * y } internal fun test3(n: N, x: Int, y: Int): Int = n.applyN(x) { it * y }
object LTest : L() { internal object LTest : L() {
fun test4(l: L, x: Int, y: Int): Int = l.applyL(x) { it * y } fun test4(l: L, x: Int, y: Int): Int = l.applyL(x) { it * y }
} }
fun test5(x: Int, y: Int): Int = O.OInner.applyO(x) { it * y } internal fun test5(x: Int, y: Int): Int = O.OInner.applyO(x) { it * y }
fun box(): String { fun box(): String {
assertEquals(6, test1(2, 3)) assertEquals(6, test1(2, 3))
+2 -2
View File
@@ -3,11 +3,11 @@ package foo
// CHECK_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$f // CHECK_CALLED_IN_SCOPE: scope=multiplyBy2 function=multiplyBy2$f
// CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=run // CHECK_NOT_CALLED_IN_SCOPE: scope=multiplyBy2 function=run
inline fun run<T>(noinline func: (T) -> T, arg: T): T { internal inline fun run<T>(noinline func: (T) -> T, arg: T): T {
return func(arg) return func(arg)
} }
fun multiplyBy2(x: Int): Int { internal fun multiplyBy2(x: Int): Int {
return run({ it * 2 }, x) return run({ it * 2 }, x)
} }
+4 -4
View File
@@ -5,7 +5,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test2 // CHECK_CONTAINS_NO_CALLS: test2
// CHECK_CONTAINS_NO_CALLS: test3 // CHECK_CONTAINS_NO_CALLS: test3
inline fun concat(vararg strings: String): String { internal inline fun concat(vararg strings: String): String {
var result = "" var result = ""
for (string in strings) { for (string in strings) {
@@ -15,15 +15,15 @@ inline fun concat(vararg strings: String): String {
return result return result
} }
fun test1(): String { internal fun test1(): String {
return concat() return concat()
} }
fun test2(): String { internal fun test2(): String {
return concat("a", "b", "c") return concat("a", "b", "c")
} }
fun test3(list: Array<String>): String { internal fun test3(list: Array<String>): String {
return concat(*list) return concat(*list)
} }
@@ -11,15 +11,15 @@ import test.*
// CHECK_CONTAINS_NO_CALLS: testFinalInline2 // CHECK_CONTAINS_NO_CALLS: testFinalInline2
// CHECK_CONTAINS_NO_CALLS: testClassObject // CHECK_CONTAINS_NO_CALLS: testClassObject
fun testFinalInline(): String { internal fun testFinalInline(): String {
return Z().finalInline({"final"}) return Z().finalInline({"final"})
} }
fun testFinalInline2(instance: InlineTrait): String { internal fun testFinalInline2(instance: InlineTrait): String {
return instance.finalInline({"final2"}) return instance.finalInline({"final2"})
} }
fun testClassObject(): String { internal fun testClassObject(): String {
return InlineTrait.finalInline({"classobject"}) return InlineTrait.finalInline({"classobject"})
} }
@@ -5,14 +5,14 @@
package test package test
trait InlineTrait { internal trait InlineTrait {
inline final fun finalInline(s: () -> String): String { internal inline final fun finalInline(s: () -> String): String {
return s() return s()
} }
companion object { companion object {
inline final fun finalInline(s: () -> String): String { internal inline final fun finalInline(s: () -> String): String {
return s() return s()
} }
} }
@@ -2,7 +2,7 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(s: String): String = log(s + ";") internal fun test(s: String): String = log(s + ";")
fun box(): String { fun box(): String {
assertEquals("a;", test("a")) assertEquals("a;", test("a"))
@@ -2,9 +2,9 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun multiplyBy2(x: Int): Int = x * 2 internal fun multiplyBy2(x: Int): Int = x * 2
fun test(x: Int): Int = apply(x, ::multiplyBy2) internal fun test(x: Int): Int = apply(x, ::multiplyBy2)
fun box(): String { fun box(): String {
assertEquals(6, test(3)) assertEquals(6, test(3))
@@ -1,6 +1,6 @@
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(x: Int, y: Int): Int = utils.sum(x, y) internal fun test(x: Int, y: Int): Int = utils.sum(x, y)
fun box(): String { fun box(): String {
assertEquals(3, test(1, 2)) assertEquals(3, test(1, 2))
@@ -2,9 +2,9 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
class A(val n: Int) internal class A(val n: Int)
fun test(a: A, m: Int): Int = apply(a) { n * m } internal fun test(a: A, m: Int): Int = apply(a) { n * m }
fun box(): String { fun box(): String {
assertEquals(6, test(A(2), 3)) assertEquals(6, test(A(2), 3))
@@ -2,7 +2,7 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(x: Int): Int = apply(x) { it * 2 } internal fun test(x: Int): Int = apply(x) { it * 2 }
fun box(): String { fun box(): String {
assertEquals(6, test(3)) assertEquals(6, test(3))
@@ -1,6 +1,6 @@
import utils.* import utils.*
fun test(x: Int): Int = apply(x) { it * 2 } internal fun test(x: Int): Int = apply(x) { it * 2 }
fun box(): String { fun box(): String {
assertEquals(6, test(3)) assertEquals(6, test(3))
@@ -2,7 +2,7 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(x: Int, y: Int): Int = apply(x) { it + y } internal fun test(x: Int, y: Int): Int = apply(x) { it + y }
fun box(): String { fun box(): String {
assertEquals(3, test(1, 2)) assertEquals(3, test(1, 2))
@@ -2,7 +2,7 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(x: Int, y: Int): Int = apply(x) { it + 1 } * y internal fun test(x: Int, y: Int): Int = apply(x) { it + 1 } * y
fun box(): String { fun box(): String {
assertEquals(6, test(1, 3)) assertEquals(6, test(1, 3))
@@ -2,7 +2,7 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(a: A, y: Int): Int = a.plus(y) internal fun test(a: A, y: Int): Int = a.plus(y)
fun box(): String { fun box(): String {
assertEquals(5, test(A(2), 3)) assertEquals(5, test(A(2), 3))
@@ -2,7 +2,7 @@ import utils.*
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(x: Int, y: Int): Int = sum(x, y) internal fun test(x: Int, y: Int): Int = sum(x, y)
fun box(): String { fun box(): String {
assertEquals(3, test(1, 2)) assertEquals(3, test(1, 2))
@@ -4,10 +4,10 @@ package foo
// CHECK_NOT_CALLED: f2 // CHECK_NOT_CALLED: f2
// CHECK_BREAKS_COUNT: function=test count=3 // CHECK_BREAKS_COUNT: function=test count=3
var even = arrayListOf<Int>() internal var even = arrayListOf<Int>()
var odd = arrayListOf<Int>() internal var odd = arrayListOf<Int>()
inline fun f2(x: Int): Unit { internal inline fun f2(x: Int): Unit {
if (x % 2 == 0) { if (x % 2 == 0) {
even.add(x) even.add(x)
return return
@@ -17,7 +17,7 @@ inline fun f2(x: Int): Unit {
return return
} }
inline fun f1(x: Boolean, y: Int, z: Int): Unit { internal inline fun f1(x: Boolean, y: Int, z: Int): Unit {
if (x) { if (x) {
return f2(y) return f2(y)
} }
@@ -25,7 +25,7 @@ inline fun f1(x: Boolean, y: Int, z: Int): Unit {
return f2(z) return f2(z)
} }
fun test(x: Boolean, y: Int, z: Int): Unit = f1(x, y, z) internal fun test(x: Boolean, y: Int, z: Int): Unit = f1(x, y, z)
fun box(): String { fun box(): String {
test(true, 2, 1) test(true, 2, 1)
@@ -7,24 +7,24 @@ package foo
var log = "" var log = ""
inline fun run1(fn: ()->Int): Int { internal inline fun run1(fn: ()->Int): Int {
log += "1;" log += "1;"
return 1 + fn() return 1 + fn()
} }
inline fun run2(fn: ()->Int): Int { internal inline fun run2(fn: ()->Int): Int {
log += "2;" log += "2;"
return 2 + run1(fn) return 2 + run1(fn)
} }
inline fun run3(fn: ()->Int): Int { internal inline fun run3(fn: ()->Int): Int {
log += "3;" log += "3;"
return 3 + run2(fn) return 3 + run2(fn)
} }
fun test1(x: Int): Int = run3 { x } internal fun test1(x: Int): Int = run3 { x }
fun test2(x: Int): Int { internal fun test2(x: Int): Int {
val result = 1 + run3 { x } val result = 1 + run3 { x }
return result return result
} }
@@ -3,7 +3,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
// CHECK_VARS_COUNT: function=test count=0 // CHECK_VARS_COUNT: function=test count=0
inline fun sign(x: Int): Int { internal inline fun sign(x: Int): Int {
if (x < 0) return -1 if (x < 0) return -1
if (x == 0) return 0 if (x == 0) return 0
@@ -11,7 +11,7 @@ inline fun sign(x: Int): Int {
return 1 return 1
} }
fun test(x: Int, y: Int): Int { internal fun test(x: Int, y: Int): Int {
if (x != 0) { if (x != 0) {
return sign(x) return sign(x)
} }
@@ -6,9 +6,9 @@ package foo
// A copy of stdlib run function. // A copy of stdlib run function.
// Copied to not to depend on run implementation. // Copied to not to depend on run implementation.
// It's important, that the body is just `return fn()`. // It's important, that the body is just `return fn()`.
inline fun evaluate<T>(fn: ()->T): T = fn() internal inline fun evaluate<T>(fn: ()->T): T = fn()
fun test(x: Int): Int = internal fun test(x: Int): Int =
evaluate { evaluate {
evaluate { 2 } * evaluate { x } evaluate { 2 } * evaluate { x }
} }
@@ -3,13 +3,13 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
// CHECK_VARS_COUNT: function=test count=0 // CHECK_VARS_COUNT: function=test count=0
class A(val x: Int) { internal class A(val x: Int) {
inline fun f(): Int = x inline fun f(): Int = x
inline fun ff(): Int = f() inline fun ff(): Int = f()
} }
fun test(a: A): Int = a.ff() internal fun test(a: A): Int = a.ff()
fun box(): String { fun box(): String {
assertEquals(1, test(A(1))) assertEquals(1, test(A(1)))
@@ -3,13 +3,13 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
// CHECK_VARS_COUNT: function=test count=1 // CHECK_VARS_COUNT: function=test count=1
inline fun sum(x: Int, y: Int): Int { internal inline fun sum(x: Int, y: Int): Int {
if (x == 0 || y == 0) return 0 if (x == 0 || y == 0) return 0
return x + y return x + y
} }
fun test(x: Int, y: Int): Int { internal fun test(x: Int, y: Int): Int {
val sum: Int val sum: Int
sum = sum(x, y) sum = sum(x, y)
return sum return sum
@@ -3,13 +3,13 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
// CHECK_VARS_COUNT: function=test count=1 // CHECK_VARS_COUNT: function=test count=1
inline fun sum(x: Int, y: Int): Int { internal inline fun sum(x: Int, y: Int): Int {
if (x == 0 || y == 0) return 0 if (x == 0 || y == 0) return 0
return x + y return x + y
} }
fun test(x: Int, y: Int): Int { internal fun test(x: Int, y: Int): Int {
val sum = sum(x, y) val sum = sum(x, y)
return sum return sum
} }
@@ -3,9 +3,9 @@ package foo
// CHECK_NOT_CALLED_IN_SCOPE: scope=test function=even // CHECK_NOT_CALLED_IN_SCOPE: scope=test function=even
// CHECK_NOT_CALLED_IN_SCOPE: scope=test function=filter_azvtw4$ // CHECK_NOT_CALLED_IN_SCOPE: scope=test function=filter_azvtw4$
fun even(x: Int) = x % 2 == 0 internal fun even(x: Int) = x % 2 == 0
fun test(a: List<Int>) = a.filter(::even) internal fun test(a: List<Int>) = a.filter(::even)
fun box(): String { fun box(): String {
assertEquals(listOf(2, 4), test(listOf(1, 2, 3, 4))) assertEquals(listOf(2, 4), test(listOf(1, 2, 3, 4)))
+1 -1
View File
@@ -2,7 +2,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(a: Int, b: Int): Int { internal fun test(a: Int, b: Int): Int {
var c = 0 var c = 0
b.times { b.times {
@@ -2,7 +2,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(a: Int, b: Int): Int { internal fun test(a: Int, b: Int): Int {
var res = 0 var res = 0
with (a + b) { with (a + b) {
@@ -2,7 +2,7 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
fun test(x: Int, y: Int): Int = internal fun test(x: Int, y: Int): Int =
with (x + x) { with (x + x) {
val xx = this val xx = this
+2 -2
View File
@@ -2,9 +2,9 @@ package foo
// CHECK_CONTAINS_NO_CALLS: test // CHECK_CONTAINS_NO_CALLS: test
var counter = 0 internal var counter = 0
fun test(a: Int) { internal fun test(a: Int) {
a.times { a.times {
counter += 1 counter += 1
} }
@@ -3,15 +3,15 @@ package foo
// CHECK_CONTAINS_NO_CALLS: testImplicitThis // CHECK_CONTAINS_NO_CALLS: testImplicitThis
// CHECK_CONTAINS_NO_CALLS: testExplicitThis // CHECK_CONTAINS_NO_CALLS: testExplicitThis
class A(var value: Int) internal class A(var value: Int)
fun testImplicitThis(a: A, newValue: Int) { internal fun testImplicitThis(a: A, newValue: Int) {
with (a) { with (a) {
value = newValue value = newValue
} }
} }
fun testExplicitThis(a: A, newValue: Int) { internal fun testExplicitThis(a: A, newValue: Int) {
with (a) { with (a) {
this.value = newValue this.value = newValue
} }
@@ -9,28 +9,28 @@ class State() {
public var value: Int = 0 public var value: Int = 0
} }
inline fun test1(state: State) { internal inline fun test1(state: State) {
loop@ for (i in 1..10) { loop@ for (i in 1..10) {
state.value++ state.value++
if (i == 2) break@loop if (i == 2) break@loop
} }
} }
inline fun test2(state: State) { internal inline fun test2(state: State) {
loop@ for (i in 1..10) { loop@ for (i in 1..10) {
test1(state) test1(state)
if (i == 2) break@loop if (i == 2) break@loop
} }
} }
inline fun test3(state: State) { internal inline fun test3(state: State) {
loop@ for (i in 1..10) { loop@ for (i in 1..10) {
test2(state) test2(state)
if (i == 2) break@loop if (i == 2) break@loop
} }
} }
fun test(state: State) { internal fun test(state: State) {
test3(state) test3(state)
} }
@@ -8,7 +8,7 @@ class State() {
public var value: Int = 0 public var value: Int = 0
} }
fun test(state: State) { internal fun test(state: State) {
@inline fun test3() { @inline fun test3() {
@inline fun test2() { @inline fun test2() {
@inline fun test1() { @inline fun test1() {
@@ -1,7 +1,7 @@
package foo package foo
native native
open class A(val a: Int) { internal open class A(val a: Int) {
fun g(): Int = noImpl fun g(): Int = noImpl
fun m(): Int = noImpl fun m(): Int = noImpl
@@ -11,7 +11,7 @@ open class A(val a: Int) {
open fun baz(i: Int): String = noImpl open fun baz(i: Int): String = noImpl
} }
class B(val b: Int) : A(b / 2) { internal class B(val b: Int) : A(b / 2) {
override fun foo(i: Int): String = "B.foo($i: Int)" override fun foo(i: Int): String = "B.foo($i: Int)"
fun boo(): String = "B.boo()" fun boo(): String = "B.boo()"
@@ -1,18 +1,18 @@
package foo package foo
val PACKAGE = "Kotlin.modules.JS_TESTS.foo" internal val PACKAGE = "Kotlin.modules.JS_TESTS.foo"
fun funToString(name: String) = eval("$PACKAGE.$name.toString()") as String internal fun funToString(name: String) = eval("$PACKAGE.$name.toString()") as String
native("\"O\"") val foo: String = noImpl internal native("\"O\"") val foo: String = noImpl
native("boo") val bar: String = noImpl internal native("boo") val bar: String = noImpl
class A internal class A
native("__proto__") val Any.proto: String get() = noImpl internal native("__proto__") val Any.proto: String get() = noImpl
native("__proto__") val A.proto: String get() = noImpl internal native("__proto__") val A.proto: String get() = noImpl
fun actual(foo: String, native("boo") bar: String) = foo + bar internal fun actual(foo: String, native("boo") bar: String) = foo + bar
fun expected(foo: String, boo: String) = foo + boo internal fun expected(foo: String, boo: String) = foo + boo
fun box(): String { fun box(): String {
val OK = "OK" val OK = "OK"
@@ -1,14 +1,14 @@
package foo package foo
native native
class A(val v: String) internal class A(val v: String)
class B { internal class B {
fun bar(a: A, extLambda: A.(Int, String) -> String): String = a.extLambda(7, "_rr_") fun bar(a: A, extLambda: A.(Int, String) -> String): String = a.extLambda(7, "_rr_")
} }
native native
fun nativeBox(b: B): String = noImpl internal fun nativeBox(b: B): String = noImpl
fun box(): String { fun box(): String {
val r = nativeBox(B()) val r = nativeBox(B())