From 7e82d139cfc2325b3949911bdfcf85ae4515c30b Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 14 Nov 2016 11:08:44 +0300 Subject: [PATCH] Drop KFunction.isTailrec The fate of this modifier seems unclear, and there doesn't seem to be any valuable use cases for it in reflection --- .../codegen/box/reflection/modifiers/functions.kt | 13 ------------- core/builtins/src/kotlin/reflect/KFunction.kt | 8 -------- .../kotlin/reflect/jvm/internal/KFunctionImpl.kt | 3 --- .../kotlin/reflect/jvm/internal/KPropertyImpl.kt | 1 - .../src/kotlin/jvm/internal/FunctionReference.java | 5 ----- .../reference-public-api/kotlin-runtime.txt | 2 -- 6 files changed, 32 deletions(-) diff --git a/compiler/testData/codegen/box/reflection/modifiers/functions.kt b/compiler/testData/codegen/box/reflection/modifiers/functions.kt index 1d3f80f07c8..2e5761344f5 100644 --- a/compiler/testData/codegen/box/reflection/modifiers/functions.kt +++ b/compiler/testData/codegen/box/reflection/modifiers/functions.kt @@ -10,7 +10,6 @@ inline fun inline() {} class External { external fun external() } operator fun Unit.invoke() {} infix fun Unit.infix(unit: Unit) {} -tailrec fun tailrec() { tailrec() } class Suspend { suspend fun suspend(c: Continuation) {} } val externalGetter = Unit @@ -25,42 +24,30 @@ fun box(): String { assertFalse(::inline.isExternal) assertFalse(::inline.isOperator) assertFalse(::inline.isInfix) - assertFalse(::inline.isTailrec) assertFalse(::inline.isSuspend) assertFalse(External::external.isInline) assertTrue(External::external.isExternal) assertFalse(External::external.isOperator) assertFalse(External::external.isInfix) - assertFalse(External::external.isTailrec) assertFalse(External::external.isSuspend) assertFalse(Unit::invoke.isInline) assertFalse(Unit::invoke.isExternal) assertTrue(Unit::invoke.isOperator) assertFalse(Unit::invoke.isInfix) - assertFalse(Unit::invoke.isTailrec) assertFalse(Unit::invoke.isSuspend) assertFalse(Unit::infix.isInline) assertFalse(Unit::infix.isExternal) assertFalse(Unit::infix.isOperator) assertTrue(Unit::infix.isInfix) - assertFalse(Unit::infix.isTailrec) assertFalse(Unit::infix.isSuspend) - assertFalse(::tailrec.isInline) - assertFalse(::tailrec.isExternal) - assertFalse(::tailrec.isOperator) - assertFalse(::tailrec.isInfix) - assertTrue(::tailrec.isTailrec) - assertFalse(::tailrec.isSuspend) - assertFalse(Suspend::suspend.isInline) assertFalse(Suspend::suspend.isExternal) assertFalse(Suspend::suspend.isOperator) assertFalse(Suspend::suspend.isInfix) - assertFalse(Suspend::suspend.isTailrec) assertTrue(Suspend::suspend.isSuspend) assertTrue(::externalGetter.getter.isExternal) diff --git a/core/builtins/src/kotlin/reflect/KFunction.kt b/core/builtins/src/kotlin/reflect/KFunction.kt index bb72c9315a9..46b05f2e1d7 100644 --- a/core/builtins/src/kotlin/reflect/KFunction.kt +++ b/core/builtins/src/kotlin/reflect/KFunction.kt @@ -52,14 +52,6 @@ public interface KFunction : KCallable, Function { @SinceKotlin("1.1") public val isInfix: Boolean - /** - * `true` if this function is `tailrec`. - * See the [Kotlin language documentation](https://kotlinlang.org/docs/reference/functions.html#tail-recursive-functions) - * for more information. - */ - @SinceKotlin("1.1") - public val isTailrec: Boolean - /** * `true` if this is a suspending function. */ diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KFunctionImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KFunctionImpl.kt index 80e295370d9..9c392ed2893 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KFunctionImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KFunctionImpl.kt @@ -135,9 +135,6 @@ internal class KFunctionImpl private constructor( override val isInfix: Boolean get() = descriptor.isInfix - override val isTailrec: Boolean - get() = descriptor.isTailrec - override val isSuspend: Boolean get() = descriptor.isSuspend diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt index 0a21124546f..b878e3fd3a0 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPropertyImpl.kt @@ -118,7 +118,6 @@ internal abstract class KPropertyImpl private constructor( override val isExternal: Boolean get() = descriptor.isExternal override val isOperator: Boolean get() = descriptor.isOperator override val isInfix: Boolean get() = descriptor.isInfix - override val isTailrec: Boolean get() = descriptor.isTailrec override val isSuspend: Boolean get() = descriptor.isSuspend } diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/FunctionReference.java b/core/runtime.jvm/src/kotlin/jvm/internal/FunctionReference.java index 27feeeefcf4..7dd73687bc6 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/FunctionReference.java +++ b/core/runtime.jvm/src/kotlin/jvm/internal/FunctionReference.java @@ -61,11 +61,6 @@ public class FunctionReference extends CallableReference implements FunctionImpl return getReflected().isInfix(); } - @Override - public boolean isTailrec() { - return getReflected().isTailrec(); - } - @Override public boolean isSuspend() { return getReflected().isSuspend(); diff --git a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt index e6b744ff40d..365d077713c 100644 --- a/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt +++ b/libraries/tools/binary-compatibility-validator/reference-public-api/kotlin-runtime.txt @@ -509,7 +509,6 @@ public class kotlin/jvm/internal/FunctionReference : kotlin/jvm/internal/Callabl public fun isInline ()Z public fun isOperator ()Z public fun isSuspend ()Z - public fun isTailrec ()Z public fun toString ()Ljava/lang/String; } @@ -1156,7 +1155,6 @@ public abstract interface class kotlin/reflect/KFunction : kotlin/Function, kotl public abstract fun isInline ()Z public abstract fun isOperator ()Z public abstract fun isSuspend ()Z - public abstract fun isTailrec ()Z } public abstract interface class kotlin/reflect/KMutableProperty : kotlin/reflect/KProperty {