Make FE1.0 report tailrec diagnostics on the keyword

This commit is contained in:
Tianyu Geng
2021-09-27 11:37:00 -07:00
committed by teamcityserver
parent 5252effb10
commit a5435c0efc
7 changed files with 27 additions and 27 deletions
@@ -1,6 +1,6 @@
// WITH_STDLIB
<!NO_TAIL_CALLS_FOUND!>tailrec fun foo1()<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo1() {
run {
<!NON_TAIL_RECURSIVE_CALL!>foo1<!>()
}
@@ -9,13 +9,13 @@
fun myRun(f: () -> Unit) = f()
<!NO_TAIL_CALLS_FOUND!>tailrec fun foo2()<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo2() {
myRun {
<!NON_TAIL_RECURSIVE_CALL!>foo2<!>()
}
}
<!NO_TAIL_CALLS_FOUND!>tailrec fun foo3()<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo3() {
fun bar() {
<!NON_TAIL_RECURSIVE_CALL!>foo3<!>()
}
@@ -23,7 +23,7 @@ fun myRun(f: () -> Unit) = f()
}
class A {
<!NO_TAIL_CALLS_FOUND!>tailrec fun foo4()<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun foo4() {
with(this) {
<!NON_TAIL_RECURSIVE_CALL!>foo4<!>()
}
+15 -15
View File
@@ -1,15 +1,15 @@
//!LANGUAGE: -ProhibitTailrecOnVirtualMember
open class A {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec open fun foo(x: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun foo(x: Int) {
foo(x)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>internal tailrec open fun bar(y: Int)<!> {
internal <!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun bar(y: Int) {
bar(y)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>protected tailrec open fun baz(y: Int)<!> {
protected <!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun baz(y: Int) {
baz(y)
}
@@ -38,15 +38,15 @@ open class B : A() {
open class C : A() {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec override fun foo(x: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> override fun foo(x: Int) {
foo(x)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec override fun bar(y: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> override fun bar(y: Int) {
bar(y)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec override fun baz(y: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> override fun baz(y: Int) {
baz(y)
}
}
@@ -66,15 +66,15 @@ object D : A() {
}
sealed class E : A() {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec override fun foo(x: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> override fun foo(x: Int) {
foo(x)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec override fun bar(y: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> override fun bar(y: Int) {
bar(y)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec override fun baz(y: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> override fun baz(y: Int) {
baz(y)
}
@@ -109,15 +109,15 @@ enum class F {
}
};
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec open fun foo(x: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun foo(x: Int) {
foo(x)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>internal tailrec open fun bar(y: Int)<!> {
internal <!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun bar(y: Int) {
bar(y)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>protected tailrec open fun baz(y: Int)<!> {
protected <!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun baz(y: Int) {
baz(y)
}
@@ -134,15 +134,15 @@ enum class G {
G1;
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec open fun foo(x: Int)<!> {
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun foo(x: Int) {
foo(x)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>internal tailrec open fun bar(y: Int)<!> {
internal <!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun bar(y: Int) {
bar(y)
}
<!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>protected tailrec open fun baz(y: Int)<!> {
protected <!TAILREC_ON_VIRTUAL_MEMBER_WARNING!>tailrec<!> open fun baz(y: Int) {
baz(y)
}
+2 -2
View File
@@ -6,11 +6,11 @@ open class A {
}
class B: A() {
<!NO_TAIL_CALLS_FOUND!>tailrec override fun foo(x: Int)<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> override fun foo(x: Int) {
foo()
}
<!NO_TAIL_CALLS_FOUND!>tailrec override fun gav(y: Int, z: Int)<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> override fun gav(y: Int, z: Int) {
gav(y)
}
+2 -2
View File
@@ -22,7 +22,7 @@ class Bar {
this.bar2()
}
<!NO_TAIL_CALLS_FOUND!>tailrec fun bar3()<!> {
<!NO_TAIL_CALLS_FOUND!>tailrec<!> fun bar3() {
Bar.<!NON_TAIL_RECURSIVE_CALL!>bar3<!>()
}
@@ -44,7 +44,7 @@ enum class E {
}
},
C {
<!NO_TAIL_CALLS_FOUND!>override tailrec fun rec()<!> {
override <!NO_TAIL_CALLS_FOUND!>tailrec<!> fun rec() {
C.rec() // resolution goes to `E.rec`. Hence the resolved symbol is considered different from `C.rec`.
}
};