Drop tailRecursive and it's usage

This commit is contained in:
Denis Zharkov
2015-09-22 12:41:26 +03:00
parent 098f5462eb
commit 4a993f517e
4 changed files with 2 additions and 13 deletions
-4
View File
@@ -1256,10 +1256,6 @@ public object Unit {
/*primary*/ public constructor noinline()
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.annotation() public final class tailRecursive : kotlin.Annotation {
/*primary*/ public constructor tailRecursive()
}
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.FUNCTION}) @kotlin.annotation.Retention(value = AnnotationRetention.SOURCE) @kotlin.annotation.annotation() public final class tailrec : kotlin.Annotation {
/*primary*/ public constructor tailrec()
}
-4
View File
@@ -80,10 +80,6 @@ public annotation class Suppress(vararg val names: String)
* growing the stack depth. Tail call optimization is currently only supported by the JVM
* backend.
*/
@Target(FUNCTION)
@Retention(SOURCE)
public annotation class tailRecursive
@Target(FUNCTION)
@Retention(SOURCE)
public annotation class tailrec
@@ -182,7 +182,6 @@ public class KotlinBuiltIns {
public final FqName data = fqName("data");
public final FqName deprecated = fqName("Deprecated");
public final FqName tailRecursive = fqName("tailrec");
public final FqName tailRecursiveDeprecated = fqName("tailRecursive");
public final FqName inline = fqName("inline");
public final FqName noinline = fqName("noinline");
public final FqName crossinline = fqName("crossinline");
@@ -1063,8 +1062,7 @@ public class KotlinBuiltIns {
}
public static boolean isTailRecursive(@NotNull DeclarationDescriptor declarationDescriptor) {
return containsAnnotation(declarationDescriptor, FQ_NAMES.tailRecursive)
|| containsAnnotation(declarationDescriptor, FQ_NAMES.tailRecursiveDeprecated);
return containsAnnotation(declarationDescriptor, FQ_NAMES.tailRecursive);
}
/** Checks that the symbol represented by the descriptor is annotated with the {@code kotlin.noinline} annotation */
@@ -48,8 +48,7 @@ private val typeMapper = mapOf(
fun GenerateTraitOrClass.allSuperTypes(all: Map<String, GenerateTraitOrClass>) = LinkedHashSet<GenerateTraitOrClass>().let { result -> allSuperTypesImpl(listOf(this), all, result); result.toList() }
tailRecursive
fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: MutableSet<GenerateTraitOrClass>) {
tailrec fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: MutableSet<GenerateTraitOrClass>) {
if (roots.isNotEmpty()) {
allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] }.filterNotNull().filter { result.add(it) }, all, result)
}