[FIR] Implement RECURSIVE_TYPEALIAS_EXPANSION, CYCLIC_INHERITANCE_HIERARCHY diagnostics, fix stackoverlow exception in case if typealias points to type with type arguments

This commit is contained in:
Ivan Kochurkin
2021-05-26 12:34:19 +03:00
committed by teamcityserver
parent d1531f9cdd
commit c4c2fbb5a0
48 changed files with 213 additions and 249 deletions
@@ -5,7 +5,7 @@ FILE: fakeRecursiveSupertype.kt
}
}
public open class Your : R|His| {
public open class Your : <ERROR TYPE REF: Loop in supertype: /Your -> /His> {
public constructor(): R|Your| {
super<R|His|>()
}
@@ -1,7 +1,7 @@
import incorrect.directory.My
open class My : <!OTHER_ERROR!>My<!>()
open class My : <!CYCLIC_INHERITANCE_HIERARCHY!>My<!>()
open class Your : His()
open class Your : <!CYCLIC_INHERITANCE_HIERARCHY!>His<!>()
open class His : <!OTHER_ERROR!>Your<!>()
open class His : <!CYCLIC_INHERITANCE_HIERARCHY!>Your<!>()
@@ -2,4 +2,4 @@ import incorrect.directory.Your
typealias My = <!UNRESOLVED_REFERENCE!>incorrect.directory.My<!>
typealias Your = <!OTHER_ERROR!>Your<!>
typealias Your = <!RECURSIVE_TYPEALIAS_EXPANSION!>Your<!>
@@ -1,5 +1,5 @@
FILE: K1.kt
public final class K2 : R|J1| {
public final class K2 : <ERROR TYPE REF: Loop in supertype: /K2 -> /J1> {
public constructor(): R|K2| {
super<R|J1|>()
}
@@ -1,6 +1,6 @@
// FIR_IDE_IGNORE
// FILE: K1.kt
class K2: J1() {
class K2: <!CYCLIC_INHERITANCE_HIERARCHY!>J1<!>() {
class Q : <!UNRESOLVED_REFERENCE!>Nested<!>()
fun bar() {
<!UNRESOLVED_REFERENCE!>foo<!>()