From a5435c0efc727cf50996d74e85a5c17b54e52382 Mon Sep 17 00:00:00 2001 From: Tianyu Geng Date: Mon, 27 Sep 2021 11:37:00 -0700 Subject: [PATCH] Make FE1.0 report tailrec diagnostics on the keyword --- .../jetbrains/kotlin/diagnostics/Errors.java | 4 +-- .../tailRecursion/defaultArgsOverridden.kt | 2 +- ...ecWithExplicitCompanionObjectDispatcher.kt | 2 +- .../tests/tailRecInNestedScopes.kt | 8 ++--- .../tests/tailRecOnVirtualMember.kt | 30 +++++++++---------- .../diagnostics/tests/tailRecOverridden.kt | 4 +-- .../diagnostics/tests/tailRecSingleton.kt | 4 +-- 7 files changed, 27 insertions(+), 27 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java index 33696758ccc..74dc2ed9720 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/diagnostics/Errors.java @@ -644,8 +644,8 @@ public interface Errors { DiagnosticFactory0 VALUE_PARAMETER_WITH_NO_TYPE_ANNOTATION = DiagnosticFactory0.create(ERROR); - DiagnosticFactory0 NO_TAIL_CALLS_FOUND = DiagnosticFactory0.create(WARNING, DECLARATION_SIGNATURE); - DiagnosticFactoryForDeprecation0 TAILREC_ON_VIRTUAL_MEMBER = DiagnosticFactoryForDeprecation0.create(LanguageFeature.ProhibitTailrecOnVirtualMember, DECLARATION_SIGNATURE); + DiagnosticFactory0 NO_TAIL_CALLS_FOUND = DiagnosticFactory0.create(WARNING, TAILREC_MODIFIER); + DiagnosticFactoryForDeprecation0 TAILREC_ON_VIRTUAL_MEMBER = DiagnosticFactoryForDeprecation0.create(LanguageFeature.ProhibitTailrecOnVirtualMember, TAILREC_MODIFIER); DiagnosticFactory0 ANONYMOUS_FUNCTION_PARAMETER_WITH_DEFAULT_VALUE = DiagnosticFactory0.create(ERROR, PARAMETER_DEFAULT_VALUE); diff --git a/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/defaultArgsOverridden.kt b/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/defaultArgsOverridden.kt index 8905bc3d028..bac7e0756fe 100644 --- a/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/defaultArgsOverridden.kt +++ b/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/defaultArgsOverridden.kt @@ -12,7 +12,7 @@ open class A { } class B : A() { - override tailrec fun foo(s: String): String { + override tailrec fun foo(s: String): String { return if (s == "OK") s else foo() } } diff --git a/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/tailrecWithExplicitCompanionObjectDispatcher.kt b/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/tailrecWithExplicitCompanionObjectDispatcher.kt index 5f1884f8ed6..7f0dbe82d73 100644 --- a/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/tailrecWithExplicitCompanionObjectDispatcher.kt +++ b/compiler/testData/codegen/box/diagnostics/functions/tailRecursion/tailrecWithExplicitCompanionObjectDispatcher.kt @@ -12,7 +12,7 @@ class C { companion object { - tailrec fun rec(i: Int) { + tailrec fun rec(i: Int) { if (i <= 0) return C.rec(i - 1) } diff --git a/compiler/testData/diagnostics/tests/tailRecInNestedScopes.kt b/compiler/testData/diagnostics/tests/tailRecInNestedScopes.kt index d194f974eb6..ac8852d3397 100644 --- a/compiler/testData/diagnostics/tests/tailRecInNestedScopes.kt +++ b/compiler/testData/diagnostics/tests/tailRecInNestedScopes.kt @@ -1,6 +1,6 @@ // WITH_STDLIB -tailrec fun foo1() { +tailrec fun foo1() { run { foo1() } @@ -9,13 +9,13 @@ fun myRun(f: () -> Unit) = f() -tailrec fun foo2() { +tailrec fun foo2() { myRun { foo2() } } -tailrec fun foo3() { +tailrec fun foo3() { fun bar() { foo3() } @@ -23,7 +23,7 @@ fun myRun(f: () -> Unit) = f() } class A { - tailrec fun foo4() { + tailrec fun foo4() { with(this) { foo4() } diff --git a/compiler/testData/diagnostics/tests/tailRecOnVirtualMember.kt b/compiler/testData/diagnostics/tests/tailRecOnVirtualMember.kt index e47f23cc695..5bc69f137b0 100644 --- a/compiler/testData/diagnostics/tests/tailRecOnVirtualMember.kt +++ b/compiler/testData/diagnostics/tests/tailRecOnVirtualMember.kt @@ -1,15 +1,15 @@ //!LANGUAGE: -ProhibitTailrecOnVirtualMember open class A { - tailrec open fun foo(x: Int) { + tailrec open fun foo(x: Int) { foo(x) } - internal tailrec open fun bar(y: Int) { + internal tailrec open fun bar(y: Int) { bar(y) } - protected tailrec open fun baz(y: Int) { + protected tailrec open fun baz(y: Int) { baz(y) } @@ -38,15 +38,15 @@ open class B : A() { open class C : A() { - tailrec override fun foo(x: Int) { + tailrec override fun foo(x: Int) { foo(x) } - tailrec override fun bar(y: Int) { + tailrec override fun bar(y: Int) { bar(y) } - tailrec override fun baz(y: Int) { + tailrec override fun baz(y: Int) { baz(y) } } @@ -66,15 +66,15 @@ object D : A() { } sealed class E : A() { - tailrec override fun foo(x: Int) { + tailrec override fun foo(x: Int) { foo(x) } - tailrec override fun bar(y: Int) { + tailrec override fun bar(y: Int) { bar(y) } - tailrec override fun baz(y: Int) { + tailrec override fun baz(y: Int) { baz(y) } @@ -109,15 +109,15 @@ enum class F { } }; - tailrec open fun foo(x: Int) { + tailrec open fun foo(x: Int) { foo(x) } - internal tailrec open fun bar(y: Int) { + internal tailrec open fun bar(y: Int) { bar(y) } - protected tailrec open fun baz(y: Int) { + protected tailrec open fun baz(y: Int) { baz(y) } @@ -134,15 +134,15 @@ enum class G { G1; - tailrec open fun foo(x: Int) { + tailrec open fun foo(x: Int) { foo(x) } - internal tailrec open fun bar(y: Int) { + internal tailrec open fun bar(y: Int) { bar(y) } - protected tailrec open fun baz(y: Int) { + protected tailrec open fun baz(y: Int) { baz(y) } diff --git a/compiler/testData/diagnostics/tests/tailRecOverridden.kt b/compiler/testData/diagnostics/tests/tailRecOverridden.kt index 54c792ad103..afd5206b0f3 100644 --- a/compiler/testData/diagnostics/tests/tailRecOverridden.kt +++ b/compiler/testData/diagnostics/tests/tailRecOverridden.kt @@ -6,11 +6,11 @@ open class A { } class B: A() { - tailrec override fun foo(x: Int) { + tailrec override fun foo(x: Int) { foo() } - tailrec override fun gav(y: Int, z: Int) { + tailrec override fun gav(y: Int, z: Int) { gav(y) } diff --git a/compiler/testData/diagnostics/tests/tailRecSingleton.kt b/compiler/testData/diagnostics/tests/tailRecSingleton.kt index 53d229bdc1c..75ff38468e5 100644 --- a/compiler/testData/diagnostics/tests/tailRecSingleton.kt +++ b/compiler/testData/diagnostics/tests/tailRecSingleton.kt @@ -22,7 +22,7 @@ class Bar { this.bar2() } - tailrec fun bar3() { + tailrec fun bar3() { Bar.bar3() } @@ -44,7 +44,7 @@ enum class E { } }, C { - override tailrec fun rec() { + override tailrec fun rec() { C.rec() // resolution goes to `E.rec`. Hence the resolved symbol is considered different from `C.rec`. } };