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() /*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 { @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() /*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 * growing the stack depth. Tail call optimization is currently only supported by the JVM
* backend. * backend.
*/ */
@Target(FUNCTION)
@Retention(SOURCE)
public annotation class tailRecursive
@Target(FUNCTION) @Target(FUNCTION)
@Retention(SOURCE) @Retention(SOURCE)
public annotation class tailrec public annotation class tailrec
@@ -182,7 +182,6 @@ public class KotlinBuiltIns {
public final FqName data = fqName("data"); public final FqName data = fqName("data");
public final FqName deprecated = fqName("Deprecated"); public final FqName deprecated = fqName("Deprecated");
public final FqName tailRecursive = fqName("tailrec"); public final FqName tailRecursive = fqName("tailrec");
public final FqName tailRecursiveDeprecated = fqName("tailRecursive");
public final FqName inline = fqName("inline"); public final FqName inline = fqName("inline");
public final FqName noinline = fqName("noinline"); public final FqName noinline = fqName("noinline");
public final FqName crossinline = fqName("crossinline"); public final FqName crossinline = fqName("crossinline");
@@ -1063,8 +1062,7 @@ public class KotlinBuiltIns {
} }
public static boolean isTailRecursive(@NotNull DeclarationDescriptor declarationDescriptor) { public static boolean isTailRecursive(@NotNull DeclarationDescriptor declarationDescriptor) {
return containsAnnotation(declarationDescriptor, FQ_NAMES.tailRecursive) return containsAnnotation(declarationDescriptor, FQ_NAMES.tailRecursive);
|| containsAnnotation(declarationDescriptor, FQ_NAMES.tailRecursiveDeprecated);
} }
/** Checks that the symbol represented by the descriptor is annotated with the {@code kotlin.noinline} annotation */ /** 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() } fun GenerateTraitOrClass.allSuperTypes(all: Map<String, GenerateTraitOrClass>) = LinkedHashSet<GenerateTraitOrClass>().let { result -> allSuperTypesImpl(listOf(this), all, result); result.toList() }
tailRecursive tailrec fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: MutableSet<GenerateTraitOrClass>) {
fun allSuperTypesImpl(roots: List<GenerateTraitOrClass>, all: Map<String, GenerateTraitOrClass>, result: MutableSet<GenerateTraitOrClass>) {
if (roots.isNotEmpty()) { if (roots.isNotEmpty()) {
allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] }.filterNotNull().filter { result.add(it) }, all, result) allSuperTypesImpl(roots.flatMap { it.superTypes }.map { all[it] }.filterNotNull().filter { result.add(it) }, all, result)
} }